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?
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:
Vous pouvez remplacer le paramètre par défaut pour des options telles que requiretty
pour 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 requiretty
est défini dans les options de compilation par défaut, ce qui suit sudoers
fichier permet à la fois artbristol
et bob
d'exécuter en /path/to/program
tant que root à partir d' un script. artbristol
n'a pas besoin de mot de passe alors qu'il bob
faut obligatoirement entrer un mot de passe (probablement tty_tickets
éteint et bob
entré 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 artbristol
de s'exécuter /path/to/program --option
dans un script, mais pas /path/to/program
avec d'autres arguments.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Quelque chose comme ça:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/
fichier. CentOS 7.1
/etc/sudoers.d/
. CentOS 7.5 :(
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/01build
avec 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/01build
et 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
/etc/sudoers
mais ne semble pas fonctionner dans un/etc/sudoers.d/
fichier