【问题标题】:Exec("adduser myownuser") not working on CentOS serverExec("adduser myownuser") 在 CentOS 服务器上不起作用
【发布时间】:2015-04-03 15:13:19
【问题描述】:

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

exec("adduser myownuser");

如果我在 CentOS 控制台中以 root 身份运行此 PHP 文件,则它可以成功运行。但是当我想在我的网络服务器根目录中运行它时,什么都没有发生,脚本以www-data..

运行

有什么问题?

【问题讨论】:

  • 使用 exec("sudo adduser myownuser");
  • 不符合您的建议。它接缝的问题是权限而不是命令

标签: php linux nginx centos


【解决方案1】:

您需要将 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添加到一个组并将该组分配给该命令。我不会在这里解释如何做到这一点,你可以搜索,因为到处都有关于这个的线程

【讨论】:

  • 然后执行 whoami 并查看用户名是什么,并将其添加到 sudoers。还要记住使用 vi 而不是 nano 或任何其他文本编辑器来编辑 sudoers。如果你开启了 SELinux,你将不得不停止它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 2020-04-17
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
相关资源
最近更新 更多