SFTP 限定登录用户在指定目录

时间:2022-12-02 11:33:12

使用sftp做文件传输时,经常遇到将登录用户限定到制定目录的情景,

网上乱找了一堆资料,总算实现了,记录一下。

1. 添加sftp用户组:

     groupadd sftpusers

2. 添加sftp用户:

     adduser --home /home/sftpuser4 sftpuser4 --ingroup sftpusers --shell /bin/false

3. 编辑 /etc/ssh/sshd_config(编辑前可先对其做备份)
#Subsystem sftp /usr/lib/openssh/sftp-server(原配置文件中此行去掉)
Subsystem sftp internal-sftp
UsePAM yes
Match Group sftpusers
ChrootDirectory %h    
ForceCommand internal-sftp
编辑完成后重启sshd(service ssh restart)

4. 修改sftp用户的home目录权限

修改目录所属用户为root,并且该目录的上级的每一级目录的属主也必须是root;
chown  root  /your/sftp/dir
chmod  750/your/sftp/dir

如果上级目录不可以设置成root,那可以通过建立符号链接  ln -s 来变相实现。

     例如:
     drwxr-x--- 4 root sftpusers 4096  4月 29 12:20 sftpuser5
#upload 上传目录
#pub 下载目录
    /chroot/sftpuser5/:
         mkdir   {upload,pub}
         chmod a+w upload -R upload
drwxr-xr-x 2 root root 4096  4月 29 12:20 pub
drwxrwxrwx 2 root root 4096  4月 29 12:21 upload

5. 登陆sftp测试

sftp sftpuser_name@host