在 PHP 中调用 chroot

发布于 2024-11-17 09:25:34 字数 304 浏览 3 评论 0原文

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

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

我需要成为 root 才能使用 chroot。 PHP手册中有一个 chroot() 但这个函数也需要根权限。

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

For security reasons, some applications are isolated in a chroot environment. I need to call this applications through a PHP script. Something like that :

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

I need to be root for using chroot. There is a chroot() in the PHP manual but this function also requires root privileges.

So, how to use chrooted commands in PHP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

叶落知秋 2024-11-24 09:25:34

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

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

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

chroot can only be called by privileged users. Otherwise, normal users could trick setuid applications such as passwd or sudo into accessing files in an unexpected location.

Therefore, if your php application is not running as root, the one thing you can do is set up a setuid wrapper script and call that from php. It should promptly drop privileges after calling chroot, as root can trivially break out of chroots.

Alternatively, you can configure sudo to allow the php user to execute chroot /path/to/chroot command and prepend sudo to the exec call in php.

‘画卷フ 2024-11-24 09:25:34

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

警告!通过使用 sudo,chroot 后你就成为 root 了!

You can use Linux Capabilities. See CAP_SYS_CHROOT capability on man capabilities.

WARNING! By using sudo, after chrooting you are root!

一指流沙 2024-11-24 09:25:34

这里的技巧是使用 sudo 和 sudoers 文件,请参阅 sudo 手册页

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

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

The trick here is to use sudo and the sudoers file see the sudo manpage.

Basically what you would do is give your PHP user access to the sudo utility for the chroot command and your code will be like this:

exec('sudo chroot /path/to/chroot command')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文