一、安装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
模式。