
Tenho o seguinte script php para alteração de senha: <?php error_reporting(E_ALL); ini_set('display_errors', VERDADEIRO); ini_set('display_startup_errors', VERDADEIRO); ini_set('display_error', verdadeiro);
$cmd = 'sudo -u root sh -c \'/usr/bin/echo "username:pass" | sudo /usr/sbin/chpasswd 2>&1\'';
exec($cmd,$output,$return_val);
print_r($output);
echo $return_val;
?>
Este script mostra erro no navegador:
pam_chauthtok() failed, error: [1] => Authentication token lock busy [2] => chpasswd
Mas o comando
sudo -u root sh -c '/usr/bin/echo "username:pass" | sudo /usr/sbin/chpasswd 2>&1'
funcionar bem. Por favor alguém pode me dar uma dica, por que recebo no navegador o erro acima?
O sistema de arquivos está no modo rw. Arquivos /etc/{passwd,shadow} têm permissões corretas
Agradeço antecipadamente
Responder1
A solução foi comentar ProtectSystem=full
na unidade php-fpm.service:
# Mounts the /usr, /boot, and /etc directories read-only for processes invoked by this unit.
#ProtectSystem=full
Responder2
O php do navegador é executado usando www-data
o usuário
Adicione permissões para www-data
usar sudo
através do shell usando visudo
o comando e anexe esta linha
www-data ALL=(ALL:ALL) ALL
Sua sintaxe é
user hosts=(users:groups) commands