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

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/sudochroot环境中的相同路径。我还将其所有依赖项复制到相关位置(使用 找到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)

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

Eva*_*hen 6

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

并且该过程将重新启动。