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]