GNU/Linux >> Tutoriels Linux >  >> Linux

Comment supprimer les privilèges root dans les scripts Shell ?

L'option "-up" dans OpenVPN est normalement utilisée pour le routage, etc. Elle est donc traitée avant qu'OpenVPN ne supprime les privilèges root pour s'exécuter en tant que personne. Cependant, j'invoque des scripts shell qui doivent s'exécuter en tant qu'utilisateur non privilégié.

Comment je fais ça? J'ai étudié Drop Process Privileges, en particulier les réponses des polynômes et de Tylerl, mais je ne comprends pas comment les mettre en œuvre. Je travaille dans Centos 6.5, et suid est bloqué, à la fois comme "chmod u+s" et comme "setuid()".

Il existe un plugin OpenVPN ("openvpn-down-root.so") qui permet aux scripts invoqués par l'option "-down" de s'exécuter en tant que root. Il pourrait y avoir un équivalent, comme "openvpn-up-user.so", mais je ne l'ai pas trouvé.

Modifier0

Selon la réponse de Nikola Kotur, j'ai installé le runit-rpm de Ian Meyer. Bien que la commande chpst fonctionne dans le terminal, dans le script up, elle échoue avec "command not found". Ce qui fonctionne, c'est "sudo chpst" plus le réglage de l'affichage et de la langue appropriés. Veuillez consulter Pourquoi mon terminal n'affiche-t-il pas correctement les caractères Unicode ? Étant donné cela, le script up a besoin de ces quatre lignes :

LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &

Modifier1

Selon le commentaire de 0xC0000022L, je trouve que "sudo -u user" fonctionne aussi bien que "sudo chpst -u user -U user":

LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &

J'étudierai les sudoers masculins et mettrai à jour si/quand j'aurai sudo seul au travail.

Réponse acceptée :

J'utilise le chpst de runit outil pour des tâches comme celle-ci. Par exemple, depuis le script supérieur, appelez votre script non privilégié :

chpst -u nobody /path/to/script

Linux
  1. Comment personnaliser les environnements utilisateur Linux

  2. Comment configurer les privilèges Sudo pour l'utilisateur sous Linux

  3. Comment désactiver la connexion de l'utilisateur racine via SSH

  4. Comment tester la conformité Posix des scripts Shell ?

  5. Comment créer un utilisateur root supplémentaire ?

Comment lister tous les utilisateurs sous Linux

Comment vérifier les privilèges utilisateur MySQL sous Linux

Comment se connecter en tant que root dans Mysql ?

Comment utiliser if-else dans les scripts shell ?

Comment limiter l'utilisateur root dans CentOS

Comment activer l'utilisateur root dans Ubuntu Server ?