我有一台运行Debian Squeeze并带有最新更新的服务器。 我试图设置sudoers文件,以允许特定用户的特定shell脚本的用户www-data执行。 我用visudo为此添加了这一行:
www-data ALL=(img) NOPASSWD: /path/to/script/imgsync.sh
然后我试图把它称为用户www-data(我从根到www数据第一):
sudo -u img /path/to/script/imgsync.sh
令我惊讶的是,它仍然要求input密码:
[sudo] password for www-data:
我期待NOPASSWD:照顾这个?
真让我困惑的是:我有另一台服务器使用相同的设置,在没有密码的情况下工作。 另外,我在同样的服务器上也有类似的权限,也没有密码的工作。
我甚至添加了该行
Defaults:www-data !authenticate
与visudo(只是为了testing,我不想这个)。 然后,当我再次尝试时,我得到了(矛盾的)错误消息:
对不起,用户www-data不允许执行'/path/to/script/imgsync.sh'作为img的servername。
我怎样才能让它执行,而不必提供密码(并没有更多的权利,万维网数据)?
事实certificate,上述设置没有任何问题。 在我的testing中,脚本遇到了一个用户img缺less权限的目录,导致如上所述的结果。
尽pipe现在一切正常,但我仍然对dash (默认非loginshell)无用的错误消息/行为感到有些不满。
我会离开post,可能对别人有帮助。