首页 > 代码库 > CentOS7 搭建FTP

CentOS7 搭建FTP

对于linux,只在上个微信公众号开发的时候,玩了CentOS6.5. 现在学习Docker技术,官方建议升级到7.2。于是乎只能捣鼓一下了。

花了一晚上的时间才真正把vsftpd安装好,flashfxp 正常上传下载文件。这中间碰到一些问题,顺便记录下。

首先,centos7.2 虚拟机安装完后,要配置网络。

nmcli connection show   --- 显示当前网络连接

技术分享

cd /etc/sysconfig/network-scripts/   

ls

技术分享

 

 vi ifcfg-ens33 --把ONBOOT 改为yes

技术分享

然后重启虚拟机,就可以上网了。

其次,安装vsftpd

yum intall vsftpd --- 每次问答,都选y即可

配置防火墙,开通21端口。(注意,Centos7.2 使用firewalld代替了原来的iptables)

firewall-cmd --zone=public --add-port=21/tcp --permanent

firewall-cmd --reload   --- 让防火墙设置生效

vi /etc/vsftpd/vsftpd.conf ,修改ftp根目录local_root=/var/ftp/software(如果不指定,默认就是/home/系统用户目录)

systemctl start vsftpd --- 开启Vsftpd 服务

这个时候,尝试如果用FlashFXP 软件 root 用户登陆,报530错误。

百度了好久,发现

vi /etc/vsftpd/vsftpd.conf  将userlist_enable=YES改为NO,

vi /etc/vsftpd/ftpusers 删除root,保存,重启vsftpd

再systemctl  restart vsftpd  重启vsftpd即可登陆

只是看不到目录信息,也不能上传文件。

又继续百度半天,也没找到相关资料。后来发现都是FlashFXP 执行PASV 指令出错。想想是不是没有开通PASV 端口。

于是又修改vsftpd.conf文件,先指定PASV 端口范围

pasv_min_port=5000
pasv_max_port=6000

然后再修改防火墙,开通5000~6000端口

firewall-cmd --zone=public --add-port=5000-60000/tcp --permanent

重启防火墙和vsftp后,总算能看到列表了。万万没想到,上传文件失败,郁闷吧。

尝试按照网上的把software 目录权限改为777,还是一样不能上传。

尝试把SELINUX 关闭(修改/etc/selinux/config文件中的SELINUX=”enforcing" 改为 disabled ),重启后,更坑爹。这时候更加FlashFXP登陆不了。

恢复SELINUX,还是登陆不了。当时,那个心情郁闷啊。辛亏我留了一手,做了个快照,不然早急疯了。

恢复快照后,继续百度,照着度娘的某个帖子的意思,

setsebool allow_ftpd_full_access 1  -- 居然可以成功上传了。

这下高兴了,去楼下买瓶可乐喝了个够。上来再看看文件夹是否可以上传,奶奶的熊。这个时候居然报

vsftpd:refuse to run with writable root inside chroot()  错误。百思不得其解。刚刚还好好的啊

没办法,又去找度娘,后面查到,只要在vsftpd.conf 加上这句,就可以了

allow_writeable_chroot=YES

但是虚拟机重启后,又不能ftp了,主要是 setsebool allow_ftpd_full_access 1 临时设置的。需要

setsebool -P allow_ftpd_full_access 1 

最后, chkconfig vsftpd on 本想让vsftpd 设置为开机自启动,可是这条命令不起作用,谁知道告诉我下:) 

好了,花了一晚上。搭建个FTP 服务器。真惨!

CentOS7 搭建FTP