默认情况下,匿名用户所有上传下载,所使用的用户都是ftp用户的权限,若要上传文件,则需要ftp用户有写的权限,若要下载,则需要ftp用户有读的权限,即一般情况下,ftp用户对文件有读权限就对文件有下载权限了
文件有三种权限,文件所有人,文件所有组,文件的其他人,anon_world_readable_only的意思是,当他为YES时候,文件的其他人必须有读的权限才允许下载,单单文件所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载;若为NO则只要ftp用户对文件有读权限即可下载
举例如下:
客户端匿名登录
[root@base2 ~]# lftp 172.25.78.11
lftp 172.25.78.11:~> cd pub/
lftp 172.25.78.11:/pub> ls
-rw-r--r-- 1 14 50 465 Sep 12 01:42 fstab
-rw-r--r-- 1 14 50 492 Sep 12 01:44 group
-rw------- 1 14 50 1013 Sep 12 01:27 passwd
lftp 172.25.78.11:/pub> get group # 因为group文件的其他人有可读权限,所以匿名用户可以下载文件
492 bytes transferred
lftp 172.25.78.11:/pub> get passwd # 而passwd文件的其他人没有可读权限,所以不可以下载文件
get: Access failed: 550 Failed to open file. (passwd)
在服务端修改匿名用户的权限
[root@base1 ~]# cd /var/ftp/
[root@base1 ftp]# ll
total 0
drwxrwxr-x 2 root ftp 46 Sep 12 09:44 pub
[root@base1 ftp]# vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=YES
[root@base1 ftp]# systemctl restart vsftpd
在客户端进行测试
lftp 172.25.78.11:/pub> get passwd # 下载失败
get: Access failed: 550 Failed to open file. (passwd)
当anon_world_readable_only是NO时
[root@base1 ftp]# vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO
[root@base1 ftp]# systemctl restart vsftpd
在客户端进行测试
[root@base2 ~]# lftp 172.25.78.11
lftp 172.25.78.11:~> cd pub/
lftp 172.25.78.11:/pub> get passwd # 下载成功
1013 bytes transferred