Prefazione
La gestione degli utenti e dei permessi in Linux è una delle attività fondamentali per garantire la sicurezza, la stabilità e il corretto funzionamento del sistema operativo. In ambienti enterprise e mission-critical, una configurazione errata può compromettere l’intero server o esporre dati sensibili. Questo articolo è pensato per amministratori di sistema e professionisti IT che desiderano comprendere a fondo le logiche di autenticazione, autorizzazione e controllo degli accessi in ambienti Linux, fornendo strumenti pratici e soluzioni immediate.
In Linux, la gestione degli utenti e dei permessi è fondamentale per la sicurezza e il funzionamento del sistema. Gli utenti possono essere creati e modificati utilizzando comandi come useradd
, passwd
, e usermod
. I permessi di file e directory, invece, vengono gestiti con il comando chmod
e con i comandi chown
e chgrp
per modificare l’utente e il gruppo proprietario.
Gestione degli Utenti:
- Creazione:Il comando
useradd
crea un nuovo utente. Ad esempio,useradd nuovo_utente
. - Modifica della password:Il comando
passwd
permette di impostare o modificare la password di un utente. - Aggiunta a un gruppo:Il comando
usermod -aG gruppo_nome nome_utente
aggiunge un utente a un gruppo. - Eliminazione:Il comando
userdel -r nome_utente
elimina un utente e la sua directory home.
Gestione dei Permessi:
- Comando
chmod
:Questo comando cambia i permessi di lettura (r), scrittura (w) ed esecuzione (x) per file e directory.- Modalità simbolica: Si usa la sintassi
chmod [tipo_utente][operazione][permesso] [nome_file]
(es.chmod u+x file.txt
aggiunge i permessi di esecuzione all’utente proprietario). - Modalità ottale: Si usa una sequenza di tre numeri per definire i permessi (es.
chmod 755 file.txt
assegna permessi di lettura, scrittura ed esecuzione all’utente proprietario, lettura ed esecuzione al gruppo e agli altri utenti).
- Modalità simbolica: Si usa la sintassi
- Comando
chown
:Modifica l’utente proprietario di un file o directory.- Ad esempio,
chown nuovo_utente:nuovo_gruppo file.txt
cambia l’utente e il gruppo proprietario.
- Ad esempio,
- Comando
chgrp
:Modifica il gruppo proprietario di un file o directory.- Ad esempio,
chgrp nuovo_gruppo file.txt
cambia il gruppo proprietario.
- Ad esempio,
Informazioni aggiuntive:
- I permessi sono associati a tre categorie di utenti: l’utente proprietario (u), il gruppo proprietario (g) e gli altri utenti (o).
- Il comando
ls -l
mostra le informazioni sui file, inclusi i permessi. - Il superutente “root” ha accesso illimitato a tutti i file.
- Per dare a un utente permessi di root, è necessario aggiungerlo al gruppo
sudo
.
In sintesi, la gestione degli utenti e dei permessi in Linux è un processo che richiede la conoscenza dei comandi e dei concetti fondamentali per garantire la sicurezza e la corretta gestione delle risorse del sistema.
Q&A – Analisi Strutturata
Qual è la causa dei problemi comuni con utenti e permessi in Linux?
Mancata conoscenza delle gerarchie dei permessi, errori nei comandi chmod/chown, policy troppo permissive o troppo restrittive.
Come si manifestano questi problemi?
Accessi negati a file o directory, utenti che non riescono a eseguire comandi, servizi che falliscono per mancanza di autorizzazioni.
Dove si riscontrano più frequentemente?
In ambienti multiutente, in directory condivise (es. /var/www, /srv), oppure nella gestione di script o crontab.
Quando si verificano?
Dopo la creazione di nuovi utenti, modifiche alle ACL, aggiornamenti del sistema o deploy di nuove applicazioni.
Perché è fondamentale una gestione corretta?
Per proteggere l’integrità del sistema, prevenire l’accesso non autorizzato e garantire il principio del minimo privilegio.
Soluzioni ed Esempi
Creazione e gestione utenti
Creare un utente:
bashadduser marco
Aggiungere l’utente a un gruppo specifico:
bashusermod -aG www-data marco
Verificare i gruppi di un utente:
bashgroups marco
Gestione dei permessi di file e directory
Visualizzare permessi:
bashls -l /var/www/
Modificare i permessi con chmod:
bashchmod 750 /var/www/html
Modificare il proprietario con chown:
bashchown marco:www-data /var/www/html
Ugo: la base dei permessi Linux
U: utente
G: gruppo
O: altri
Esempio:
cssdrwxr-x--- marco www-data /var/www/html
Significa:
- marco ha lettura/scrittura/esecuzione
- www-data ha lettura/esecuzione
- altri non hanno accesso
Uso delle ACL per permessi avanzati
Abilitare ACL su filesystem:
bashmount -o remount,acl /dev/sda1 /
Aggiungere permessi ACL:
bashsetfacl -m u:alessio:rwx /srv/project
Verificare ACL:
bashgetfacl /srv/project
Controllo dei login e delle shell
Bloccare un account:
bashpasswd -l marco
Impostare shell nulla:
bashusermod -s /usr/sbin/nologin marco
Verifica dell’utilizzo delle autorizzazioni
Controllare accessi falliti:
bashgrep "Failed password" /var/log/auth.log
Audit file access:
bashauditctl -w /etc/passwd -p wa
ausearch -f /etc/passwd
Best Practice
- Assegna sempre il minimo privilegio necessario (principio del Least Privilege).
- Crea gruppi dedicati per ogni team o funzione.
- Usa le ACL per scenari granulari e i permessi UGO per quelli standard.
- Verifica regolarmente i permessi con script di auditing automatici.
- Documenta ogni modifica a utenti o gruppi.
- Non usare root per operazioni quotidiane.
- Abilita l’autenticazione a due fattori per l’accesso SSH.
- Blocca gli account inattivi periodicamente.
- Automatizza con Ansible o Puppet per ambienti di produzione.
- Fai uso di cronjob per controlli periodici delle autorizzazioni.
Conclusione
Una corretta gestione di utenti e permessi in Linux non è solo una buona prassi: è un elemento imprescindibile di sicurezza e affidabilità. Conoscere strumenti come chmod, chown, ACL, e le policy utente consente di evitare errori gravi e ottimizzare l’operatività.
🔗 Argomenti correlati utili: