我可以无密码地访问服务器。我的用户帐户添加了sudoers文件,用于/etc/init.d/中某些服务/守护进程的NOPASSWD使用。
我想根据一些测试结果编写一个脚本来启动或停止一个守护进程。我已经设置了一个cron来在特定的时间运行这个脚本。但是它返回错误"sudo: no tty存在和没有指定的任务传递程序“。
我可以在没有密码的情况下使用“sudo /etc/init.d/service名称启动/停止”,我没有根密码。
我已经检查了/etc/sudoers文件。没有“申购”。我使用Ubuntu-10.04,2.6.32-24-泛型。
以下是sudoers中的活动行:
Defaults env_reset
root ALL=(ALL) ALL
bijo ALL=NOPASSWD: /etc/init.d/apache2
%sudo ALL=(ALL) ALL
%admin ALL=(ALL) ALL发布于 2011-05-19 08:18:23
如果您将脚本作为没有密码访问权限的用户运行,那么它应该正确工作,我将确保脚本作为正确的用户运行,我还将手动调用脚本作为正确的用户来测试脚本。
您还可能需要检查sudoers文件中不存在以下行,或者您还有一行表示用户不需要TTY
Defaults requiretty如果有这一行,您可以将其注释掉(这不是一个好主意)--也许最好在
Defaults:<USERNAME> !requiretty其中用户名是您的用户
发布于 2011-05-19 08:20:14
我认为你需要使用ssh -t
发布于 2011-05-20 08:05:28
抱怨消息来自要求密码的部分代码,抱怨也是如此,因为没有tty,它就不能禁用echo。您可以通过在sudoers中设置visiblepw选项来证明自己在此代码路径中,这将避免该警告并让您看到密码提示。
因此,最终,NOPASSWD:控件出现了问题。
当sudoers匹配中有多个规则时,将使用最后一个匹配,而不是最具体的匹配。因此,用户bijo在%sudo或%admin中;因此没有应用NOPASSWD:控件。
您在命令行中的测试是否发生在您将自己添加到其中一个组之后退出/登录之前?
https://serverfault.com/questions/271336
复制相似问题