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.
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 thetestgroup
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.
That error occurs when your sudoers file specifies
requiretty
. From thesudoers
manpage:To fix your error, remove
requiretty
from your sudoers file.I fixed it by login to the server and append the following lines to the ssh-server configuration:
So I don't need the
-t
options permanently.