天天看点

windows无法登陆linux ftp,在WINDOS下登录LINUX上的FTP服务器

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]