1

出于安全原因,某些应用程序被隔离在 chroot 环境中。我需要通过 PHP 脚本调用这个应用程序。类似的东西:

exec('chroot /path/to/chroot command')

我需要root使用chroot. PHP 手册中有一个chroot(),但这个函数也需要 root 权限。

那么,如何chroot在 PHP 中使用 ed 命令呢?

4

3 回答 3

2

chroot只能由特权用户调用。passwd否则,普通用户可能会欺骗 setuid 应用程序,例如sudo访问意外位置的文件。

因此,如果您的 php 应用程序没有以 root 身份运行,您可以做的一件事是设置一个setuid包装脚本并从 php.ini 调用它。它应该在调用 chroot 后立即放弃特权,因为 root 可以轻易地脱离 chroots

或者,您可以配置 sudo 以允许 php 用户执行chroot /path/to/chroot command并添加到 php.inisudo中的exec调用。

于 2011-06-26T19:27:48.927 回答
2

您可以使用 Linux 功能。请参阅 CAP_SYS_CHROOT 功能man capabilities

警告!通过使用 sudo,chroot 后你就是 root!

于 2013-01-14T22:13:00.833 回答
0

这里的诀窍是使用 sudo 并且 sudoers 文件参见sudo 手册页

基本上,您要做的是让您的 PHP 用户访问sudo该命令的实用程序,chroot您的代码将如下所示:

exec('sudo chroot /path/to/chroot command')
于 2011-06-26T19:30:24.160 回答