PHP exec 启动的 UserAdd 命令 shell 脚本的权限被拒绝

Permission Denied on UserAdd command shell script started by PHP exec

我有一个 PHP exec 命令,它在 Linux Centos 7.2

中启动一个 bash 脚本
#!/bin/sh
# \
mkdir /var/www/html/folder1/

useradd -g usergroup -d /var/www/html/folder1/ 

sudoers 是这样配置的。 'apache' 是我安装中的 Apache 用户和组:

apache    ALL=(ALL) ALL
apache ALL=(ALL) NOPASSWD: /usr/sbin/useradd

mkdir 命令按预期工作。 但是 useradd 命令检索 'permission denied' 错误,即使我在 sudoers 中明确声明 group/user apache 有权执行 useradd.

那么如何解决这个问题呢?如何在不获取 'permission denied' 的情况下创建属于已定义用户组的用户?

我最终以这种方式设置了对 useradd 文件的完全权限:

chmod 7777 /usr/sbin/useradd

我不知道这是否足够安全,反正它起作用了。 我在收到次要错误后继续,例如:

nscd: 只允许 root 使用此选项

与useradd模块清理用户缓存失败有关。 但至少这个阶段的用户是正确添加的。 目前不知道失败的缓存刷新是否会在将来导致其他问题。

编辑:我还必须 1) 为我的 php 脚本执行 "chown root:root myscript.php"。 2) 将 bash 脚本放入 /usr/sbin 3) 使用 chmod +x 使 bash 脚本可执行 4) 使用 php 在 php 中执行它 4 ) and/or 在 sudoers 安全部分

添加 /usr/sbin 目录