centos7搭建FTP

1、背景

断路器开关供应商给我们定制固件,其中有一个OTA升级需求,我提出HTTP下载固件、或MQTT协议按字节流分包发送固件,结果开发固件的小伙跟我说用FTP下载固件,当时我就懵了。


一开始我们定的协议是HTTP下载,后来过了一周我催了一下,他说他以前用FTP,用这个才能快速搞定,你能搞FTP吗?什么叫能不能,只要你需要一定给你搞定。说完这句话我就后悔的要死,FTP好搞,业务逻辑系统对接麻烦,但是承诺的又不能不做,于是搭了个FTP。

2、安装配置vsftpd

yum -y install vsftpd

开机启动
systemctl restart vsftpd
systemctl enable vsftpd

配置文件(主要参数节选)vim /etc/vsftpd/vsftpd.conf

#任何人可操作
anonymous_enable=NO
#可写
write_enable=YES
#权限
local_umask=022
#20端口
connect_from_port_20=YES

#是否可以列出文件,需要在文件目录添加chroot_list文件,并写入ftp账号
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#ipv4开启
listen=YES
listen_ipv6=NO

#开启的ftp目录
local_root=/home/ftproot
use_localtime=YES

#配置端口30000-30999记得在云服务器上开启端口,否则会报227 Passive 
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999

修改vim /etc/pam.d/vsftpd
网上有文章说pam_shells.so改为pam_shells_nologin.so,其实具体自己去看自己的库叫什么名字cd /usr/lib64/security

auth required pam_shells.so
改为:
auth required pam_nologin.so

创建用户
useradd -s /bin/nologin -d /home/ftproot otaname

创建文件把用户名otaname写入一行
vim /etc/vsftpd/chroot_list

重启ftp服务即可。

3、填坑

安装时以前有个下载包不能用了,按照提示执行

yum-config-manager --disable ***

227 Entering Passive Mod

配置端口30000-30999记得在云服务器上开启端口
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999

530 Login incorrect

其他人文章说pam_shells.so改为pam_shells_nologin.so,实际上需要/usr/lib64/security目录下自己去查库叫什么名字。
tail -f /var/log/secure
查看日志即可发现报错,没有pam_shells_nologin.so这个文件。

500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

是否可以列出文件,需要在文件目录添加chroot_list文件,并写入ftp账号
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

推荐阅读更多精彩内容