Ogni utente che ha accesso ad un sistema Linux ha bisogno di un proprio account, cioè un nome di login e di una password. Ogni utente deve appartenere ad un gruppo primario e per sicurezza o scopi di accesso può appartenere a parecchi gruppi secondari. Raramente è una buona idea avere parecchie persone che
condividono lo stesso account. Non è solo problema di sicurezza, ma gli account sono usati per identificare in maniera univoca gli utenti del sistema. Bisogna poter mantenere traccia di chi sta facendo cosa.
Che cos'è un account ?
Quando un computer viene usato da molte persone è di solito necessario
differenziare tra gli utenti, ad esempio in modo che i loro file privati possano essere mantenuti tali. E' importante anche se il computer può essere usato da una persona alla volta, come con la maggior parte dei personal computer; quindi a ciascun utente viene dato un nome univoco e quello è il nome che viene usato per fare il login.
Un utente non ha solo un nome, ma un account, che comprende tutti i file, le risorse e le informazioni che gli appartengono. Il termine ricorda le banche e in un sistema commerciale un account di solito corrisponde a del denaro, che svanisce a velocità diverse a seconda di quanto l'utente usa il sistema. Ad esempio lo spazio disco può avere un prezzo per megabyte o a giorno, ed il tempo CPU può avere un prezzo per secondo.
Concetti di gestione degli utenti
Il Kernel di Linux tratta gli utenti come semplici numeri: ciascun utente viene identificato da un numero intero univoco, l'identificativo utente o uid (user id), perché per un computer è più facile e veloce usare questi piuttosto che i nomi testuali. Un archivio separato fuori del kernel assegna un nome testuale, lo username, a ciascun identificativo utente, e contiene anche altre
informazioni.
Il sistema tiene traccia di un certo numero di informazioni su ogni utente. Il database degli utenti principali in un sistema Unix è il file di testo
/etc/passwd (chiamato file delle password), che elenca tutti i nomi utente
validi e le informazioni ad essi associate. Il file ha una riga per ciascun nome utente e viene divisa in sette campi delimitati da due punti. Li possiamo
1.
Username: lo username è un identificativo unico assegnato dal sistema ad ogni utente;2.
Password in forma criptata: il sistema memorizza la password criptata dell'utente;3.
User ID: Id numerico dell'utente, o UID, è un numero unico assegnato dal sistema ad ogni utente;4.
Group ID: Id numerico del gruppo, o GID, è l'ID del gruppo di default dell'utente;5.
Nome completo o altra descrizione dell'account. Il nome reale dell'utente viene salvato assieme al nome utente.6.
Home directory: la home directory è la directory in cui l'utente viene posizionato inizialmente dopo il login. Ogni utente dovrebbe avere la propria home directory, di solito posizionata sotto /home.7.
Shell di login: (interprete dei comandi da avviare in fase di login). La shell di login è la shell che viene avviata dopo il login. Esempi sono/bin/bash e /bin/tcsh.
Qualsiasi utente sul sistema può leggere il file delle password in modo da poter, ad esempio, trovare il nome di un altro utente: ciò significa che anche la password (il secondo campo) è disponibile per tutti. IL file delle password contiene la password in forma criptata, quindi n teoria non ci sono problemi; comunque la criptazione può essere decodificata, specialmente se le password sono deboli (brevi o che si trovano nel dizionario); non è quindi una buona idea tenere le password nel file delle password.
Molti sistemi Linux hanno le shadow password: un modo alternativo per tenere le password che vengono immagazzinate criptate in un file separato, /etc/shadow, leggibile solo da root. Il file /etc/passwd contiene solo un indicatore speciale nel secondo campo.
Il file /etc/passwd contiene le informazioni sugli utenti.
Ogni riga del file contiene informazioni su un singolo utente: il formato di ogni riga è:
username:encrypted password:UID:GIU:full name:home directory:login shell
Allo scopo di creare nuovi login, modificare o cancellare utenti, bisogna avere già eseguito il login come root. I login di root è il livello più alto e solo
certi individui dovrebbero avere accesso all'account di root.
Aggiungere un nuovo utente.
Per poter aggiungere un nuovo utente facciamo uso del comando useradd. useradd
Opzioni:
• -d home directory
• -s la shell utilizzata dall'utente (shell)
• -p password
• -g (gruppo primario assegnato all'utente)
• -G (altri gruppi al quale l'utente appartiene)
• -m (Crea la home directory dell'utente) Esempio: aggiungere un nuovo utente con
• users come gruppo primario
• un secondo gruppo mgmt
• shell iniziale /bin/bash
• password xxxx
• nome di login roger
• home directory roger
• crea home directory
• nome di login name roger
useradd -gusers -Gmgmt -s/bin/shell -pxxxx -d/home/roger -m roger
Modificare un utente esistente
Per poter modificare un utente già esistente facciamo uso del comando usermod.
usermod
Opzioni:
• -d home directory
• -s shell iniziale /bin/bash
• -p password
• -g (gruppo primario assegnato all'utente)
• -G (altri gruppi al quale l'utente appartiene)
Esempio: Aggiungere il gruppo 'others' all'utente roger
usermod -Gothers roger
Cancellare un utente esistente
userdel
Opzioni:
• -r (rimuove la home directory)
Esempio: Per rimuovere l'utente 'roger' e la sua home directory
userdel -r roger
Modificare la password di un utente già esistente
Per modificare la password di un utente già esistente facciamo uso del comando passwd
passwd Opzioni:
• nome utente (Solo se si è root e si vuole cambiare la password di un altro utente)
Esempio: Per cambiare la password per l'account con il quale siete
correntemente entrati, scriviamo solo passwd, ci viene richiesta la password
già esistente, e la nuova password. Per validare la password inserita ci viene chiesto di inserirla nuovamente
passwd
Enter existing password Enter new password
Enter new password again (per validarla)
Esempio: Per modificare la password dell'utente roger (solo se si è loggati come root)
passwd roger
Enter existing password (può essere sia la password dell'utente roger che la password di root)
Enter new password