Comment désactiver requiretty pour une seule commande dans sudoers?


44

Je veux désactiver requiretty pour pouvoir utiliser les scripts dans les scripts, mais je préfère le désactiver uniquement pour une seule commande plutôt que pour tout. Est-ce possible dans la configuration sudoers?

Réponses:


55

Vous pouvez remplacer le paramètre par défaut pour des options telles que requirettypour un utilisateur spécifique ou pour une commande spécifique (ou pour un hôte ou utilisateur spécifique), mais pas pour une commande spécifique lorsqu'elle est exécutée en tant qu'utilisateur spécifique.

Par exemple, en supposant que requirettyest défini dans les options de compilation par défaut, ce qui suit sudoersfichier permet à la fois artbristolet bobd'exécuter en /path/to/programtant que root à partir d' un script. artbristoln'a pas besoin de mot de passe alors qu'il bobfaut obligatoirement entrer un mot de passe (probablement tty_ticketséteint et bobentré son mot de passe sur un terminal récemment).

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

Si vous souhaitez modifier le paramètre d'une commande avec des arguments spécifiques, vous devez utiliser un alias de commande (limitation de la syntaxe). Par exemple, le fragment suivant permet artbristolde s'exécuter /path/to/program --optiondans un script, mais pas /path/to/programavec d'autres arguments.

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

31

Quelque chose comme ça:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

Cela peut fonctionner /etc/sudoersmais ne semble pas fonctionner dans un /etc/sudoers.d/fichier
8bitjunkie

Pour ce que ça vaut, pour moi, cette modification a fonctionné lorsqu'elle a été ajoutée à un /etc/sudoers.d/fichier. CentOS 7.1
John Erck

Cela ne fonctionne pas pour moi lors de l'utilisation /etc/sudoers.d/. CentOS 7.5 :(
Stefan Lasiewski

4

J'ai trouvé que cela fonctionnait bien pour moi en utilisant un fichier dans /etc/sudoers.d. C'est assez simple à vérifier.

Tout d'abord, j'ai créé /etc/sudoers.d/01buildavec le contenu:

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

Puis testé que cela fonctionne:

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

Ensuite, j'ai modifié /etc/sudoers.d/01buildet supprimé la Defaults:ligne, et après cela, j'ai eu:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.