我正在为我的系统(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/