Gestione degli utenti e dei gruppi

Loris Tissino

17 aprile 2010

Utenti e gruppi

Utenti e gruppi sono normalmente memorizzati nei file /etc/passwd e /etc/group.

I numeri identificativi dell'utente (User Id, o UID) e del gruppo (Group Id, o GID) possono andare da 0 a 65535 (nei sistemi tradizionali).

L'utente root ha UID 0.

Tra gli altri utenti tipicamente presenti vi sono:

Il file /etc/passwd

Il file /etc/passwd contiene le informazioni sugli utenti del sistema.

Ogni riga contiene le informazioni su un utente. Ad esempio:

alice:x:1011:10006:Alice Alessandrini:/home/alice:/bin/bash

La riga contiene i seguenti campi (delimitati da :)

Il campo gecos a volte viene suddiviso in sottocampi separati da virgole (vedi chfn(1) o finger(1)).

Il file /etc/group

Il file /etc/group contiene le informazioni sui gruppi.

Ogni riga contiene le informazioni su un utente. Ad esempio:

contab:x:10007:alice,carlo
produz:x:10008:berto

La riga contiene i seguenti campi (delimitati da :)

I gruppi possono contenere solo utenti, non altri gruppi.

Leggere i dati dei database di sistema

I database di sistema, come /etc/passwd, /etc/group, /etc/services, /etc/protocols, /etc/hosts, possono essere letti direttamente oppure con il programma getent.

getent presenta i dati del database di sistema corrente nella forma tradizionalmente impiegata nei file di testo, eliminando eventuali righe di commento presenti.

È particolarmente utile quando il sistema usa altre forme di autenticazione (es. un server LDAP).

$ getent passwd 
[...]
alice:x:1035:1005:Alice,,,:/home/alice:/bin/bash
bob:x:1036:1013:Bob,,,:/home/bob:/bin/bash
[...]

Modificare i dati degli utenti e dei gruppi

È in genere poco raccomandabile modificare manualmente i file contenenti i dati relativi agli utenti e ai gruppi.

In genere è preferibile:

Aggiungere utenti

Gli utenti possono essere aggiunti con uno dei seguenti comandi:

Ad esempio:

$ sudo useradd james

$ sudo adduser jenny
Adding user `jenny' ...
Adding new group `jenny' (1002) ...
Adding new user `jenny' (1001) with group `jenny' ...
Creating home directory `/home/jenny' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for jenny
Enter the new value, or press ENTER for the default
        Full Name []: Jenny Smith
        Room Number []: 12
        Work Phone []: +39-0000-00001
        Home Phone []: +39-0000-00002
        Other []:  
Is the information correct? [y/N] y

Aggiungere utenti - pattern per gli username

Evitate di creare utenti il cui username è basato sul pattern cognome-nome.

Se un utente si chiama Aldo Bianchi andranno evitati bianchia, bianchi.a, bianchialdo, bianchi.aldo, bianchi_aldo, ecc.

Andrà invece adottato uno username come aldo, abianchi, a.bianchi, aldobianchi, aldo.bianchi, aldo_bianchi, ecc. (a meno che esso non debba essere completamente scollegato dal nome reale, come succede spesso con i nickname).

Ulteriori informazioni al riguardo di questo argomento, anche di tipo informatico, si trovano nel blog nome-e-cognome.

Aggiungere utenti - valori di default

Per useradd i valori di default sono definibili con l'opzione -D (vengono inseriti nel file /etc/default/useradd).

I valori di default per adduser sono invece nel file /etc/adduser.conf.

Aggiungere utenti - operazioni batch

Quando si devono inserire molti utenti, ad esempio leggendo le informazioni su di loro da altre fonti, si possono usare comandi per operazioni batch.

In particolare, possono essere utili chpasswd e newusers.

$ cat nuoviutenti 
jackie:segreto:2000::Jackie White:/home/jackie:/bin/bash
freddie:segretissimo:2001::Freddie Bloom:/home/freddie:/bin/bash

$ sudo newusers nuoviutenti 

$ getent passwd | tail -2
jackie:x:2000:65538:Jackie White:/home/jackie:/bin/bash
freddie:x:2001:65535:Freddie Bloom:/home/freddie:/bin/bash

$ echo julie:pulcinella | sudo chpasswd

Aggiungere gruppi

I gruppi possono essere aggiunti con uno dei seguenti comandi:

Ad esempio:

$ sudo groupadd bureau
$ sudo addgroup office
Adding group `office' (GID 1004) ...
Done.

Modificare le informazioni sugli utenti

Le informazioni sugli utenti possono essere modificate con il programma usermod.

$ getent group | grep office
office:x:1004:jenny

$ sudo usermod -l jay jenny

$ getent group | grep office
office:x:1004:jay

$ getent passwd jay
jay:x:1001:1002:Jenny Smith,12,+39-0000-00001,+39-0000-00002:/home/jenny:/bin/bash

Eliminare utenti e gruppi

Poco sorprendentemente, gli utenti e i gruppi possono essere eliminati con i programmi userdel e groupdel (basso livello), deluser e groupdel (alto livello).

Quando gli utenti vengono rimossi, bisogna decidere cosa fare delle loro cose (es. la home directory).

N.B. Se si vuole disattivare un account temporaneamente, è sufficiente effettuare il lock della password (usermod -L <username>); l'unlock viene effettuato con usermod -U <username>.