L’aggiunta e la rimozione di utenti su sistemi Linux è un compito semplice e di routine ma è anche uno dei punti chiave che determina l’effettiva sicurezza del sistema.
/etc/passwd
Il file /etc/passwd è un elenco degli utenti presenti nel sistema.
Il sistema consulta tale file in fase di login per determinare lo UID dell’utente e per verificarne la password.
Il file /etc/passwd è strutturato in questo modo:
nome login password crittografata uid gid informazioni GECOS: nome completo, ufficio, estensione, telefono di casa b home directory shell login
Esempio di entry del file /etc/passwd:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Nomi login
I nomi di login devo essere univoci e in linea di massima non più lunghi di 8 caratteri;
dovrebbero essere formati da soli caratteri alfanumerici per prevenire incompatibilità con sistemi datati o software mail.
Altra raccomandazione è evitare i caratteri maiuscoli.
Nel caso di nomi di login eccessivamente lunghi o duplicati sarà possibile utilizzare il file /etc/aliases per permettere di mantenere tale nome per la mail e uno più breve per il login.
/etc/aliases ashevchenko asheva
In linea di massima si adotta la politica di adoperare la prima lettera del nome e il cognome.
Se fossimo dotati di più macchine è conveniente mantenere gli stessi identici utenti sulle medesime, oppure utilizzare un sistema centralizzato come NIS o NIS+.
Password crittografata
/etc/passwd memorizza al suo interno le password degli utenti in modo crittofrafato.
Per aggiungere o impostare la password di un utente si utilizza il comando passwd.
Quando un utente sceglie una password questa viene codificata con un valore generico casuale di due caratteri detto “seme”.
Quando l’utente si collega alla macchina fornendo la password prima di tutto viene prelevato il seme della password codificata in memoria, poi viene codificata con tale seme e confrontata con quella digitata dall’utente.
Se vogliamo editare il file passwd a mano è essenziale porre un * al posto del campo che dovrà contenere la password, se non si esegue questo passaggio l’utente potrà collegarsi al sistema senza fornirne alcuna.
Numero di UID
E’ un intero di 16 o 32bit.
Le versioni attuali di Linux sono dotate di un valore massimo di UID pari a 65535. Per definizione l’utente root ha UID 0.
E’ possibile creare più utenti con UID pari a 0 ma questo può generare il più delle volte confusione e falle di sicurezza. Se utenti hanno necessità di avere i privilegi di root è possibile utilizzare il comando sudo.
Numero di GID
Cosଠcome lo UID anche il GID è un intero di 16 o 32bit.
Il GID 0 è riservato al gruppo dell’utente root.
I gruppi in linux son specificati nel file /etc/group e il campo GID in /etc/passwd serve per identificare al momento dell’autenticazione il gruppo dell’utente.
Un utente può appartenere fino a 16 gruppi distinti.
Campo GECOS
Il campo GECOS è utilizzato per contenere le informazioni personali dell’utente.
nome completo stanza numero di casa numero di ufficio
Queste informazioni possono essere modificate dall’utente con il comando chfn.
Quando gli utenti si collegano al sistema vengono collocati automaticamente all’interno della loro home directory.
Nel caso in cui la home directory non sia presente il sistema mostra un messaggio del tipo “no home directory”.
Altri sistemi permettono invece di posizionare l’utente nella directory radice.
La shell di login è un interprete di comandi come la shell di Bourne o la C shell.
sh è la shell di default in molti sistemi (vedi Solaris10, mentre è bash in molte delle distribuzioni Linux e csh sui BSD) e viene utilizzata nel caso in cui il file /etc/passwd non specifichi alcuna shell di login.
Altre shell sono la ksh(Korn shell), bash(Bourne Again Shell di GNU) e tcsh (C shell dotata di editing di comandi).
Gli utenti possono modificare la propria shell mediante il comando chsh, in ogni caso le shell disponibili nel sistema sono presenti nel file /etc/shells.
/etc/shadow
Una ulteriore protezione per gli accounts è l’utlizzo delle shadow passwords, previa installazione del package (sebbene sia ormai un default).
Il file /etc/shadow è leggibile esclusivamente da parte del superuser e ha lo scopo di mantenere al sicuro le password criptate, oltre che mantenere informazioni più dettagliate sull’account.
Unico problema è effettuare a mano la sincronizzazione delle informazioni nel file /etc/passwd e /etc/shadow.
Nel file /etc/shadow possiamo trovare queste informazioni utente:
- nome di login
- password crittografata
- data ultima modifica della password
- minimo numero di giorni che devono trascorrere tre due modifiche della password
- massimo numero di giorni che devono trascorrere tre due modifiche delle password
- numero di giorni di anticipo con i quali avvisare gli utenti delle prossima scadenza della password.
- numero di giorni di inattività della scadenza dell’account (non in tutte le distro)
- data scadenza account
- altri flag
I campi obbligatori son quelli del nome utente e password.
I campi contenenti le date assolute vengono espressi in termini di giorni trascorsi dal primo gennaio 1970, per poter agevolmente impostare questi campi è possibile utilizzare il comando usermod.
Una tipica entry del file /etc/shadow:
[20:24][root:/etc]# cat shadow | grep sarina sarina:$1$aWzqJFB$qRl1JM3o7QRXBQYR.hSr60:13063:0:99999:7:::
Una tipica entry del file /etc/passwd:
[20:24][root:/etc]# cat shadow | grep sarina sarina:x:1003:1003:,,,:/home/sarina:/bin/bash
Come si può notare, nella corrispondenza fra i due files, notiamo l’assenza della password crittografata nel file /etc/passwd, sostituita dal carattere x.
/etc/group
Questo file contiene i nomi dei gruppi UNIX e l’elenco dei membri di ciscun gruppo.
root:x:0: mail:x:8: wheel:*:root, asheva, rino, indre
Ciascuna linea rappresenta un gruppo ed è composta da 4 campi:
- nome del gruppo
- password crittografata (quasi mai usata)
- numero di GID
- elenco dei membri
Creazione nuovo utente
Sono due i passi fondamentali per la creazione di un nuovo utente:
Passi necessari
- modifica file /etc/passwd e /etc/shadow
- impostazione password iniziale
- creazione home directory
Passi amministrativi
- aggiunta utente /etc/group
- eventuale configurazione quote disco
- verifica impostazioni account
Importante settare la password del nuovo utente con il comando passwd nome_utente
Verrà richiesto di digitare per due volte la password, sul monitor non apparirà nessun carattere ne * per questioni di sicurezza.
La scelta della password è un passo fondamentale per la sicurezza del sistema.
E’ utile utilizzare un programmino come npasswd ) che controlla se la password inserita compare nel dizionario del sistema, onde evitare brute force banali.
Creazione Home Directory: Una volta creata la dir dell’utente occorre modificare l’owner e il gruppo di appartenenza in quanto creandola da utente root i permessi saranno attribuiti al superuser.
mkdir /home/work/asheva chown asheva /home/work/asheva chgrp developer /home/work/asheva chmod 700 /home/work/asheva
Ndr: E’ possibile risparmiare una riga inglobando le due centrali (chown e chgrp) in un unico comando:
chown asheva:developer home/work/asheva <br /><br />
Modifica /etc/group E’ necessario procedere alla modifica del file /etc/group aggiungendo l’utente appena creato al gruppo developer.
developer:100:indre,asheva,giangi
Impostazioni quote discoSe il sistema utilizza le quote disco è possibile impostare i limiti per ciscun utente presente sul sistema mediante il comando edquota. L’uso delle quote può sembrare utile ma spesso causa un’intensa attività di manutenzione.
Tuttavia per la creazione, rimozione e modifica degli account del sistema, Linux ci viene incontro con comandi ad hoc.
useradd : aggiunta utenti al sistema groupadd : aggiunta di un gruppo groupmod : modifica di un gruppo groupdel : eliminazione di un gruppo
useradd -c "Andrea Rossi" -d /home/linux/rossi -g site -G portal -e 12/25/05 -m -s /bin/bash arossi
Esistono, inoltre diverse utilities per la getione delle utenze, alcune molto friendly e indicate per i meno esperti, come ad esempio SuperAddUser. Per informazioni dettagliate sui comandi fare riferimento alle pagine man.