从 apache/php 脚本在 chroot 中执行命令

从 apache/php 脚本在 chroot 中执行命令

我需要对一些 bash 脚本进行单元测试,我已经在 chroot 中设置了 debian squeeze。从命令行我可以使用 chroot /directory my-command,ou schroot -d / -u root my-command,但我需要从由 Apache(用户 www-data)运行的 PHPUnit 测试中运行这些命令。使用 schroot 时出现此错误

E:无控制终端 E:认证失败:认证失败

使用 sudo chroot 我有

sudo:没有 tty 存在并且没有指定 askpass 程序

比我的想法更好吗?

答案1

chroot大多数脚本都以 root 身份运行。因此,您必须将脚本分成两部分,一个用于执行单元测试 (myapp-unit-test.sh),另一个以 root 身份运行 (myapp-unit-test-chroot.sh)。

在 /etc/sudoers 中添加:

www-data ALL=(ALL) NOPASSWD:/path/to/myapp-unit-test-chroot.sh

在 myapp-unit-test-chroot.sh 中执行以下操作:

chroot /new/root sudo -u test-user /path/to/myapp-unit-test.sh

通过这种方式,您将限制以 root 身份运行的部分。

相关内容