为什么有两个实用程序chroot
,并且fakeroot
两者都可以伪造对用户的特权访问权限?
答案1
chroot 实际上做了一些与 fakeroot 非常不同的事情。它代表“更改根目录”,意味着您可以运行一个将“/”目录映射到与系统不同的目录的进程。在大多数情况下,这是安装在不同驱动器或分区上的操作系统。在该 chroot 环境中,root 权限实际上是真实的,事实上 chroot 只能由特权进程访问。 Fakeroot 只是给进程一种 root 访问的错觉,而实际上它创建的所有文件都只属于原始用户。
答案2
只有fakeroot才会“伪造”享有特权的访问用户”。
调用chroot可以使某些用户能够针对与系统当前使用的根 (/) 目录树不同的某些根 (/) 目录树运行命令。
假设所需的根目录位于 /mnt 中,那么在 chroot 环境中,触发 /foo/bar 实际上会启动 /mnt/foo/bar 并使 bar 的行为就好像 /mnt 是真正的根目录一样。
但是,当然,如果用户没有获得 /mnt /mnt/foo 和 /mnt/foo/bar 的适当访问权限,那么……它就不会成功。
用户不会自动成为 root(用户),甚至不会成为假 root 用户。仅更改根基目录。
BTW chroot 实用程序随 coreutils 软件包一起提供,它是最基本的 Linux 发行版的一部分。从另一个系统中安装新系统时通常需要它。
假根将创建一个环境,在该环境中用户可以像 root 一样进行文件操作。
通过“假”,您应该明白这仅在该环境中有效。对于任何其他用户,对于系统本身......以及退出后的您自己,什么都不会改变。让我们考虑一些受手册页启发的示例:
$ whoami
me
$ fakeroot /bin/bash
# whoami
root
# ls -ld / (note that this is the original (real) root directory)
drwxr-xr-x 20 root root 1024 Jun 17 21:50 /
# chown me:users /
# chmod a+w /
# ls -ld /
drwxrwxrwx 20 me users 1024 Jun 17 21:50 /
# exit
$ ls -ld /
drwxr-xr-x 20 root root 1024 Jun 17 21:50 /
顺便说一句,相反chroot,假根作为您需要专门安装的软件包的一部分。当归档要部署到用户 ID 0 的其他系统上的文件时,通常需要它。