我最近对 有了更多的了解fakechroot
。据我所知,它看起来很危险,因为它会提升用户权限,即使它是在 chroot 中。我知道,fakeroot
但它不一样,因为你不能用它做任何需要 root 权限的事情。
但是,要想fakechroot
在 chroot 中真正执行需要 root 权限的操作,是否意味着fakechroot
普通用户有可能进入 root chroot 并在主机上以 root 身份突围?
我在他们的手册页上看到,这fakechroot
不会提升用户权限,但我不确定我是否完全理解。
答案1
某些 Linux 应用程序仅在当前用户为 时才可运行root
。这些应用程序中的大多数与更改 Linux 本身有关,因此受到保护,普通用户无法访问。
但是,有时候,当作为普通用户工作时,我们希望在不提升权限的情况下运行此类命令root
,只是为了临时使用这些命令用于特定目的。
这些命令并不是什么安全漏洞,因为它们在当前用户下运行,并且对正在运行的 Linux 版本没有任何实际影响。
此类命令的最佳示例是fakeroot
。其功能是假装当前用户是root
,但实际上并没有发生这种情况。
这使得期望以 root 身份运行的程序实际上以普通用户身份运行,同时错误地认为需要 root 身份的操作成功了。
这通常用于构建包时,以便正在安装的包的安装过程可以无错误地进行,即使它运行chown root:root
、或install -o root
等,
fakeroot
也会记住它假装赋予这些文件的虚假所有权,因此后续检查所有权的操作将被视为root
所有者而不是真正的所有者。
例如,这允许后续tar
运行将文件存储为 root 所拥有。fakeroot
在这种情况下将创建一个包含 root 和 suid 所拥有文件的 tarball。但是,除非您以 root 身份执行此操作且不升级权限,否则您将无法提取该 tarball 并保留这些权限。
fakeroot
然后允许以普通用户身份运行构建,同时保留构建以 root 身份运行时所产生的效果,允许稍后重播。“真正”应用这些效果需要真正的 root 权限,而没有fakeroot
提供任何获取该权限的方法。
另一个例子是fakechroot.
fakechroot
是一个常规的非 setuid 程序。它不会增强用户的权限,也不会降低系统的安全性。它创建了一个可以在没有 root 权限的情况下使用 chroot(8) 命令的环境,这对于调用apt
安装程序包而无需 root 权限非常有用。用户以这种方式在自己的小圈子内创建了一个 root 环境,而不会影响系统上的任何其他人。
fakechroot
不提供该fakeroot
功能,因此需要fakechroot
通过fakeroot
命令调用。这两个命令是互补的,并且经常一起使用。