sudoers NOPASSWD: sudo: no tty present and no askpass program specified

只谈情不闲聊 提交于 2019-12-03 20:49:19

问题


I have added a user like this:

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

Added a user to a group:

$ adduser testuser testgroup

added lines to sudoers (visudo):

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

When I try to run the bash script with the following content:

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

But when I run this script, I get the error in the log:

sudo: no tty present and no askpass program specified

Edit: requiretty is not in the sudoers file.


回答1:


sudo permissions are about the user/group you are changing from not the user you are changing to.

So are those permission lines are letting the testuser user and the testgroup group run any command (as anyone) without a password.

You need to give permission to the user running the script to run commands as the testuser user for what you want.

Assuming that's what you meant to allow that is.




回答2:


That error occurs when your sudoers file specifies requiretty. From the sudoers manpage:

   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.

To fix your error, remove requiretty from your sudoers file.




回答3:


I fixed it by login to the server and append the following lines to the ssh-server configuration:

> vim /etc/ssh/sshd_config

Match User <your user name>
    PermitTTY yes

So I don't need the -t options permanently.



来源:https://stackoverflow.com/questions/27697348/sudoers-nopasswd-sudo-no-tty-present-and-no-askpass-program-specified

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!