Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1567705
  • 博文数量: 354
  • 博客积分: 8137
  • 博客等级: 中将
  • 技术积分: 5137
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-26 15:40
文章分类

全部博文(354)

文章存档

2010年(300)

2009年(54)

分类: LINUX

2009-11-29 21:30:54

vsftpd 500 OOPS: cannot change directory
 
今天在默认配置下,启动vsftpd,一般用户登陆居然报错:
C:\>ftp 192.168.0.101
Connected to 192.168.0.101.
220 (vsFTPd 2.0.5)
User (192.168.0.101:(none)): frank
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/frank
Login failed.
ftp> ls
500 OOPS: child died
Connection closed by remote host.
 
觉得这个问题很奇怪,google.cn了一下,有人的解决方法是:
解决方法:
ref: http://hi.baidu.com/qhdinfo/blog/item/eee71e0e7abc25c97acbe17d.html
在终端输入命令:
setsebool ftpd_disable_trans 1
service vsftpd restart
就OK了!
 
作者没说为什么,后来google.com后才发现这是SELinux的设置命令.
其实 man 一下setsebool也知道了:
NAME
       setsebool - set SELinux boolean value
 
在不熟悉SELnux前,把SELinux关掉也可以的。有时间研究下SELinux。  
在想用SELinux但是又不熟悉的情况下可以把SELinux设置成Permissive,表示SELinux规则启动,但只是把违规的记录到log中。  
-------------------------------
默认情况下不需要修改就可以在虚拟机上访问的,如:
[root@tong vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.1.2)
Name (127.0.0.1:tong): ftp//匿名登录默认用户名,密码也是;也可都用anonymous
331 Please specify the password.
Password:
230 Login successful. //恭喜您,已成功登陆
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

不过,先别高兴太早,这只是在本虚拟机上可以访问,在宿主机上呢,我用的是xp
通过cmd命令会出现如下错误
C:\Documents and Settings\Administrator>ftp 10.4.141.15
> ftp: connect :未知错误号
10.4.141.15是我的虚拟机Linux的ip地址
当然此时要保证宿主机和虚拟机能相互ping通!
针对这个错误,我们应该进行如下设置
将Linux的防火墙关掉,如下命令:
service iptables stop
停掉防火墙以后还是不能访问,此时我们就要考虑防火墙表面上关掉了,其实底部还有某些驱动在运行,这就是我们的21端口还被防火墙限制访问,所以我们要开放21端口,命令如下:
iptables -A INPUT -p tcp -sport 21 -j ACCEPT
iptables -A INPUT -p tcp -dport 21 -j ACCEPT

至此,我们就可以在客户端访问我们的sftpd服务了,剩下的设置就简单了,访问权限之类的。。。。
 
--------------------------------------------
以上是我是网上找到两个比较好的解决问题的方法。!
 
今天,在Linux上装了VsFTPD.嗯,出了不少问题。
 
第一个问题:vsftpd 500 OOPS: cannot change directory
 
 这个问题是SElinux的安全防护。这里我们只有关掉其相关的设置就好了。!
现在我们来查看我们的SElinux设置。
 
查看SELinux的版本:
#cat /etc/redhat-release
我的显示是:Red Hat Enterprise Linux Server release 5.1 (Tikanga)
 
我们再来看看我们的VSftpd版本:
#rpm -qa |grep vsftpd
 
查看SElinux状态
#sestatus
 
我的状态如下:
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted
查开SELinux中与FTP有关的状态:
#sestatus -b | grep ftp
 
allow_ftpd_anon_write                  off
allow_ftpd_full_access                 off
allow_ftpd_use_cifs                    off
allow_ftpd_use_nfs                     off
ftp_home_dir                           off
ftpd_disable_trans                     off
ftpd_is_daemon                         on
httpd_enable_ftp_server                off
tftpd_disable_trans                    off
 

我们开始的错误是vsftpd 500 OOPS: cannot change directory 不能改变文件夹。
那我们就要把ftp_home_dir   on改成ON就好了。。
下面我们来设置一下:setsebool -P ftp_home_dir on
 
这样我们就设置好了!!
再次我们用普通账号登录就不会出现现上面的错误了。
 
今天的第二个错误就是用WINDOS的命令输入c:>ftp  192.168.92.128时出现:
ftp: connect :未知错误号
 
在网上查了下,说是防火墙问题,这里我们关闭防火墙:
service iptables stop
 
好了。我们再次就可以进入了。
 
还有就是我们也可以用IE都浏览器进入FTP如我在LINUX中建立的用户名是ven
我们在浏览器里输入 回车就可以了。
 
呵呵。。。觉的LINUX还是很好玩的,能学到不少计算机的东西。
 有什么问题,GOOGLE.COM一下都能解决。
 
                                     hnrainll@20091129
 
阅读(5781) | 评论(0) | 转发(0) |
0

上一篇:Linux 进程管理

下一篇:About Shell

给主人留下些什么吧!~~