CentOS7.4 install vsftp
CentOS7.4安装vsftp及配置
vsftp版本:vsftpd-3.0.2-22.el7.x86_64
安装vsftpd
查看是否已经安装vsftpd
1 | rpm -qa | grep vsftpd |
如果没有,就安装,并设置开机启动
1 | yum -y install vsftpd |
当前yum安装的FTP版本为:vsftpd-3.0.2-22.el7.x86_64
修改配置
所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的。虚拟用户不能登录CentOS系统。
修改配置文件:
打开/etc/vsftpd/vsftpd.conf,做如下配置
1 | listen=YES |
经验证,FTP3.0.2版本必须加参数:allow_writeable_chroot=YES,6.8默认安装vsftpd-2.2.2-13.el6_6.1.x86_64不加也能生效,如果3.0.2不加此参数会报如下错误:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
根本原因在于,从vsftpd_2.3.5版开始,取消了根目录的可写权限。因此,网上的普遍解决方案是以下两种:
方案一
1 | chmod a-w /vaf/ftp |
方案二
vim /etc/vsftpd.conf add the following
1 | allow_writeable_chroot=YES |
经验证,如果加上参数allow_writeable_chroot,即使去掉参数chroot_local_user=YES,也可正常访问。
进行认证:
首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。
1 | yum install db4 db4-utils |
然后,创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码
1 | test |
接着,生成虚拟用户认证的db文件
1 | db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db |
随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,再增加以下两句:
1 | auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd |
mkdir /etc/vsftpd/vuser_conf/
1 | vi /etc/vsftpd/vuser_conf/test //文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效 |
设置Selinux
1 | setsebool -P ftp_home_dir=1 //设置ftp可以使用home目录 |
设置FTP根目录权限
1 | mkdir /ftp/www //创建目录 |
ftp访问目录权限尽量最小
设置防火墙
打开/etc/sysconfig/iptables
在“-A INPUT –m state –state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
1 | -A INPUT -m state --state NEW -m tcp -p -dport 21 -j ACCEPT |
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
1 | service iptables restart |
OK,FTP搭建完成!