一、FTP工作原理
在一個FTP會話中,存在兩個獨立的網絡連接:控制連接和數據連接。通常情況下,FTP服務器監聽端口號21,等待控制連接建立請求。當FTP控制連接建立之后,即可開始傳輸文件,傳輸文件的連接稱為FTP“FTP數據連接”。FTP數據連接即FTP傳輸數據的過程,它有3種傳輸模式,即主動傳輸模式(PORT)、被動傳輸模式(PASSIVE,簡稱PASV)、單端口模式。
主動傳輸模式:當FTP控制連接建立,客戶端提出目錄列表及傳輸文件時,客戶端發出PORT命令與服務器協商,FTP服務器使用端口20作為服務器的數據連接端口與客戶端建立數據連接。端口20只用于連接源地址是服務器的情況,別且端口20沒有監聽進程而是監聽客戶請求。在主動傳輸模式中,FTP服務器使用20端口與客戶端的臨時端口連接并傳輸數據,客戶端只是出于接受狀態。
被動傳輸模式:當FTP控制連接建立,客戶端提出目錄列表及傳輸文件時,客戶端發送PASV命令使服務器出于被動傳輸模式,FTP服務器等待客戶與其聯系。FTP服務器在非20端口的其他數據傳輸端口上監聽客戶請求。當FTP客戶在防火墻之外訪問FTP服務器時,需要使用被動傳輸模式。即FTP服務器打開一個臨時端口等待客戶端與其連接并傳輸數據。服務器并不參與數據的主動傳輸,只是被動接收。
單端口模式:使用該傳輸模式,客戶端的控制連接端口和數據連接端口一致。因為這種模式無法在短時間連續輸入數據并傳輸命令,因此并不常用。
二、Linux服務器端主要FTP軟件:Wu-ftpd、Vsftpd、ProFTPD
有關軟件的詳細介紹這里不再贅述。
三、配置Vsftpd服務器
Vsftpd配置文件
/usr/sbin/vsftpdVsftpd的主程序
/etc/rc.d/init.d/vsftpd 啟動腳本
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/pam.d/vsftpdPAM認證文件
/etc/vsftpd.ftpusers 禁止使用Vsftpd的用戶列表文件
/etc/vsftpd.user_list 禁止或允許使用Vsftpd的用戶列表文件
/var/ftp匿名用戶主目錄
/var/ftp/pub匿名用戶的下載目錄
/etc/logrotate.d/vsftpd.log Vsftpd的日志文件
1.快速搭建一個Vsftpd服務器
1.1:安裝軟件包
1.2:啟動vsftpd服務器
1.3:在/var/ftp/pub目錄下創建文件test1
#touch /var/ftp/pub/test1
1.4:在客戶端用Leapftp軟件測試
3. 鎖定用戶的登錄目錄
3.1: 默認用戶登錄到FTP,除了看到自己的家目錄外,還能瀏覽其他目錄,這里讓用戶鎖定在自己家目錄下
3.2:修改主配置文件
添加117和118行,將鎖定用戶目錄的功能開啟,然后再指定鎖定用戶的列表文件
3.3:重啟服務,并將us1用戶添加到列表文件中
#service vsftpd restart
#echo us1 > /etc/vsftpd/chroot_list
3.4:驗證效果
可以看到他的訪問目錄只能呆在自己家了。
4.更改用戶默認的登錄目錄
4.1:改變用戶的訪問目錄為:/tmp
默認每個用戶登錄到FTP,都是登錄到他的家目錄
4.2:在/tmp下建一個文件:test2
#touch/tmp/test2
4.3:修改主配置文件,在主配置文件的最后一行添加:
# local_root=/tmp
4.4:重啟服務,并驗證效果
us1的登錄目錄已經改變為/tmp
5.1:先定義用戶的個人配置文件目錄:在主配置文件中添加一行
#user_config_dir=/etc/vsftpd/userconf
5.2:創建這個目錄
#mkdir /etc/vsftpd/userconf
5.3:在這個目錄中創建跟用戶同名的文件,比如定義us1的個人配置文件
#touch /etc/vsftpd/userconf/us1
5.4:修改剛創建的文件us1,定義用戶us1一些個人配置參數(只對us1生效)。比如設置us1最大數據傳輸速度,則添加一行
local_max_rate=100000#單位為Bytes/s
6.只允許特定的用戶可登陸FTP
6.1:修改主配置文件,添加下面三行
#userlist_deny=NO
#userlist_enable=YES
#userlist_file=/etc/vsftpd.user_list
第三行表示用戶的列表文件,第二行值為YES,表示此選項被激活,當列表中的用戶登錄FTP服務器時,該用戶在提升輸入口令之前被禁止。即不允許該用戶登錄。但是第一行值為NO,表示用戶列表文件的用戶可以登錄FTP服務器,默認是YES,禁止文件中的用戶登錄。所以開啟了第二行和第三行,一定要將第一行的值改為NO,否則變成列表中的用戶被禁止登陸。
6.2:將允許登錄的用戶添加到列表文件中
#echo us2/etc/vsftpd.user_list
6.3:重啟服務即可,則該FTP服務器只允許us2登錄了。
7. 設置用戶的操作權限
write_enable=YES/NO
是否有可寫權限
anon_umask=
設置匿名用戶新增文件的umask數值,默認是077
local_umask=
設置用戶新增文件時的umask數值,默認為077
file_open_mode=
設置上傳檔案的全限,默認為0666。若要是上傳的檔案有執行權限,則修改為0777
本文轉自:
|
新聞熱點
疑難解答