1. 程式人生 > >vsftpd安裝手冊(參考視訊學習)

vsftpd安裝手冊(參考視訊學習)

1.    安裝vsftpd

[[email protected] ~]# yum -y install vsftpd

相關配置檔案    /etc/vsftpd/vsftpd.conf

2.    新增ftp使用者

[[email protected] ~]# useradd ftpuser
[[email protected] ~]# passwd ftpuser

後輸入兩次系統密碼

3.    開放21埠

[[email protected] ~]# vim /etc/sysconfig/iptables

在-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT複製貼上,將22改為21(注:22為ssh埠)

重啟iptables

4.    修改selinux

[[email protected] ~]# getsebool -a | 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_connect_db --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

以上結果表示未開啟外網訪問

(注:getsebool    get SELinux boolean value(s))

[[email protected] ~]# setsebool -P allow_ftpd_full_access on
[
[email protected]
~]# setsebool -P ftp_home_dir on

4.ps    FTP傳輸的主動模式與被動模式

        FTP客戶端連線到FTP伺服器端21埠,二者之間進行一系列的身份驗證,這個過程叫做命令連線。客戶端向伺服器端傳送請求時候,客戶端會隨機選擇某個TCP埠語伺服器端21埠連線,此過程通過TCP的三次握手來完成,握手完成後,相互之間建立一條通道,此通道只能傳輸FTP一些簡單的指令,如檢視檔案列表,刪除檔案等。如果互相之間要上傳下載檔案,二者之間需要建立一條額外的通道來完成。此時就有了主動模式與被動模式的區分。當客戶端發出上傳下載檔案的指令後,若是客戶端隨機開放一個另一個1024以上的埠監聽等待連線,並且通過先前建立的命令連線告訴伺服器端所開放的埠號,之後FTP伺服器會通過20埠主動與客戶端剛才開放的埠進行三次握手,握手成功則建立了一條傳輸通道,二者之間通過此通道來上傳下載資料,由於是伺服器20埠主動與客戶端建立的連線,所以稱為主動模式(Active)。

5.    關閉匿名連線

        開啟/etc/vsftpd/vsftpd.conf配置檔案,將

anonymous_enable=YES

修改未NO

6.    開啟被動模式

被動模式預設開啟,但是需要配置埠範圍,同樣 開啟/etc/vsftpd/vsftpd.conf配置檔案,在末尾追加 

pasv_min_port=30000
pasv_max_port=30999

另外需要在iptables裡增加開放埠,與上面保持一致,具體方法參看之前的博文。

8.    設定開機自啟

chkconfig vsftpd on

9.    在Java中藉助Apache的commons-net.jar包實現上傳下載時候,需要記住設定為被動模式。另外,在我使用時候遇到一個小問題,每次上傳失敗,但是FtpClient並不會報錯,我debug發現請求傳送檔案的命令(包括路徑和檔名)已經成功傳送了,但是ftp伺服器 返回 553 。。。。。什麼什麼的,發現是我在 ftpuser使用者下建立檔案使用的是root使用者,所有使用ftpuser使用者上傳時候沒有對該路徑的讀寫許可權。。。