天天看点

Linux系统服务 5 ---- Vsftpd匿名用户不能下载原因分析及解决

<a target="_blank" href="http://iminmin.blog.51cto.com/689308/201607">原文出处</a>

Vsftp匿名用户不能下载原因分析及解决

 vsftp中的和匿名用户有关的参数

 1)主配置文件:/etc/vsftpd/vsftpd.conf

--------------------------------------------------

[root@station ~]# cat /etc/vsftpd/vsftpd.conf |grep -v ^#

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022   //本地用户上传文件的umask值。

anon_upload_enable=YES    //允许匿名上传

anon_mkdir_write_enable=YES //匿名用户可以对目录进行写操作。

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

--------------------------------------------------- 

 2)看相关的selinux设置:

---------------------------------------------------

[root@station ~]# getsebool -a |grep ftp

allow_ftpd_anon_write --&gt; on    //匿名用户写权限,要开启

allow_ftpd_full_access --&gt; on   //匿名用户要上传文件,要开启

allow_ftpd_use_cifs --&gt; off

allow_ftpd_use_nfs --&gt; off

allow_tftp_anon_write --&gt; off

ftp_home_dir --&gt; on             //本地用户家目录

ftpd_disable_trans --&gt; off       //关闭selinux对ftp服务的影响

ftpd_is_daemon --&gt; on

httpd_enable_ftp_server --&gt; off

tftpd_disable_trans --&gt; off

------------------------------------------------------

    按照上面的设置,重启服务就好了。大多数新人看到的文章基本都是这么配置的,但是我们遇到的问题就产生了。

    现象:匿名用户能登陆ftp服务器(linux客户端,或者windows客户端都可以)使用linux客户端,可以上传文件,可以建立目录;使用windows客户端可以长传文件,建立目录不能修改名字,只能用新建文件夹 新建文件夹1......

    分析:

          1、能确定的一定是权限问题。

          2、关闭selinux测试,问题依旧,说明和selinux无关。

          3、我们来看一下我们上传的文件:

             1)目标目录的权限:

[root@station booleans]# ll /var/ftp/

总计 16

drwxr-xr-x 2 root root 4096 2007-12-13 pub

drwxrwxrwx 2 root root 4096 09-15 10:25 test  //777权限没问题

              2)上传以后的文件的权限:

lftp 192.168.1.10:/test&gt; put /root/install.log ./

27001 bytes transferred

lftp 192.168.1.10:/test&gt; ls

-rw------- 1 14 50 27001 Sep 15 02:31 install.log

    注意看那个权限600,这是造成我们不能下载的主要原因。

    解决方法:

    /etc/vsftpd/vsftpd.conf下只有local_umask=022的选项,他决定了上传月以后的文件的权限。默认文件权限是666,目录权限是777,然而我们的匿名用户上传的文件的权限却没有写明,那么默认的vsftp服务对匿名用户的umask值是多少呢?根据我们的测试,应该是066。所以我们要修改匿名用户的umask值使我们可以进行一些相关操作,增加anon_umask=022,重启服务,然后测试vsftp

是不是能下载了?

-----------------------------------------------------

lftp localhost:/test&gt; put /root/install.log

lftp localhost:/test&gt; ls

-rw-r--r-- 1 14 50 27001 Sep 15 02:34 install.log

继续阅读