这是我的问题的基础:我想sudo
为用户添加权限,但出于root
安全原因不使用它。
我有一个 PHP 脚本需要drush
通过 运行命令 ( ) exec()
。但是,PHP 是以用户身份运行的,而我希望以另一个用户身份执行该命令。这是必需的,因为如果不这样做,则存在在其他用户的目录中写入的权限问题。
该drush
命令本身有效,我已将其提供给所有用户。
当前用户(A)是创建其他帐户/用户(B)的 cPanel 经销商。
我可以exec('ls -la')
以用户 A 的身份运行,只要我们在用户 A 的主目录中,它就会返回 CWD 的内容。添加的相同代码sudo
会失败,因为用户 A 不在 sudoers 列表中。
最后的命令将文件下载到用户 B 的目录,如下所示:
'<pwd> | sudo -S -u <usrB> drush dl drupal <irrelevant options>'
-S
应该使用用户 B 的密码自动以用户 B 的身份执行命令。
以 root 身份运行完全相同的命令可以完美运行。
我想知道是否有办法将用户 A 添加到 sudoers 中而无需 root 访问权限,以及这是否可以安全地防止潜在的安全漏洞。如果不可能,还有其他方法吗?我看到有人可以使用 从 sudoers 中排除目录!
,但后来我意识到这样做会有很大缺陷。
请注意,我是一名开发人员,因此尽管我知道一些基础知识,但我并不是专业人士。服务器运行的是 CentOS 6.5、WHM/cPanel,如果需要,我有 root 访问权限。这个想法是一次性设置将防止在创建新用户时进行配置。
答案1
CentOS 6.5 在默认 sudoers 文件中有示例。假设用户是“user_a”,并且要运行的命令是 ls,但仅在本地主机上
user_a localhost=/bin/ls
如果你想要多个命令,请用逗号分隔这些命令
有关更多信息,man sudoers 中有示例。http://www.sudo.ws/sudoers.man.html