J'ai un utilisateur chroot
ed dans un répertoire, et tout fonctionne bien. Je souhaite qu'un groupe de cet utilisateur puisse redémarrer un processus unique géré par supervisor
, mais je ne vois pas comment.
J'ai ajouté cette ligne à /etc/sudoers
:
%mygroupname ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart myprocessname
J'ai copié /usr/bin/Sudo
vers le même chemin dans l'environnement chroot
. J'ai également copié toutes ses dépendances aux endroits appropriés (trouvé avec ldd /usr/bin/Sudo
).
J'ai compris que Sudo
utilise un tonne de fichiers supplémentaires sur le système et je les ai copiés dans l'environnement chroot
. Cependant, je suis coincé maintenant et je ne peux pas dépasser cette erreur. Qu'est-ce que je rate?
Sudo
log (les sauts de ligne facilitent la lecture):
Nov 10 20:29:04 Sudo[3593] pam_setcred: Failure setting user credentials @
Sudo_pam_begin_session()
/build/Sudo-1bDJzQ/Sudo-1.8.16/plugins/sudoers/auth/pam.c:274
Nov 10 20:29:04 Sudo[3593] pam_open_session: Module is unknown @
Sudo_pam_begin_session()
/build/Sudo-1bDJzQ/Sudo-1.8.16/plugins/sudoers/auth/pam.c:283
Est-ce une idée complètement stupide en premier lieu?
Plutôt que d'essayer de copier le binaire Sudo et ses dépendances dans le chroot, il pourrait être plus facile de faire fonctionner un script en tant que root pour vérifier la présence d'un fichier et redémarrer le processus.
Ce script pourrait être quelque chose comme ça:
#!/bin/bash
restartfile="restartprocess"
while :
do
for user in /home/*
do
if [ -f $user/$restartfile ]
then
supervisorctl restart myprocessname
rm $user/$restartfile
fi
done
sleep 5 #Adjust file checking time interval
done
(Cela suppose également que l'utilisateur est chrooté dans un dossier dans/home)
Une fois que ce script est exécuté en tant que root, l’utilisateur chrooté doit simplement exécuter l’une des commandes suivantes pour créer un fichier vide (appelé restartprocess
) dans son répertoire de base (vous pouvez ajouter ~/
avant le fichier. Nom):
touch restartprocess
echo > restartprocess
> restartprocess
Et le processus serait redémarré.