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

Tim Mishutin picture Tim Mishutin · Dec 30, 2014 · Viewed 44.3k times · Source

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.

Answer

Etan Reisner picture Etan Reisner · Dec 30, 2014

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.