sudo - 冒充用户

sudo - 冒充用户

我正在尝试正确使用 sudo 命令和 sudoers 文件,以便我可以作为另一个用户运行命令。

我的 sudoers 文件设置如下:

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

root、apache 和 beans 是 beans 组的一部分。
另外 /opt 有 755 权限,而 /opt/renovations 目录及其子目录由 beans 用户和组拥有。

我尝试作为 beans 运行的命令是:

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n:这样我就不会被提示输入密码,因为这将由 cron 运行
-u:这样我就可以模拟 apache 用户
-i:这样我就可以模拟登录,并且我的 .profile已加载。我需要这个才能访问 .profile 中的环境变量。

问题是当我运行 sudo 命令时,我收到以下消息:

sudo:抱歉,运行 sudo 需要密码

我尝试在 AIX 和 Ubuntu 上运行它,但这两个系统上都有问题。如果我运行以下命令,这会起作用:

sudo -n -u apache /opt/renovations/var/script-test.sh

但是如果没有 -i,我的环境将不包含我需要的所有环境变量。

我的 sudoers 文件中是否需要更新某些内容才能实现此目的?

答案1

正如您@krzysto 所说,解决方案是将以下内容添加到 sudoers 文件中

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

下一个缺少的部分是确保该组具有脚本的执行权限,以便您可以执行它们。

相关内容