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中。
-------------------------------
默认情况下不需要修改就可以在虚拟机上访问的,如:
[[email protected] 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一下都能解决。
[email protected]