5.1 User account

Una persona può accedere ad un sistema diventandone un utente. Ogni utente è identificato univocamente dal sistema da un valore numerico detto UID (User IDentifier). A tale valore è associata una coppia di valori alfanumerici: lo username e la password. Lo username (nome dell’utente) non è altro che un alias alfanumerico dello UID, che l’utente può più facilmente memorizzare per fornirlo al sistema qualora gli venga richiesto (per esempio ciò avviene al momento dell’accesso al sistema stesso, cioè durante la procedura di accesso al sistema o procedura di login). La password è una “parola d’ordine” che solo l’utente interessato dovrebbe conoscere (mentre lo username almeno l’amministratore del sistema lo conosce). Questa serve per garantire l’autenticità dell’utente dichiarato con lo username per la procedura di accesso al sistema (v. sez. 5.9).

Per mantenere la compatibilità con alcuni vecchi programmi è opportuno che lo username sia composto al massimo da otto caratteri. Inoltre, questo dovrebbe essere composto da lettere non accentate e numeri: qualunque altro simbolo, compresi i segni di punteggiatura, potrebbero creare problemi di vario tipo.

Per ogni utente è anche definita una home directory, cioè la directory che sarà la working directory (la directory corrente) di default per l’utente subito dopo che questi è stato autenticato dal sistema. Tale directory è indicata del carattere tilde ~’. In genere la home directory è costituita dalla directory /home/username. Ad un utente è anche assegnata una default shell, ovvero uno specifico interprete dei comandi che accoglie l’utente subito dopo che questo è stato autenticato dal sistema (l’interfaccia a caratteri assegnata all’utente)1.

L’insieme composto dallo UID, lo username, la password e gli altri dettagli relativi ad un utente, costituisce lo user account dell’utente presso il sistema. Dunque, un utente può accedere ad un sistema soltanto se ha uno user account (o semplicemente account) su quel sistema.

Gli user account sono memorizzati nel file /etc/passwd (man page passwd(5)) che è un file in formato testo le cui righe hanno la seguente sintassi:

 
username:password:UID:GID:description:home directory:shell  
dove

È importante notare che, per motivi di sicurezza, la password contenuta in /etc/passwd non è in chiaro (plain text), ma è cifrata col sistema di cifratura utilizzato dal sistema (in genere MD5)3. In questo modo chiunque arrivi a leggere il contenuto del file /etc/passwd non vede la password degli utenti e non è neanche in grado di risalirvi a partire dalla sua cifratura (questo dipende dal metodo utilizzato per cifrare la password).

Se password è un asterisco ‘*’, significa che l’utente in questione non può accedere al sistema attraverso la procedura di autenticazione che in genere avviene tramite login.

Tra tutti gli utenti ce n’è uno particolare che il sistema riconosce come amministratore, quello il cui UID è 0. Questi, sui sistemi Unix-like, è chiamato superuser, ed in genere gli viene assegnato lo username “root” e la home directory /root. Il superuser ha acesso indiscriminato a tutte le risorse del sistema, ovvero può accedere a tutto il filesystem in lettura/scrittura e lanciare qualunque comando. Il sistema non fa nessun controllo per l’accesso alle risorse effettuato dal superuser, pertanto l’accesso al sistema in qualità di tale utente deve essere ridotto al minimo indispensabile.

La creazione di un utente consta dei seguenti passi:

  1. Aggiungere una riga al file /etc/passwd relativa al nuovo utente;
  2. Aggiungere (eventualmente) una riga al file /etc/group relativo ad nuovo gruppo per il nuovo utente;
  3. Se esiste il file /etc/shadow aggiungere una riga relativa al nuovo utente4;
  4. Se esiste il file /etc/gshadow aggiungere (eventualmente) una riga al nuovo gruppo per il nuovo utente;
  5. Creare la home directory del nuovo utente (/home/username);
  6. Copiare il contenuto della skeleton directory (in genere la directory /etc/skel) in /home/username;
  7. Attribuire come proprietario di /home/username l’utente appena creato e come gruppo proprietario il gruppo di default a cui appartiene l’utente appena creato;
  8. Attribuire gli opportuni permessi alla home directory (lettura, scrittura ed esecuzione per il proprietario);

È compito dell’amministratore far in modo che non vi siano due o più user account con lo stesso username poiché il sistema non sarebbe, in tal caso, capace di decidere a quale UID si riferisce lo username fornito dall’utente in fase di autenticazione.

Uno user account può essere creato con il comando useradd (man page useradd(8)).

____________________________________________________________________

Comando: useradd
Path: /usr/sbin/useradd

SINTASSI  
# useradd [option] username  
DESCRIZIONE

________________________________________________________________

[da completare ...]

che per mezzo delle opportune opzioni (v. man page useradd(8)) permette di specificare lo UID, la password, la home directory e la shell di default per l’utente che si desidera creare.

Per la creazione di uno user account, useradd utilizza le direttive riguardanti le caratteristiche delle utenze a livello di sitema (casella di posta elettronica, la lunghezza massima della password, ...) contenute in /etc/login.defs (man page login.defs(5)) ed il file di configurazione /etc/default/useradd che contiene le impostazioni di default per la creazione degli user account (la radice delle home directory, la shell di default, la skeleton directory di default, ...). La skeleton directory è una directory il cui contenuto viene copiato all’interno della home directory di un utente alla sua creazione. In genere tale directory è /etc/skel5.

La modifica dell’account di un utente può essere effettuata per mezzo del comando usermod (man page usermod(8)) e l’eliminazione di uno user account può essere effettuata con il comando userdel (man page userdel(8)).

__________________________________________________________________________________________________________

Comando: usermod
Path: /usr/sbin/usermod

SINTASSI  
# usermod [option] username  
DESCRIZIONE

_____________________________________________________________________________________________________________

[da completare ...]

____________________________________________________________________

Comando: userdel
Path: /usr/sbin/userdel

SINTASSI  
# userdel [option] username  
DESCRIZIONE

_____________________________________________________________________________________________________________

[da completare ...]

Ogni utente può modificare in qualunque momento la propria password per mezzo del comando passwd (man page passwd(1)).

__________________________________________________________________________________________________________

Comando: passwd
Path: /usr/bin/passwd

SINTASSI  
$ passwd [option] [username]  
DESCRIZIONE

_____________________________________________________________________________________________________________

[da completare ...]

Il superuser può modificare la password di qualunque utente.

Un utente può anche cambiare la propria default shell tramite il comando chsh (man page chsh(1)).

____________________________________________________________________

Comando: chsh
Path: /usr/bin/chsh

SINTASSI  
$ chsh [option] [username]  
DESCRIZIONE

_____________________________________________________________________________________________________________

[da completare ...]

Il superuser può modificare la shell di default di qualunque utente.

La default shell deve essere una shell esistente, possibilmente elencata in /etc/shells (man page shells(5)).

Esiste la possibilità di modificare il contenuto del campo description di uno user account in /etc/passwd, per mezzo del comando chfn (man page chfn(1)).

__________________________________________________________________________________________________________

Comando: chfn
Path: /usr/bin/chfn

SINTASSI  
$ chfn [option] [username]  
DESCRIZIONE

_____________________________________________________________________________________________________________

[da completare ...]

Il superuser può modificare le informazioni relative a qualunque utente.

Le informazioni richieste da chfn vengono scritte nello user account in /etc/passwd all’interno del campo description separate tra loro con una virgola.

Poiché le informazioni personali possono essere delicate, come ad esempio il numero telefonico dell’abitazione di un utente, quando si tratta di utenze presso elaboratori raggiungibili attraverso una rete estesa, come Internet, occorre prestare attenzione a ciò che si sta facendo: occhi indiscreti potrebbero arrivare a leggere tali informazioni.

Un utente può visualizzare il proprio username attraverso il comando whoami (man page whoami(1)).

____________________________________________________________________

Comando: whoami
Path: /usr/bin/whoami

SINTASSI  
$ whoami [option]  
DESCRIZIONE

____________________________________________________________________________________________________________________

[da completare ...]

Un utente può visualizzare lo username che ha utilizzato al momento dell’accesso al sistema con il comando logname (man page logname(1)) che ha la seguente sintassi

__________________________________________________________________________________________________________

Comando: logname
Path: /usr/bin/logname

SINTASSI  
$ logname [option]  
DESCRIZIONE

________________________________________________________________________

[da completare ...]

È importante notare la differenza tra lo username attuale e quello al momento dell’accesso al sitema. Nella maggior parte dei casi tali valori coincidono ma, come sarà illustrato nella sez. 5.5, un utente può temporaneamente impersonarne un altro ed in tal caso i due valori sono diversi.

Ad ogni utente viene automaticamente assegnata dal sistema una casella di posta elettronica6 rappresentata dal file /var/mail/username (o /var/spool/mail/username a seconda della distribuzione GNU/Linux considerata) in cui vengono accumulati i messaggi di posta elettronica a lui diretti.