FTP 是 File Transfer Protocol(文件傳輸協議)的英文簡稱,用於 Internet 上的文件的雙向傳輸。使用 FTP 來傳輸時,是具備必定程度的危險性, 由於數據在因特網上面是徹底沒有受到保護的明文傳輸方式!VSFTP是一個基於GPL發佈的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP, 從名稱定義上基本能夠看出,這是爲了解決 ftp 傳輸安全性問題的。數據庫
FTP 客戶端首先和服務器的 TCP 21 端口創建鏈接,用來發送命令,客戶端須要接收數據的時候在這個通道上發送 PORT 命令。PORT 命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端經過本身的 TCP 20 端口鏈接至客戶端的指定端口發送數據。vim
FTP 客戶端首先和服務器的 TCP 21 端口創建鏈接,用來創建控制通道發送命令,但創建鏈接後客戶端發送 Pasv 命令。 服務器收到 Pasv 命令後,打開一個臨時端口(端口大於 1023 小於 65535)而且通知客戶端鏈接這個端口進行傳送數據,客戶端進而鏈接 FTP 服務器的臨時端口進行數據傳輸。centos
Linux的紅帽發行版中VSFTP默認採用的是Binary模式,這樣能保證絕大多數文件傳輸後能正常使用 。
切換方式:在ftp>提示符下輸入ascii即轉換到ACSII方式,輸入bin,即轉換到Binary方式。安全
服務端軟件名:vsftpd 客戶端軟件名:ftp 服務名:vsftpd 端口號:20、2一、指定範圍內隨機端口 配置文件:/etc/vsftpd/vsftpd.conf
用戶帳號名稱:ftp或anonymous
用戶帳號密碼:無密碼
工做目錄:/var/ftp
默認權限:默承認下載不可上傳,上傳權限由兩部分組成(主配置文件和文件系統,配置文件中配置上傳權限,對該目錄具備寫權限。)服務器
用戶帳號名稱:本地用戶(/etc/passwd)
用戶帳號密碼:用戶密碼(/etc/shadow)
工做目錄:登陸用戶的宿主目錄
權限:最大權限(drwx------)測試
建立虛擬用戶用來代替本地用戶,減小本地用戶曝光率
使用本地用戶做爲虛擬用戶的映射用戶,爲虛擬用戶提供工做目錄和權限控制
可以設置嚴格的權限ui
匿名用戶相關配置參數操作系統
一、安裝服務 yum install vsftpd -y 二、匿名用戶相關配置 /etc/vsftpd/vsftpd.conf pasv_enable=YES #設置鏈接模式 pasv_min_port=3000 #隨機最小端口範圍 pasv_max_port=5000 #隨機最大端口範圍 anonymous_enable=YES #啓用匿名訪問 anon_umask=022 #匿名用戶所上傳文件的權限掩碼 anon_root=/var/ftp/anno #匿名用戶的 FTP 根目錄 anon_upload_enable=YES #容許上傳文件 anon_mkdir_write_enable=YES #容許建立目錄 anon_other_write_enable=YES #開放其餘寫入權(刪除、覆蓋、重命名) anon_max_rate=0 #限制最大傳輸速率(0 爲不限速,單位:bytes/秒) 三、實現文件上傳 a. 修改配置文件 anon_upload_enable=YES anon_root=/var/ftp b. 在/var/ftp/下建立上傳目錄 mkdir /var/ftp/anon c. 修改上傳目錄的權限或全部者,讓匿名用戶有寫入權限 chown ftp:ftp /var/ftp/anon d. 客戶機登陸 ftp> [root@centos ~]# ftp 100.100.100.103 Name (100.100.100.103:root): ftp 331 Please specify the password. Password: 230 Login successful. ftp> cd anon ftp> put install.log 28529 bytes sent in 0.0821 secs (347.54 Kbytes/sec) 四、實現建立目錄和文件其餘操做 添加以下配置。 anon_mkdir_write_enable=YES #容許建立目錄 anon_other_write_enable=YES #刪除文件、文件更名、文件覆蓋 五、進入到目錄彈出信息 在對應目錄下建立 .message 文件,並寫入相應內容 確認dirmessage_enable=YES 六、下載上傳的文件權限 默認狀況下開放上傳權限後,上傳的文件是沒法被下載的,由於文件的其餘人位置沒有r權限 anon_umask=022
本地用戶相關配置code
local_enable=YES #是否啓用本地系統用戶 local_umask=022 #本地用戶所上傳文件的權限掩碼 local_root=/var/ftp #設置本地用戶的 FTP 根目錄 默認在當前用戶的家目錄下 chroot_local_user=YES #只能本身的家目錄, chroot_list_enable=YES #開啓容許切換目錄用戶文件 chroot_list_file=/etc/vsftpd/chroot_list #寫入該文件中的用戶能夠隨意切換目錄 local_max_rate=0 #限制最大傳輸速率 ftpd_banner=Welcome to blah FTP service #用戶登陸時顯示的歡迎信息 userlist_enable=YES & userlist_deny=YES #禁止/etc/vsftpd/user_list 文件中出現的用戶名登陸 FTP (默認) userlist_enable=YES & userlist_deny=NO #僅容許/etc/vsftpd/user_list 文件中出現的用戶名登陸 FTP 配置文件:/etc/vsftpd/ftpusers /etc/vsftpd/ftpusers 文件中出現的用戶名登陸 FTP,權限比 user_list 更高,即時生效 a. useradd -s /sbin/nologin huahua #服務端須要建立用戶並設置密碼(所建立的用戶,不須要登陸操做系統,僅用來登陸VSFTP) b. passwd huahua #密碼 c. 客戶機登陸 [root@centos ~]# ftp 100.100.100.103 Connected to 100.100.100.103 (100.100.100.103). Name (100.100.100.103:root): huahua 331 Please specify the password. Password: 230 Login successful.
vim /etc/vsftpd/vsftpd.user(單數行用戶名,偶數密碼) zs 123456
二、將上一步創建的vsftpd.user文件轉成數據庫密碼文件進程
db_load -T -t hash -f vsftpd.user vsftpd.db chmod 600 vsftpd.db #修改權限,保證安全性
三、建立 FTP 虛擬用戶的映射用戶,並制定其用戶家目錄
useradd -d /var/ftp_virtual_root -s /sbin/nologin virtual
四、創建支持虛擬用戶的 PAM 認證文件,添加虛擬用戶支持
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam vim /etc/pam.d/vsftpd.pam(清空源文件內容,加入下面兩條) auth required pam_userdb.so db=/etc/vsftpd/vsftpd account required pam_userdb.so db=/etc/vsftpd/vsftpd 在 vsftpd.conf 文件中添加支持配置 修改: pam_service_name=vsftpd.pam 添加: guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/dir/ #指定用戶配置目錄
五、爲虛擬用戶創建獨立的配置文件,啓動服務並測試
a、修改配置文件,將主配置文件中自定義的匿名用戶相關設置註釋掉,防止主配置覆蓋用戶配置 cd dir/ vim zs anon_upload_enable=YES #用戶能夠上傳 anon_mkdir_write_enable=YES #容許建立目錄 用戶能夠修改文件名 anon_other_write_enable=YES #容許重名和刪除文件、覆蓋 b、給映射用戶的家目錄,設置讓虛擬用戶有讀權限 chmod a+r /var/ftp_virtual_root