盒子
导航
文章目录
  1. 一、安装VSFTP
  2. 二、配置VSFTP
  3. 三、参考文档

使用VSFTP搭建FTP服务器

一、安装VSFTP

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

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及以前的版本关闭防火墙用命令:

sudo systemctl stop iptables.service

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

sudo systemctl stop firewalld.service

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

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。综上做如下设置:

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,然后重启:

[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模式设置