已解决,我说一下我解决的过程,也许大多数知,但我还是想说出来,与大家共享一下/如有不对的地方,欢迎大家指出/
谢谢.
以下就是解决的三个步骤,其中第一步,是我一直没有搞明白的,也是其中的重点:
1当时我在服务器上用命令ftp时,出现了以下的提示500 OOPS: vsftpd: refusing to run with writable anonymous root
所以在网上找到了这一篇文章:
"如果我们已经把vsFTPd服务器启动好了,但登录测试是会出现类似下面的提示;
500 OOPS: vsftpd: refusing to run with writable anonymous root
这表示ftp用户的家目录的权限不对,应该改过才对;
[root@localhost ~]# more /etc/passwd |grep ftp
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin
我们发现ftp用户的家目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777 /var/ftp所致;如果没有ftp用户这个家目录,当然您要自己建一个;
如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放;
[root@localhost ~]# ls -ld /var/ftp
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp
修正这个错误,应该用下面的办法;
[root@localhost ~]# chown root:root /var/ftp
[root@localhost ~]# chmod 755 /var/ftp
有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改vsftpd.conf就OK了;没有什么难的;
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?"
2:防火墙的打开相应的端口21,20
3:因为我是adsl双网卡上网的形式,所以还要加载ip_conntrack_ftp这个模块/这个不要忘了.
anon_root=/zzx/ftp这个是匿名用户登陆的默认目录,,这个必须要和/etc/passwd中的ftp用户的默认宿主目录要一样,,否着会出现上面的错误!
如果在/zzx/ftp目录下新建一个anonymous目录而且权限为777的话,只能新建,不能删除,因为新建的目录或者文件的所属用户是ftp的,,,没有删除读取的权限,估计要修改/etc/vsftpd.conf中的 umask 这项了.....
+++++++++++++++++++++++++++++++++++++
550 Failed to change directory.
解决方法:
http://blog.chinaitlab.com/html/61/1039861-153408.html
在UBUNTU 7.04中安装后, 匿名上传不行, 改了目录属性后, 一直提示
500 OOPS: vsftpd: refusing to run with writable anonymous root
找了很久,原来原因很简单, 但是配置文件中没说明白
其他都是一样设置,没什么说的:
anonymous_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=NO
重要的在于: 在/etc/vsftpd/vsftpd.conf所设置的匿名用户的目录的问题!!!
anon_root=/home/ftp/
表示匿名用户登录后所在的地方, 但是, 即使上传, 也不能上传到这个目录下, 只能上传到这个目录的子目录下!!!
就是说, 对于这个目录, 应该是读属性, 否则匿名不能登录:
代码:
sudo chmod 555 /home/ftp
然后在这个目录下建立一个目录,如 incoming , 设置为可写:
代码:
sudo chmod o+w /home/ftp/incoming
这样, 上传就只能上传到匿名用户主目录的子目录下(如incoming)
按照以上修改后如果出现550 Failed to change directory错误。
在ftp目录下ls -l查明子目录的属性,如果own是root则发生550错误,
解决方法:
代码:
sudo chown ftp incoming
就OK了~
检测是否安装了FTP :[root@localhost ~]# rpm -q vsftpd
假如安装了会显示 版本信息:[root@localhost ~]# vsftpd-2.0.5-16.el5_5.1
否则显示:[root@localhost ~]# package vsftpd is not installed
1、运行yum install vsftpd命令
详细的细节如下:(如果无法更新,你先配置能访问互联网,我有湍档叫 CentOS 在 VMware下,如何联网到Internet的解诀办法 可以解诀无法上网的问题)
[root@localhost ~]# yum install vsftpd
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i386 0:2.0.5-12.el5 set to be updated
filelists.xml.gz 100% |=========================| 648 kB 02:46
http://ftp.hostrino.com/pub/centos/5.2/os/i386/repodata/filelists.xml.gz: [Errno 4] Socket Error: timed out
Trying other mirror.
filelists.xml.gz 100% |=========================| 2.8 MB 00:21
filelists.xml.gz 100% |=========================| 1.1 MB 00:12
filelists.xml.gz 100% |=========================| 132 kB 00:01
filelists.xml.gz 100% |=========================| 150 B 00:00
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
vsftpd i386 2.0.5-12.el5 base 137 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 137 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): vsftpd-2.0.5-12.el 100% |=========================| 137 kB 00:01
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY key ID e8562897
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) " from
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: vsftpd ######################### [1/1]
Installed: vsftpd.i386 0:2.0.5-12.el5
Complete!
[root@localhost ~]#
2、将 /etc/vsftpd/user_list文件和/etc/vsftpd/ftpusers文件中的root这一行注释掉
# root
3、执行以下命令
# setsebool -P ftpd_disable_trans=1
修改/etc/vsftpd/vsftpd.conf在最后一行处添加local_root=/
4、service vsftpd restart
ftp服务器就可以使用了。
*********************************************************************
vsftpd的 配置(1)用户登录控制
anonymous_enable=YES,允许匿名用户登录。
no_anon_password=YES,匿名用户登录时不需要输入密码。
local_enable=YES,允许本地用户登录。
deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
banned_email_file=/etc/vsftpd.banned_emails,当启用deny_email_enable功能时,所需的电子邮件黑名单保存路径(默认为/etc/vsftpd.banned_emails)。
(2)用户权限控制
write_enable=YES,开启全侷上传权限。
local_umask=022,本地用户的上传文件的umask设为022(系统默认是077,一袄慵可以改为022)。
anon_upload_enable=YES,允许匿名用户具有上传权限,很明显,必须启用write_enable=YES,才可以使用此项。同时我们还必须建立一个允许ftp用户可以读写的目录(前面说过,ftp是匿名用户的映射用户账号)。
anon_mkdir_write_enable=YES,允许匿名用户有创建目录的权利。
chown_uploads=YES,启用此项,匿名上传文件的属主用户将改为别的用户账户,注重,这里建议不要指定root账号为匿名上传文件的属主用户!
chown_username=whoever,当启用chown_uploads=YES时,所指定的属主用户账号,此处的whoever自然要用合适的用户账号来代替。
chroot_list_enable=YES,可以用一个列表限定哪些本地用户只能在自己目录下活动,如果chroot_local_user=YES,那么这个列表里指定的用户是不受限制的。
chroot_list_file=/etc/vsftpd.chroot_list,如果chroot_local_user=YES,则指定该列表(chroot_local_user)的保存路径(默认是/etc/vsftpd.chroot_list)。
nopriv_user=ftpsecure,指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。这是vsftpd系统推荐选项。
async_abor_enable=YES,强烈建议不要启用该选项,否则将可能导致出错!
ascii_upload_enable=YES;ascii_download_enable=YES,默认情况下服务器会假装接受ASCⅡ模式哀求但实际上是忽略这样的请求,启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。
留意:启用ascii_download_enable选项会让恶意远程用户们在ASCⅡ模式下用“SIZE/big/file”这样的指令大量消耗FTP服务器的I/O素材。
这些ASCⅡ模式的设置选项分成上传和下载两个,这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
(4)服务器日志和欢迎信息
dirmessage_enable=YES,允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。
ftpd_banner=Welcome to blah FTP service,可以自定义FTP用户登录到服务器所看到的欢迎信息。
xferlog_enable=YES,启用记录上传/下载活动日志功能。
xferlog_file=/var/log/vsftpd.log,可以自定义日志文件的保存路径和文件名,默认是/var/log/vsftpd.log。