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的日誌文件 |
以#號開頭的為註釋,這裡把非配置參數註釋都去掉了 Ø 參數含義
參數 | 含義 |
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 | 是否允許下載 |
代碼 | 含義 | 代碼 | 含義 |
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 | 未執行請求的的命令,名稱不正確 |
將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行
除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 修改配置文件
l 重啟服務 l 創建實名用戶根目錄 l 修改目錄類型 Ø 測試 l 創建文件 l 測試 實名用戶登錄后ls可以看到文件A,證明在/home/zwb文件目錄下,或者可以使用pwd命令,查看當前所在目錄 匿名用戶ftp登錄后,ls可以看到文件B,證明在/home文件目錄下
[火星人 ] Linux下的Vsftpd配置篇已經有593次圍觀