FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

 

实验准备

操作系统: linux Redhat6.5作为服务器、Windows7作为客户端

 

FTP文件传输服务搭建步骤

1.安装vsftp软件包,并备份配置文件

mount /dev/sr0 /mnt

rpm -ivh /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

cd /etc/vsftpd/

cp vsftpd.conf vsftpd.conf.bak

 

2.设置匿名用户访问的FTP服务(最大权限)

2.1 修改配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES            #开启匿名用户访问

write_enable=YES                #开放服务器的写权限(若要上传,必须开启)

anon_umask=022                  #设置匿名用户所上传数据的权限掩码(反掩码)

anon_upload_enable=YES          #允许匿名用户上传文件

anon_mkdir_write_enable=YES     #允许匿名用户创建(上传)目录

anon_other_write_enable =YES    #允许删除、重命名、覆盖等操作

2.2 为FTP根目录下的pub子文件夹设置最大权限,以便匿名用户上传数据

chmod 777 /var/ftp/pub/

2.3开启服务,关闭防火墙和增强型安全功能

service vsftpd start

service iptables stop

setenforce 0

2.4 匿名访问测试

FTP文件传输服务_第1张图片

FTP文件传输服务_第2张图片

FTP文件传输服务_第3张图片

blob.png

 

3.设置本地用户验证访问的FTP服务

3.1 修改配置文件

vim /etc/vsftpd/vsftpd.conf

local_enable=Yes        #启用本地用户

anonymous_enable=NO     #关闭匿名用户访问

write_enable=YES        #开放服务器的写权限(若要上传,必须开启)

anon_umask=077          #可设置仅宿主用户拥有上传的文件的(反掩码)

chroot_local_user=YES   #将访问禁锢在用户的宿主目录中

3.2 重新加载服务的配置

service vsftpd reload

3.3 本地用户访问测试

FTP文件传输服务_第4张图片

 

4.使用user_list用户列表文件

4.1 在user_list用户列表文件中添加用户

vi /etc/vsftpd/user_list

zhangsan                #添加用户

lisi

4.2 修改配置文件

vim /etc/vsftpd/vsftpd.conf

userlist_enable=YES     #启用user_list用户列表文件

userlist_deny=NO        #设置白名单,不禁用user_list列表中的用户(默认是禁用的)

4.3 重新加载服务配置

service vsftpd reload

 

5.使用虚拟用户访问的FTP服务

5.1 创建文本格式的用户名、密码列表

vi /etc/vsftpd/vusers.list

xiaoming        #基数行为用户

123123          #偶数行为密码

xiaohua

123123

5.2 创建Berkeley DB格式的数据库文件

#vsftpd服务使用Berkeley DB格式的数据库文件来存放虚拟用户账号,建立这种数据库文件需要用到db_load工具

cd /etc/vsftpd/

db_load -T -t hash -f vusers.list vuser.db             #将vusers.list文件转换成vuser.db的数据库文件

5.3 更改文件权限为只有管理员用户可以查看。

chmod 600 vusers.list

chmod 600 vuser.db

5.4 创建一个虚拟用户的映射账户,并指定其FTP根目录

useradd -d /var/vuser -s /sbin/nologin vuser

5.5 编辑pam认证模块支持虚拟用户的登陆

#在vsftpd服务器中,用户认证是通过PAM(可插拔认证模块)机制来实现的,该机制包含灵活的选择认证方式

vim /etc/pam.d/vsftpd.vu

auth required pam_userdb.so db=/etc/vsftpd/vuser      #vuser对应的是vuser.db文件

account required pam_userdb.so db=/etc/vsftpd/vuser

5.6 修改vsftp的配置文件,添加虚拟用户支持

vim /etc/vsftpd/vsftpd.conf

#pam_service_name=vsftpd         #注释掉vsftpd的pam认证

guest_enable=YES                 #启用用户账号功能

guest_username=vuser             #映射虚拟用户到指定用户

pam_service_name=vsftpd.vu       #开启虚拟用户,使用pam认证登陆

5.7 为不同的虚拟用户建立独立的配置文件

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/v_dir    #添加虚拟用户配置文件夹项

5.8 为单独的虚拟用户创建用户配置文件

mkdir /etc/vsftpd/vu_dir

vim /etc/vsftpd/v_dir/xiaoming

anon_umask=022 

anon_upload_enable=YES            

anon_mkdir_write_enable=YES

5.9  虚拟用户访问测试

FTP文件传输服务_第5张图片



补充:

netstat -antp | grep "vsftpd"

FTP服务器默认使用TCP协议的20、21端口于客户端进行通信

20端口用于建立数据连接,并传输文件数据

21端口用于建立控制连接,并传输FTP控制命令


FTP数据连接分为主动模式和被动模式

主动模式:服务器主动发起数据连接

被动模式:服务器被动等待数据连接