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
网友评论