FTP文件傳輸服務
FTP連接方式
控制連接:21
數據連接:20 (只有在主動模式下才使用)
FTP連接模式
主動模式
被動模式
FTP傳輸模式
文本模式
二進制模式
(一般使用二進制模式傳輸時,文件不容易出錯,特別在交換機和路由器上使用時,可使用binary切換成二進制模式)
FTP用戶類型
系統用戶
匿名用戶(anonymous; ftp)
虛擬用戶
在linux主機上是通過vsftpd 軟件包實現的.
主程序:/usr/sbin/vsftpd
服務名: vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
黑名單:/etc/vsftpd/ftpusers
控制列表: /etc/vsftpd/user_list
和samba服務一樣,vsftp配置格式:配置項= 參數
常用配置項:
全局
listen=YES:是否以獨立運行的方式監聽服務
listen_address=192.168.4.1:設置監聽的IP地址
listen_port=21:設置監聽FTP服務的端口號
write_enable=YES:是否啓用寫入權限
download_enable=YES:是否允許下載文件
userlist_enable=YES:是否啓用user_list列表文件
userlist_deny=YES:是否禁用user_list中的用戶
max_clients=0:限制併發客戶端連接max_per_ip=0:限制同一IP地址的併發連接
connect_from_port_20=YES:允許服務器主動模式
pasv_enable=YES:允許被動模式
pasv_max(min)_port=2460:設置被動模式最大(最小)端口號
tcp_wrappers=YES:是否啓用TCP_Wrappers主機訪問控制
本地
local_enable=YES:是否啓用本地系統用戶
local_umask=022:本地用戶所上傳文件的權限掩碼
local_root=/var/ftp:設置本地用戶的FTP根目錄
chroot_local_user=YES:是否將用戶禁錮在主目錄
local_max_rate=0:限制最大傳輸速率(字節/秒)
匿名
anonymous_enable=YES:啓用匿名訪問
anon_umask=022:匿名用戶所上傳文件的權限掩碼
anon_root=/var/ftp:匿名用戶的FTP根目錄
anon_upload_enable=YES:允許上傳文件
anon_mkdir_write_enable=YES:允許創建目錄
anon_other_write_enable=YES:開放其他寫入權
anon_max_rate=0:限制最大傳輸速率(字節/秒)
安裝啓動vsftpd服務後,就可以通過匿名和系統用戶進行訪問了,匿名用戶訪問的目錄是/var/ftp,匿名用戶是以系統用戶ftp登陸的,/var/ftp是ftp的宿主目錄。而使用普通系統系統用戶進行訪問時,默認訪問的是該用戶的宿主目錄。
可以根據需要編輯配置文件vsftpd.conf,從而設置訪問的權限。和samba服務陪置一樣,每次配置vsftpd.conf,都需要重啓或重新加載服務才能生效
servicevsftpd{ restart | reload }
基於安全考慮,FTP根目錄的權限不允許有寫入權限,否則在訪問時會報錯。
建立虛擬用戶
建立虛擬用戶數據庫需使用db_load工具,由db4-utils軟件包提供,需要先安裝。
1.創建用戶名和密碼列表
vi /etc/vsftpd/vusers.list
tom
123
jack
456
......
(用戶名和密碼分行顯示,每一行代表一個用戶或密碼,1、3、5...奇數行爲用戶名,2、4、6...偶數行爲密碼)
2.創建Berkeley DB格式的數據庫文件 (加密的)
cd /etc/vsftpd(切換到vsftpd目錄,方便操作)
db_load -T -t hash -f vusers.list vusers.db
-T :允許非Berkeley DB應用程序使用
-t :指定加密算法
-f :指定數據源文件
( vusers.db爲生成的文件)
爲了提高安全性,應將users.db文件權限設置文600,且刪除原有的vuser.list文件,用戶的宿主目錄權限默認爲700,所以需要調整權限以允許訪問。
3.添加虛擬用戶映射帳號
useradd -d /var/vsftp -s/sbin/nologin tom
-d :指定用戶家目錄,即FTP的根目錄
-s :此帳號無需登錄shell
(vsftpd配置中load_root、anon_root配置項需註釋或刪除)
4.爲虛擬用戶建立PAM認證文件
vi /etc/pam.d/vsftpd.vu
5.修改vsftpd配置,添加虛擬用戶支持
guest_enable=YES--啓用用戶映射
guest_username=tom--指定映射系統用戶名
pam_service_name=vsftpd.vu --指定PAM認證文件
6.爲不同的用戶創建獨立的配置目錄和文件
以上步驟已經可以重啓服務進行虛擬用戶進行訪問了,但若要實現不同的虛擬用戶有不同的訪問權限,可以爲每個虛擬用戶創建各自的配置文件來實現。
mkdir /etc/vsftpd/vusers_dir--創建目錄
在vsftpd.conf配置文件中指定
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
在/etc/vsftpd/vusers_dir/目錄中添加與虛擬用戶同名的配置文件,在vsftpd服務中,虛擬用戶被作爲匿名用戶進行處理,因此配置項一般以anon_ 開頭。
例:
vi /etc/vsftpd/vusers_dir/tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
注:在vsftpd.conf配置文件中添加user_config_dir配置項後,應該給每個用戶都建立一個獨立的配置文件(可以是空文件),否則該用戶可能會無法登錄。