[tip] Script per il cambio password non interattivo di un utente Linux
Per cambiare la password di un account Linux, è sufficiente utilizzare il comando
passwd username
che richiede in modo interattivo di inserire due volte la nuova password da assegnare all’utente username.
Per poter far si che il cambio password avvenga senza l’iterazione dell’utente, e quindi specificando la password da assegnare direttamente sulla riga di comando, è necessario creare uno script.
Lo script riportato di seguito utilizza il tool expect per cambiare la password. Expect è un tool utile per eseguire qualsiasi comando che richiede l’iterazione tra programma e utente, per esempio appunto il cambio password o l’autenticazione ftp. Per installarlo su di un sistema Debian, è sufficiente eseguire il comando
apt-get install expect
Creazione dello script chpasswd:
nano -w chpasswd
#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof
chmod +x chpasswd
E’ possibile utilizzare lo script appena creato in questo modo:
$ chpasswd username password
Se volessimo utilizzare lo script per cambiare la password di un utente samba, è sufficiente cambiare la riga dello script
spawn passwd [lindex $argv 0]
con
spawn smbpasswd [lindex $argv 0]
Questo script può essere utilizzato ad esempio da una pagina php per gestire il cambio password di utente (Linux o Samba) direttamente da una pagina web.
L’articolo è la traduzione in italiano del post Change Linux or UNIX system password using PHP script pubblicato sul sito http://www.cyberciti.biz/