[ 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
Capitolo 7 - Di più sui file


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.


7.1 I permessi

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:

  1. Fare il login con il proprio nome utente, cioè NON come root.

  1. whoami

    Verificare di non essere root.

  1. 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).


7.1.1 La proprietà dei file

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:

  1. 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.

  1. 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.

  1. 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.)


7.1.2 Modalità

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:

Le modalità per le directory creano un po' di confusione, così di seguito ci sono alcuni esempi degli effetti prodotti da varie combinazioni:

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.


7.1.3 I permessi in pratica

Questa sezione ripercorre una breve sessione di esempio per dimostrare come si usano i permessi.

Per cambiare i permessi, si userà il comando chmod.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. chmod a-x miofile

    a è una scorciatoia per ugo o "all" (tutti). Così tutti i permessi x ora dovrebbero essere disattivati.

  1. 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.


7.2 Quali file ci sono sul proprio sistema? Dove si possono mettere i propri file?

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.

/root

Non si confonda / con /root! /root è la directory home dell'utente root, o superutente. È una directory chiamata /root, ma non è la directory root /.

/home

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.

/bin

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.

/sbin

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

/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!

/usr/local

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

/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.

/tmp

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

/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.


7.3 Usare un file manager

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 2007

Havoc Pennington hp@debian.org