sudo: Comment autoriser un seul argument à une commande?

8

Je veux ajouter une entrée à mes suoders pour permettre à un utilisateur d'exécuter une commande avec exactement un argument sans option.

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 

Puis-je faire cela en utilisant le sudoers sytnax? Ou dois-je créer un script d'aide?

Elrond
la source
est-ce un argument défini comme toujours -abc? ou peut-il varier?
Mike
C'est [a-z]*déjà l'argument que je veux. C'est donc un argument variable. (J'utilise / bin / echo uniquement pour les tests.)
Elrond

Réponses:

8

À ma connaissance, vous ne pouvez pas passer d'arguments non-commande dans sudo si cet argument varie.

Vous pouvez spécifier quelque chose comme ceci:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file

Cela permettrait à l'utilisateur de suivre certains fichiers mais pas d'autres fichiers.

Si vous devez passer une variable, je recommande un script wrapper.

Voici un exemple de wrapper rsync:

https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo

Si vous recherchez des emballages sudo sur Google, vous pouvez trouver de nombreux autres exemples.

Assurez-vous de coder en dur tous les chemins et d'exécuter des vérifications d'intégrité sur l'entrée si l'utilisateur ne peut pas faire confiance.

jeffatrackaid
la source
2
Devrait avoir des contrôles de santé mentale de toute façon. Ne fais confiance a personne! [/ paranoïaque]
Nathan C