La gestione degli utenti e dei permessi è un aspetto fondamentale per la sicurezza e l'organizzazione di un sistema Linux. A differenza di sistemi operativi come Windows, Linux è progettato fin dall'inizio per essere un sistema multi-utente, dove ogni utente ha un proprio spazio e privilegi specifici. In questa guida, scoprirai come creare, modificare ed eliminare utenti e gruppi, e come funziona il sistema di permessi POSIX per controllare l'accesso ai file e alle directory.
1. Introduzione al sistema utenti e permessi
In Linux, ogni processo e file appartiene a un utente e a un gruppo. I permessi determinano cosa un utente specifico o un gruppo può fare con un file o una directory. Questo sistema è essenziale per mantenere la stabilità e la sicurezza del sistema, impedendo ad utenti non autorizzati di modificare file di sistema critici o di accedere ai dati di altri utenti.
2. Tipi di utenti
Esistono tre tipi principali di utenti in Linux:
- Root (Superutente): L'utente con privilegi massimi. Può fare qualsiasi cosa sul sistema. Il suo UID (User IDentifier) è 0. Usare root direttamente è sconsigliato per l'uso quotidiano.
- Utenti regolari: Gli utenti normali creati per le persone che utilizzano il sistema. Hanno privilegi limitati e non possono modificare file di sistema critici.
- Utenti di sistema: Utenti speciali creati per far funzionare servizi e demoni (come
www-dataper Apache omysqlper il database). Di solito non hanno shell di login.
3. Gruppi
I gruppi sono un modo per organizzare gli utenti. Un utente può appartenere a uno o più gruppi. I permessi di un file possono essere impostati in modo da consentire l'accesso a tutti i membri di un gruppo specifico. Questo semplifica la gestione dei permessi per file e directory condivise.
4. Comandi principali per la gestione degli utenti
Visualizzare gli utenti
Per vedere tutti gli utenti del sistema, puoi leggere il file /etc/passwd:
Per vedere l'utente corrente:
Per vedere tutti gli utenti attualmente loggati:
Creare un nuovo utente
Il comando principale per creare un nuovo utente è useradd. Per creare un utente completo (con home directory e shell predefinita), usa:
Dove:
-mcrea la directory home per l'utente.-s /bin/bashimposta la shell predefinita.nomeutenteè il nome scelto per il nuovo utente.
Successivamente, imposta una password per il nuovo utente:
Modificare un utente
Per modificare le proprietà di un utente esistente, usa il comando usermod. Esempi:
Cambiare la shell:
Cambiare la directory home (e spostare i file esistenti):
Eliminare un utente
Per rimuovere un utente senza cancellare la sua home directory:
Per rimuovere un utente e anche la sua directory home:
5. Comandi principali per la gestione dei gruppi
Visualizzare i gruppi
Per vedere tutti i gruppi del sistema:
Per vedere i gruppi a cui appartiene l'utente corrente:
Per vedere i gruppi di un altro utente:
Creare un nuovo gruppo
Per creare un nuovo gruppo:
Aggiungere un utente a un gruppo
Per aggiungere un utente a un gruppo (senza rimuoverlo dagli altri gruppi):
Il flag -aG sta per "append Group".
Rimuovere un utente da un gruppo
Questo comando rimuove un utente da un gruppo specifico:
Eliminare un gruppo
Per rimuovere un gruppo:
Attenzione: Il gruppo deve essere vuoto per poter essere eliminato.
6. Il sistema di permessi POSIX
Il sistema di permessi POSIX è il metodo standard utilizzato da Linux per controllare l'accesso ai file e alle directory. Ogni file e directory ha tre categorie di utenti e tre tipi di permessi.
Categorie di utenti
- Owner (u): Il proprietario del file, solitamente l'utente che lo ha creato.
- Group (g): Il gruppo proprietario del file.
- Others (o): Tutti gli altri utenti del sistema.
Tipi di permessi
- Read (r): Lettura. Per un file, significa poter leggere il contenuto. Per una directory, significa poter vedere l'elenco dei file.
- Write (w): Scrittura. Per un file, significa poter modificarlo. Per una directory, significa poter creare, eliminare o rinominare file al suo interno.
- Execute (x): Esecuzione. Per un file, significa poterlo eseguire come programma. Per una directory, significa poterla attraversare (usare
cdper entrarci).
Visualizzare i permessi
Usa il comando ls -l per vedere i permessi di un file o una directory:
La stringa -rw-r--r-- rappresenta i permessi. La prima lettera indica il tipo di file (- per file, d per directory). Le successive 9 lettere sono divise in 3 gruppi di 3:
- Primi 3 caratteri: permessi per l'Owner (
rw-). - Secondi 3 caratteri: permessi per il Group (
r--). - Ultimi 3 caratteri: permessi per Others (
r--).
| Carattere | Significato |
|---|---|
| r | Permesso di lettura |
| w | Permesso di scrittura |
| x | Permesso di esecuzione |
| - | Permesso non concesso |
Modificare i permessi con chmod
Il comando chmod serve per modificare i permessi. Esistono due modi principali: il metodo simbolico e il metodo numerico.
Metodo Simbolico
La sintassi generale è: chmod [chi][operatore][permesso] file
- chi: u (user/owner), g (group), o (others), a (all, tutti).
- operatore: + (aggiungere), - (rimuovere), = (impostare esattamente).
- permesso: r, w, x.
Esempi:
Dare il permesso di esecuzione al proprietario:
Rimuovere il permesso di scrittura al gruppo:
Dare il permesso di lettura a tutti:
Metodo Numerico (Ottale)
In questo metodo, ogni permesso ha un valore numerico:
- r = 4
- w = 2
- x = 1
- - = 0
I permessi per Owner, Group e Others sono sommati e rappresentati da un numero a tre cifre.
| Permesso | Simbolico | Numerico |
|---|---|---|
| Lettura e scrittura | rw- | 6 |
| Lettura ed esecuzione | r-x | 5 |
| Lettura, scrittura ed esecuzione | rwx | 7 |
| Solo lettura | r-- | 4 |
Esempio: Impostare i permessi a rwx per il proprietario, rx per il gruppo e rx per gli altri (risultato: rwxr-xr-x)
Modificare il proprietario e il gruppo con chown e chgrp
Per cambiare il proprietario di un file:
Per cambiare il gruppo:
Per cambiare entrambi in un colpo solo:
7. Comprendere SUID, SGID e Sticky Bit
Oltre ai permessi standard, esistono tre bit speciali che possono essere applicati ai file e alle directory:
- SUID (Set User ID): Quando un file eseguibile ha questo bit impostato, viene eseguito con i privilegi del proprietario del file, non dell'utente che lo esegue. Rappresentato da
sal posto dixnella posizione del proprietario (es.-rwsr-xr-x). - SGID (Set Group ID): Simile a SUID, ma per il gruppo. Su una directory, significa che i nuovi file creati al suo interno erediteranno il gruppo della directory stessa, non dell'utente che li crea.
- Sticky Bit: Quando impostato su una directory (come
/tmp), solo il proprietario di un file o la root possono eliminarlo, anche se altri utenti hanno i permessi di scrittura su quella directory. Rappresentato dat(es.drwxrwxrwt).
8. Esempi pratici e consigli
- Condividere una cartella tra due utenti: Crea un nuovo gruppo (es.
progetto), aggiungi entrambi gli utenti a quel gruppo, crea la cartella, cambia il gruppo proprietario della cartella aprogetto(chgrp progetto /percorso/cartella) e imposta i permessi a775(chmod 775 /percorso/cartella) per permettere lettura e scrittura al proprietario e al gruppo, e sola lettura agli altri. - Rendere eseguibile uno script:
chmod +x mio_script.sh. - Proteggere un file sensibile:
chmod 600 file_privato.conf(solo il proprietario può leggere e scrivere).
- Usa sempre
sudocon cautela: Ricorda che i comandi di gestione utenti e permessi richiedono privilegi elevati. - Conosci i tuoi comandi: Prima di eseguire comandi come
chmodochownsu file di sistema, assicurati di capirne le conseguenze. - Usa gruppi per semplificare: Organizzare gli utenti in gruppi rende la gestione dei permessi molto più efficiente rispetto all'impostarli singolarmente per ogni utente.
Padroneggiare la gestione degli utenti e dei permessi in Linux è essenziale per chiunque voglia utilizzare o amministrare un sistema in modo sicuro ed efficiente. Questo sistema offre un controllo granulare e potente, fondamentale per la filosofia di sicurezza di Linux.
Pc Facile !