sudoers NOPASSWD: sudo: нет tty присутствует и не указана программа askpass

я добавил такого пользователя:

$ 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

Edit:requiretty нет в файле sudoers.

2 ответов


sudo разрешения касаются пользователя / группы, которую вы меняете С не пользователь, которого вы меняете to.

так что эти строки разрешений позволяют testuser пользователем и testgroup группа запускает любую команду (как и любой другой) без пароля.

вы должны дать разрешение to пользователь запускает скрипт для запуска команд as на testuser пользователь для того, что вы хотите.

при условии, что вы я должен был это допустить.


эта ошибка возникает, когда ваш файл sudoers указывает requiretty. От 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.

чтобы исправить ошибку, удалите requiretty из вашего файла sudoers.