CentOS下配置vsftpd匿名用户下载和上传

分类:CentOS教程 阅读:74668 次

CentOS中的FTP功能是由一款名叫vsftpd的软件提供的,名字中的vs是very secure的缩写,所以vsftpd的特点是其安全性和稳定性比较突出。其官方站点为:http://vsftpd.beasts.org/。
系统默认并没有安装vsftpd,我们首先用yum命令安装该服务:
# yum install vsftpd

vsftpd的服务进程名也是vsftpd,启动服务并设为开机自动启动:
# service vsftpd start
# chkconfig vsftpd on


vsftpd的默认主目录是“/var/ftp/”,主配置文件是/etc/vsftpd/vsftpd.conf。配置文件一共有一百多行,配置并不算复杂。
该文件中默认有这样几项设置:

  • “anonymous_enable=YES”表示允许匿名用户访问。vsftpd中的匿名用户有两个:anonymous和ftp,在客户端可以用这两个匿名用户中的任意一个访问服务器。

  • “local_enable=YES”表示允许使用系统用户访问,但是系统用户在访问时默认只能访问自己的主目录,而不是vsftpd的主目录/var/ftp/。

  • “write enable=YES”表示允许写入。这项设置只是一个开关,要使匿名用户或系统用户具有写入权限,还得进行其它的设置。

我们保留默认设置,在FTP默认主目录/var/ftp的pub目录下创建一个测试文件:
# touch /var/ftp/pub/test.txt
然后我们在一台Windows客户端上首先用匿名用户访问测试,

匿名用户可以成功访问,当然前提是要把FTP服务器端的防火墙关闭。


但此时匿名用户却无法上传,原因也很简单,因为匿名用户对/var/ftp/pub目录不具备写入权限:

这里将“/var/ftp/pub”目录的属主改为ftp,即可赋予匿名用户写入权限。
# chown ftp /var/ftp/pub
此时在客户端再次访问,仍然无法写入,这是因为我们还需要对配置文件进行设置。
在配置文件/etc/vsftpd/vsftpd.conf中增加以下几行:

  • “anon_upload_enable=YES”表示允许匿名用户上传。

  • “anon_mkdir_write_enable=YES”表示允许匿名用户创建目录。

  • “anon_umask=022”表示设置匿名用户的umask值。umask值是一种反码的形式,当匿名用户在FTP主目录中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。由于对于目录,我们所能拥有的最大权限是777,对于文件,我们所能拥有的最大权限是666。因为x执行权限对于目录是必须的,没有执行权限就无法进入目录;而对于文件则不必默认赋予x执行权限。所以对于匿名用户创建的目录,默认的权限就是用777减去umask值,即755;对于创建的文件,默认的权限则是用666减去umask值,即644。

  • “anon_max_rate=500000”表示对匿名用户的传输速率进行限制,单位为字节。

修改完成后,重新加载服务:
# service vsftpd reload
这样在客户端再次测试,匿名用户就可以上传了。