使用VSFTP搭建FTP服务器

官方在2015年5月26日发布了Fedora 22,这里基于该版本的服务器和VSFTPD,记录如何安装配置FTP服务器。

安装VSFTP

服务器版本:Fedora Server 22。安装vsftpd,使用以下命令(Fedora22,之前的请使用yum命令替代dnf命令)

1
$ sudo dnf install vsftpd

配置文件在/etc/vsftpd/目录下,名为vsftpd.conf,服务器的根目录在/var/ftp下,其中匿名账户的目录为子目录/var/ftp/pub,为了简便直接修改配置使用匿名账户来上传下载文件,开启下列配置项:

anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

可能需要关闭防火墙才可以访问。Fedora 17及以前的版本关闭防火墙用命令:

1
$ sudo systemctl stop iptables.service

Fedora 18及上名字改为了firewalld,即:

1
$ sudo systemctl stop firewalld.service

如果想禁止该服务项自启动可执行以下命令来关闭服务:

1
$ sudo systemctl disable firewalld.service

配置VSFTP

查看文件/etc/passwd中ftp一项的值ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin,可以看出ftp的跟目录/var/ftp禁止ftp这个用户从控制台登陆,即只能从ftp访问。对于匿名ftp用户,为了让其能够上传下载文件,需要修改/var/ftp/var/ftp/pub目录的相应权限:/var/ftp/pub需要修改为744,归属和组别都要设置为ftp,否则在CWD该目录时会报错Response: 550 Failed to change directory. Error: Failed to retrieve directory listing,而/var/ftp则使用755,用户和归属为root。综上做如下设置:

1
2
3
4
5
$ cd /var/
$ sudo chown -R root:root ftp
$ sudo chmod -R 755 /var/ftp
$ sudo chown -R ftp:ftp ftp/pub
$ sudo chmod -R 744 ftp/pub

此外需要关闭SELINUX,否则无法上传文件,会报错误:553 Could not create file. Error: Critical file transfer error,将SELINUX值由默认的enforcing改为permissive,然后重启:

1
2
3
4
5
[admin@svr] cd /etc/selinux
[admin@svr] sudo vim config
#SELINUX=enforcing
SELINUX=permissive
[admin@svr]$

不想重启机器的情况下也可以执行命令setenforce 0。命令setenforce 1设置SELinux 成为enforcing模式;setenforce 0设置SELinux 成为permissive模式。

参考文档

  1. vsftp | docs
  2. vsftp详细配置、/etc/vsftpd/vsftpd.conf
  3. CentOS下vsftp设置、匿名用户&本地用户设置、PORT、PASV模式设置