【问题标题】:Permission Denied on UserAdd command shell script started by PHP exec由 PHP exec 启动的 UserAdd 命令 shell 脚本的权限被拒绝
【发布时间】:2018-03-04 04:19:18
【问题描述】:

我有一个 PHP exec 命令,它在 Linux Centos 7.2 中启动一个 bash 脚本

#!/bin/sh
# \
mkdir /var/www/html/folder1/$1

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

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

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

mkdir 命令按预期工作。 但是,即使我在 sudoers 中明确取消了组/用户 apache 有权执行 useradd,useradd 命令也会检索到“权限被拒绝”错误。

那么如何解决这个问题?如何创建属于已定义用户组的用户而不获得“权限被拒绝”?

【问题讨论】:

  • 正如sudoers configuration post 中所见,组名不应该以% 为前缀吗?
  • 这段代码在哪里与PHP相关?
  • Apache 是一个用户而不是一个组。应该是组吗?
  • 是 apache 是执行 php 脚本的用户吗?不是 www 数据?
  • 我找不到任何 www-data 。我的 linux 发行版的用户列表中只有一个 apache 用户,所以我认为我的 apache 版本为用户使用了不同的名称,并且它适用于 mkdir。在编辑 sudoers 之前,我在 mkdir 上遇到了相同的权限问题。现在 mkdir 可以工作,但 useradd 从来没有为我工作过。

标签: php exec centos7


【解决方案1】:

我最终以这种方式为 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 中执行它:“sudo bashscript.sh” 4) 和/或添加 /usr/sbin 目录在 sudoers 安全部分

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    相关资源
    最近更新 更多