阿里云centos7安装vfstpd
本来以为很简单的折腾很久,记录一下备忘。
参考网址
http://desert3.iteye.com/blog/1685734 配置说明
https://www.centos.bz/2017/08/centos-7-virtual-user-vsftpd/ 安装教程
https://www.chengzi520.com/?p=697 问题排查
我的Selinux是关闭的这一步记录供参考:
1 | setsebool -P ftp_home_dir=1 //设置ftp可以使用home目录 |
设置firewall 端口
1 | firewall-cmd --zone=public --add-port=21/tcp --permanent |
最后记得去阿里云控制台的安全组把对应的端口一一打开,在这里卡了好久,一直连不上,配置也没错…
安装vsftpd,设置开机启动
1 | yum -y install vsftpd |
基于虚拟用户配置
基于虚拟用户的目的主要是不想在系统上创建用户,网络上很多教程都需要在系统创建一个用户。下面是复制别人的虚拟用户的描述:
虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的。虚拟用户不能登录CentOS系统
修改vsftp的配置文件,假设登录的是root用户
1 | cd /etc/vsftpd/ |
然后 vim vsftpd.conf
做如下修改:
1 | anonymous_enable=NO //设定不允许匿名访问 |
修改的时候注意:
- 配置文件中有不能有多余的空格或拼写错误,特别是复制网上教程的,记得把后面的注释和空格删除干净
- 配置文件参数错误(NO/YES是否一一写对)
**然后先systemctl stop vsftpd.service
, 再启动服务 systemctl start vsftpd.service
看看服务是否可以正常开启,如果不行,先检查一下刚刚修改过的地方。**
然后编辑 vsftpd.conf 文件,在刚刚编辑的后面添加关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加。
1 | guest_enable=YES //设定启用虚拟用户功能 |
创建虚拟用户授权信息,安装Berkeley DB工具
1 | yum install db4 db4-utils |
创建用户帐号密码文本,奇行是用户名,偶行是密码 vim /etc/vsftpd/vuser_passwd.txt
1 | 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 | vim /etc/pam.d/vsftpd |
创建虚拟用户配置文件,先创建配置存放目录
1 | mkdir /etc/vsftpd/vuser_conf/ |
然后创建配置文件,文件名就是刚刚创建的用户名,创建一个test文件,一个test2文件,一一对应
1 | vi /etc/vsftpd/vuser_conf/test //文件名等于vuser_passwd.txt里`面的账户名,否则下面设置无效 |
文件内容如下
1 | local_root=/home/xxx/ftp //虚拟用户根目录,根据实际情况修改 |
设置FTP根目录权限
最新的vsftpd要求对主目录不能有写的权限所以data为755,主目录下面的子目录再设置777权限
1 | mkdir /home/xxx/ftp //创建根目录 |
现在还是先关掉然后启动一下服务看看服务是否可以启动起来,如果不行,仔细查看刚刚的配置
配置PASV模式
vsftpd默认没有开启PASV模式,现在FTP只能通过PORT模式连接,要开启PASV默认需要通过下面的配置
打开/etc/vsftpd/vsftpd.conf,在末尾添加
1 | pasv_enable=YES //开启PASV模式 |
firewall添加段端口
1 | firewall-cmd --zone=public--add-port=40000-40080/tcp --permanent |
最后还是systemctl stop vsftpd.service, 再启动服务
systemctl start vsftpd.service` 看看服务是否可以正常启动,然后就可以用客户端进行连接测试了