如果我没猜错的话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/ 下的系统文件