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 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 :
)
alice
);x
) - sempre più frequentemente le password (cifrate) vengono memorizzate nel file /etc/shadow;1011
)10006
) - gruppo primarioAlice Alessandrini
) - anche detto gecos per motivi storici (da General Electrics Comprehensive Operating System)/home/alice
)/bin/bash
)Il campo gecos a volte viene suddiviso in sottocampi separati da virgole (vedi chfn(1)
o finger(1)
).
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 :
)
contab
);x
) - sempre più frequentemente le password, se utilizzate, vengono memorizzate nel file /etc/gshadow;I gruppi possono contenere solo utenti, non altri gruppi.
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
[...]
È in genere poco raccomandabile modificare manualmente i file contenenti i dati relativi agli utenti e ai gruppi.
In genere è preferibile:
useradd
, usermod
, ecc.) per agire sulle righe dei singoli utenti;vipw
, vigr
).Gli utenti possono essere aggiunti con uno dei seguenti comandi:
useradd
(comando di basso livello)adduser
(comando di alto livello)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
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.
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.
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
I gruppi possono essere aggiunti con uno dei seguenti comandi:
groupadd
(comando di basso livello)addgroup
(comando di alto livello)Ad esempio:
$ sudo groupadd bureau
$ sudo addgroup office
Adding group `office' (GID 1004) ...
Done.
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
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>
.