CLI: Amministrare utenti e gruppi

9 giugno 2018

Iniziamo il nostro viaggio per conoscere i principali comandi volti ad amministrare gli account degli utenti e i gruppi in cui questi sono raggruppati direttamente da CLI.


fprincipe@html3:~$ tail -n 5 /etc/passwd
fprincipe:x:1000:1004:Francesco Principe:/home/fprincipe:/bin/bash
user1:x:1001:1005::/home/user1:/bin/sh
user2:x:1002:1006::/home/user2:/bin/sh
user3:x:1003:1007::/home/user3:/bin/sh
usertest:x:1004:1008::/home/usertest:/bin/sh

fprincipe@html3:~$ sudo useradd usernew -m -g user1 

fprincipe@html3:~$ ls -lia /home
total 28
393218 drwxr-xr-x  7 root      root      4096 Jun  7 13:42 .
     2 drwxr-xr-x 23 root      root      4096 May 31 14:54 ..
405439 drwxr-xr-x  8 fprincipe fprincipe 4096 Jun  7 13:31 fprincipe
405460 drwxr-xr-x  2 user1     user1     4096 May 31 15:58 user1
413062 drwxr-xr-x  2 user2     user2     4096 May 31 15:59 user2
413064 drwxr-xr-x  2 user3     user3     4096 May 31 15:59 user3
528950 drwxr-xr-x  2 usernew   user1     4096 Jun  7 13:42 usernew

fprincipe@html3:~$ tail -n 6 /etc/passwd
fprincipe:x:1000:1004:Francesco Principe:/home/fprincipe:/bin/bash
user1:x:1001:1005::/home/user1:/bin/sh
user2:x:1002:1006::/home/user2:/bin/sh
user3:x:1003:1007::/home/user3:/bin/sh
usertest:x:1004:1008::/home/usertest:/bin/sh
usernew:x:1005:1005::/home/usernew:/bin/sh
fprincipe@html3:~$

Uso di base

Il comando tail visualizza la fine del file argomento, con l’opzione -n possiamo specificare il numero di righe da visualizzare del file /etc/passwd. In molti contesti standard, quando si crea un utente, viene generato un gruppo omonimo a cui questo è associato. La nostra condizione di partenza è simile. Per non incorrere in confusione sia chiaro che un gruppo e un utente, qualora siano omonimi, rappresentano comunque due entità distinte e quindi indipendenti. Tuttavia è possibile, ma non necessario, che l’utente sia incluso nel gruppo con cui condivide il nome. Tramite il comando useradd aggiungiamo l’utente usernew specificando la sua home directory, che questa debba essere creata e che il nuovo utente debba essere parte del gruppo user1 (ovvero gid 1005). Come possiamo vedere la cosa ha effetto sul file /etc/passwd e ovviamente anche sulla posizione del filesystem che abbiamo esplicitamente indicato come home directory. E’ bene sapere che, per i gruppi, esiste un comando del tutto equivalente ovvero groupadd volto a creare un nuovo gruppo. Le opzioni specificate espressamente da riga di comando hanno priorità su quelle riportate nel file /etc/default/useradd in cui è descritto il comportamento di default di useradd in assenza di scelte specifiche. Le più importanti opzioni che è possibile adottare con useradd sono elencate nella tabella a seguire.

-dSpecifica la directory home da associare all’utenza.
-eDichiara la data in cui l’utenza sarà automaticamente sospesa nel formato AAAA-MM-GG.
-fImpone una scadenza alla password, espressa in giorni, che se non modificata entro il tempo limite comporterà la sospensione dell’account.
-gSpecifica il gruppo dell’utente inteso come gruppo principale. Ovviamente deve essere un gruppo esistente.
-GUsandola è possibile inserire una lista di gruppi aggiuntivi, separati da virgole, in cui l’utente sarà inserito.
-rAdoperata per creare una utenza di sistema.
-sCome argomento possiamo specificare una shell diversa sa quella di default. Anche shell con utilizzi specifici. A esempio se specifichiamo /bin/false l’utente verrà disconnesso immediatamente. Con /sbin/nologin apparirà un messaggio che dichiara l’utenza come non disponibile, questo messaggio può essere personalizzato inserendo un testo in /etc/nologin.txt .
-uE’ utilizzabile per associare all’utente un valore numerico di user id.

A questo punto sarà necessario assegnare all’utente una password con il comando passwd .


fprincipe@html3:~$ sudo passwd usernew
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Uso avanzato

Adesso facciamo la conoscenza con il comando usermod che consente di modificare gli utenti. Abbiamo avuto in ripensamento. Vogliamo modificare il gruppo primario e secondario dell’utente appena creato rispettivamente in user2 e user3 nonché assegnare una scadenza alla password pari a una settimana. La cosa si ripercuote ovviamente in /etc/passwd come in /etc/group nonché nel primo livello della directory home dell’utente sebbene non necessariamente per il suo contenuto.


fprincipe@html3:~$ sudo usermod usernew -g user2 -G user3 -f 7

fprincipe@html3:~$ ls -lia /home
total 28
393218 drwxr-xr-x  7 root      root      4096 Jun  7 13:42 .
     2 drwxr-xr-x 23 root      root      4096 May 31 14:54 ..
405439 drwxr-xr-x  8 fprincipe fprincipe 4096 Jun  7 13:31 fprincipe
405460 drwxr-xr-x  2 user1     user1     4096 May 31 15:58 user1
413062 drwxr-xr-x  2 user2     user2     4096 May 31 15:59 user2
413064 drwxr-xr-x  2 user3     user3     4096 May 31 15:59 user3
528950 drwxr-xr-x  2 usernew   user2     4096 Jun  7 13:42 usernew

fprincipe@html3:~$ tail -n 6 /etc/passwd
fprincipe:x:1000:1004:Francesco Principe:/home/fprincipe:/bin/bash
user1:x:1001:1005::/home/user1:/bin/sh
user2:x:1002:1006::/home/user2:/bin/sh
user3:x:1003:1007::/home/user3:/bin/sh
usertest:x:1004:1008::/home/usertest:/bin/sh
usernew:x:1005:1006::/home/usernew:/bin/sh

fprincipe@html3:~$ tail -n 5 /etc/group
fprincipe:x:1004:
user1:x:1005:
user2:x:1006:
user3:x:1007:usernew
usertest:x:1008:
fprincipe@html3:~$

Anche in questo caso le opzioni a disposizione per il comando usermod sono numerose. Un breve estratto nella tabella a seguire.

-dRidefinisce la home directory dell’utente.
-mMuove il contenuto della vecchia home directory verso la nuova home directory.
-GAbbinata alla opzione -a l’utente sarà aggiunto alla lista di gruppi separati da virgole passata a -G per argomento, se usata senza -a la lista di gruppi secondari sostituisce le scelte precedenti in tal senso.
-lCambia il nome di login.
-e
-f
-g
-u
-s
Equivalenti nell’uso a quanto specificato nella tabella per useradd .

E’ possibile rimuovere un utente passandolo come argomento a userdel e un gruppo facendo lo stesso mediante groupdel . Ovviamente anche i gruppi, come gli utenti, possono avere una password in quanto possono essere adoperati per utilizzi particolari. Questa caratteristica, quasi sempre inutilizzata, viene qui presentata a scopo puramente didattico per suggerirvi di osservare i gruppi con maggiore profondità non essendo questi dei meri insiemi di utenze ma qualcosa di più complesso e versatile. Assegneremo al gruppo admin2 tramite groupmod -p una password, che avremo criptato con openssl , quindi osserveremo /etc/gshadow che è l’equivante per i gruppi di /etc/shadow . I gruppi che vedrete con un punto esclamativo a riempimento del secondo campo sono quelli che non adottano password.
Il comando gpasswd consente di passare come ultimo e penultimo argomento rispettivamente un gruppo e un un utente da cui questo verrà rimosso o aggiunto, le azioni in questione si ottengono sfruttando nell’ordine l’opzione -d e -a . Adoperando groupdel potremo rimuovere un gruppo. Creeremo un gruppo vuoto con groupadd a scopo di test quindi proveremo a effettuare alcune rimozioni. Non sempre l’operazione di rimozione sarà possibile, in alcuni casi genererebbe una situazione anomala. Tuttavia sarà sempre efficace su un gruppo vuoto come nel caso di void2 .


fprincipe@html3:~$ openssl passwd -crypt
Password: 
Verifying - Password: 
JP3i3B0bxIVz6
fprincipe@html3:~$ grupmod admin2 -p JP3i3B0bxIVz6

fprincipe@html3:~$ sudo tail /etc/gshadow
lpadmin:!::fprincipe
sambashare:!::fprincipe
debian-tor:!::fprincipe
libvirtd:!::fprincipe
fprincipe:!::
user1:!::
user2:!::
user3:!::usernew
frodds:!::usernew
admin2:JP3i3B0bxIVz6::usernew

fprincipe@html3:~$ sudo gpasswd -d usernew user3
Removing user usernew from group user3

fprincipe@html3:~$ sudo gpasswd -a user1 user3
Adding user user1 to group user3

fprincipe@html3:~$ sudo groupadd void2

fprincipe@html3:~$ sudo tail /etc/gshadow
lpadmin:!::fprincipe
sambashare:!::fprincipe
debian-tor:!::fprincipe
libvirtd:!::fprincipe
fprincipe:!::
user1:!::
user2:!::
user3:!::user1
admin2:JP3i3B0bxIVz6::usernew
void2:!::

fprincipe@html3:~$ sudo groupdel user2
groupdel: cannot remove the primary group of user 'user2'

fprincipe@html3:~$ sudo groupdel void2

fprincipe@html3:~$ sudo tail -n 6 /etc/gshadow
libvirtd:!::fprincipe
fprincipe:!::
user1:!::
user2:!::
user3:!::user1
admin2:JP3i3B0bxIVz6::usernew

Utenti, gruppi e filesystem

Chiudiamo questo capitolo parlando dei permessi associati ai file per utenti e gruppi. Anticipiamo la sequenza di comandi che andremo a commentare.


user2@html3:~$ ls -lia /home/user2/testo.txt 
393443 -rw-rw---- 1 user2 user2 69 Jun  8 11:48 /home/user2/testo.txt

user2@html3:~$ ls -lia /home/user3/testo.txt 
393447 -rw-rw---- 1 user3 user3 69 Jun  8 12:05 /home/user3/testo.txt

user2@html3:~$ more testo.txt
questo è un testo contenuto in un file di cui user2 è proprietario
user2@html3:~$ exit
fprincipe@html3:~$ sudo su - user1

user1@html3:~$ more /home/user2/testo.txt
more: cannot open /home/user2/testo.txt: Permission denied

user1@html3:~$ more /home/user3/testo.txt
questo è un testo contenuto in un file di cui user3 è proprietario

user1@html3:~$ exit
fprincipe@html3:~$ sudo chown user1:user1 /home/user2/testo.txt
fprincipe@html3:~$ sudo su - user1

user1@html3:~$ more /home/user2/testo.txt
questo è un testo contenuto in un file di cui user2 è proprietario
user1@html3:~$ exit

fprincipe@html3:~$ sudo chmod a-r /home/user2/testo.txt
fprincipe@html3:~$ ls -lia /home/user2/testo.txt
393443 --w--w---- 1 user1 user1 69 Jun  8 11:48 /home/user2/testo.txt
fprincipe@html3:~$ sudo su - user1

user1@html3:~$ more /home/user2/testo.txt
more: cannot open testo.txt: Permission denied

Ricordiamo che user1 è stato preventivamente aggiunto al gruppo user3 sfruttando i comandi presentati in precedenza. Il primo comando ci restituisce come output alcune informazioni relative al file /home/user2/testo.txt . Concentriamoci in particolare su “user2 user2” che indica rispettivamente l’utente proprietario e il gruppo assegnatario del file. Passiamo ora a osservare il gruppo di caratteri “-rw-rw—-”. Descrive un file con permesso di lettura e scrittura per l’utente e per il gruppo che lo possiede. La stessa cosa vale per /home/user3/testo.txt. Una simile informazione può essere ottenuta per qualsiasi elemento del filesystem. Come si leggono simili informazioni?
Sono in tutto dieci caratteri. Il primo carattere potrà essere per i file, l per i link e d per le directory, poi sono presenti tre triplette di caratteri rispettivamente per il proprietario del file, il gruppo del file e gli altri utenti. Nelle triplette potrete leggere r che rivela un permesso di lettura, w per un permesso di scrittura e x per un permesso di esecuzione. Ecco un esempio: la sequenza “lrwxr-x–x” indica un link con permesso di lettura, scrittura ed esecuzione per il proprietario, di sola lettura ed esecuzione per il gruppo nonché esclusivamente di esecuzione per tutti gli altri. Bene. Torniamo alla sequenza di comandi e andiamo a constatare l’efficacia di questi permessi. Accedendo come utente user2 al file /home/user2/testo.txt non avremo problemi a visualizzarne il contenuto. Tutta altra storia accedendo come utente user1, infatti non possiamo visualizzare /home/user2/testo.txt ma solo /home/user3/testo.txt perché l’utente user1 è nel gruppo autorizzato a effettuarne la lettura. Adesso modifichiamo il proprietario e il gruppo di /home/user2/testo.txt assegnandolo all’utente user1 e al gruppo user1 mediante il comando chown che accetta come argomento USERNAME:GRUPPO FILENAME. Ovviamente a questo punto, utilizzando l’utenza user1, sarà possibile visualizzare il contenuto di /home/user2/testo.txt . Passiamo oltre.
Il comando chmod consente di modificare i permessi di scrittura, lettura ed esecuzione. Accetta come argomenti gli operatori u per utente, g per gruppo, o per altri e a per tutti. Possiamo specificare se aggiungere o rimuovere i permessi con + e a cui faremo seguire w, r e x con i significati che ci sono ormai familiari. A esempio chmod -R og+wx Dir1 assegna ricorsivamente (tramite -R) alla directory Dir1 e a tutto il suo contenuto il permesso di scrittura e di esecuzione per i membri del gruppo a cui è assegnata la directory e per coloro i quali non sono né utenti del gruppo a cui questa è assegnata né suoi proprietari. Sfruttando questo comando possiamo modulare l’accesso alle risorse del filesystem secondo le nostre esigenze. Nulla è precluso, persino scelte estreme. Osserviamo infatti gli ultimi comandi della precedente sequenza. Con chmod a-r è possibile interdire a tutti il diritto di lettura. Persino, come vedete, al proprietario del file.
L’opzione ricorsiva -R può essere applicata anche al comando chown.

Tutte le lezioni

1 ... 17 18 19

 

 

1 ... 17 18 19

Se vuoi aggiornamenti su CLI: Amministrare utenti e gruppi inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su CLI: Amministrare utenti e gruppi

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy