vai*_*dil 3 server sudo chroot 16.04
我有一个用户chrooted 到一个目录,一切都在顺利进行。我希望该用户所在的组能够重新启动由 管理的单个进程supervisor,但我不知道如何重新启动。
我已将此行添加到/etc/sudoers:
%mygroupname ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart myprocessname
Run Code Online (Sandbox Code Playgroud)
我复制/usr/bin/sudo到chroot环境中的相同路径。我还将其所有依赖项复制到相关位置(使用 找到ldd /usr/bin/sudo)。
我收集了系统上sudo使用大量附加文件的文件,并将它们复制到chroot环境中。但是,我现在卡住了,无法克服这个错误。我错过了什么?
sudo 日志(为了可读性而换行):
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
Run Code Online (Sandbox Code Playgroud)
这首先是一个完全愚蠢的想法吗?
与其尝试将 sudo 二进制文件及其依赖项复制到 chroot 中,不如让脚本以 root 身份运行,以检查文件何时存在并重新启动进程。
该脚本可能是这样的:
#!/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
Run Code Online (Sandbox Code Playgroud)
(这也假设用户已 chroot 到 /home 中的文件夹)
一旦此脚本以 root 身份运行,chroot 用户只需运行以下命令之一即可restartprocess在其主目录中创建一个空文件(称为)(您可以~/在文件名之前添加):
touch restartprocess
Run Code Online (Sandbox Code Playgroud)
echo > restartprocess
Run Code Online (Sandbox Code Playgroud)
> restartprocess
Run Code Online (Sandbox Code Playgroud)
并且该过程将重新启动。