1. 程式人生 > >FTP文件傳輸協議之vsftpd服務

FTP文件傳輸協議之vsftpd服務

linux 配置 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服務