我有这个命令
chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'
Run Code Online (Sandbox Code Playgroud)
我试着写在 /etc/sudoers
user ALL = (root) NOPASSWD: chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'
Run Code Online (Sandbox Code Playgroud)
但这没有用。在我见过的日志中
sudo: user : command not allowed ; TTY=pts/7 ; PWD=/home/user ; USER=root ; COMMAND=chroot /chroots/box /bin/bash -c cd /repos/system && git pull
Run Code Online (Sandbox Code Playgroud)
我还尝试在 sudo 调用中转义引号,例如\'
,并且它们出现在具有相同错误的日志文件中。
这个 repo 影响了 chroot 的根文件系统,所以我不能从外面调用 git pull 。
简单的解决方案是将您的命令放在一个脚本中,然后让您的用户通过 sudo 访问该脚本。
user ALL = (root) NOPASSWD: /path/to/yourscript
Run Code Online (Sandbox Code Playgroud)
然后
#/bin/bash
chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'
Run Code Online (Sandbox Code Playgroud)
确保您的用户对您的脚本没有写权限。