martedì 30 ottobre 2012

Gestione utenti e gruppi da terminale

Questa guida richiede una conoscenza di base dell'uso del terminale. Se non sai come si utilizza consulta la guida Utilizzare il terminale.

Durante l'utilizzo di Ubuntu può capitare di dover creare nuovi utenti (ad esempio nella configurazione di utenti per samba) o di dover modificare le informazioni sugli utenti già esistenti.
Per farlo è possibile utilizzare l'interfaccia grafica (ad esempio in Ubuntu 12.10 basta andare sul menù di sistema -> Impostazioni di sistema... -> Account utente) oppure da terminale.
In questa breve guida spiego dei comandi base su come gestire gli utenti (compreso root) utilizzando il terminale che permette, rispetto all'interfaccia grafica, migliori possibilità di gestione.

Se sei già a conoscenza delle nozioni base dei permessi, degli utenti e dei gruppi puoi passare direttamente alla Gestione dei gruppi o Gestione degli utenti.

Introduzione agli utenti, ai gruppi e ai permessi

Per chi non avesse dimestichezza sugli utenti, i gruppi e i permessi introduco velocemente come Linux gestisce i file e le directory che vengono create.

Gli utenti sono entità su cui è possibile assegnare la proprietà dei file e delle directory e possono essere assegnati a dei gruppi.

I gruppi, oltre a raggruppare uno o più utenti, concedono dei permessi di sistema diversi agli utenti che ne fanno parte (ad esempio di amministratore).

Ad ogni file e directory viene assegnato un proprietario e un gruppo a cui possono essere assegnati permessi differenti. Oltre a questi è anche possibile stabilire i permessi per gli "altri utenti", ovvero tutti queli utenti che non sono i proprietari e non fanno parte del gruppo a cui è assegnato il file.
I permessi che possono essere assegnati alle precedenti categorie sono lettura (r), scrittura (w) ed esecuzione (x) e vengono rappresentati simbolicamente elencando i tre caratteri per ogni tipologia di utente (ovvero proprietario, gruppo e altri). Per esempio rwxrw-r-- significa che il proprietario ha permessi di lettura, scrittura ed esecuzione, il gruppo ha permessi di lettura e scrittura, gli altri utenti di sola lettura. Davanti a tale stringa è presente una d per indicare che si tratta di una directory o un - per indicare che non è una directory.

Le informazioni sui permessi, il proprietario ed il gruppo possono essere visualizzati da terminale utilizzando il comando

$ls -l [DIRECTORY]

sostituendo, se necessario, [DIRECTORY] con quella in cui si vuole che vengano visualizzati i permessi. Se non viene specificato riporterà la lista dei permessi nella directory attuale.
L'output sarà di questo tipo:

$ls -l /
totale 124
drwxr-xr-x.   2 root  root   4096 ott 23 22:40 bin
drwxr-xr-x.   3 root  root   4096 ott 24 00:37 boot
drwxr-xr-x.   2 root  root   4096 mar 14  2012 cdrom
drwxr-xr-x   16 root  root   4300 ott 30 13:00 dev
drwxr-xr-x. 170 root  root  12288 ott 30 15:10 etc
[...]

La prima colonna riporta la lista dei permessi raggruppati per proprietario (rwx per tutti in questo esempio), gruppo (r-x) e per gli altri utenti (r-x); la seconda colonna indica il numero di collegamenti a quel file (hard links); la terza indica il proprietario; la quarta il gruppo; la quinta la dimensione del file sul disco (in blocchi); le ultime indicano la data di modifica e il nome del file/directory.

Per maggiori informazioni sull'utilizzo del comando ls consulta la guida GNU coreutils manual. Se vuoi saperne di più riguardo ai permessi sui file e sulle directory visita la guida Gestione file e directory da terminale.

Gestione dei gruppi

Attraverso il terminale è possibile gestire (creare, cancellare o modificare) i gruppi. I comandi (che bisogna eseguire da root) che permettono di farlo sono quattro:

#groupadd [opzioni] GRUPPO

serve per creare un nuovo gruppo. Al posto di GRUPPO bisogna inserire il nome del gruppo che si desidera creare.
Le opzioni principali sono:

  • -g, --gid GID             per impostare l'ID numerico del gruppo
  • -o, --non-unique          per impostare un ID non univoco
  • -p, --password PASSWORD   per impostare una password per il gruppo
  • -r, --system              per creare un gruppo di sistema
#groupdel NOME_GRUPPO

serve per cancellare il gruppo chiamato NOME_GRUPPO

#groupmod [opzioni] GRUPPO

serve per modificare il gruppo chiamato GRUPPO.
Le opzioni principali sono:

  • -g, --gid GID             per cambiare l'ID numerico del gruppo
  • -o, --non-unique          per impostare un ID non univoco
  • -p, --password PASSWORD   per cambiare la password per il gruppo
  • -n, --new-name NUOVO      per cambiare il nome in NUOVO
#groups [NOME_UTENTE]

serve per visualizzare la lista dei gruppi di cui fa parte l'utente chiamato NOME_UTENTE. Se viene passato senza parametri verranno visualizzati i gruppi di cui fa parte l'utente che lancia il comando.

Gestione degli utenti

Come per i gruppi esistono quattro comandi (da eseguire come root) che permettono di gestire gli account utente attraverso il terminale. In particolare

#useradd [opzioni] LOGIN

serve per creare un nuovo account. Sostituisci LOGIN con il nome del nuovo utente che desideri creare.
Le principali opzioni sono:

  • -b BASE_DIR   per impostare una base directory diversa da quella di default1
  • -d HOME_DIR   per impostare una home directory diversa da quella di default2
  • -g GRUPPO     serve per assegnare il GRUPPO principale dell'utente
  • -G LISTA      serve per assegnare all'utente una LISTA di gruppi secondari
  • -m            serve per creare la home directory
  • -M            serve per non creare la home directory
  • -p PASSWORD   serve per impostare la PASSWORD dell'utente
  • -r            serve per creare un utente di sistema
  • 1: la base directory di default è /home
    2: la home direcotry di default è /home/LOGIN; LOGIN è il nome dell'utente creato
#userdel [opzioni] LOGIN

serve per cancellare l'utente chiamato LOGIN.
Le opzioni per questo comando sono:

  • -r, --remove   per cancellare la home directory
  • -f, --force    per forzare la cancellazione dei file
#usermod [opzioni] LOGIN

serve per modificare l'utente chiamato LOGIN.
Le opzioni principali sono:

  • -a, --append      per aggiungere l'utente ai gruppi3
  • -d HOME_DIR       per cambiare la home directory
  • -g GRUPPO         serve per cambiare il GRUPPO principale dell'utente
  • -G LISTA          serve per assegnare all'utente una LISTA di gruppi secondari
  • -m, --move-home   serve per spostare il contenuto della home directory4
  • -p PASSWORD       serve per cambiare la PASSWORD dell'utente
  • 3: -a va utilizzato con l'opzione -G
    4: -m va utilizzato unitamente a -d
#users

serve per visualizzare gli utenti attivi.