3.2. Utenti e autorizzazioni di accesso

Sin dall'inizio nei primi anni novanta, Linux è stato sviluppato come un sistema multi-utente. Un numero qualsiasi di utenti può utilizzarlo contemporaneamente. Gli utenti devono eseguire il login al sistema prima di avviare una sessione nella propria workstation. Ogni utente dispone di un nome utente e di una parola d'ordine corrispondente. Questa differenziazione di utenti garantisce che utenti non autorizzati non possano accedere ai file per i quali non dispongono dell'autorizzazione. Modifiche al sistema più rilevanti, ad esempio l'installazione dei nuovi programmi, non sono in genere possibili o limitate per normali utenti. Solo l'utente radice o il superutente ha la capacità senza restrizioni di apportare modifiche al sistema e dispone di un accesso illimitato a tutti i file. Coloro che utilizzano questo concetto in modo appropriato, eseguendo il login con l'accesso root completo quando necessario, possono ridurre il rischio di una perdita involontaria di dati. Poiché in normali circostanze solo root può cancellare file del sistema o formattare i dischi rigidi, la minaccia proveniente dall'effetto del cavallo di Troia o da un'immissione accidentale di comandi distruttivi può essere ridotta in modo significativo.

3.2.1. Autorizzazioni del file system

In genere, ogni file in un file system Linux appartiene a un utente e a un gruppo. Entrambi questi gruppi proprietari e tutti gli altri possono essere autorizzati a scrivere, leggere o eseguire questi file.

Un gruppo, in questo caso, può essere definito come un insieme di utenti collegati con determinati diritti collettivi. Ad esempio, denominare un gruppo che lavora su un determinato progetto project3. Ogni utente in un sistema Linux è un membro di almeno un gruppo proprietario, in genere users. In un sistema possono essere presenti tutti i gruppi necessari, ma solo root è in grado di aggiungere gruppi. Ogni utente può individuare, con il comando groups, di quali gruppi è membro.

Accesso file

L'organizzazione delle autorizzazioni nel file system differisce per file e directory. Le informazioni sulle autorizzazioni dei file possono essere visualizzate con il comando ls -l. L'output potrebbe presentare il formato mostrato nell'Esempio 3.1, "Output di esempio con le autorizzazioni dei file".

Esempio 3.1. Output di esempio con le autorizzazioni dei file

-rw-r----- 1 tux project3 14197 Jun 21  15:03 Roadmap

Come mostrato nella terza colonna, il file appartiene all'utente tux. È assegnato al gruppo project3. Per individuare le autorizzazioni utente del file Roadmap, la prima colonna deve essere esaminata molto attentamente.

-

rw-

r--

---

Tipo

Autorizzazioni degli utenti

Autorizzazioni del gruppo

Autorizzazioni per altri utenti

Questa colonna è composta da un carattere iniziale seguito da nove caratteri suddivisi in tre gruppi. La prima delle dieci lettere indica il tipo di componente del file system. Il trattino (-) indica che si tratta di un file. Possono essere indicate anche una directory (d), un collegamento (l), un dispositivo a blocchi (b) o un dispositivo a caratteri.

I tre blocchi successivi seguono uno schema standard. I primi tre caratteri indicano se il file è leggibile (r) o meno (-). Il carattere w nella parte centrale indica che l'oggetto corrispondente può essere modificato, mentre un trattino (-) indica che non è possibile scrivere sul file. Il carattere x in terza posizione indica che l'oggetto può essere eseguito. Poiché il file in questo esempio è un file di testo e non è quindi eseguibile, l'accesso eseguibile per questo determinato file non è necessario.

In questo esempio, tux dispone, come proprietario del file Roadmap, dell'accesso in lettura (r) e scrittura (w), ma non può eseguirlo (x). I membri del gruppo project3 possono leggere il file, ma non possono modificarlo o eseguirlo. Altri utenti non dispongono di alcun accesso a questo file. Altre autorizzazioni possono essere assegnate mediante gli elenchi di controllo dell'accesso (ACL, Access Control Lists).

Autorizzazioni directory

Le autorizzazioni di accesso per le directory sono indicate dal carattere d. Per le directory, le singole autorizzazioni hanno un significato leggermente differente.

Esempio 3.2. Output di esempio con le autorizzazioni delle directory

drwxrwxr-x 1 tux project3 35 Jun 21 15:15  ProjectData

Nell'Esempio 3.2, "Output di esempio con le autorizzazioni delle directory", il proprietario (tux) e il gruppo proprietario (project3) della directory ProjectData sono facili da riconoscere. In contrasto con le autorizzazioni di accesso ai file da Accesso file , l'autorizzazione di lettura impostata (r) indica che è possibile mostrare il contenuto della directory. L'autorizzazione di scrittura (w) indica che è possibile creare nuovi file. L'autorizzazione eseguibile (x) indica che l'utente può passare questa directory. Nell'esempio precedente, l'utente tux nonché i membri del gruppo project3 possono passare alla directory ProjectData (x), visualizzare il contenuto (r) e aggiungervi o cancellare nuovi file (w). Al resto degli utenti invece viene concesso un accesso limitato. Possono immettere la directory (x) e accedere ad essa (r), ma non inserire alcun nuovo file (w).

3.2.2. Modifica delle autorizzazioni dei file

Modifica delle autorizzazioni di accesso

Le autorizzazioni di accesso di un file o di una directory possono essere modificate dal proprietario e da root con il comando chmod seguito dai parametri per la modifica delle autorizzazioni e uno o più nomi file. I parametri costituiscono differenti categorie:

  1. utenti interessati

    • u (user, utente) - proprietario del file

    • g (group, gruppo) - gruppo proprietario del file

    • o (others, altri) - altri utenti (se non viene specificato alcun parametro, le modifiche vengono applicate a tutte le categorie)

  2. un carattere per la cancellazione (-), l'impostazione (=) o l'inserimento (+)

  3. abbreviazioni

    • r - read

    • w - write

    • x - execute

  4. nomefile o nomifile separati da spazi

Se ad esempio l'utente tux nell'Esempio 3.2, "Output di esempio con le autorizzazioni delle directory" desidera concedere anche ad altri utenti l'accesso in scrittura (w) alla directory ProjectData, può effettuare questa operazione utilizzando il comando chmod o+w ProjectData.

Se tuttavia desidera negare le autorizzazioni di scrittura a tutti gli altri utenti, può effettuare questa operazione immettendo il comando chmod go-w ProjectData. Per impedire a tutti gli utenti di aggiungere un nuovo file alla cartella ProjectData, immettere chmod -w ProjectData. In questo modo, anche al proprietario verrà negata la scrittura sul file. Tale operazione sarà possibile solo dopo aver ripristinato le autorizzazioni di scrittura.

Modifica autorizzazioni di proprietà

Altri importanti comandi per il controllo della proprietà e delle autorizzazioni dei componenti del file system sono chown (change owner, proprietario della modifica) e chgrp (change group, gruppo della modifica). Il comando chown può essere utilizzato per trasferire la proprietà di un file a un altro utente. Tuttavia, solo a root è permesso eseguire questa modifica.

Si supponga che il file Roadmap della Esempio 3.2, "Output di esempio con le autorizzazioni delle directory" non appartenga più a tux, ma all'utente geeko. root deve quindi immettere chown geeko Roadmap.

chgrp modifica la proprietà del gruppo relativa al file. Tuttavia, il proprietario deve essere un membro del nuovo gruppo. In questo modo, l'utente tux della Esempio 3.1, "Output di esempio con le autorizzazioni dei file" può modificare il gruppo proprietario del file ProjectData passando a project4 con il comando chgrp project4 ProjectData, finché è membro di questo nuovo gruppo.