FTP协议详解与vsftpd在Linux上的安装配置
什么是FTP?
FTP,文件传输协议,可以实现在网络上传输多种类型的文件
一个完整的FTP文件传输需要建立两种类型的连接,先建立控制连接,然后建立数据连接
控制连接:客户端首先向服务端的TCP21号端口发起建立连接的请求,服务器接收请求,完成控制连接的建立
数据连接:控制连接建立后,开始建立数据连接,用于传输文件。数据连接有主动传输模式和被动传输模式。
主动传输模式图
被动传输模式图
主动传输和被动传输的优缺点:
1、主动传输对FTP服务器的管理有利,但对客户端不利,因为客户端的防火墙可能会禁止服务端对客户端高位端口连接的请求,导致连接失败;
2、被动传输对FTP客户端有利,但对服务端不利,因为服务端的防火墙可能会禁止客户端对服务段高位端口连接的请求,导致连接失败
控制连接和数据连接建立完后,即可开始进行数据传输,FTP传输数据的方式有ASCII和Binary两种。
Binary方式不会对数据进行任何处理。
Ascii方式会将回车换行转换为本机的回车字符。
使用binary可以保证数据传输的完整性
ASCII通常用于windows传输文件到linux/unix系统中,因为windows和unix系统的行结束符不同,当使用binary传输时,在unix系统上打开文件文件的行尾都会多出一个^M符号,而使用ASCII传输则不会
vsftpd服务器安装和配置
1、安装vsftpd软件包
yum install -y vsftpd
2、修改配置文件/etc/vsftpd/vsftpd.conf
anonymous_enable=YES #设置是否允许匿名用户登录
local_enable=YES #设置是否允许本地用户登录
local_root=/home #设置本地用户的根目录
write_enable=YES #是否允许用户有写权限
local_umask=022 #设置本地用户创建文件时的umask值
anon_upload_enable=YES #设置是否允许匿名用户上传文件
anon_other_write_enable=YES #设置匿名用户是否有修改的权限
anon_world_readable_only=YES #当为YES时,文件的其他人必须有读的权限才允许匿名用户下载,单单所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载
download_enbale=YES #是否允许下载
chown_upload=YES #设置匿名用户上传文件后修改文件的所有者
chown_username=ftpuser #与上面选项连用,表示修改后的所有者为ftpuser
ascii_upload_enable=YES #设置是否允许使用ASCII模式上传文件
ascii_download_enable=YES #设置是否允许用ASCII模式下载文件
chroot_local_user=YES #设置是否锁定本地用户在自己的主目录中,(登录后无法cd到父目录或同级目录中)
chroot_list_enable=YES #设置是否将用户锁定在自己的主目录中
chroot_list_file=/etc/vsftpd/chroot_list #定义哪些用户将会锁定在自己的主目录中
userlist_enable=YES #当为YES时表示由userlist_file文件中指定的用户才能登录ftp服务器
userlist_file=/etc/vsftpd/user_list #当userlist_enable为YES时才生效
(默认情况下,匿名用户登录后所在的目录处于服务器的/var/ftp下)
3、启动vsftpd服务
service ftpd start