I sistemi operativi di tipo Unix, come Linux, in esecuzione su computer condivisi ad alte prestazioni, utilizzano impostazioni chiamate permessi per determinare chi può accedere e modificare i file e le directory memorizzati nei loro file system. A ogni file e directory di un file system vengono assegnati gli attributi “proprietario” e “gruppo”. Di solito, per impostazione predefinita, l’utente che crea un file o una directory è impostato come proprietario del file o della directory. In caso di necessità (ad esempio, quando un membro del team di ricerca se ne va), l’amministratore principale del sistema può modificare l’attributo utente per i file e le directory.
La designazione del gruppo può essere utilizzata per concedere a compagni di squadra e/o collaboratori l’accesso condiviso ai file e alle directory di un proprietario e fornisce un modo pratico per concedere l’accesso a più utenti.
Visualizzare le autorizzazioni dei file
Per visualizzare i permessi di tutti i file di una directory, utilizzare il comando ls con l’opzione -la. Aggiungere altre opzioni a piacere; per una guida, vedere Elenco dei file in una directory in Unix.
Ad esempio, se si inserisce:
- ls -lah
Si dovrebbe vedere un risultato simile al seguente:
- -rw-r–r– 1 user1 group1 62 Jan 15 16:10 myfile.txt
- drwxr-xr-x 2 user1 group1 2048 Jan 15 17:10 Esempio
Nell’esempio di output sopra riportato, il primo carattere di ogni riga indica se l’oggetto elencato è un file o una directory. Le directory sono indicate da una (d); l’assenza di una d all’inizio della prima riga indica che myfile.txt è un normale file.
Le lettere rwx rappresentano diversi livelli di autorizzazione:
Permesso | File | Elenchi |
r | può leggere il file | può eseguire ls sulla directory |
w | può scrivere il file | può modificare il contenuto della directory |
x | può eseguire il file | può passare alla directory |
Si notino le istanze multiple di r, w e x. Queste sono raggruppate in tre gruppi che rappresentano diversi livelli di proprietà:
- Permessi del proprietario o dell’utente: Dopo lo slot della directory (d), la prima serie di tre caratteri indica le impostazioni dei permessi per il proprietario (noto anche come utente).
Nell’esempio -rw-r–r–, i permessi del proprietario sono rw-, a indicare che il proprietario può leggere e scrivere sul file ma non può eseguirlo come programma.
Nell’esempio drwxr-xr-x, i permessi del proprietario sono rwx, a indicare che il proprietario può visualizzare, modificare ed entrare nella directory.
- Autorizzazioni di gruppo: Il secondo set rwx indica i permessi del gruppo. Nella quarta colonna dell’esempio precedente, gruppo1 è il nome del gruppo.
Nell’esempio -rw-r–r–, i membri del gruppo possono solo leggere il file.
Nell’esempio drwxr-xr-x, i membri del gruppo possono visualizzare e accedere alla directory.
- Altri permessi: L’ultimo set di rwx è per “altri” (a volte indicato come “mondo”). Si tratta di chiunque non faccia parte del gruppo. In entrambi gli esempi precedenti, questi sono impostati con gli stessi permessi del gruppo.
Modificare le autorizzazioni dei file
Per modificare i permessi di file e directory, utilizzare il comando chmod (change mode). Il proprietario di un file può modificare i permessi per l’utente (u), il gruppo (g) o altri (o) aggiungendo (+) o sottraendo (–) i permessi di lettura, scrittura ed esecuzione.
Esistono due modi fondamentali di usare chmod per modificare i permessi dei file: Il metodo simbolico e la forma assoluta.
Metodo simbolico
Il primo metodo, probabilmente il più semplice, è quello relativo (o simbolico), che consente di specificare i permessi con abbreviazioni di una sola lettera. Un comando chmod che utilizza questo metodo è composto da almeno tre parti tratte dai seguenti elenchi:
Classe di accesso | Operatore | Tipo di accesso |
u (utente) | + (aggiungere accesso) | r (leggere) |
g (gruppo) | – (rimuovere l’accesso) | w (scrivere) |
o (altro) | = (impostare l’accesso esatto) | x (eseguire) |
a (tutti: u, g e o) |
Ad esempio, per aggiungere a tutti i permessi di lettura di un file nella directory corrente chiamato myfile, al prompt di Unix digitate:
- chmod a+r myfile
La a sta per “tutti”, il + per “aggiungere” e la r per “leggere”.
Nota: Questo presuppone che tutti abbiano già accesso alla directory in cui si trova myfile e alle sue directory madri; è quindi necessario impostare i permessi delle directory separatamente.
Se si omette la classe di accesso, si assume che sia tutto, quindi si potrebbe anche inserire l’esempio precedente come:
- chmod +r myfile
È anche possibile specificare più classi e tipi con un unico comando. Ad esempio, per rimuovere i permessi di lettura e scrittura per il gruppo e gli altri utenti (lasciando solo a voi stessi i permessi di lettura e scrittura) su un file chiamato myfile, dovrete immettere:
- chmod go-rw myfile
È anche possibile specificare l’aggiunta e la rimozione di permessi diversi nello stesso comando. Ad esempio, per rimuovere il permesso di scrittura e aggiungere quello di esecuzione per tutti gli utenti di myfile, si deve immettere:
- chmod a-w+x myfile
In ognuno di questi esempi, i tipi di accesso non specificati rimangono invariati. Il comando precedente, ad esempio, non modifica le impostazioni esistenti che specificano se gli utenti, oltre a voi, possono avere accesso in lettura (r) al myfile. Si può anche usare la forma esatta per dichiarare esplicitamente che l’accesso del gruppo e di altri utenti è impostato solo in lettura con l’operatore =:
- chmod go=r myfile
Il comando chmod agisce anche sulle directory. Ad esempio, per rimuovere il permesso di scrittura per gli altri utenti su una sottodirectory denominata mydir, si deve immettere:
- chmod o-w mydir
Per fare lo stesso per la directory corrente, si deve inserire:
- chmod o-w
Per modificare i permessi in modo ricorsivo in tutte le sottodirectory al di sotto di quella specificata, aggiungete l’opzione -R; ad esempio, per concedere i permessi di esecuzione per gli altri utenti a una directory (mydir) e a tutte le sottodirectory in essa contenute, dovrete inserire:
chmod -R o+x mydir
Fate attenzione quando impostate i permessi delle directory, in particolare della vostra home directory; non volete chiudervi fuori rimuovendo il vostro accesso. Inoltre, è necessario avere il permesso di esecuzione su una directory per passare (cd) ad essa.
Forma assoluta
L’altro modo di usare il comando chmod è la forma assoluta, in cui si specifica un insieme di tre numeri che insieme determinano tutte le classi e i tipi di accesso. Invece di poter modificare solo particolari attributi, è necessario specificare l’intero stato dei permessi del file.
I tre numeri sono specificati nell’ordine: utente (o proprietario), gruppo e altro. Ogni numero è la somma dei valori che specificano l’accesso in lettura, scrittura ed esecuzione:
Permesso | Numero |
Leggere (r) | 4 |
Scrivere (w) | 2 |
Eseguire (x) | 1 |
Aggiungete i numeri dei permessi che volete concedere, ad esempio:
Per il file myfile, per concedere i permessi di lettura, scrittura ed esecuzione a voi stessi (4+2+1=7), i permessi di lettura ed esecuzione agli utenti del vostro gruppo (4+0+1=5) e solo i permessi di esecuzione agli altri (0+0+1=1), si usa:
- chmod 751 myfile
Per concedere i permessi di lettura, scrittura ed esecuzione sulla directory corrente solo a se stessi, si usa:
- chmod 700
La sequenza di tre cifre può essere considerata come la somma degli attributi selezionati dalla seguente tabella:
Letto dal proprietario | 400 |
Scrivi per il proprietario | 200 |
Eseguito dal proprietario | 100 |
Letto dal gruppo | 40 |
Scrivere per gruppo | 20 |
Eseguire per gruppo | 10 |
Letto da altri | 4 |
Scrivere da parte di altri | 2 |
Esecuzione da parte di altri | 1 |
Sommare tutti gli accessi che si desidera consentire. Ad esempio, per dare i privilegi di scrittura ed esecuzione al proprietario di myfile (200+100=300) e i privilegi di lettura a tutti (400+040+004=444), si deve inserire:
- chmod 744 myfile
Altri esempi sono:
777 | chiunque può fare qualsiasi cosa (leggere, scrivere o eseguire) |
755 | si può fare qualsiasi cosa; gli altri possono solo leggere ed eseguire |
711 | potete fare qualsiasi cosa; gli altri possono solo eseguire |
644 | si può leggere e scrivere; altri possono solo leggere |
Problemi comuni quando si condividono i dati con altri utenti
Importante: Assicuratevi di aver compreso le vostre responsabilità nell’elaborazione, archiviazione e condivisione di dati contenenti informazioni sanitarie protette (PHI). Per ulteriori informazioni, consultare la sezione Le vostre responsabilità legali per la protezione dei dati contenenti informazioni sanitarie protette (PHI) quando utilizzate i sistemi e i servizi di UITS Research Technologies.
Per condividere con qualcuno un file o una directory di cui si è proprietari, è possibile concedere all’utente i privilegi di lettura ed esecuzione. Tuttavia, è necessario impostare gli stessi privilegi anche su tutte le directory madri che si trovano al di sopra dell’elemento che si sta condividendo; in caso contrario, l’utente non potrà consultare e modificare (cd) tutte le directory madri che si trovano al di sopra del file o della directory.
Se si pensa a un file system come a un luogo fisico, i permessi funzionano come chiavi che consentono di accedere a diverse directory:
- Il permesso di lettura (r) consente agli utenti di guardare (ls) nelle directory.
- Il permesso di esecuzione (x) consente agli utenti di spostarsi (cd) nelle directory.
- L’autorizzazione di scrittura (w) consente agli utenti di aggiungere e rimuovere file.
Per esempio, supponiamo di voler dare a qualcuno l’accesso a /N/u/username/Carbonate/scripts. Immaginate il percorso come uno spazio fisico:
- /N è la comunità recintata in cui vivete.
- /u è l’unità.
- /username è il vostro appartamento.
- /Carbonate è una stanza del vostro appartamento.
- /scripts è un armadio nella vostra stanza.
Se qualcuno volesse eseguire i vostri script, dovreste dargli accesso a ogni parte di /N/u/username/Carbonate/scripts. Si potrebbe provare a farlo in questo modo:
- chmod +rx /N/u/username/Carbonate/scripts
Tuttavia, un utente non può leggere o accedere a una sottodirectory a meno che non abbia anche i permessi x per le directory madri. In altre parole, il comando precedente fornisce la chiave dell’armadio, ma non della stanza o dell’appartamento.
Per risolvere questo problema, date i permessi x alle directory padre che controllate:
- chmod +x /N/u/username/
- chmod +x /N/u/username/Carbonate
Questo permetterà agli altri di spostarsi (cd) nella directory degli script. Poiché le directory padre non hanno i permessi r, gli utenti potranno guardare (ls) solo all’interno della directory degli script, mantenendo il resto del file system privato.
Chiedere aiuto
Per ulteriori informazioni su chmod, consultare la pagina del manuale. Al prompt di Unix, immettere:
- man chmod
All’Università dell’Indiana, per l’assistenza personale o dipartimentale ai sistemi Linux o Unix, si veda Get help for Linux or Unix at IU.