前言
在开始学习的时候第一次搭建的ftp服务就是vsftp,当时以为vsftp就是人们说的sftp,然而他们有很大的区别!
一、FTP是什么?
1.FTP是干什么的?
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP基于TCP协议,由于较高的传输效率,经常用于文件的传输。其包含两部分:客户端和服务器;服务器一般用来存储文件供客户端下载。 FTP默认情况下使用TCP的21和20端口,其中21用于传输控制信息,20用于传输数据。是否使用20作为数据传输端口与ftp的工作方式有关,如果采用主动模式,数据传输端口为20;被动模式下,端口需要客户端和服务器端协商决定。
2.FTP的工作方式
主动模式:Standard (也就是 PORT方式,主动方式),该模式下FTP的客户端发送PORT命令到FTP服务器。该模式下,ftp客户端首先与服务器建立TCP 21端口建立连接,用于发送控制命令,客户端在传输数据时在该通道上发送PORT命令。PORT包含了客户端用什么端口接收数据,FTP服务器通过自己的20端口连接至客户端指定的端口上,然后进行数据的传输。
被动模式:Passive(也就是PASV,被动方式),该模式下FTP的客户端发送 PASV命令到FTP服务器。与主动模式一样,先建立21端口上的连接,用于发送控制命令。客户端在传输数据时在该通道上发送Pasv命令。FTP服务器收到Pasv命令之后,随机打开一个高端端口(大于1024)并且通知客户端在这个端口上传输数据,然后客户端连接至服务器的该端口,然后进行数据的传输。
3.vsftp的引入
由于FTP的文件传输是明文方式,具有一定的危险性,所以就诞生了一种更加安全的传输方式vsftp。
二、VSFTP服务
1.安装
yum install -y vsftpd
yum -y install lftp
systemctl restart vsftpd.service
2.配置文件
代码如下(示例):
/etc/vsftpd/vsftpd.conf vsftpd 的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP 服务器。 黑名单
/etc/vsftpd/user_list 指定允许使用vsftpd 的用户列表文件。 白名单
/etc/vsftpd/chroot_list 指定允许使用vsftpd 的用户列表文件。 控制名单下的目录能不能离开ftp根目录
3.使用
ftp默认存放文件位置在/var/ftp/pub
修改FTP默认访问目录:
修改etc/vsftpd/vsftpd.conf文件即可
添加这几行:
local_root=/var/www/html
anon_root=/var/www/html
4.匿名用户与本地用户权限控制
匿名用户
anonymous_enable=YES
no_anon_password=YES
下面这四个主要语句控制这文件和文件夹的上传、下载、创建、删除和重命名。
anon_upload_enable=(yes/no);
anon_world_readable_only=(yes/no);
anon_mkdir_write_enable=(yes/no);
anon_other_write_enable=(yes/no);
注:匿名用户下载是使用的是nobody这个用户,所以相应的O这个位置要有R权限才能被下载。若想让匿名用户能上传和删除权限,必需设置
anon_root=(none)
anon_umask=(077)
chown_uploads=YES
本地用户
write_enable=YES
local_umask=022
userlist_enable=YES
local_root
user_config_dir
download_enable
chown_uploads=YES
chown_username=whoever
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=
三、SFTP服务
SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务
1.SFTP服务的配置
修改/etc/ssh/sshd_config配置文件
同时添加以下内容:
Subsystem sftp internal-sftp
Match user sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
对于sftp的目录应该这么设置
chown root:sftp
chmod 755
|