允许 chrooted shell 中的用户使用 sudo 命令

允许 chrooted shell 中的用户使用 sudo 命令

我已将用户chroot登录到目录,一切运行正常。但我希望该用户所在的组能够重新启动由 管理的单个进程supervisor,但我不知道该怎么做。

我已将此行添加到/etc/sudoers

%mygroupname ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart myprocessname

我将其复制/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

这首先是一个完全愚蠢的想法吗?

答案1

与其尝试将 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

(这还假设用户被 chroot 到 /home 中的一个文件夹)

一旦此脚本以 root 身份运行,chrooted 用户只需运行以下命令之一即可restartprocess在其主目录中创建一个空文件(名为)(您可以~/在文件名前添加):

touch restartprocess
echo > restartprocess
> restartprocess

并且该进程将重新开始。

相关内容