我想在centos上建立一个用户,指定一个目录给它,只能在这个目录下操作,不能返回到向上一级等等的目录。就好像ftp那种类似,但是以ssh登陆进去的,应该怎么做?谢谢.
我想在centos上建立一个用户,指定一个目录给它,只能在这个目录下操作,不能返回到向上一级等等的目录。就好像ftp那种类似,但是以ssh登陆进去的,应该怎么做?谢谢.
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答794 阅读✓ 已解决
2 回答3.2k 阅读
用ChrootDirectory限制SFTP登录的用户只能访问指定目录且不能进行ssh登录
创建不能ssh登录的用户sftpuser1,密码用于sftp登录:
sudo nano /etc/ssh/sshd_config (执行man sshd_config查看配置说明)
Ubuntu/Debian上把Subsystem sftp /usr/lib/openssh/sftp-server
Redhat/CentOS上把Subsystem sftp /usr/libexec/openssh/sftp-server
修改为 Subsystem sftp internal-sftp
并加入:
注意ChrootDirectory设置的目录/sftp/sftpuser1的所有者必须是root,并且该目录的上级目录/sftp的所有者也必须是root.
而且只有所有者拥有写权限,/sftp/sftpuser1和/sftp的权限最大设置只能是755.
由于上面设置了目录的权限是755,
因此所有非root用户都无法在目录中写入文件.
我们需要在ChrootDirectory指定的目录下建立子目录比如data,重新设置属主和权限.
这样就可以在读写data目录了.
配置好后,用户sftpuser1只能通过sftp访问指定目录,而且不能进行ssh登录:
sftp sftpuser1@127.0.0.1 登录成功,执行 ls -lha / 可见根目录为 /sftp/sftpuser1, 执行cd ..可见无法进入上一层目录.
ssh sftpuser1@127.0.0.1 提示:
Could not chdir to home directory /sftp/sftpuser1: No such file or directory
This service allows sftp connections only.
Connection to 127.0.0.1 closed.
把 AllowTcpForwarding no 改为 AllowTcpForwarding yes 表示允许用户进行端口转发, X11Forwarding 含义类似.