出于安全原因,某些应用程序被隔离在 chroot 环境中。我需要通过 PHP 脚本调用这个应用程序。类似的东西:
exec('chroot /path/to/chroot command')
我需要root
使用chroot
. PHP 手册中有一个chroot(),但这个函数也需要 root 权限。
那么,如何chroot
在 PHP 中使用 ed 命令呢?
chroot
只能由特权用户调用。passwd
否则,普通用户可能会欺骗 setuid 应用程序,例如sudo
访问意外位置的文件。
因此,如果您的 php 应用程序没有以 root 身份运行,您可以做的一件事是设置一个setuid包装脚本并从 php.ini 调用它。它应该在调用 chroot 后立即放弃特权,因为 root 可以轻易地脱离 chroots。
或者,您可以配置 sudo 以允许 php 用户执行chroot /path/to/chroot command
并添加到 php.inisudo
中的exec
调用。
您可以使用 Linux 功能。请参阅 CAP_SYS_CHROOT 功能man capabilities
。
警告!通过使用 sudo,chroot 后你就是 root!
这里的诀窍是使用 sudo 并且 sudoers 文件参见sudo 手册页。
基本上,您要做的是让您的 PHP 用户访问sudo
该命令的实用程序,chroot
您的代码将如下所示:
exec('sudo chroot /path/to/chroot command')