Chroot

從 apache/php 腳本在 chroot 中執行命令

  • December 7, 2011

我需要對一些 bash 腳本進行單元測試,我已經在 chroot 中設置了一個 debian 壓縮。從命令行我可以使用 chroot /directory my-command,ou schroot -d / -u root my-command,但我需要從 Apache(使用者 www-data)執行的 PHPUnit 測試中執行這些命令。使用 schroot 我有這個錯誤

E:無控制終端 E:認證失敗:認證失敗

用 sudo chroot 我有

sudo:不存在 tty,也沒有指定 askpass 程序

比我更好的主意?

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 身份執行的部分。

引用自:https://serverfault.com/questions/338557