使用 `useradd -R` 进行 chroot

使用 `useradd -R` 进行 chroot

如果我没猜错的话chroot 仅限制用户对给定目录的访问。看起来useradd有这个选项(Debian 10)。

# useradd --help | grep "chroot"
  -R, --root CHROOT_DIR         directory to chroot into

看起来很简单,但似乎没有人推荐它:

为什么?难道不是便携的或者足够安全/可靠?

答案1

-R您误解了useradd 上选项的目的和行为。

根据我的理解,它与 chroot 用户无关:此开关允许修改除 / 之外的另一个目录上的身份验证文件(/etc/passwd + /etc/shadow)。例如,这对于管理 LXC 容器的用户很有用。

示范:

/tmp$ mkdir fakeroot
/tmp$ mkdir fakeroot/etc
/tmp$ touch fakeroot/etc/{shadow,passwd}
/tmp$ find fakeroot/
fakeroot/
fakeroot/etc
fakeroot/etc/shadow
fakeroot/etc/passwd
/tmp$ sudo useradd -R /tmp/fakeroot toto
/tmp$ cat /tmp/fakeroot/etc/* 
toto:!:1000:
toto:x:1000:1000::/home/toto:
cat: /tmp/fakeroot/etc/passwd-: Permission denied
toto:!:18263:0:99999:7:::
cat: /tmp/fakeroot/etc/shadow-: Permission denied
/tmp$ grep toto /etc/passwd
/tmp$

正如您所看到的,useradd 命令仅修改了 /tmp/fakeroot 下的文件,而未修改 /etc/ 下的系统文件

相关内容