Comment spécifier les arguments de commande dans sudoers? En tant qu'arrière-plan, la aws
commande est en fait une passerelle vers de nombreux sous-systèmes et je souhaite limiter l'utilisateur à l'exécutionaws s3 cp ...any other args...
Quand j'essaye ce qui suit dans /etc/sudoers
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws s3 cp, /usr/local/aws/bin/aws s3 cp
gbt1 ALL=(gbt-ops) NOPASSWD: AWSS3_CMD
Le shell demande malheureusement un mot de passe
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
gbt-ops's password:
Si je supprime la commande args dans Cmnd_Alias, elle se déroule comme souhaité (sans invite de mot de passe), mais les autorisations sont beaucoup trop larges. Alors, quelle est la bonne façon de limiter à certains types d’invocations de commandes ?
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws, /usr/local/aws/bin/aws
ensuite
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
...happy
Merci beaucoup.
Réponses:
Vous n'avez utilisé aucun caractère générique, mais vous avez fourni deux arguments. Par conséquent,
sudo
recherche les commandes exactement telles qu’elles sont écrites (à l’exception de path-lookup) (fromman 5 sudoers
):Essayez quelque chose comme:
Notez que:
Ainsi, un seul caractère générique est nécessaire par commande.
la source
/usr/local/bin/aws s3 cp
dans sudoers, il est plus sûr de le remplacer par un script (accessible en écriture uniquement par root).Identique à @muru, mais pour ceux qui aiment un exemple complet de travail:
Alors que
/sbin/cmd1
,/sbin/cmd2
peut être toute autre commande.Le but de
ECHO_CMD
est de présenter cesudo echo X A
qui demandera la phrase secrète, alors que cesudo echo A X
n’est pas le cas, et de vous permettre de gagner en confiance grâce à une expérience aussi simple.(On a supposé que l'écho est assis
/bin/echo
, pour vérifier où il se trouve sur votre système, essayezwhereis echo
)la source
/bin/echo
binaire, mais la plupart des shells ont aussi une fonction intégréeecho
qui sera utilisée à la place de ce binaire si vous ne fournissez pas de chemin complet.