SFTP 限制用户活动目录
SFTP 是 Secure File Transfer Protocol 的缩写,即安全文件传送协议。本文介绍如何限制 SFTP 用户在指定的目录下活动。测试环境:CentOS 6.6
步骤一
创建新的用户,在终端中执行
1 | [root@localhost ~]# useradd -m -d /home/broly -s /sbin/nologin broly |
然后给这个用户一个密码
1 | [root@localhost ~]# passwd broly |
步骤二
编辑 /etc/ssh/sshd_config 文件
1 | [root@localhost ~]# vim /etc/ssh/sshd_config |
找到这行:
1 | Subsystem sftp /usr/libexec/openssh/sftp-server |
并更改为:
1 | #Subsystem sftp /usr/libexec/openssh/sftp-server |
其中,Match User broly 意思是匹配用户名为 broly 的用户;ChrootDirectory /home/broly 指定的目录地址为 /home/broly 重启 ssh 服务
1 | [root@localhost ~]# service sshd restart |
尝试登录 SFTP,如果登录成功,可以忽略下面几步;如果登录失败了,请继续往下看。
步骤三
往往登录失败,原因一般就是:目录权限问题。其目录是有做权限要求的,
- ChrootDirectory 设置的目录权限及其每一级父目录权限,属主和属组必须是 root;
- ChrootDirectory 设置的目录权限及其每一级父目录权限,权限最大设置只能是 755。实际上我要 SFTP 管理的目录并非 /home/broly,而且另外一个目录,我的解决方法就是在 /home/broly 目录下建立软链接,这样就能符合上述的条件了。这里建立软链接直接 ln -s 是不行的,SFTP 不支持这种软链接访问,可以用 mount 来建立:
1 | [root@localhost ~]# mount --bind /path/to/your/directory /home/broly |