尝试授予 /etc/passwd 权限后,useradd 命令无法从 php 的 shell_exec() 执行;我还尝试使用 visudo 更改 passwd 的所有者,错误仍然存在
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
如何使用 php 创建 bash 用户帐户?
答案1
问题在于 APACHE 用户权限。
您可以为脚本授予 sudo 权限,但从安全角度来看,这不是最好的主意。
或者使用ssh2_connect
ssh 连接到您的服务器,并以 root 身份运行 useradd。
$connection = ssh2_connect('localhost', 22);
if (ssh2_auth_password($connection, 'root', '')) {
$username = 'username';
$password = 'password';
ssh2_exec($connection, "useradd $username -m -p $password -d /home/$username/ -s /bin/false");
} else {
die('Authentication Failed...');
}
看ssh2_连接和ssh2_auth_密码文档。