这个 sudoers 文件配置有什么问题?

这个 sudoers 文件配置有什么问题?

我必须以另一个用户的身份执行 shell 脚本,但不需要输入密码。

我已使用 编辑该/etc/sudoers文件visudo,并添加了以下行。

_www  localhost=(otheruser) NOPASSWD:bin/sh /path/to/my/script.sh

如果我理解它的sudo工作原理,这意味着用户_www可以像用户一样执行操作otheruser,而无需输入密码,只需从本地主机执行即可。

对吗?因为系统会继续提示输入密码。

答案1

我认为你需要正确输入 sh 的路径,你缺少第一个“/”

_www  localhost=(otheruser) NOPASSWD:/bin/sh /path/to/my/script.sh

然后按照文件中显示的命令尝试。假设您以 _www 身份登录:

sudo -u otheruser /bin/sh /path/to/my/script.sh

如果仍然提示,则说明有其他问题......

答案2

这是我的 sudoers 文件中的有效行:

www-data ALL=(ALL) NOPASSWD: /usr/local/bin/myapp

不过,当我在服务器上运行它时,我遇到的问题实际上不是 sudoers 文件,而是从 Web 应用程序调用可执行文件的方式。请确保 PHP 或 Python 文件中系统调用的语法正确,并且参数传递正确。

我的工作示例来自一个 Python 文件subprocess.Popen,其使用方式如下:

args = '/usr/bin/sudo /usr/local/bin/myapp -v'
p = Popen(args, stdout=PIPE, stderr=STDOUT, shell=True).communicate()

希望这可以帮助。

相关内容