简单介绍:
文件传输协议
文件传输协议(FTP,File Transfer Protocol),即能够让用户在互联网中上传、下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和FTP客户端的配合才行。
通常用户使用FTP客户端软件向FTP服务器发起连接并发送FTP指令,服务器收到用户指令后将执行结果返回客户端。
FTP协议占用两个端口号:
21端口:命令控制,用于接收客户端执行的FTP命令。
20端口:数据传输,用于上传、下载文件数据。
FTP数据传输的类型:
主动模式:FTP服务端主动向FTP客户端发起连接请求。
被动模式:FTP服务端等待FTP客户端的连接请求。
FTP服务器
简单地说,支持FTP协议的服务器就是FTP服务器。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
Vsftpd即“Very Secure FTP Daemon”是一款运行在类Unix操作系统的FTP服务端程序,Vsftpd主打的是安全性、完全开源及免费、速率高、支持IPv6、虚拟用户功能等等其他FTP服务端软件不具备的功能。
FTP服务器的配置实现,通过修改vsftpd服务配置文件即可实现多种不同功能,下面通过几个案例来实现不同的应用场景。
vsftpd程序配置文件参数的作用:
参数 | 作用 |
listen=[YES|NO] | 是否以独立运行的方式监听服务。 |
listen_address=IP地址 | 设置要监听的IP地址。 |
listen_port=21 | 设置FTP服务的监听端口。 |
download_enable=[YES|NO] | 是否允许下载文件。 |
userlist_enable=[YES|NO] | 是否启用“禁止登陆用户名单”。 |
max_clients=0 | 最大客户端连接数,0为不限制。 |
max_per_ip=0 | 同一IP地址最大连接数,0位不限制。 |
anonymous_enable=[YES|NO] | 是否允许匿名用户访问。 |
anon_upload_enable=[YES|NO] | 是否允许匿名用户上传文件。 |
anon_umask=022 | 匿名用户上传文件的umask值。 |
anon_root=/var/ftp | 匿名用户的FTP根目录。 |
anon_mkdir_write_enable=[YES|NO] | 是否允许匿名用户创建目录。 |
anon_other_write_enable=[YES|NO] | 是否开放匿名用户其他写入权限。 |
anon_max_rate=0 | 匿名用户最大传输速率(字节),0为不限制。 |
local_enable=[YES|NO] | 是否允许本地用户登陆FTP。 |
local_umask=022 | 本地用户上传文件的umask值。 |
local_root=/var/ftp | 本地用户的FTP根目录。 |
chroot_local_user=[YES|NO] | 是否将用户权限禁锢在FTP目录,更加的安全。 |
local_max_rate=0 | 本地用户最大传输速率(字节),0为不限制。 |
案例1:
案例2:
允许匿名用户上传、下载、创建目录、删除文件和目录。
修改服务器主配置文件:
客户端测试:
案例3:
允许本地用户访问,且将部分用户限制在其家目录中。
修改服务器主配置文件/etc/vsftpd/vsftpd.conf
客户端测试:
案例4:
修改服务器主配置文件/etc/vsftpd/vsftpd.conf
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入
客户端测试: