L'option "--up" dans OpenVPN est normalement utilisée pour le routage, etc. Et donc elle est traitée avant qu'OpenVPN ne baisse 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é les privilèges de processus de suppression, en particulier les réponses de polynômes et de tylerl, mais je ne comprends pas comment les implémenter. 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, tel que "openvpn-up-user.so", mais je ne l'ai pas trouvé.
Modifier0
Selon la réponse de Nikola Kotur, j'ai installé runit-rpm d'Ian Meyer . Bien que la commande chpst fonctionne dans le terminal, dans le script up, elle échoue avec "commande introuvable". Ce qui fonctionne est "sudo chpst" plus le réglage de l'affichage et de la langue appropriés. Veuillez consulter Pourquoi mon terminal ne produit-il pas correctement les caractères Unicode? Compte tenu de 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 de l'homme et je mettrai à jour si / quand je fais travailler sudo seul.