我想限制用户访问文件(就在他的目录之外),所以我使用了 chroot,并在登录时将受限制的目录作为他的登陆目录。
但是,如果我这样做,cd ..
该用户也可以访问他的目录之外的所有内容。如何避免这种情况?
我用过这个:
adduser --home Rest_folder --shell /bin/bash --no-create-home --ingroup www-data --ingroup ssh rest_user
答案1
使用 SSH 时,可以使用其称为 SFTP 的子系统(不要与 FTPS 混淆)。 SFTP 提供了一个 shell,用户可以在其中执行任何常见文件任务,例如cp
、mv
、ls
、cd
、mkdir
...rm
但是,由于 chroot 环境,驻留在其中的其他程序/bin
无法通过这种方式访问。此 chroot 环境是由 SSH 守护程序设置的,因此无需纠结于细节。
要为某个 SSH 用户配置 chroot,请将其放入 sshd 配置文件中,主要位于/etc/ssh/sshd_config
:
Match User rest_user
ChrootDirectory /home/rest_user
ForceCommand internal-sftp
您可能还希望为此登录设置其他标志:
AllowTCPForwarding no
X11Forwarding no
有关更多详细信息,请参阅 的手册页sshd_config (5)
。