Exec(“adduser myownuser”) 無法在 CentOS 伺服器上工作


Exec("adduser myownuser") not working on CentOS server

我有 CentOS 7 和 PHPFPMNginx (都是从源代码安装的,而不是 yum(。 NginxPHP www-data用户和组上运行。现在,我使用以下内容创建一个PHP文件:

exec("adduser myownuser");

如果我在 CentOS 控制台中以 root 身份运行这个PHP文件,它会成功工作。但是当我想在我的网络服务器根目录中运行它时,没有任何反应,脚本www-data运行..

问题出在哪里?

您需要将 apache 添加到 sudoers,无需密码。此外,您需要通过单行脚本执行adduser,否则无法设置其密码。

这是我的实现

$ccmd = "nohup sudo useradd -d /home/user -p $(openssl passwd -1 " . $thepassword . ") username &";
exec($ccmd);

我将其添加到我的 sudoers 文件中

APACHE ALL=(ALL( NOPASSWD: ALL

根据您的发行版,您的 Apache 用户可能会有所不同。要找出 apache 的用户名是什么,您可以回显 exec("whoami"(;

在人们开始对我大喊大叫之前,最好只允许 apache sudo 访问你需要的一个命令。要么将 apache 添加到组并将该组分配给该命令。我不会在这里解释如何做到这一点,你可以搜索,因为到处都有关于这个的线程