1. 主動與被動模式
1) 主動模式(PORT方式)
連接過程爲:客戶端向服務器FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:我打開了XX端口,你過來連接我,於是服務器從20號端口向客戶端的XX端口發送連接請求,建立一條數據鏈路來傳送數據。
2) 被動模式(PASV方式)
連接過程爲:客戶端向服務器FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:我打開了XX端口,你過來連接我,於是客戶端向服務器的XX端口發送連接請求,建立一條數據鏈路來傳送數據。
2. 安裝
1) 查看是否安裝
打開命令行,輸入rpm -q vsftpd,出現:
Ø 已經安裝
Ø 還沒安裝
2) 安裝
Ø 載入光盤
Ø 設置光盤
單擊虛擬機右下角的光盤圖標,選擇Settings,在Device status中將Connected勾選,在Connection中選擇Use ISO image file,然後單擊Browse選擇Linux的安裝包,單擊OK
Ø 安裝
安裝完成
3. 文件結構與配置文件
1) 文件結構
配置文件名
|
功能
|
/usr/sbin/vsftpd
|
vsftpd的主程序
|
/etc/rc.d/init.d/vsftpd
|
啓動腳本
|
/etc/vsftpd/vsftpd.conf
|
主配置文件
|
/etc/pam.d/vsftpd
|
PAM認證文件
|
/etc/vsftpd.ftpusers
|
禁止使用vsftpd的用戶列表文件
|
/etc/vsftpd.user_list
|
禁止或允許使用vsftpd的用戶列表文件
|
/var/ftp
|
匿名用戶主目錄
|
/var/ftp/pub
|
匿名用戶的下載目錄
|
/etc/logrotate.d/vsftpd.log
|
vsftpd的日誌文件
|
2) 配置文件
Ø 查看
以#號開頭的爲註釋,這裏把非配置參數註釋都去掉了
Ø 參數含義
參數
|
含義
|
anonymous_enable=YES
|
是否允許使用匿名賬戶
|
local_enable=YES
|
是否允許本地用戶登錄
|
write_enable=YES
|
是否允許寫入
|
local_umask=022
|
本地umask值爲022
|
#anon_upload_enable=YES
|
匿名用戶是否可上傳文件
|
#anon_mkdir_write_enable=YES
|
匿名用戶是否可建立目錄
|
dirmessage_enable=YES
|
進入每個目錄顯示歡迎信息,在每個目錄下建立.message文件在裏面寫歡迎信息
|
xferlog_enable=YES
|
上傳/下載文件時記錄日誌
|
connect_from_port_20=YES
|
是否使用20端口傳輸數據(是否使用主動模式)
|
#chown_uploads=YES
|
修改匿名用戶上傳的文件,文件的擁有者
|
#chown_username=whoever
|
|
#xferlog_file=/var/log/xferlog
|
日誌文件
|
xferlog_std_format=YES
|
使用標準文件日誌
|
#idle_session_timeout=600
|
會話超時,客戶端連接到ftp但未操作
|
#data_connection_timeout=120
|
數據傳輸超時
|
#nopriv_user=ftpsecure
|
指定vsftpd服務的運行帳戶,不指定時使用ftp
|
#async_abor_enable=YES
|
是否允許客戶端使用sync等命令
|
#ascii_upload_enable=YES
|
是否允許上傳/下載二進制文件
|
#ascii_download_enable=YES
|
|
#ftpd_banner=Welcome to blah FTP service.
|
登錄提示語
|
#deny_email_enable=YES
|
拒絕使用banned_email_file參數指定文件中所列出的e-mail地址進行登錄的匿名用戶。即,當匿名用戶使用banned_email_file文件中所列出的e-mail進行登錄時,被拒絕。
|
#banned_email_file=/etc/vsftpd/banned_emails
|
|
#chroot_list_enable=YES
|
鎖定登陸用戶在其主目錄,將用戶名一個一行寫在/etc/vsftpd/chroot_list文件裏,使用此方法時必須chroot_local_user=YES
|
#chroot_list_file=/etc/vsftpd/chroot_list
|
|
#ls_recurse_enable=YES
|
是否允許使用ls -R等命令
|
listen=YES
|
開啓ipv4監聽
|
#listen_ipv6=YES
|
開啓ipv6監聽
|
pam_service_name=vsftpd
|
使用pam模塊控制,vsftpd文件在/etc/pam.d目錄下
|
userlist_enable=YES
|
與其他中userlist_deny=YES共同控制訪問用戶,詳見userlist_deny=YES參數含義
|
tcp_wrappers=YES
|
是否允許tcp_wrappers管理
|
其他
|
|
listen_address=ip address
|
指定偵聽IP
|
listen_port=port_value
|
指定偵聽端口,默認21
|
chroot_local_user=YES
|
限制所有的本地用戶在自家目錄
|
userlist_deny=YES
|
決定禁止還是隻允許由userlist_file指定文件中的用戶登錄FTP服務器。此選項在userlist_enable選項啓動後才生效。YES爲默認值,禁止文件中的用戶登錄,同時也不向這些用戶發出輸入密碼的提示。NO表示只允許在文件中的用戶登錄FTP服務器
|
local_root=/home/ftp
|
所有用戶的根目錄,對匿名用戶無效
|
anon_max_rate=value
|
匿名用戶的最大傳輸速度,單位是Byts/s
|
local_max_rate=value
|
本地用戶的最大傳輸速度,單位是Byts/s
|
download_enable=YES
|
是否允許下載
|
3) 連接信息
代碼
|
含義
|
代碼
|
含義
|
110
|
重新啓動標記應答
|
120
|
服務在多久時間內ready
|
125
|
數據鏈路埠開啓,準備傳送
|
150
|
文件狀態正常,開啓數據連接端口
|
200
|
命令執行成功
|
202
|
命令執行失敗
|
211
|
系統狀態或是系統求助響應
|
212
|
目錄的狀態
|
213
|
文件的狀態
|
214
|
求助的信息
|
215
|
名稱系統類型
|
220
|
新的聯機服務ready
|
221
|
服務的控制連接埠關閉,可以註銷
|
225
|
數據連結開啓,但無傳輸動作
|
226
|
關閉數據連接端口,請求的文件操作成功
|
227
|
進入passive mode
|
230
|
使用者登錄
|
250
|
請求的文件操作完成
|
257
|
顯示目前的路徑名稱
|
331
|
用戶名稱正確,需要密碼
|
332
|
登入時需要賬號信息
|
350
|
請求的操作需要進一部的命令
|
421
|
無法提供服務,關閉控制連結
|
425
|
無法開啓數據鏈路
|
426
|
關閉聯機,終止傳輸
|
450
|
請求的操作未執行
|
451
|
命令終止:有本地的錯誤
|
452
|
未執行命令:磁盤空間不足
|
500
|
格式錯誤,無法識別命令
|
501
|
參數語法錯誤
|
502
|
命令執行失敗
|
503
|
命令順序錯誤
|
504
|
命令所接的參數不正確
|
530
|
未登錄
|
532
|
儲存文件需要賬戶登錄
|
550
|
未執行請求的操作
|
551
|
請求的命令終止,類型未知
|
552
|
請求的文件終止,儲存位溢出
|
553
|
未執行請求的的命令,名稱不正確
|
|
|
4. 配置
1) 匿名用戶登錄FTP
Ø 配置
安裝完成後,service vsftpd start啓動服務
Ø 測試
在XP下連接FTP,可以看到登陸成功,用戶名爲ftp,即爲匿名用戶,anonymous也爲匿名用戶,vsFTP默認的配置匿名用戶就可登錄
2) 實名用戶登錄FTP
Ø 配置
mkdir -p /var/ftp/pub/zwb:建立用戶登錄根目錄
useradd -G ftp -d /var/ftp/pub/zwb -M zwb:建立實名用戶
passwd zwb:設置實名用戶登錄密碼
Ø 測試
3) 只允許匿名登錄,不允許實名登錄
Ø 配置
l 修改配置文件
將local_enable=YES改爲NO,保存退出
l 重啓服務
Ø 測試
4) 不允許匿名登錄,只允許實名登錄
Ø 配置
l 修改配置文件
將local_enable=NO改爲YES,anonymous_enable=YES改爲NO,退出保存
l 重啓服務
Ø 測試
5) 黑、白名單
Ø 黑名單
l 配置
u 修改配置文件
anonymous_enable=NO改爲anonymous_enable=YES,還原初始配置
u 添加黑名單
將zwb用戶追加進黑名單
l 測試
zwb用戶登錄失敗
Ø 白名單
l 配置
u 還原設置
將上面追加進黑名單的用戶zwb移除並保存退出
u 設置白名單
添加userlist_deny=NO與userlist_file=/etc/vsftpd/user_list這2行
u 添加白名單
除user_list裏的用戶外,都不可登陸
u 重啓服務
l 測試
6) 限制客戶數
Ø 配置
l 還原設置
u 還原白名單
將上面追加進黑名單的用戶zwb移除並保存退出
u 還原配置文件
去掉userlist_deny=NO與userlist_file=/etc/vsftpd/user_list
l 修改配置文件
添加max_clients=1,指明最大客戶連接數量爲1
l 重啓服務
Ø 測試
ftp用戶登錄成功,不要退出,再次開啓一個命令行
在纔開啓的命令行上連接FTP,錯誤代碼421,提示There are too many connected users,please try later(有太多的用戶連接,稍後再試),使用zwb用戶登錄Connection closed by remote host(遠程主機連接關閉)
7) 速率限制
Ø 匿名用戶與實名用戶速率限制
l 配置
u 還原設置
去掉max_clients=1
u 修改配置文件
單位爲bytes,local_max_rate表示實名用戶的下載速度,anon_max_rate表示匿名用戶的下載速度
u 重啓服務
l 測試
u 創建測試文件
dd if=/dev/zero of=get_test bs=126k count=1創建一個大小爲126k的文件,用0填滿,作爲測試文件,實際創建了一個129k的文件
u 測試
zwb用戶用時爲0.77Seconds,速率爲168.44Kbytes/sec。ftp用戶用時爲6.20Seconds,速率爲20.80Kbytes/sec
Ø 不同實名用戶分等級下載限制
l 配置
u 還原設置
去掉local_max_rate與anon_max_rate
u 添加用戶
建立zzj用戶的用戶根目錄,添加zzj用戶,設置zzj用戶密碼
u 修改配置文件
添加user_config_dir=/etc/vsftpd,設置用戶配置目錄
u 添加用戶配置文件
n 爲zwb用戶添加配置文件
n 爲zzj用戶添加配置文件
u 重啓服務
l 測試
zwb用戶用時爲0.78Seconds,速率爲165.20Kbytes/sec。zzj用戶用時爲6.20Seconds,速率爲20.80Kbytes/sec
8) 上傳
Ø 匿名用戶上傳
l 配置
u 還原設置
把user_config_dir=/etc/vsftpd去掉
u 修改配置文件
取消anon_upload_enable=YES與anon_mkdir_write_enable=YES前的註釋,添加anon_other_write_enable=YES,表示允許文件改名、刪除
u 權限配置
chmod -R 777 pub:
將pub目錄改爲777的權限
chcon -R -t public_content_rw_t pub:
將pub目錄的文件類型改爲public_content_rw_t
getsebool -a | grep ftp:
查看sebool值中關於ftp的值
setsebool -P allow_ftpd_anon_write on:
修改sebool中allow_ftpd_anon_write的值爲on
u 重啓服務
l 測試
u 創建測試文件
u 測試
匿名用戶需要上傳在pub目錄下
Ø 實名用戶上傳
l 配置
u 還原設置
n 還原配置文件
將anonymous_enable=YES註釋
將anon_upload_enable=YES與anon_mkdir_write_enable=YES註釋
n 還原sebool值
u 設置sebool值
u 設置用戶根目錄權限
將用戶主目錄/var/ftp/pub/zwb改成777的權限
u 重啓服務
l 測試
9) 更改默認共享目錄
Ø 配置
l 還原設置
l 修改配置文件
l 重啓服務
l 創建實名用戶根目錄
l 修改目錄類型
Ø 測試
l 創建文件
l 測試
實名用戶登錄後ls可以看到文件A,證明在/home/zwb文件目錄下,或者可以使用pwd命令,查看當前所在目錄
匿名用戶ftp登錄後,ls可以看到文件B,證明在/home文件目錄下