sudoers NOPASSWD: sudo: 没有 tty 并且没有指定 askpass 程序

Posted

技术标签:

【中文标题】sudoers NOPASSWD: sudo: 没有 tty 并且没有指定 askpass 程序【英文标题】:sudoers NOPASSWD: sudo: no tty present and no askpass program specified 【发布时间】:2015-02-26 03:21:23 【问题描述】:

我添加了一个这样的用户:

$ adduser --system --home /no/home --no-create-home --group --disabled-password --disabled-login testuser

将用户添加到组:

$ adduser testuser testgroup

向 sudoers (visudo) 添加行:

testuser    ALL=(ALL) NOPASSWD: ALL
%testgroup         ALL=(ALL:ALL) NOPASSWD: ALL

当我尝试运行具有以下内容的 bash 脚本时:

#!/bin/sh
sudo -u testuser /usr/bin/php /usr/local/bin/script.php

但是当我运行这个脚本时,我在日志中得到了错误:

sudo: no tty present and no askpass program specified

编辑:requiretty 不在 sudoers 文件中。

【问题讨论】:

sudo 对您正在更改的用户/组而不是您正在更改的用户的权限吗?那么这些行不是让testuser 用户和testgroup 组在没有密码的情况下运行任何命令(作为任何人)吗?您不需要授予运行脚本的用户权限以运行命令as testuser 来满足您的需求吗?假设这就是你的意思? @EtanReisner 我也试过了,但还是出现同样的错误。 你也试过what?以测试用户身份运行sudo?您具体运行/尝试了什么?哪个用户正在运行原始脚本? @EtanReisner 你是对的。我必须为客户组添加 NOPASSWD。现在它可以正常工作了。谢谢。 sudo: no tty present and no askpass program specified -- netbeans 的可能重复项 【参考方案1】:

sudo 权限是关于您正在更改的用户/组,而不是您正在更改的用户。

这些权限行也允许testuser 用户和testgroup 组在没有密码的情况下运行任何命令(作为任何人)。

您需要向运行脚本的用户授予权限,以便testuser 用户的身份运行命令。

假设这就是你的意思。

【讨论】:

【参考方案2】:

当您的 sudoers 文件指定 requiretty 时会发生该错误。来自sudoers 联机帮助页:

   requiretty      If set, sudo will only run when the user is 
                   logged in to a real tty.  When this flag is set, 
                   sudo can only be run from a login session and not 
                   via other means such as cron(8) or cgi-bin scripts.  
                   This flag is off by default.

要修复您的错误,请从您的 sudoers 文件中删除 requiretty

【讨论】:

谢谢,但没有帮助。 requiretty 不在 sudoers 文件中。我已经更新了我的问题。【参考方案3】:

我通过登录服务器修复了它,并将以下行附加到 ssh-server 配置中:

> vim /etc/ssh/sshd_config

Match User <your user name>
    PermitTTY yes

所以我不需要永久使用-t 选项。

【讨论】:

以上是关于sudoers NOPASSWD: sudo: 没有 tty 并且没有指定 askpass 程序的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 设置sudo免密NOPASSWD

给用户和组添sudo 权限

为啥你的"sudo nopasswd"不生效

不在 sudoers 文件中。此事将被报告。

linux设置sudo不要密码

ubuntu 设置sudo 免密码