Gestione utenti e gruppi in Linux

Mattepuffo's logo
Gestione utenti e gruppi in Linux

Gestione utenti e gruppi in Linux

Linux è, ovviamente, multiutente e multigruppo.

Ogni utente aavrà la sua home privata e potrà appartenere a differenti gruppi a seconda delle esigenze.

In genere ogni account esiste in due file: /etc/passwd e /etc/shadow.

Ad ogni utente è assegnato uno unique identifier, un UID.

Per i gruppi invece c'è il file /etc/group; anche ai gruppi viene assegnato un id, chiamto GID.

Gli UID tra lo 0 e il 999 sono in genere assegnati agli account di sistema.

L'account superuser, root per intenderci, ha lo UID 0; e il suo gruppo, sempre root, ha GID 0.

Il file /etc/passwd è leggibile da qualsiasi utente, mentre il file /etc/shadow è leggibile solo da root.

Entrambi i file sono strutturati in colonne divise dai due punti.

La prima indica il nome utente.

La seconda contiene un token che indica se l'account può loggarsi (x) o no (*).

La terza e la quarta indicano lo UID e lo GID.

La quinta indica il percorso della home; in genere /homt/utente.

Ed infine l'ultima colonna indica la shell utilizzata.

In alcuni casi potete trovare /sbin/nologin o /usr/bin/false; in questi casi l'utente non può usare la shell.

Anche /etc/shadow è diviso in colonne.

La prima è sempre il nome utente.

La seconda contiente la password criptata; il metodo di encryption dipende dalla distro.

La terza, attraverso la sesta, è usata per cambiare la password dopo un tot di tempo.

La terza, appunto, contiene l'età della password con il numero dei giorni in formato data Unix.

Per tradurla nel formato normale facciamo così:

# grep matte /etc/shadow

matte:$1$mFoThL34$kIOfRTZWJ38wxLmCBylAV0:14551:0:99999:7:::

# date -d "Jan 1 1970 + 14551 days"

mar  3 nov 2009, 00.00.00, CET

La quarta colonna indica il minimo numero di giorni prima dei quali bisogna cambiare la password.

0 indica che non c'è un minimo.

La quinta invece indica il massimo numero di giorni; nessuna opzione indica "unlimited".

La sesta indica il numero di giorni prima che la password scada.

La settima specifica il numero di giorni dopo la scadenza passwrod che l'account è disattivato.

L'ultimo è riservato per usi futuri.

Il file /etc/group è simile agli altri due.

Troviamo il nome del gruppo, un token, il GID, e una lista degli account che appartengono al gruppo.

Aggiungiamo utenti e gruppi

Per aggiungere utenti e gruppi possiamo usare i comandi useradd e groupadd.

useradd possiamo invocarlo con o senza opzioni; funzionerà in entrambi i casi.

L'opzione -D ci mostra i valori di default di alcune impostazioni determinate in /etc/default/useradd:

# useradd -D

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Le impostazioni variano a seconda delle distro.

Lanciando userdd nome_utente aggiungiamo l'utente ai passwd e shadow senza però creare una password e la home directory.

Quello che vi consiglio è di lanciare useradd senza opzioni e di seguire l'iter.

Oppure potete usare le opzioni specifiche:

# useradd matte -c "Matteo" -d /home/matte -m -s /bin/bash

L'opzione -m crea la home; non penso che per le altre servano commenti.

Manca però la password; così l'account è disabilitato.

Abbiamo due strade:

  • utiluzzare l'opzione --password in fase di creazione, sconsigliata perchè per un certo tempo la password è alla mercè di tutti
  • usare dopo la cerazione dell'account il comando "# passwd utente"

Modifica utenti e gruppi

Per modificare utenti e gruppi usiamo usermod e groupmod.

Supportano le stesse funzionalità spiegate prima.

Abbiamo poi passwd che serve per modificare la password; in Ubuntu è usato anche per abilitare l'account di root.

Cancellare utenti e gruppi

Manco a dirlo i comandi sono userdel e groupdel.

Con userdel -r utente cancelliamo la sua home; ma se volessimo cancellare anche i file suoi al di fuori della home?

Possiamo cercarli con find:

# find / -uid 1002

# find / -gid 1004

Il secondo vale per il gruppo.

 

Infine volendo andare un pò più a fondo potete dare un'occhiata a /etc/skel e /etc/profile.

Il primo specifica la skeleton directory dalla quale le nuove home vengono create.

La directory ha la funzione di template.

Il secondo viene caricato ad ogni login e contine varie impostazio sull'ambiente in cui opera l'utente.


Condividi

Commentami!