我正在为我的系统(archlinux)上的一些用户设置sshd监狱。我不想谈太多细节,只想尽量缩小问题的范围。
设置/etc/ssh/sshd_config

Match group jaileduser
          ChrootDirectory /var/jailedusers
          X11Forwarding no
          AllowTcpForwarding no

以及一个类似于:
testuser1:x:2001:2000::/home/testuser1:/bin/bash

所以问题是:/etc/password的主目录是相对于/home/testuser1条目sshd_config的,也就是说,passwd条目应该是/var/jailedusers还是/var/jailedusers/home/testuser1目录在/home/testuser1/var/jailedusers中,并且是同一条船上的外壳-是passwd条目/home/testuser1还是简单的/var/jailedusers/bin/bash
最后,登录时,系统将按照/bin/bash条目读取或读取。

最佳答案

基于手册页:

Specifies the pathname of a directory to chroot(2) to after
authentication.  All components of the pathname must be root-
owned directories that are not writable by any other user or
group.  After the chroot, sshd(8) changes the working directory
to the user's home directory.

因此/etc/passwd需要包含相对于系统根的路径(即/bin/bash/home/testuser1),并且系统根在chroot之后实际上是/var/jailedusers(这意味着/var/jailedusers/home/testuser1将是实际的主,而/var/jailedusers/bin/bash是实际的shell)。
要回答问题的第二部分,sshd将读取/etc/passwd,执行身份验证,然后chroot/var/jailedusers
请注意,/var/jailedusers还需要包含其他文件,例如bash所需的共享库和一组最少的/dev条目(例如/dev/null)。

关于linux - 相对于sshd jail 根目录的文件结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22056040/

10-16 20:31