GNU/Linux >> Tutoriels Linux >  >> Linux

Comment laisser l'utilisateur exécuter une commande contenant des guillemets dans sudoers ?

La solution simple consiste à placer votre commande dans un script, puis à donner à vos utilisateurs l'accès au script via sudo.

user ALL = (root) NOPASSWD: /path/to/yourscript

Alors

#/bin/bash
chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'

Assurez-vous que vos utilisateurs n'ont pas accès en écriture à votre script.


edit :Attention, il semble que sudo ne gère pas en toute sécurité les espaces dans la commande, il n'est donc pas sûr d'utiliser sudo de cette manière. https://unix.stackexchange.com/a/279142/39281

Au lieu d'utiliser des guillemets dans le fichier sudoers, vous pouvez échapper aux espaces en utilisant une barre oblique inverse :

user ALL = (root) NOPASSWD: chroot /chroots/box /bin/bash -c cd\ /repos/system\ &&\ git\ pull

Vous pouvez toujours l'utiliser comme suit, car le shell de l'utilisateur gère de toute façon l'argument entre guillemets :

chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'

Personnellement, j'aime l'autre réponse, pour la mettre dans un script, mais cela répond à la vraie question.


Linux
  1. Comment exécuter la commande avant la connexion de l'utilisateur sous Linux ?

  2. Comment exécuter une commande en tant qu'utilisateur spécifique dans un script d'initialisation ?

  3. Comment exécuter la commande bash avec les privilèges sudo en Java ?

  4. Comment puis-je ajouter un utilisateur régulier au fichier sudoers ?

  5. Comment exécuter à distance la commande ssh une commande sudo sans mot de passe

Comment utiliser Sudo et le fichier Sudoers

Comment ajouter un utilisateur à Sudoers sur Ubuntu

Comment ajouter un utilisateur à Sudoers sur Debian

Comment ajouter un utilisateur à Sudoers sur Fedora

Comment utiliser la commande ulimit sous Linux

Comment exécuter une commande dans un script shell ?