【搭建環境】Linux (Fedora 16)
【基本實現】在自己的電腦上搭建ftp,實現同一網段匿名登錄,并能上傳下載文件。
【涉及技術】vsftpd,iptables
【方法】
1. 先查看自己的機子上是否已安裝vsftpd (very secure FTP Daemon),這是linux上常用的ftpd技術,配置方法比較類似配置Apache。命令行輸入:
#rpm -qa | grep vsftp
若出現內容,則表示已安裝;若無,則手動抓包下載:
# sudo yum install vsftpd
2 .啟動vsftpd服務。很多教程寫的是/etc/init.d/vsftpd start,但是我試了下后發現不行,應該如下輸入:
# sudo service vsftpd start
相應的,start 可換成stop,restart等,從字面意思就知道其意思。
查看是否有啟動vsftpd:
# pstree | grep vsftpd
若有則表示啟動成功。至此,可通過#ftp 主機名/localhost/127.0.0.1 來測試ftp是否正常工作。
3. 配置 相關文件。vsftpd.conf 全局配置文件放在/etc/vsftpd/下。為了防止配置錯了,先拷貝一份副本,之后進入文檔進行編輯。完成后重啟ftp即可。
#cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd1.conf
#sudo vim /etc/vsftpd/vsftpd.conf
為了允許匿名登錄,則anonymous_enable必須等于YES,其他相應的配置屬性簡單列表如下:
anonymous_enable=YES 允許匿名登錄
Local_enable=YES 允許本地用戶登錄
write_enable=YES 開放本地用戶的寫權限
dirmessage_enable=YES 當切換到目錄時,顯示該目錄下的.message隱含文件的內容
xferlog_enab1e =YES 激活上傳和下載日志
connect_from_port_20 = YES 啟用FTP數據端口的連接請求
xferlog_std_format =YES 使用標準的ftpd xferlog日志格式
pam_service_name=vsftpd 設置認證服務的配置文件名稱,該文件存放在/etc/pam.d/
userlist_enable=YES 激活vsftpd檢查userlist_file指定用戶是否可以訪問vsftpd服務器
4. 本機進行測試。在瀏覽器上輸入ftp://localhost或者ftp://127.0.0.1,若搭建成功,則會有相應的文件夾,而這文件夾是默認在/var/ftp/下,當然以后你還可以進行修改。另一個方法是可以直接在命令行輸入:
#ftp 127.0.0.1
因為匿名登錄,跳過輸入用戶名和密碼后輸入:
ftp>user anonymous
再次跳過輸入密碼,此時會顯示登錄成功的字樣。
5. 關閉防火墻。此時去同一網段的主機訪問ftp,會發現一直鏈接不上。暫時了解到的是現在的linux系統為了更好地控制 IP 信息包過濾和防火墻配置,使用了iptables的東西。首先得關閉SElinux,該配置文件在/etc/selinux/下:
#vim /etc/selinux/config
找到相應語句,將其改成:SELINUX=disabled
重啟之后,如果發現還不行,則暫時的辦法可以關閉整個防火墻(不推薦):
#sudo service iptables stop
到了此步則肯定能從別的主機訪問自己搭建的ftp的,只是可能還需要涉及文件夾權限問題,修改之后就能實現文件上傳下載了。
完畢。
【補充】
若出現vsftpd: refusing to run with writable anonymous root的錯誤,大概是ftp目錄權限問題,修正方法:
# chown root:root /var/ftp
# chmod 755 /var/ftp