venerdì 8 febbraio 2013

Gestione file e directory da terminale

La gestione dei file e delle direcotry da parte di Linux avviene in modo abbastanza semplice ed intuitivo. In particolare ad ogni file (e ad ogni directory) sono assegnati una serie di permessi (lettura, scrittura, esecuzione) relativa ai diversi utenti che utilizzano il sistema.

Anzitutto è importante capire che ogni file ha la possibilità di avere permessi differenziati per il proprietario, ovvero l'utente che ha creato il file, il gruppo, ovvero un raggruppamento di utenti, e gli altri, ovvero tutti gli altri utenti creati all'interno del sistema che non fanno parte di quelli del gruppo e non sono i proprietari.

Se vuoi saperne di più riguardo agli utenti e ai gruppi consulta la guida Gestione utenti e gruppi da terminale.

Per visualizzare i permessi relativi a dei file e delle directory è possibile lanciare da terminale il comando

$ls -l

Se non sai come si utilizza il terminale consulta la guida Utilizzare il terminale.

L'output di tale comando sarà una lista di tutti i file e di tutte le directory contenuti nella posizione in cui ci si trova: supponiamo di trovarci nella root directory (/) e di utilizzare tale comando. L'output sarà qualcosa di questo tipo

totale 101
drwxr-xr-x   2 root root  4096 gen 19 15:23 bin
drwxr-xr-x   4 root root  1024 feb  1 10:59 boot
drwxr-xr-x   2 root root  4096 gen 19 11:52 cdrom
drwxr-xr-x  16 root root  4320 feb  8 11:03 dev
[...]

analizziamo l'output:

  • la prima colonna indica i permessi su tale file (o directory);
  • la seconda indica il numero di collegamenti a quel file (hard links);
  • la terza indica il proprietario;
  • la quarta indica il gruppo;
  • la quinta indica la dimensione (in byte) sul disco;
  • la sesta indica la data dell'ultima modifica;
  • la settima il nome del file o della directory.

analizziamo ora i permessi sui file e sulle directory. Dall'esempio di output riportato qui sopra è possibile notare che i permessi vengono identificati tramite dei caratteri che hanno un significato specifico e si trovano sempre in un ordine analogo.
L'ordine dei permessi è il seguente:

il primo carattere indica se quella voce è un file o una directory (d nell'esempio);
i 3 caratteri successivi indicano i permessi del proprietario (rwx nell'esempio);
i 3 caratteri successivi indicano i permessi del gruppo (r-x nell'esempio);
gli ultimi 3 caratteri indicano i permessi degli altri utenti (r-x nell'esempio).

Il significato dei caratteri è il seguente:


d
-

r
w
x
-il primo carattere può essere
indica che quella voce è una directory
indica che quella voce è un file
i caratteri che identificano i permessi sono:
indica il permesso di lettura
indica il permesso di scrittura
indica il permesso di esecuzione
indica che l'utente non ha il permesso a cui è sostituito

per chiarire meglio usiamo la prima voce (bin) dell'esempio di output riportato sopra:

drwxr-xr-x   2 root root  4096 gen 19 15:23 bin
Nome: bin
Proprietario: root
Gruppo: root
Tipo: directory (d)
Permessi proprietario: può leggere (r), scrivere (w) ed eseguire (x)
Permessi gruppo: può leggere (r), non può scrivere (-), può eseguire (x)
Permessi altri: può leggere (r), non può scrivere (-), può eseguire (x)

Modificare gli attributi di un file (o una directory)

Per modificare gli attributi di un file e di una directory, Linux mette a disposizione più comandi, ognuno dei quali si occuperà di variare uno degli aspetti sopra riportati.

  • chown serve per modificare il proprietario del file (o directory)
    Utilizzo:

    $
    
    $chown [new_own] [file]
    oppure
    chown [new_own]:[new_group] [file]

    al posto di [new_own] bisognerà mettere il nome del nuovo proprietario, [new_group] andrà sostituito con il nome del nuovo gruppo e [file] con il nome del file (o directory). È anche possibile cambiare i permessi di una directory e di tutti i file contenuti utilizzando l'opzione -R. Esempio:

    #chown -R root:root /bin
  • chgrp permette di modificare il gruppo del file (o directory)
    Utilizzo:

    $chgrp [new_group] [file]

    [new_group] andrà sostituito con il nome del nuovo gruppo e [file] con il nome del file (o directory). È anche possibile cambiare i permessi di una directory e di tutti i file contenuti utilizzando l'opzione -R. Esempio:

    #chgrp -R root /bin
  • chmod serve per cambiare i permessi del file (o directory)
    Utilizzo:

    $chmod [new_mods] [file]

    [new_mods] andrà sostituito con una sequenza di 3 numeri che identificano i permessi e [file] con il nome del file (o directory). È anche possibile cambiare i permessi di una directory e di tutti i file contenuti utilizzando l'opzione -R. Esempio:

    #chmod -R 755 /bin

    Il significato dei numeri da sostituire a [new_mods] è il seguente:

    1
    2
    4
    
    3
    5
    6
    7permesso di esecuzione sul file
    permesso di scrittura sul file
    permesso di lettura sul file
    per impostare più di un permesso sul file bisogna sommare i precedenti:
    esecuzione+scrittura (1+2)
    esecuzione+lettura (1+4)
    scrittura+lettura (2+4)
    esecuzione+scrittura+lettura (1+2+4)

    il primo numero costituirà i permessi del proprietario, il secondo quelli del gruppo, il terzo quelli degli altri utenti.

Fonte: Ubuntu Manpage