Ho iniziato un thread qualche tempo fa chiedendo suggerimenti su un buon (buono = abbastanza sicuro) modo per consentire agli utenti di cambiare le password dei loro account tramite uno script PHP. (PERCHÉ? Perché su questo server particolare, ho un sacco di utenti solo email senza accesso alla shell che hanno bisogno di essere in grado di cambiare le loro password senza chiedermi di farlo per loro.)
Le poche risposte fornite non sono state di grande aiuto. Non voglio scaricare le password in un file, o fare una sorta di aggiornamento in batch ogni x secondi. Deve essere un sistema immediato, thread-safe che 1) richiede che l'utente verifichi la sua password esistente, e 2) cambia la password immediatamente (senza batch).
Quindi ho creato un'utilità eseguibile e un piccolo script PHP per realizzare questo. Li sto sottoponendo a revisione, nella speranza che la comunità possa indicare cose che ho fatto di sbagliato / modi in cui questo possa essere vulnerabile agli attacchi e nella speranza che possa aiutare qualcun altro.
Informazioni sulla configurazione: L'utilità 'chpwd' è impostata per eseguire SUID root - richiesta per l'accesso al file / etc / shadow. Non riesco a vedere in alcun modo intorno a questo. Nota che il codice "cambia password" che accede al file / etc / shadow viene copiato direttamente dall'origine dell'utilità "passwd".
Lo script chpasswd.php viene eseguito con autorizzazioni standard sul server Web.
Ecco il codice di esempio:
chpwd.c: link
chpasswd.php: link
Grazie in anticipo per tutte le critiche e i suggerimenti costruttivi.