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.