无法使用 php 脚本更改 linux 用户密码

无法使用 php 脚本更改 linux 用户密码

我有以下用于更改密码的 php 脚本: <?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ini_set('display_error', true);

$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;
?>

该脚本在浏览器中显示错误:

pam_chauthtok() failed, error: [1] => Authentication token lock busy [2] => chpasswd

但是命令

sudo -u root sh -c '/usr/bin/echo "username:pass" | sudo /usr/sbin/chpasswd 2>&1'

工作正常。有人能给我提示一下吗,为什么我在浏览器中遇到了上述错误?

文件系统处于读写模式。文件 /etc/{passwd,shadow} 具有正确的权限

先感谢您

答案1

ProtectSystem=full解决方案是在 php-fpm.service 单元中注释掉:

# Mounts the /usr, /boot, and /etc directories read-only for processes invoked by this unit.
#ProtectSystem=full

答案2

www-data浏览器 php 使用用户运行

通过 shell 使用命令添加要www-data使用的权限并附加此行sudovisudo

www-data   ALL=(ALL:ALL) ALL

它的语法是

user    hosts=(users:groups)    commands

相关内容