[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ A ] [ B ] [ C ] [ D ] [ successivo ]
In File e directory, Sezione 4.2 abbiamo spiegato come muovere e rinominare i file con mv, come copiarli con cp, rimuoverli con rm, rimuovere directory con rmdir e creare directory con mkdir. Questo capitolo affronterà alcuni altri aspetti dei file.
I sistemi GNU e Unix sono impostati per permettere a molte persone di usare lo stesso computer, mantenendo certi file inaccessibili o impedendo a certe persone di modificare certi file. Si può verificare questo da soli:
Fare il login con il proprio nome utente, cioè NON come root.
whoami
Verificare di non essere root.
rm /etc/resolv.conf
Si dovrebbe ottenere "Permission denied". /etc/resolv.conf è un file di configurazione essenziale al sistema: non è permesso cambiare o rimuovere questo file a meno di non essere root. Questo impedisce di rovinare accidentalmente il sistema e, se il computer è pubblico come in un ufficio o in una scuola, impedisce agli utenti di danneggiare il sistema di proposito.
Ora digitare ls -l /etc/resolv.conf
Questo fornisce un output che appare simile al seguente:
-rw-r--r-- 1 root root 119 Feb 23 1997 /etc/resolv.conf
L'opzione -l di ls richiede tutte queste informazioni aggiuntive. Le informazioni alla destra sono facili: la dimensione del file è di 119 byte, la data dell'ultima modifica al file è Feb 23 1997, il nome del file è /etc/resolv.conf. Sulla parte sinistra dello schermo ci sono alcune cose un po' più complicate.
Prima, una breve spiegazione tecnica: -rw-r--r-- è la modalità del file, 1 è il numero di hard link a questo file (o il numero dei file in una directory) e i due root sono l'utente e il gruppo proprietari del file.
Questo era criptico. Analizziamolo lentamente (eccetto la parte degli hard link; per quella vedere La vera natura dei file: hard link e inode, Sezione 17.2.1).
Ogni file ha due proprietari: un utente e un gruppo. Il caso precedente crea un po' di confusione, poiché c'è un gruppo chiamato root in aggiunta all'utente root. I gruppi sono solo insiemi di utenti a cui è permesso collettivamente l'accesso ad alcune parti del sistema. Un buon esempio è rappresentato dal gruppo games. Proprio per essere cattivi, si può impostare il proprio sistema in modo che solo le persone appartenenti al gruppo games siano abilitate a a giocare.
Un esempio più pratico: supponiamo che si stia impostando un computer per una scuola. Si potrebbe volere rendere accessibili certi file solo agli insegnanti, non agli studenti; così si mettono tutti gli insegnanti in un singolo gruppo. Poi si può comunicare al sistema che certi file appartengono ai membri del gruppo insegnanti e che nessun altro può accedere a questi file.
Di seguito ci sono alcune cose che si possono fare per analizzare i gruppi sul proprio sistema:
groups
Digitando questo comando al prompt della shell si ottengono i gruppi di cui si è membri. È probabile che ci sia un solo gruppo di cui si è membri, che è identico al proprio nome utente.
more /etc/group
Questo file fornisce una lista dei gruppi che sono presenti nel proprio sistema. Notare il gruppo root (l'unico membro di questo gruppo è l'utente root) e il gruppo che corrisponde al proprio nome utente. Ci sono anche gruppi come dialout (utenti che sono abilitati alla connessione con il modem) e floppy (utenti che possono usare il dispositivo floppy). Tuttavia, il proprio sistema probabilmente non è configurato per fare uso di questi gruppi: è probabile che solo root possa usare il floppy o il modem in questo momento. Per dettagli riguardo a questo file, provare a leggere man group.
ls -l /home
Osservare come ogni directory utente è di proprietà di quell'utente e del suo gruppo personale. (Se si ha appena installato Debian, si potrebbe essere l'unico utente.)
Oltre ad essere di proprietà di un utente e di un gruppo, ogni file e directory ha anche una modalità che determina chi è abilitato a leggere, scrivere ed eseguire il file. Ci sono anche alcune altre cose determinate dalla modalità, ma sono argomenti avanzati così, per il momento, vengono saltati.
La modalità appare così nell'output del comando ls: -rw-r--r--. Ci sono qui dieci "elementi" e la modalità consiste in realtà di dodici bit (si pensi ai bit come interruttori che possono essere on o off). Ma, per ora, considereremo solamente nove di questi bit: quelli che controllano i permessi di lettura, scrittura ed esecuzione per l'utente proprietario del file, il gruppo proprietario del file e per gli altri (chiunque sul sistema, qualche volta chiamato mondo).
Si noti che questi tre tipi di permessi (lettura, scrittura, esecuzione) per i tre insiemi di persone che possono avere i permessi (utente, gruppo, altri) fanno un totale di nove elementi.
Nella riga della modalità, il primo "elemento" fornisce il tipo di file. Il carattere - in questo caso significa che esso è un file regolare. Se esso fosse d, significherebbe che quella mostrata è una directory. Ci sono anche altre possibilità troppo complesse per approfondirle ora (vedere Aspetti avanzati dei permessi sui file, Sezione 17.2.4).
I nove "elementi" che rimangono sono usati per visualizzare i 12 bit che costituiscono la modalità del file. I 9 bit di base (lettura, scrittura ed esecuzione per utente, gruppo e altri) sono visualizzati come tre blocchi di rwx.
Così se tutti i permessi sono attivati e questo è un file regolare, la modalità apparirà simile a questa: -rwxrwxrwx. Se invece fosse una directory con tutti i permessi disattivati per gli altri e i permessi pienamente attivati per l'utente e il gruppo, la modalità sarebbe: drwxrwx---. (I tre bit rimanenti sono visualizzati cambiando x in s, t, S o T, ma questo è un argomento complesso che abbiamo tenuto per la sezione Aspetti avanzati dei permessi sui file, Sezione 17.2.4.)
Per i file regolari, "lettura", "scrittura" ed "esecuzione" hanno il seguente significato:
Permesso di lettura, indicato da r, fornisce il permesso di esaminare il contenuto di un file. Per le directory, fornisce il permesso di elencare il contenuto della directory.
Permesso di scrittura, indicato da w, fornisce il permesso di fare cambiamenti a un file. Per le directory, fornisce il permesso di creare e rimuovere file nella directory.
Permesso di esecuzione, indicato da x, fornisce il permesso di eseguire il file come un comando. Chiaramente ha senso solamente impostare il permesso di esecuzione se il file è veramente un comando.
Dato che le directory non possono mai essere eseguite, il bit di esecuzione ha un significato differente. Per le directory, il permesso di esecuzione significa permesso di accedere ai file nella directory. Si noti che questo interagisce con il permesso di scrittura: il permesso di esecuzione deve essere impostato per poter accedere del tutto ai file in una directory, così senza il permesso di esecuzione su di una directory, il permesso di scrittura è inutile. Il permesso di esecuzione per le directory è spesso chiamato permesso di "ricerca", in quanto non ha in realtà niente a che fare con l'esecuzione. Probabilmente permesso di "accesso al file" sarebbe un nome ancora migliore.
Le modalità per le directory creano un po' di confusione, così di seguito ci sono alcuni esempi degli effetti prodotti da varie combinazioni:
r--
Con questi permessi l'utente, il gruppo o gli altri possono fare l'elenco del contenuto della directory, ma non possono fare niente altro. I file nella directory non possono essere letti, modificati, rimossi o manipolati in alcun modo. L'unica azione permessa è la lettura della directory stessa, cioè, vedere quali file contiene.
rw-
Il permesso di scrittura non ha effetto in assenza del permesso di esecuzione, così questa modalità è esattamente come quella precedente.
r-x
Questa modalità permette di fare la lista dei file in una directory e permette l'accesso a questi file. Tuttavia, i file non possono essere creati o rimossi. Accesso significa che i file si possono vedere, modificare o eseguire come stabilito dai permessi stessi di ciascun file.
--x
Si può accedere ai file in questa directory, ma non è possibile fare l'elenco del contenuto della directory, perciò si deve conoscere già il nome del file che si sta cercando (a meno di non essere un buon indovino). I file non possono essere creati o rimossi.
rwx
Si può fare tutto ciò che si vuole con i file contenuti in questa directory, finché è consentito dai permessi sugli stessi file.
Il permesso di scrittura di una directory determina se si possono rimuovere file nella directory: un file di sola lettura può essere rimosso, se si ha il permesso di scrittura per la directory che lo contiene. Non si può rimuovere un file da una directory di sola-lettura, anche se si è autorizzati ad apportare cambiamenti al file. I permessi dei file non hanno niente a che fare con la rimozione dei file.
Questo significa anche che se si è il proprietario di una directory è sempre possibile rimuovere i file che essa contiene, anche se questi file appartengono a root.
Il permesso di esecuzione di una directory determina se si ha l'accesso ai file e perciò se i permessi del file entrano in gioco. Se si ha il permesso di esecuzione per una directory, i permessi dei file per questa directory diventano rilevanti. Altrimenti i permessi dei file non hanno alcuna importanza; non si può accedere ai file in ogni caso.
Se si ha il permesso di esecuzione per la directory, i permessi dei file determinano se si può leggere il contenuto dei file, modificare i file o eseguire i file come comandi.
Infine, il permesso di cambiare i permessi su di un file o directory non è condizionato dai permessi di quel file o directory. Piuttosto, si possono sempre cambiare i permessi dei file o directory di cui si è proprietari, ma non dei file di proprietà di qualcun altro, fintanto che si ha il permesso di accesso ai file. Così se si può accedere a un proprio file (cioè se si ha il permesso di esecuzione per la directory contenente il file) allora si possono cambiare i suoi permessi.
Questo significa che non è possibile rimuovere definitivamente i permessi per se stessi perché si possono sempre ripristinare. Supponiamo che si rimuova il permesso di scrittura dell'utente da un proprio file, poi si provi a modificare il file. Questo non sarà permesso, ma si può sempre ridare a se stessi il permesso di scrittura e poi modificare file. Il solo modo per perdere la possibilità di cambiare i permessi è quello di perdere completamente l'accesso al file.
Questa sezione ripercorre una breve sessione di esempio per dimostrare come si usano i permessi.
Per cambiare i permessi, si userà il comando chmod.
cd; touch miofile
Qui ci sono due nuovi trucchi. Primo, si può usare ; per mettere due comandi in una riga. La riga precedente si può digitare come:
$ cd $ touch miofile
oppure come:
$ cd; touch miofile
e, alla fine, si otterrà lo stesso risultato.
Ci si ricordi che il comando cd da solo fa ritornare alla propria directory home. Il comando touch è normalmente usato per cambiare la data di modifica del file alla data attuale, ma esso ha un'altra caratteristica interessante: se il file non esiste, touch crea il file. Così lo usiamo per creare un file che ci serve per fare pratica. Usare ls -l per confermare che il file sia stato creato e si noti la modalità dei permessi:
$ ls -l -rw-r--r-- 1 havoc havoc 0 Nov 18 22:04 miofile
Ovviamente la data e i nomi dell'utente/gruppo saranno differenti quando si proverà il comando. La dimensione del file è 0, dato che il comando touch crea un file vuoto. -rw-r--r-- è la modalità dei permessi predefinita in Debian.
chmod u+x miofile
Questo comando significa: aggiungere (+) il permesso di esecuzione (x) per l'utente (u) che è il proprietario del file. Usare ls -l per verificare gli effetti.
chmod go-r miofile
Con questo comando si sottrae (-) il permesso di lettura (r) al gruppo (g) proprietario del file e ad ogni altro (o). Ancora una volta, usare ls -l per verificare gli effetti.
chmod ugo=rx miofile
Qui si impostano (=) i permessi di lettura ed esecuzione per l'utente, il gruppo e gli altri. Questo comando imposta i permessi esattamente come specificati e disattiva ogni altro permesso. Così tutti i permessi rx dovrebbero essere impostati e tutti i permessi w dovrebbero essere disattivati. Adesso, nessuno può scrivere nel file.
chmod a-x miofile
a è una scorciatoia per ugo o "all" (tutti). Così tutti i permessi x ora dovrebbero essere disattivati.
rm miofile
Si sta rimuovendo il file, ma senza i permessi di scrittura. rm chiederà se si è sicuri:
rm: remove `miofile', overriding mode 0444?
Si dovrebbe rispondere digitando y e premendo Invio. Questa è una caratteristica di rm, non una questione di permessi: il permesso di rimuovere un file dipende dai permessi della directory, e si dispone del permesso di scrittura nella directory. Tuttavia, rm prova ad aiutare, immaginando che se non si voleva modificare il file (e perciò si era rimosso il permesso di scrittura), non lo si voleva neanche cancellare, perciò chiede conferma.
Che cosa era quel numero 0444 nella domanda di rm? La modalità dei permessi è un numero binario a 12 cifre, come questo: 000100100100. 0444 è questo numero binario rappresentato come un numero ottale (a base 8), che è il modo convenzionale per scrivere una modalità. Così si può digitare chmod 444 miofile invece di chmod ugo=r miofile. Questo è spiegato esaurientemente in Aspetti avanzati dei permessi sui file, Sezione 17.2.4.
Ora che si può navigare all'interno dell'albero delle directory, è il momento di iniziare un tour guidato dei file e delle directory che sono stati creati durante l'installazione di Debian. Se si è curiosi, eseguire cd verso ogni directory e digitare ls per vedere il suo contenuto. Se la lista non sta tutta nello schermo, provare ls | more, dove | è il carattere "pipe", che si trova generalmente sullo stesso tasto della barra rovesciata o backslash (\).
Come precedentemente menzionato, questa è la directory root, che contiene ogni altra directory.
Non si confonda / con /root! /root è la directory home dell'utente root, o superutente. È una directory chiamata /root, ma non è la directory root /.
Questa è la directory dove tutti gli utenti normali, cioè tutti gli utenti eccetto root, hanno la propria directory home. Le directory home hanno il nome dell'utente a cui appartengono; per esempio, /home/jane. Se si usa un grande sistema in una scuola o un'azienda, il proprio amministratore di sistema può creare directory aggiuntive che contengono le directory home: /home1 e /home2, per esempio. In alcuni altri sistemi, si vedrà un livello aggiuntivo di sottodirectory: /home/studenti/nomeutente, /home/staff/nomeutente, ecc.
La propria directory home è dove si mettono tutti i propri personali lavori, email e altri documenti e le configurazioni personali preferite. È la propria casa nel sistema.
Questa directory contiene i "binari", file eseguibili che sono essenziali al funzionamento del sistema. Esempi sono la shell (bash) e i file di comandi come cp.
Questa directory contiene i "binari di sistema", utilità che l'utente root o l'amministratore di sistema potrebbero voler usare, ma che probabilmente non si vorranno usare nelle proprie attività giornaliere.
/usr contiene la maggior parte dei file che potrebbero essere di qualche interesse. Essa ha molte sottodirectory: /usr/bin e /usr/sbin sono praticamente come /bin e /sbin, eccetto che le directory in /usr non sono considerate "essenziali al funzionamento del sistema".
Anche se non è essenziale per il funzionamento del computer, la directory /usr contiene le applicazioni che si useranno per realizzare ogni lavoro reale. Inoltre in /usr si trovano le directory /usr/man, /usr/info e /usr/doc che contengono rispettivamente le pagine di manuale, le pagine info, e altra documentazione. Non si deve dimenticare /usr/games!
Il sistema Debian non installa nulla in questa directory. La si dovrebbe usare se si vuole installare software che si compila da soli o ogni altro software non contenuto in un pacchetto Debian. È possibile anche installare software nella propria directory home, se si vuole essere gli unici ad usarlo.
/etc contiene tutti i file di configurazione a livello di sistema. Quando si vuole modificare qualcosa in modo che abbia effetto su tutti gli utenti del proprio computer, come la connessione a internet o quale tipo di scheda video si ha, probabilmente sarà necessario fare il login come root e modificare un file in /etc.
Qui si trovano i file temporanei, la maggior parte di questi creati dal sistema. Questa directory è generalmente ripulita a intervalli regolari od ogni volta che si riavvia il sistema. Si si vuole, è possibile creare file in questa directory, solo ci si ricordi che potranno essere cancellati automaticamente.
/var contiene file "variabili" che il sistema cambia automaticamente. Per esempio, le email in arrivo sono memorizzate qui. Il sistema tiene un registro delle sue azioni qui. In questa directory ci sono anche un certo numero di altri file generati automaticamente. Per lo più si sarà interessati al contenuto della directory /var/log, dove si possono trovare i messaggi di errore e tentare di capire cosa stia succedendo nel sistema se qualcosa va storto.
Chiaramente ci sono molte altre directory nel sistema, troppe per poterle descrivere tutte.
Per fare cambiamenti, abitualmente si vorrà limitare se stessi all'uso della propria directory home e a /etc. Su di un sistema Debian, raramente capita di cambiare qualcos'altro, perché ogni altra cosa è installata automaticamente per conto dell'utente.
/etc è usata per configurare l'intero sistema. Si userà la propria directory home, una sottodirectory di /home, per configurare le proprie preferenze e memorizzare i propri dati personali. L'idea è quella di rimanere confinati in /home/proprionome durante l'uso quotidiano, così non c'è alcun modo di rovinare qualcosa. Occasionalmente è possibile fare il login come root per modificare qualcosa in una directory di sistema, ma solo quando ` assolutamente necessario. Naturalmente, se si sta usando Debian in una scuola o azienda e qualcun altro è l'amministratore di sistema, non si avrà l'accesso come root e si potrà solamente modificare la propria directory home. Questo limita ciò che si può fare con il sistema.
Invece di muovere file manualmente, si può usare un file
manager. Se si muovono molti file un file manager può rendere il
proprio lavoro più efficiente. Sono disponibili file manager testuali,
come Midnight Commander di GNU (digitare mc
), e un certo numero di
file manager per il sistema X Window (per esempio gmc
, una
versione di Midnight Commander di GNU per X Window).
La descrizione di ognuno di essi esula dallo scopo di questo manuale, ma è possibile provarli se la riga di comando non soddisfa le proprie necessità.
[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ A ] [ B ] [ C ] [ D ] [ successivo ]
Debian Tutorial
30 settembre 2007hp@debian.org