FTP文件傳輸協議之vsftpd服務
一、FTP服務概述
FTP(File Transfer Protocol,文件傳輸協議)是典型的C/S結構的應用層協議,需要由服務端軟件、客戶端軟件共同實現文件傳輸功能
FTP服務器默認使用TCP協議的20、21端口與客戶端實現通信。20端口用於建立數據連接,並傳輸數據文件;21端口用於建立控制連接,並傳輸FTP控制命令。FTP數據連接分為主動模式和被動模式
主動模式:服務器主動發起數據連接
被動模式:服務器被動等待數據連接
vsftpd軟件
vsftpd是目前在Linux/Unix領域應用十分廣泛的一款FTP服務軟件,vsftpd服務的名稱來源於“Very Secure FTP Deamon”,該軟件針對安全特性方面做出了大量的設計,並且在速度和穩定性方面的表現也相當突出
vsftpd的配置文件
使用vsftpd服務需要先安裝Linux系統中的RPM軟件包,安裝完後會自動添加名為 vsftpd 的系統服務。vsftpd服務的配置文件位於 /etc/vsftpd 目錄下:分為以下三種
ftpusers文件:此文件中的用戶將禁止登陸vsftpd服務。默認包括root、bin、daemon等用於系統運行的特殊用戶
user_list文件:此文件中的用戶可能被禁止,也可能被允許登陸,具體取決於vsftpd.conf主配置文件
vsftpd.conf主配置文件:下面是最常用的一些配置參數
二、基於系統用戶的FTP服務
vsftpd服務可以使用Linux主機中的系統用戶賬號作為登陸FTP的賬號,包括匿名訪問和用戶驗證兩種形式
1.匿名訪問的FTP訪問目錄
FTP匿名訪問時,對應的系統用戶為ftp,不需要密碼驗證,任何人都可以訪問,宿主目錄為 /var/ftp也就是匿名訪問時所在的FTP根目錄。基於安全考慮,根目錄的權限只有讀取權限
(1)準備匿名FTP訪問目錄
/var/ftp/ 目錄下默認設置了一個名為pub的子文件夾,可以給匿名訪問FTP時提供上傳文件使用
例如:執行下面操作可以使匿名用戶對該目錄具有寫入權限,以便上傳文件
# chown ftp /var/ftp/pub
(2)匿名用戶配置並啟動vsftpd服務
例如:設置服務器提供匿名訪問,允許匿名用戶上傳、下載,但禁止使用刪除、重命名,可修改以下配置
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //允許匿名用戶訪問
local_enable=NO //不需要啟用本地用戶
write_enable=YES //開發服務器的寫入權限
anon_umask=022 //設置匿名用戶上傳數據的權限掩碼
anon_upload_enable=YES //允許匿名上傳文件
anon_mkdir_write_enable=YES //允許匿名用戶創建目錄
dirmessage_enable=YES
# service vsftpd start
(3)測試匿名FTP服務器
在Linux中,可使用FTP命令進行測試
# ftp 192.168.1.1
最常用的命令有:
ls 列出遠程機的當前目錄
cd 在遠程機上改變工作目錄
lcd 在本地機上改變工作目錄
get(mget) 從遠程機傳送指定文件到本地機
put(mput) 從本地機傳送指定文件到遠程機
quit 斷開與遠程機的連接並退出ftp
2.用戶驗證的ftp服務
使用Linux主機的系統用戶作為FTP賬號,提供基於用戶名/密碼的登陸驗證,登陸FTP後,將默認位於自己的宿主目錄,且在宿主目錄中擁有讀寫權限
(1)基本的本地用戶驗證
# vim /etc/vsftpd/vsftpd.conf
local_enable= YES //啟用本地用戶
write_enable=YES //開發服務器的寫入權限
local_umask=077 //僅屬主擁有權限
chroot_local_user=YES //禁錮在宿主目錄
# service vsftpd
(2)使用user_list用戶列表文件
例如:只允許yang、shu、fan這三個用戶登陸
# vim /etc/vsftpd/user_list
yang
shu
fan
# vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES //啟用user_list列表中的用戶
userlist_deny=NO //不禁用user_list列表中的用戶
三、基於虛擬用戶的FTP服務
使用虛擬用戶的好處在於,可以將ftp登陸賬號和系統登陸賬號分開,用戶名和密碼都不相同,進一步提高FTP服務器的安全性
1.建立虛擬用戶的賬號數據庫
(1)創建文本格式的用戶名、密碼列表
奇數行為用戶名,偶數行為上一行用戶名的密碼
例如:添加yangshufan、51cto這兩個用戶登陸,密碼為123、456
# vim /etc/vsftpd/vusers.list
yangshufan
123
51cto
456
(2)創建Berkeley DB格式的數據庫文件
通過db_load工具創建Berkeley DB格式的數據庫文件
# cd /etc/vsftpd/
# db_load -T -t hash -f vusers.list vusers.db
(3)添加虛擬用戶的映射文件、創建FTP根目錄
vsftpd服務器對虛擬用戶的控制采用了映射的控制方法,將所有的虛擬用戶對應到同一個系統用戶,該用戶的宿主目錄為所有虛擬用戶登陸後公用的FTP根目錄
例如:使用FTP根目錄設為/var/ftproot,映射賬號的名稱為virtual
# useradd -d /var/ftproot -s /sbin/nologin virtual
# chmod 755 /var/ftproot
2.為vsftpd服務添加虛擬用戶支持
(1)為虛擬用戶建立PAM認證文件
# vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
(2)修改vsftpd配置,添加虛擬用戶支持
# vim /etc/vsftpd/vsftpd.conf
local_enable= YES //需映射本地用戶
write_enable=YES //開發服務器的寫入權限
anon_umask=022 //設置上傳數據的權限掩碼
guest_enable=YES //啟用用戶映射功能
guest_username=virtual //指定映射的系統用戶名稱
pam_service_name=vsftpd.vu //指定PAM認證文件
3.為不同的虛擬用戶建立獨立的配置文件
通過上面的幾個步驟,虛擬用戶已經可以登錄FTP並下載文件了,若要為不同的虛擬用戶建立不同的權限,可以為每個虛擬用戶建立單獨配置文件來實現
例如:使用戶yangshufan能夠上傳文件、創建目錄,而用戶51cto仍然只有默認的下載權限
# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
# mkdir /etc/vsftpd/vusers_dir/ //創建用戶配置文件
# cd /etc/vsftpd/vusers_dir/
# vim yangshufan //為用戶yangshufan創建獨立配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
# touch 51cto //為其他用戶創建空的配置文件
//為其他用戶創建空配置文件
# service vsftpd reload
本文出自 “楊書凡” 博客,請務必保留此出處http://yangshufan.blog.51cto.com/13004230/1953672
FTP文件傳輸協議之vsftpd服務