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.
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.
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.