前言:
sftp是SSH File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。
SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,
SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。
SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。
但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。
配置
方法一、基于用户组进行配置
groupadd sftp
useradd -g sftp -s /sbin/nologin username
passwd username
mkdir -pv /DIR/FIILE
cd /DIR/FILE/
mkdir filename
chown -R root:sftp filename/
vim /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /DIR/FIILE/filename
X11Forwarding no # 禁用端口转发
AllowTcpForwarding no # 禁用端口转发
# 由ChrootDirectory设置的目录权限及上级,属主和属组必须是root
# 由ChrootDirectory设置的目录权限及上级到系统根目录都不可以具有属组的写入权限.
方法二、基于用户配置
groupadd sftp
useradd -g sftp -s /sbin/nologin username
passwd username
mkdir -pv /DIR/FIILE
cd /DIR/FILE/
mkdir filename
chown -R root:sftp filename/
vim /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User username
ChrootDirectory /DIR/FIILE/filename
X11Forwarding no # 禁用端口转发
AllowTcpForwarding no # 禁用端口转发
说明:
# 注释掉
# Subsystem sftp /usr/lib/openssh/sftp-server
# 使用系统默认的sftp服务
Subsystem sftp internal-sftp
# 限定只有sftp组的才能访问/或者只允指定用户才能访问
Match Group sftp
Match User username
# 指定活动目录
ChrootDirectory /sftp/%u
用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
# 由ChrootDirectory设置的目录权限及上级,属主和属组必须是root
# 由ChrootDirectory设置的目录权限及上级到系统根目录都不可以具有属组的写入权限.
# 禁用端口转发
AllowTcpForwarding no
X11Forwarding no
知识扩展:
文件默认权限666 目录默认权限777 。
实际文件权限则减去umask,666-002=664= -rw-rw-r–
实际目录权限则减去umask,777-002=775= drwxrwxrw-
查看umask设置值:cat /etc/profile
给目录添加sgid权限,可以使在该目录下创建文件或文件的所属组继承该目录的所属组
例如: chmod g+s /home/admins
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/1834.html