vsftp無法上傳檔案
用SecureCRT遠程登入後,我做了如下檢查:
①、開啟了vsftp設定檔(/etc/vsftpd/vsftpd.conf)檢查write_enable狀態,發現正常:
[root@VM_72_108_centos /]# cat /etc/vsftpd/vsftpd.conf | grep write_enable
write_enable=YES
#anon_mkdir_write_enable=YES
[root@VM_72_108_centos /]#
②、查看ftp使用者是否具備目錄的讀寫權限,發現也是可行的775狀態(www組)。
[root@VM_72_108_centos wwwroot]# ll
total 8
drwxrwxr-x 3 www www 4096 Jun 12 12:34 default
drwxrwxr-x 9 www www 4096 Jun 12 14:54 weixin.weightwl.com
③、在命令提示字元CMD中使用ftp,可擷取到一些explore看不到的報錯資訊,便於資料搜尋:
於是在百度搜尋了下如下報錯資訊:
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
最終,在一個linux論壇才找到了如下解決辦法:
作者說這個問題在Centos上才會出現,Redhat就沒有,難怪我在公司都沒見過這問題。
解決辦法:
①、查看ftp的Selinux狀態:sestatus -b | grep ftp
②、在結果中可以看到: ftp_home_dir off
③、將狀態改為on:setsebool -P ftp_home_dir on
④、重啟vsftp服務:service vsftpd restart
有點納悶的是,他的伺服器根本就沒開selinux,所以第②步根本沒結果,理論上,這個解決辦法應該沒效果才對,可實際上,全部執行完成之後,發現可以上傳檔案和建立檔案夾了。我去,還真是詭異,總之解決了問題就好。
張戈額外補充一條VPS常用的新增FTP帳號的命令列,方便定義不同的ftp帳號:
useradd -g www -d /home/www/zhangge.net -s /sbin/nologin username
# -g 表示所屬使用者組,請根據實際選擇
# -d 表示登入後的工作目錄,請指定所要指向的網站根目錄即可。
# -s /sbin/nologin 表示設定此帳號僅用於ftp,不允許登入到系統。
#username 新增的使用者名稱,請自訂。
passwd username
#如上使用passwd 設定ftp使用者的密碼。
補充:CENTOS6.4 VSFTP無法上傳檔案的解決方案
方法1、直接關閉selinux,命令:/usr/sbin/setenforce 0;
方法2、在selinux開啟的情況下
運行命令(查看ftpd開啟的服務):getsebool -a | grep ftp
下圖是無法上傳檔案的情況:allow_ftp_anon_write