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