FTP
FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。
两种连接
FTP会话时包含了两个连接,一个叫控制连接,一个叫数据连接。
控制连接
和FTP服务器进行沟通的连接。连接FTP、发送FTP指令都是通过控制通道来完成的。在收到断开连接命令前,始终保持连接。
数据连接
和FTP服务器进行文件传输或者列表的连接。数据传输时建立,传输结束时终止。
FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式
主动模式(PORT模式)
FTP Client 首先和 FTP Server 的 TCP 21 端口建立控制连接,通过这个连接发送命令,客户端需要接收数据时在这个控制连接上发送 PORT 命令。 PORT 命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的 TCP 20 端口主动连接客户端并发送数据。 FTP server 必须和 clien t建立一个新的连接用来传送数据。
被动模式(PASV模式)
在建立控制连接的时候和 PORT 模式类似,当客户端通过这个连接发送 PASV 命令的时候,FTP server 打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后 FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。
如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。
文件说明
1 | yum -y install vsftpd |
文件 | 文件作用 |
---|---|
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/usr/sbin/vsftpd | Vsftpd的主程序 |
/usr/lib/systemd/system/vsftpd.service | 服务控制文件 |
/etc/pam.d/vsftpd | PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户) |
/etc/vsftpd/ftpusers | 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。 |
/etc/vsftpd/user_list | 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。 |
/var/ftp | 匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录 |
/var/ftp/pub | 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除) |
/etc/logrotate.d/vsftpd.log | Vsftpd的日志文件,可在主配置文件进行修改 |
用户类型
匿名用户
在FTP服务器上没有账号,用户名为 anonymous 或 ftp,/var/ftp
作为 ftp 访问的根目录
本地用户
在FTP服务器上拥有帐号,可以登录到服务器上。该账号既可以作为登录帐号使用,也可以作为 ftp 帐号使用。其家目录目录作为其 ftp 访问的根目录。
虚拟用户(Guest用户)
在FTP服务器上拥有帐号,但该账号只能作为ftp帐号使用,不能访问除家目录之外的内容。
参数配置
vsftpd的配置文件中以 #
开始注释,配置参数要顶格写,等号前后没有空格
登录欢迎信息Login Banners
1 | # 是否激活目录欢迎信息功能 |
禁锢用户在其家目录
1 | # 对于ftp访问ftp服务器时应该对其chroot |
匿名用户配置
1 | # 是否允许匿名登录FTP服务器,默认设置为YES允许 |
连接限制
1 | # 设置数据传输中空闲超时时间 |
传输速率
1 | # 匿名用户的传输速率(包括上传和下载),单位为bytes/second,0为不限制 |
上传文件的umask
1 | # 上传后文件的权限掩码,本地用户默认掩码为077 |
修改匿名用户上传文件的属主和属主
1 | # 如果未指定属主数组,则默认为`ftp` |
黑白名单
1 | # ftpusers中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问) |
user_list 配置文件有两种用法
- 黑名单:user_list 中的用户都拒绝
1 | userlist_enable=YES |
以下是两个选项的具体表现形式和两种搭配使用方式的效果:
配置 | 作用 |
---|---|
userlist_enable=YES | ftpusers中用户允许访问 user_list中用户允许访问 |
userlist_enable=NO | ftpusers中用户禁止访问 user_list中用户允许访问 |
userlist_deny=YES | ftpusers中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问) user_list 中用户禁止访问 |
userlist_deny=NO | ftpusers中用户禁止访问 user_list中用户允许访问 |
userlist_enable=YES 并且userlist_deny=YES | ftpusers中用户禁止访问 user_list中用户禁止访问(登录时不会出现密码提示,直接被服务器拒绝) |
userlist_enable=YES 并且 userlist_deny=NO | ftpusers中用户禁止访问 user_list中用户允许访问 |
被动模式设置
1 | # 是否开户被动模式 |
其他配置
参考链接:http://os.51cto.com/art/201008/221842.htm
1 | # 是否允许本地用户(即linux系统中的用户帐号)登录FTP服务器,默认设置为YES允许 |