如果你想在你的Linux/Unix服务器上搭建一个安全、高性能、稳定性好的FTP服务器,那么vsftpd可能是你的首选应用。vsftpd意思为 “very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如 Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。示例是在CentOS下,Fedora可以将yum改为dnf,其他发行版除安装外,配置相同。
步骤1: 安装vsftpd
警告: FTP 数据传输是很必要的; 其传输是没有加密的,所有的传输都是名文传输 (包括usernames, passwords, commands, and data). 考虑到 FTP的安全性可以使用SSL/TLS.
- 更新源
yum -y update
- 安装vsftpd和其需要的包:
yum -y install vsftpd
步骤2: 配置vsftpd
修改 vsftpd的配置文件:
vim /etc/vsftpd/vsftpd.conf
如果要禁用匿名用户登录FTP;把anonymous_enable 项设置为NO:
anonymous_enable=NO
设置local_enable为YES允许本地用户登录:
local_enable=YES
把write_enable setting设置为YES允许本地用户创建文件夹等操作:
write_enable=YES
本地用户为chroot jailed’ 他们是没有任何权限的所有要设置chroot_local_usersetting为YES:
chroot_local_user=YES
保存:wq .
重启vsftpd服务:
systemctl restart vsftpd
把vsftpd 加入到系统启动项
systemctl enable vsftpd
步骤3: 防火墙允许vsftpd
防火墙允许FTP默认端口 21
firewall-cmd --permanent --add-port=21/tcp
重载防火墙
firewall-cmd --reload
553 Could not create file错误的解决
一般由于匿名用户的权限引起的
1.vsftpd.conf文件中:
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
2.ftp目录权限:
查看ftp目录:
cat /etc/passwd | grep ftp
ftp:x:107:65534::/home/ftp:/bin/false
ftp目录为/home/ftp(默认为/var/ftp)
chown root:root /home/ftp
chmod -R 777 /home/ftp
但这样是不能上传文件的。因为这是匿名用户,当前目录所有者是root用户; 真的要上传文件在该目录下建立一个文件夹如名字是upload,
mkdir /home/ftp/upload
chown ftp:root /home/ftp/upload
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令
chmod a-w /home/ftp
去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件vsftpd.conf中增加下列:
allow_writeable_chroot=YES
下载或删除文件报错【550 Failed to open file.或550 Permission denied.】
在vsftpd.conf加入匿名用户可以删除的配置
anon_other_write_enable=YES