Não é possível alterar a senha do usuário Linux com script php

Não é possível alterar a senha do usuário Linux com script php

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=fullna 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-datao usuário

Adicione permissões para www-datausar sudoatravés do shell usando visudoo comando e anexe esta linha

www-data   ALL=(ALL:ALL) ALL

Sua sintaxe é

user    hosts=(users:groups)    commands

informação relacionada