没玩过linux,折腾了半天的ftp,好不容易亲测通过了。不容易啊。
操作环境:vm虚拟机 centos7
首先:搞定网络问题;默认情况下使用ifconfig可以看到虚拟机下是无网络的。(注:虚拟机网络设置为NAT或桥接模式都是可以的)
输入命令nmtui 打开网络配置
回车-》回车
将倒数第二项 Automatically connect 勾上 然后就有网络了
然后更新系统:yum update
查看vsftpd是否已安装:vsftpd -v (默认都是没安装的)
安装vsftpd:yum install vsftpd
然后 y y y......
安装完成后配置防火墙(firewall)
firewall-cmd --permanent --add-service=ftp
firewall-cmd --add-port=21/tcp
firewall-cmd --zone=public --add-port=10060-10090/tcp --permanent
firewall-cmd --reload
#firewall开机自动启动
systemctl enable firewalld.service
注:阿里云服务器需要在管理平台添加安全组规则(老坑了)
在“云服务器ECS->实例->管理->本实例安全组->配置规则”中,选择“添加安全组规则“。开放21端口(可以是20/21)
配置vsftpd: vi /etc/vsftpd/vsftpd.conf
打开并设置以下配置:
anonymous_enable=NO (修改)
chroot_local_user=YES (取消注释)(此项为限定用户访问目录为当前目录)
然后最底部设置并添加:
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
listen_port=21
data_connection_timeout=12
guest_enable=YES
guest_username=ftpuser (ftp的用户名,多个用户可重复这一行并修改用户名)
user_config_dir=/usr/website(用户访问的文件夹)
pasv_enable=YES
virtual_use_local_privs=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES (解决连接是提示500 OOPS:vsftpd:refusing to run with writable root inside chroot() 的问题)
退出并保存:wq
重启vsftpd:
systemctl restart vsftpd.service
相关命令:systemctl start vsftpd.service
systemctl status vsftpd.service
创建文件夹: mkdir /usr/website
创建用户:
useradd -g root -M -d /usr/website -s /sbin/nologin ftpuser
设置密码:
passwd ftpuser
文件夹授权:
chown -R ftpuser.root /usr/website
到目前为止,还有最后一个问题:selinux (不设置的情况下ftp提示:553 Could not create file)
捣鼓了半天都没配置成功。最后尝试了两个方案。
一、关闭selinux;
vi /etc/selinux/config
设置 SELINUX=Disabled
重启系统。
二、将selinux改成permissive(宽容模式)
命令:setenforce 0
然后,可以试试看了。
============================================================================
以下是425解决方案
425 Failed to establish connection
这个问题在使用pasv模式的时候经常会遇到
需要操作本地防火墙,开放本地端口(根据上文操作则是开放10060-10090)。