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 匿名访问测试
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 本地用户访问测试
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 虚拟用户访问测试
补充:
netstat -antp | grep "vsftpd"
FTP服务器默认使用TCP协议的20、21端口于客户端进行通信
20端口用于建立数据连接,并传输文件数据
21端口用于建立控制连接,并传输FTP控制命令
FTP数据连接分为主动模式和被动模式
主动模式:服务器主动发起数据连接
被动模式:服务器被动等待数据连接