Gestione degli attributi dei file

I comandi elencati qui sotto servono a modificare il proprietario o il gruppo proprietario di un file, o i suoi permessi. Abbiamo visto in cosa consistono i permessi nel capitolo Concetti base di UNIX.

chown, chgrp: cambiare il proprietario o il gruppo di uno o più file

La sintassi del comando chown (CHange OWNer) è la seguente:

chown [opzioni] <utente[.gruppo]> <file|directory> [file|directory...]

Le opzioni includono:

  • -R: modalità ricorsiva; per cambiare il proprietario di tutti i file e le directory presenti in una directory.

  • -v: modalità prolissa; descrive tutte le operazioni compiute dal comando chown; riporta quali file hanno cambiato proprietario e quali sono rimasti invariati.

  • -c: simile all'opzione -v, ma riporta solo quali file sono cambiati.

Alcuni esempi:

  • chown nobody /shared/book.tex: cambia il proprietario del file /shared/book.tex in nobody.

  • chown -Rc adamo.music *.mid concerts/: attribuisce la proprietà di tutti i file nella directory corrente il cui nome termina con .mid e di tutti i file e le sotto-directory nella directory concerts/ all'utente adamo e al gruppo music, elencando solo i file modificati dal comando.

Il comando chgrp (CHange GRouP) vi consente di cambiare il gruppo proprietario di uno o più file; la sua sintassi è molto simile a quella di chown:

chgrp [opzioni] <gruppo> <file|directory> [file|directory...]

Le opzioni di questo comando sono le stesse di chown, e anche il suo utilizzo è molto simile. Pertanto, il comando:

chgrp disk /dev/hd*

attribuisce al gruppo disk tutti i file nella directory /dev/ il cui nome comincia con hd.

chmod: modificare i permessi di file e directory

Il comando chmod (CHange MODe) ha una sintassi molto particolare. La sintassi generica è:

chmod [opzioni] <cambia modo> <file|directory> [file|directory...]

ma ciò che lo distingue sono i diversi modi in cui la modifica dei permessi può essere specificata. In particolare, si possono utilizzare due formati:

  1. in ottale: in questo caso i permessi dell'utente proprietario sono indicati con delle cifre che seguono lo schema <x>00, dove <x> corrisponde al permesso assegnato: 4 per il permesso di lettura, 2 per quello di scrittura e 1 per quello di esecuzione; allo stesso modo i permessi del gruppo proprietario vengono espressi come <x>0 e i permessi per gli altri utenti (“others”) nella forma <x>. Pertanto tutto quello che dovete fare è sommare insieme i permessi per ottenere la cifra corretta. I permessi rwxr-xr- -, ad esempio, corrispondono a 400+200+100 (diritti del proprietario, rwx) +40+10 (diritti del gruppo, r-x) +4 (diritti degli altri, r- -) = 754; in questo modo, i permessi vengono espressi in forma assoluta. Questo significa che i permessi assegnati in precedenza vengono sovrascritti;

  2. con delle espressioni: in questo caso i permessi vengono indicati da una sequenza di espressioni separate da virgole; un'espressione, quindi, ha il seguente formato: [categoria]<+|-|=><permessi>.

    La categoria può essere indicata da una o più lettere:

    • u (User, permessi del proprietario);

    • g (Group, permessi per il gruppo proprietario);

    • o (Others, permessi per “gli altri”).

    Se non viene specificata una categoria, il cambiamento si applica a tutte. Un segno + assegna un permesso, un segno - lo rimuove e un segno = lo assegna. Per finire, il permesso è uno o più dei seguenti:

    • r (Read);

    • w (Write);

    • x (eXecute).

Le opzioni principali sono molto simili a quelle dei comandi chown o chgrp:

  • -R: cambia i permessi in modo ricorsivo.

  • -v: modalità prolissa, riporta le operazioni effettuate per ciascun file.

  • -c: simile all'opzione -v, ma mostra solo i file per cui sono stati modificati i permessi.

Esempi:

  • chmod -R o-w /shared/docs: rimuove ricorsivamente il permesso di scrittura per gli altri su tutti i file e le sottodirectory della directory /shared/docs/.

  • chmod -R og-w,o-x private/: rimuove ricorsivamente il permesso di scrittura per il gruppo e gli altri sull'intera directory private/, e rimuove il permesso di esecuzione per gli altri.

  • chmod -c 644 miscellaneous/file*: modifica i permessi per tutti i file nella directory miscellaneous/ il cui nome comincia per file, impostandoli come rw-r- -r- - (ovvero permesso di lettura per tutti e permesso di scrittura solo per il proprietario) visualizzando solo i file i cui permessi sono stati effettivamente modificati.