我在sudoers文件中添加了以下命令,但它给了我语法错误,不允许" foo = bar"在命令之前。
user ALL=(runas) SETENV:NOPASSWD:foo=bar /path/to/command /path/to/script
如果我添加使用/ bin / bash前缀,则可以使用
user ALL=(runas) SETENV:NOPASSWD:/bin/bash -c "foo=bar /path/to/command /path/to/script"
但是当我从用户运行sudo
时,它会要求我输入密码。
有人可以告诉我这应该怎么做?
答案 0 :(得分:0)
您的命令列表必须是文件系统中指示其完整路径的文件。我不太确定您的foo=bar "command"
意味着什么。如果设置了变量,那么您是否不缺少分号(foo=bar;
)?但是无论如何,sudo并不是以任何方式设置变量,而是关于运行命令。您应该完全摆脱foo = bar并保持
user ALL=(runas) SETENV:NOPASSWD: /path/to/command /path/to/script
您不会使用sudo来阻止用户设置变量(如果这首先就是您的意思)。
来自联机帮助页:
Cmnd_List是一个或多个命令名称,目录和目录的列表 其他别名。命令名称是完全限定的文件名, 可能包含壳式通配符(请参阅下面的“通配符”部分)。