Exec("adduser myownuser") 在 CentOS 服务器上不工作
Exec("adduser myownuser") not working on CentOS server
我有带有 PHPFPM
和 Nginx
的 CentOS 7(都是从源代码安装的,不是 yum)。 Nginx
和 PHP
运行 在 www-data
用户和组上。现在,我创建了一个包含以下内容的 PHP
文件:
exec("adduser myownuser");
如果我在 CentOS 控制台中以根用户 运行 这个 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 的用户名是什么,你可以 echo exec("whoami");
在人们开始对我大吼大叫之前,最好只允许 apache sudo 访问您需要的一个命令。或者将 apache 添加到一个组并将该组分配给该命令。具体做法我就不说了,大家可以搜索一下,网上到处都有
我有带有 PHPFPM
和 Nginx
的 CentOS 7(都是从源代码安装的,不是 yum)。 Nginx
和 PHP
运行 在 www-data
用户和组上。现在,我创建了一个包含以下内容的 PHP
文件:
exec("adduser myownuser");
如果我在 CentOS 控制台中以根用户 运行 这个 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 的用户名是什么,你可以 echo exec("whoami");
在人们开始对我大吼大叫之前,最好只允许 apache sudo 访问您需要的一个命令。或者将 apache 添加到一个组并将该组分配给该命令。具体做法我就不说了,大家可以搜索一下,网上到处都有