使用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-sftpUsePAM yesMatch Group sftpusersChrootDirectory %hForceCommand internal-sftp编辑完成后重启sshd(service ssh restart)
4. 修改sftp用户的home目录权限
修改目录所属用户为root,并且该目录的上级的每一级目录的属主也必须是root;chown root /your/sftp/dirchmod 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 pubdrwxrwxrwx 2 root root 4096 4月 29 12:21 upload
5. 登陆sftp测试
sftp sftpuser_name@host