我创建了用户 MY_USER。将他的主目录设置为 /var/www/RESTRICTED_DIR,这是他应该被限制的路径。然后我编辑了 sshd_config 并设置:
Match user MY_USER
ChrootDirectory /var/www/RESTRICTED_DIR
然后我重新启动了ssh。将 MY_USER 设为 RESTRICTED_DIR 的所有者(和组所有者),并将其更改为 755。我明白了
Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER
如果我从 sshd_config 中删除了 2 行,则用户可以成功登录。当然它可以访问所有服务器。有什么问题?我什至尝试将 RESTRICTED_DIR 设置为 root(当我在某处读到有人解决了同样的问题时)。没运气..
从页面:_
man
我的猜测是路径上的一个或多个目录不符合这些要求(我怀疑是
www
您的网络用户拥有或可写,而不是 root)。返回并按照说明进行操作,确保满足上述粗体斜体的要求。
ChrootDirectory 目录必须由 root 拥有并具有 755 模式:
好的,现在所有文件都
/var/www/RESTRICTED_DIR
必须由 拥有MY_USER
,必须属于www-data
组,并且具有 775 模式以允许组权限,如下所示:注意:请记住,如果您正在配置 apache,则只允许访问 htdocs 文件夹是一个很好的做法。
今天经过一些故障排除后,我意识到root也必须能够写入目录。
以下没有工作:
一旦我解决了这个问题,我的 chroot 就开始工作了。
在我的情况下,以下步骤有效。
useradd -d /data/ftp/user1 -s /bin/false -g users -G sftponly user1
passwd user1
chown root:root /data/ftp/user1
chmod go+rx /data/ftp/user1
mkdir /data/ftp/user1/{upload,download}
chown user1:users /data/ftp/user1/{upload,download}
sftp user1@ipaddress_server
检查 user1 是否可以写入 /data/ftp/user1/{upload,download}
如果 user1 只允许 sftp 而不允许 ssh 访问,那就更好了。user1 也应该是他的主目录的 chroot。这将有助于https://medium.com/tensult/configure-ftp-on-aws-ec2-85b5b56b9c94