我有sudo设置为用户(myuser)如下“主机名”(sudoers内容):
Cmnd_Alias SCRIPT = /path/脚本* myuser ALL =(suser)NOPASSWD:SCRIPT
这工作正常,所以我可以运行以下,作为主机名myuser本地login,无需密码:
sudo -u suser / path /脚本
但是,当我使用ssh(带密钥设置,所以不需要密码)login和运行,如下所示:
ssh主机名sudo -u suser / path /脚本
我得到提示input密码,当input密码时,我得到:
对不起,用户myuser不能像主机名上的suser那样执行'/ path / script'
。
更新问题是通过从sudoers命令的末尾删除“*”来解决的。 *被添加到允许parameter passing给脚本,但实际上并不需要。 仍然不明白为什么*允许sudo在本地工作,但不能通过SSH。 所以问题依然存在
你没有在sudoers中指定一个主机,所以它只能在本地工作,因为你现在已经安装了。
所以,如果你设置主机参数为ALL,它将在任何主机上工作。
从男人sudoers :
保留字ALL是一个内置的别名,总是会导致匹配成功。 它可以用于任何可能使用Cmnd_Alias,User_Alias,Runas_Alias或Host_Alias的地方。
…
默认情况下,如果将NOPASSWD标记应用于当前主机上的某个用户的任何条目,他或她将能够不使用密码运行sudo -l。 另外,如果对于与当前主机有关的所有用户的条目都存在NOPASSWD标签,则用户只能在没有密码的情况下运行sudo -v。 这种行为可以通过verifypw和listpw选项来覆盖。
在terminal的以下工作的另一个事实似乎承担主机是你得到提示的原因。
$ ssh主机名
$ sudo -u用户/path/脚本
您为sudoers文件显示的语法不正确,visudo不会让您使用该语法创build文件。 应该是这样的
testuser hostname=(user) NOPASSWD: /path/script*
使用这个语法,我可以ssh到主机名并执行脚本,而不需要eing询问密码。
编辑
从阅读评论看来,你的sudoers文件中有一个configuration错误。 这似乎是Host_Alias或主机名规范部分行的东西。
我在CentOS 6系统上build立了一个testuser,并且尝试了各种configuration,并且在本地login时找不到一个工作,但是当通过ssh尝试访问时拒绝访问。