Come bloccare o sbloccare diversi account su Linux

I comandi usermod e passwd sono usati per bloccare o sbloccare un utente alla volta, ma potrebbe capitarci di avere la necessità di sbloccare o bloccare diversi account tutti in insieme e invece che eseguire l’operazione singolarmente per ogni singolo utente, possiamo scrivere uno script shell che ci permetterà di eseguire questa azione sui diversi account tutti insieme.
Prima di iniziare a mettere mano sul codice andiamo a vedere a che cosa servono il comando passwd e il comando usermod.
Il comando passwd è uno dei comandi che viene maggiormente utilizzato dagli amministratori Linux per aggiornare i token di autenticazione dell’utente presenti nel file /etc/shadow effettuando delle chiamate a Linux-PAM e a Libuser API.
Il comando usermod è invece spesso utilizzato per modificare le informazioni di un account.
Solitamente viene utilizzato per aggiungere un utente ad uno specifico gruppo.
Dopo questa breve disamina andiamo a vedere di creare il nostro script, nello specifico veramente ne andremmo a creare 3 di script:
- Uno script per bloccare account
- Uno script per controllare lo stato degli account bloccati e di quelli sbloccati
- Uno script per sbloccare gli account
Per prima cosa creiamo un elenco degli utenti che devono essere bloccati o sbloccati, inserendone uno per riga:
$ cat elenco-account.txt
u1
u2
u3
u4
u5
- Script per bloccare diversi account
Usiamo il seguente script per bloccare diversi account degli utenti:
# blocca-account.sh
#!/bin/bash
for user in `cat elenco-account.txt`
do
passwd -l $user
done
Impostiamo i permessi del file che abbiamo appena creato per renderlo eseguibile, tramite il comando:
# chmod + blocca-account.sh
Infine, avviamo lo script tramite il comando:
# sh blocca-account.sh
Nel terminale dovremmo avere un output simile a questo:
Locking password for user u1.
passwd: Success
Locking password for user u2.
passwd: Success
Locking password for user u3.
passwd: Success
Locking password for user u4.
passwd: Success
Locking password for user u5.
passwd: Success
- Script per controllare lo stato di diversi account bloccati
Usiamo il seguente script per controllare lo stato degli account bloccati:
# stato-account.sh
#!/bin/bash
for user in `cat elenco-account.txt`
do
passwd -S $user
done
Rendiamo eseguibile il file tramite il comando:
# chmod + stato-account.sh
Ed infine eseguiamo lo script per vedere se tutti gli account sono stati bloccati correttamente:
# sh stato-account.sh
Nel terminale dovremmo ricevere un output simile a questo:
u1 LK 2019-06-10 0 99999 7 -1 (Password locked.)
u2 LK 2019-06-10 0 99999 7 -1 (Password locked.)
u3 LK 2019-06-10 0 99999 7 -1 (Password locked.)
u4 LK 2019-06-10 0 99999 7 -1 (Password locked.)
u5 LK 2019-06-10 0 99999 7 -1 (Password locked.)
Se l’output restituisce il valore LK dopo il nome utente, vuol dire che la password degli utenti è stata bloccata.
- Script per sbloccare diversi account
Ed infine utilizziamo questo script per sbloccare gli account:
# sblocca-account.sh
#!/bin/bash
for user in `cat elenco-account.txt`
do
passwd -u $user
done
Anche in questo caso andiamo a rendere il file eseguibile tramite il comando:
# chmod + sblocca-account.sh
Ed infine avviamo lo script che abbiamo appena creato:
# sh sblocca-account.sh
Il terminale ci restituirà un output simile:
Unlocking password for user u1.
passwd: Success
Unlocking password for user u2.
passwd: Success
Unlocking password for user u3.
passwd: Success
Unlocking password for user u4.
passwd: Success
Unlocking password for user u5.
passwd: Success
Una volta che abbiamo sbloccato gli account, eseguiamo nuovamente lo script stato-account.sh per controllare che tutti gli account siano stati sbloccati correttamente:
# sh stato-account.sh
Riceveremo un output simile a questo:
u1 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.)
u2 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.)
u3 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.)
u4 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.)
u5 PS 2019-06-10 0 99999 7 -1 (Password set, SHA512 crypt.)
In questo caso possiamo notare che dopo il nome utente è presente la sigla PS, che sta ad indicare che le password degli utenti non sono bloccate.
Come abbiamo appena visto serve poco per creare uno script che ci permetta di bloccare o sbloccare gli account su un sistema con Linux a bordo.