135 chroot
我听说/阅读了很多关于 linux 下的 chroot jail 但从未使用过它(我每天都使用 Fedora),那么什么是 chroot “jail”?我何时以及为什么可以使用它/不使用它,还有什么我应该知道的吗?我将如何着手创建一个?
小智 126
chroot jail 是一种将进程及其子进程与系统其余部分隔离的方法。它应该只用于不以 root 身份运行的进程,因为 root 用户可以很容易地跳出监狱。
这个想法是您创建一个目录树,您可以在其中复制或链接进程运行所需的所有系统文件。然后,您使用chroot()系统调用将根目录更改为位于此新树的底部,并启动在该 chroot 环境中运行的进程。由于它实际上无法引用修改后的根目录之外的路径,因此它无法在这些位置恶意执行操作(读/写等)。
在 Linux 上,使用绑定挂载是填充 chroot 树的好方法。使用它,您可以拉入文件夹,例如/lib,/usr/lib而不是拉入/usr。只需将您想要的目录树绑定到您在 jail 目录中创建的目录。
Mic*_*zek 59
“chroot jail”是一个应该真正消失的用词不当,但人们继续使用它。chroot是一种工具,可让您将文件系统上的目录模拟为文件系统的根目录。这意味着您可以拥有如下文件夹结构:
-- foo
-- bar
-- baz
-- bazz
Run Code Online (Sandbox Code Playgroud)
如果你chroot foo这样做ls /,你会看到:
-- bar
-- baz
Run Code Online (Sandbox Code Playgroud)
就ls(以及您运行的任何其他工具)而言,这些是文件系统上唯一的目录。“jail”用词不当的原因chroot并不是要强制程序停留在模拟文件系统中;知道它在 chroot“监狱”中的程序可以很容易地逃脱,因此您不应将其chroot用作防止程序修改模拟文件系统之外的文件的安全措施
jac*_*onh 13
基本上,您只是更改环境的根目录。所以
/
Run Code Online (Sandbox Code Playgroud)
变成
/some-jail/ (or whatever directory you want)
Run Code Online (Sandbox Code Playgroud)
当应用程序访问 / 时,他们会得到 /some-jail/。此外,该应用程序无法脱离 /some-jail/,因此您知道它不会访问您机器上的任何其他内容。这是一种非常简单的表达方式,可以说‘嘿,您只能访问我提供给您的这些东西,而您无法访问系统上的任何其他内容。
“我什么时候以及为什么可以使用它?”
一种用途是测试生成绝对路径引用的脚本(启动时间和其他),或者运行您可能想要拦截和记录的命令(并且可能不操作它们)-在您不希望这些命令执行的环境中实际运行在你的运行环境中。
例如,我有一个运行 Linux 的嵌入式设备,我想检查一些 bash 的运行情况,而不是 a) 在真实设备上运行它(因为我的桌面上有更好的工具并且不想让设备变砖)b) 运行它在我的桌面上是真实的(因为我不想我的桌面系统搞砸了)
此外,您还可以发现使用了哪些命令或其他脚本文件,因为只要尝试运行“chroot jail”中不存在的命令或 shell 脚本,运行就会退出并显示错误。
(当然,要全力以赴,您可以在 QEMU 或 Docker 或 VM 中运行,但这将涉及创建 VM 映像等 - 更多工作)
| 归档时间: |
|
| 查看次数: |
136541 次 |
| 最近记录: |