如何让用户在sudoers中执行包含引号的命令?

我有这个命令

chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull' 

我试图在/ etc / sudoers中写入

 user ALL = (root) NOPASSWD: chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull' 

但是这并没有奏效。 在我见过的日志里

 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 

我也尝试在sudo调用中像“ \'那样转义引号,并且在日志文件中出现了相同的错误。

这个repo会影响chroot的根文件系统,所以我不能从外面调用git pull。

简单的解决scheme是把你的命令放在一个脚本中,然后让你的用户通过sudo访问脚本。

 user ALL = (root) NOPASSWD: /path/to/yourscript 

然后

 #/bin/bash chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull' 

确保您的用户没有写入访问权限。