sudo: sorry, you must have a tty to run sudo

Publié le 7 Juin 2011

Cette erreur se produit lorsqu'un script exécuté automatiquement (cron, cgi, etc), donc sans terminal (tty) essaie de lancer une commande en utilisant sudo.

 

Une des restrictions de sudo est qu'il ne peut être qu'utilisé que depuis un terminal.

 

Cette erreur est d'autant plus sournoise que si le script est exécuté depuis un terminal il s'exécute sans problème. Il faut donc bien analyser les fichiers de logs pour trouver cette erreur (encore faut il que l'erreur soit capturée dans les logs).

 

J'utilisé sudo pour lancer une commande avec un autre utilisateur que celui de process appelant.

Dans ce cas j'ai pu contourner le problème en utilisant setuid pour lancer le script directement avec l'utilisateur que je voulais.

 

setuid se met en place de la façon suivante:

 

$ chown <user> mon_script.sh

$ chmod +s mon_script.sh

 

 

lorsque mon_script.sh sera appelé depuis un autre process il sera donc exécuté en tant que <user>.

Rédigé par Bliz

Publié dans #Script

Repost 0
Commenter cet article