出于安全原因,一些应用程序被隔离在chroot环境中。我需要通过PHP脚本调用此应用程序。大概是这样的:
exec('chroot /path/to/chroot command')我需要成为使用chroot的root。在PHP手册中有一个chroot(),但是这个函数也需要root权限。
那么,如何在chroot中使用PHP ed命令呢?
发布于 2011-06-27 03:27:49
chroot只能由特权用户调用。否则,普通用户可能会欺骗passwd或sudo等setuid应用程序访问意外位置的文件。
因此,如果您的php应用程序不是以根用户身份运行的,那么您可以做的一件事就是设置一个setuid包装器脚本并从php调用它。它应该在调用chroot之后立即删除权限,因为根用户可以trivially break out of chroots。
或者,您可以配置sudo以允许php用户执行chroot /path/to/chroot command并将sudo附加到php中的exec调用。
发布于 2013-01-15 06:13:01
您可以使用Linux功能。请参阅man capabilities上的CAP_SYS_CHROOT功能。
警告!通过使用sudo,在chrooting之后您就是root用户了!
发布于 2011-06-27 03:30:24
这里的技巧是使用sudo和sudoers文件,请参阅sudo manpage。
基本上,您要做的就是让您的PHP用户访问chroot命令的sudo实用程序,您的代码将如下所示:
exec('sudo chroot /path/to/chroot command')https://stackoverflow.com/questions/6486163
复制相似问题