分页: 1 / 2

安装了vsftpd,如何让匿名用户有上传权限

发表于 : 2008-04-16 9:19
vincent_zh
我已经按照把/etc/vsftpd.conf文件设置设置成了

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

但还是匿名用户不能上传文件,请问该怎么解决???

发表于 : 2008-04-16 16:09
AlphaWu
你在里面建立一个子目录,看看能不能上传。

发表于 : 2008-04-16 23:16
vincent_zh
建立过了,且有777的权限,还是不能上传

发表于 : 2008-04-19 23:28
henry0712
我也遇到同样问题,关注

发表于 : 2008-04-20 9:18
vincent_zh
请哪位大侠解答一下

发表于 : 2008-04-20 9:50
aBiNg
write_enable的总开关设对没?

帖出配置的全部(除了注释),加上你的目录权限也帖出来看看。:)

发表于 : 2008-04-21 12:49
sgm277
不如你设置虚拟用户。

发表于 : 2008-04-21 14:19
runpin
local_enable=YES

这个打开了吗?

发表于 : 2008-04-21 23:21
vincent_zh
listen=YES

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

secure_chroot_dir=/var/run/vsftpd

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

上面的就是配置文件里除掉注释行后的内容了,请看下,有什么问题吗??

发表于 : 2008-04-22 15:18
aBiNg
加:

代码: 全选

local_umask=022
去:

代码: 全选

pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
再不行,列出你的相关目录权限看看。

发表于 : 2008-04-22 22:41
vincent_zh
照楼上所说的做了,运行有如下,请看下,是什么原因

ftp> lcd Shell/linux-course/
Local directory now /home/vincent/Shell/linux-course
ftp> put 001.sh
local: 001.sh remote: 001.sh
200 PORT command successful. Consider using PASV.
550 Permission denied.
ftp> PASV
?Invalid command
ftp> passive
Passive mode on.
ftp> put 001.sh
local: 001.sh remote: 001.sh
227 Entering Passive Mode (127,0,0,1,143,102)
550 Permission denied.
ftp> ls
227 Entering Passive Mode (127,0,0,1,207,133)
150 Here comes the directory listing.
lrwxrwxrwx 1 0 0 19 Apr 18 03:27 Movie -> /media/sdb6/movies/
drwxr-xr-x 3 0 0 4096 Apr 15 13:25 Shell
drwxrwxrwx 3 0 0 4096 Apr 18 10:32 temp
226 Directory send OK.


ftp文件夹是在/home下,ftp文件夹,权限如下
drwxr-xr-x 4 root nogroup 4096 2008-04-18 11:27 ftp

请看下是什么原因??谢谢

发表于 : 2008-04-22 23:05
aBiNg
莫非是selinux的事?

楼主没用ubuntu?

发表于 : 2008-04-23 8:31
vincent_zh
不是的,我用的是8.04版的ubuntu

发表于 : 2008-04-24 8:49
vincent_zh
期待大侠指点

发表于 : 2008-04-26 19:55
angelus
ftp文件夹是在/home下,ftp文件夹,权限如下
drwxr-xr-x 4 root nogroup 4096 2008-04-18 11:27 ftp
在你配置文件中没有找到匿名文件的地址,加上
anon_root=/home/ftp
把匿名根目录定义到/home/ftp下,注意匿名根目录下的其他用户不能有w权限
也就是-rwxr-x(r-x) 括号里的其他权限不能出现w,不然会出错,
如果要匿名上传,可在/home/ftp下,建立个新文件夹,这个文件夹的其他用户必需有
W权限,不然不能上传.还可以再新建一个文件夹,不要有写权限,就可以只让下载了!

如果是匿名用户上传,上传的目录中其他用户权限必须有w权限,你可以看下我写的《vsftpd小手册》帖子
也就是
d rwx r-x rwx
如果对linux权限有疑问,可以看下我写的《squid透明代理实例》帖子,里边有提到权限问题

在罗嗦下有关生成文件掩码问题
比如上楼的umask=022
这个命令的意思为,新生成的文件不允许组成员和其他成员拥有写权限,在匿名用户上传时最后不要这样设置
因为这样就不允许匿名用户拥有写权限了,
022其实是一组8进制的数,umask代表不允许创建拥有的权限。
0代表没有权限,反过来就是目录所有者有所有权限,既rwx
2代表允许写入,反过来就是不允许写入
长用的还有umask=077
7代表允许所有权限,反过来就是不允许所有权限,
077的意思就很明显了,除了目录所有者,组和其他用户没有任何权限

综合起来,匿名用户上传的掩码设置为071是比较好的,即:anon_umask=071
意思为:-rwx --- rw- 文件拥有者有所有权限,组没有权限,其他用户只有读写权限,执行权限就不要给了!

还有个问题,就是anon_other_write_enable这个参数,开启就要承担风险,因为匿名用户可以随便删除
目录的文件,但不开启又不能续传文件,如果开启,最好给这目录加上特殊权限sticky-bit,
命令:sudo chmod o+t /home/ftp 成功的话,就能看到这样的权限
-rwx r--r-T ,如果其他用户拥有x权限的话就是 -rwx r--r-t (小写)

sticky-bit属于特殊权限,意思是不管其他用户有什么权限,只有拥有者有删除和移动权限