一.简介:
1.FTP文件传输协议是在TCP/IP网络和Internet上最早使用的协议之一,它属于网络协议应用层的协议。FTP客户机可以给FTP服务器发出命令来下载文件,上载文件,创建或修改服务器上的目录等等。
2.从服务器的角度去看,FTP的传输模式分为以下两种:
⑴主动FTP模式:
主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,文件的传输存在安全隐患,客户端如果安装了防火墙,在使用过程中也有可能会产生一些问题
⑵被动FTP模式:(实际生活中多采用该模式)
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
二.搭建步骤
1.由于wdos系统中并没有安装vsftpd软件包,所以需要通过yum安装所需要的软件包
2.基于匿名的ftp服务器架设(匿名账户有 anoymous 和ftp 这两个)
3.基于系统用户的ftp服务器架设(在服务器中手动建立)
4.基于虚拟用户的ftp服务器架设
4.测试
5.可能遇到的问题的解决方案
三.搭建过程
1.使用yum -y install vsftpd 安装vsftp软件包,如下图所示:
2.基于匿名用户的ftp架设
1)vi /etc/vsftpd/vsftpd.conf 进入ftp的主配置文件,默认情况下允许匿名用户登录,所以只需要找到下图两句并把前面的#去掉,便可允许匿名用户上传文件和创建新目录:
2)允许匿名用户上传文件的FTP服务器:
方法一:创建一个属于ftp匿名用户使用的目录
方法二:创建一个属于root用户的目录,但修改目录权限为允许其他用户修改目录内容
3)重启vsftpd服务
使用命令service vsftpd restart 重启该服务
3.基于虚拟用户的ftp架设
1)创建本地虚拟用户user1和user2,设置密码为123456
2)修改主配置文件/etc/vsftpd/vsftpd.conf,将图中标注的两行前的注释符去掉
3)在/etc/vsftpd这一目录下,新建一个chroot_list文件用于存放新建的用户:
4)服务重启
使用命令service vsftpd restart 重启该服务
4.基于虚拟用户的搭建
1)添加虚拟用户口令文件 /etc/vsftpd/vuser.txt;在该文件下添加虚拟用户和密码
2)安装生成口令认证文件所需的软件包db4-utils
3)使用db_load –T –t hash –f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db命令生成虚拟用户口令认证文件
4)编辑vsftpd的PAM认证文件:
vi /etc/pam.d/vsftpd,将里面的内容全部删除或者注释掉,另外添加下面两句命令:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
5)建立本地映射用户并设置宿主目录权限
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
useradd –d /home/vftpsite –s /sbin/nologin vsftpuser
chmod 700 /home/vftpsite
6)到主配置文件 /etc/vsftpd/vsftpd.conf 配置虚拟用户
7)重启该服务
四.测试
1.基于匿名用户的测试:(这里只测试新创建的目录forup1)
1)使用匿名账户 ftp登录,密码为空;
2)客户端上传test.txt到已经创建好的目录forup1
3)到ftp服务器查看是否上传成功,如果需要下载已经上传的文件test.txt,可通过修改该文件的权限
使用命令chmod 644 test.txt修改文件的权限:
客户端测试是否能下载:
2.基于系统用户的测试:(这里使用新建的账户user1来测试)
1)使用虚拟用户user1登录到ftp服务器,并创建一个新的文件
2)在服务器上查看/home/user1目录下的文件,是否添加成功
3.基于虚拟用户的测试:
五.可能遇到的问题解决方案
1.如果在服务重启的过程中提示重启失败,用命令 netstat -lnpt 查看各个端口的启用状态,确保21端口侦听的是vsftpd的服务
P.s. 一般情况下,wdos系统的21端口被pureftpd服务占用了,这时可以通过命令 service pureftpd stop 来关闭这项服务
2.如果在测试过程中出现530登录失败这样的错误,则通过命令vi /etc/selinux/config 进入该文件查看sellinux是否设置为disable,同时通过命令 service iptables stop 将防火墙关闭,重启vsftpd服务,重新测试即可。