web-dev-qa-db-fra.com

sudoers NOPASSWD: Sudo: aucun tty présent ni programme askpass spécifié

J'ai ajouté un utilisateur comme ceci:

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

Ajout d'un utilisateur à un groupe:

$ adduser testuser testgroup

ajout de lignes à sudoers (visudo):

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

Lorsque j'essaie d'exécuter le script bash avec le contenu suivant:

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

Mais lorsque j'exécute ce script, l'erreur apparaît dans le journal:

Sudo: no tty present and no askpass program specified

Edit: requiretty n'est pas dans le fichier sudoers.

7
Tim Mishutin

Les autorisations Sudo concernent l'utilisateur/le groupe que vous modifiez de pas l'utilisateur que vous modifiez à .

Ces lignes d’autorisations permettent également à l’utilisateur testuser et au groupe testgroup d’exécuter une commande (comme tout le monde) sans mot de passe.

Vous devez donner la permission à à l'utilisateur qui exécute le script pour exécuter les commandes as l'utilisateur testuser pour ce que vous voulez.

En supposant que c’est ce que vous vouliez permettre.

7
Etan Reisner

Cette erreur se produit lorsque votre fichier sudoers spécifie requiretty. De la page de manuel sudoers:

   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.

Pour corriger votre erreur, supprimez requiretty de votre fichier sudoers.

3
jordanm