我正在为我的系统(archlinux)上的某些用户设置sshd jail。在没有详细说明的情况下,我希望将问题的范围保持在最低限度。
设置/etc/ssh/sshd_config
:
Match group jaileduser
ChrootDirectory /var/jailedusers
X11Forwarding no
AllowTcpForwarding no
和系统/etc/password
条目类似于:
testuser1:x:2001:2000::/home/testuser1:/bin/bash
所以问题是: /home/testuser1
的主目录是否相对于sshd_config
条目/var/jailedusers
,即passwd条目是 {{ 1}} 或 /var/jailedusers/home/testuser1
,/home/testuser1
/var/jailedusers
中的目录 - 并且是同一条船上的shell - 是passwd条目< strong> /home/testuser1
或只是 /var/jailedusers/bin/bash
。
最后,登录后系统/bin/bash
读取或/etc/passwd
按/var/jailedusers/etc/passwd
条目读取。
答案 0 :(得分:1)
基于联机帮助页:
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
)。