项目上需要用到ftp文件服务同步,所以在测试环境进行搭建,其中遇到了一些问题,遂记录。
1、安装vsftpd软件包
打开终端并输入以下命令来安装vsftpd
yum install vsftpd -y
2、运行vsftpd
systemctl start vsftpd
3、测试匿名连接
我这里用的工具是MobaXterm
点击OK,然后弹出输入密码,直接点 OK,即可。如果一切正常则会登录成功。
这个pub目录就是默认的ftp文件服务器的目录了,真实地址是在/var/ftp目录下:
ls -l /var/ftp
4、配置vsftpd
编辑/etc/vsftpd/vsftpd.conf文件,使用任何文本编辑器打开该文件:
vim /etc/vsftpd/vsftpd.conf
修改配置参数。根据需要对以下参数进行调整或取消注释:
anonymous_enable=NO: 关闭匿名登录功能;
local_enable=YES: 允许本地用户登录;
write_enable=YES: 允许写入文件;
local_root=/data/nas: 配置ftp目录;
chroot_local_user=YES: 限制用户只能访问其主目录;
allow_writeable_chroot=YES:表示让家目录可写
重启vsftpd服务
systemctl restart vsftpd
此时再用anonymous登录就会提示:530 Please login with USER and PASS.
5、添加FTP用户
创建一个系统用户,并为其分配FTP目录
useradd ftpuser
# useradd ftpuser -s /sbin/nologin #添加一个名为ftpuser的账户用于登陆ftp
passwd ftpuser
mkdir /home/ftpuser
chown -R ftpuser:ftpuser /home/ftpuser
# 这里自定义配置了目录的话,授权一下
chown -R ftpuser:ftpuser /data/nas
6、使用新用户密码登录
7、常见问题
vsftpd目录限制chroot(用户隔离)500错误分析以及解决方案-阿里云开发者社区
1)chroot_list文件不存在
500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
由于vsftpd默认没有chroot_list文件,故而登录失败,创建一下文件:
touch /etc/vsftpd/chroot_list
再尝试登录
2)安全问题
500 OOPS: vsftpd: refusing to run with weitable root inside chroot()
这是因为,为了避免一个安全漏洞,从vsftpd 2.3.5 开始,chroot目录必须不可写,否则用户不能登录
若要解决该问题,可以新增一条参数:
allow_writeable_chroot=YES