Je veux désactiver require pour que je puisse Sudo dans les scripts, mais je préfère le désactiver uniquement pour une seule commande plutôt que tout. Est-ce possible dans la configuration sudoers?
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 run-as-user ou Host spécifique), mais pas pour une commande spécifique lorsqu'elle est exécutée en tant que spécifique utilisateur.
Par exemple, en supposant que requiretty
est défini dans les options de compilation par défaut, le fichier sudoers
suivant permet à la fois artbristol
et bob
d'exécuter /path/to/program
en tant que root à partir d'un script. artbristol
n'a pas besoin de mot de passe alors que bob
doit avoir à entrer un mot de passe (vraisemblablement tty_tickets
est désactivé et bob
a récemment entré son mot de passe sur un terminal).
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 (il s'agit d'une limitation de syntaxe). Par exemple, le fragment suivant permet à artbristol
d'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
J'ai trouvé que cela fonctionnait bien pour moi en utilisant un fichier dans /etc/sudoers.d
. C'est assez simple à vérifier.
J'ai d'abord 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é le Defaults:
line, et après cela, j'obtiens:
ssh Host Sudo -n /bin/date
Sudo: sorry, you must have a tty to run Sudo