簡介linux
一、FTP是什麼?數據庫
FTP是文件傳輸協議(File Transfer Protocal)的簡寫,主要完成與遠程計算機的文件傳輸。vim
FTP存在服務器的概念,能夠理解爲文件服務器。也就存在權限的控制。然而權限的控制與SVN相似,除了受權帳號外,多了一種「匿名訪問」。匿名訪問也就是FTP服務器向公衆開放。一般匿名的權限較低,只能下載文件,不能上傳文件。centos
二、FTP工做原理是什麼?安全
FTP是一種CS架構,也就是客戶端與服務端的交互。客戶端與服務端之間利用TCP創建鏈接,默認端口爲21,客戶能夠從服務器上下載文件,也能夠把本地文件上傳至服務器。上傳與下載通常基於命令或者圖形工具可實現,命令方式就不用舉例,圖形化工具推薦 Transmit。服務器
三、FTP存在兩種工做模式架構
主要是針對數據鏈接而言的。 主動模式:服務端主動向服務端發送請求;被動模式:服務端等待着客戶端請求(也是默認的工做方式0)工具
服務器搭建測試
預習vsftpd工具ui
能夠利用很好的開源工具 vsftpd(very secure ftp daemon,很是安全的FTP守護進程),重要是免費!!!好比傳輸速度快、安全性高、以及支持虛擬用戶驗證等其它FTP服務程序不具有的功能。該工具其它特色需自行細品。
安全性高:可控制用戶權限、可經過chroot變動用戶的根目錄、基於GPL發佈的FTP服務器軟件,支持虛擬用戶模式登錄。
傳輸速度快:傳輸模式基於文本模式(ASCII)與二進制模式(Binary),都是以序列傳輸數據。
虛擬用戶模式搭建:(Linux系統)
一、安裝工具(通常可經過yum來下載軟件)
yum -y install vsftpd
安裝成功(可經過修改vsftpd.conf配置,使用匿名模式訪問完成簡單的ftp服務器)
二、建立對應虛擬用戶的根目錄,可自定義目錄地址。建立完以後須要對目錄變動爲虛擬用戶權限。這時候經過linux命令來實現
#建立目錄 mkdir \*\* # 添加用戶 useradd -s /sbin/nologin virtual
目錄變動全部者權限: (ps: . 變動全部者與組權限, -R 全部目錄當前目錄下的父子目錄)
chown virtual. /opt/ftp/ -R
三、建立虛擬用戶及其數據庫
a、虛擬用戶文本存在格式問題,奇數行爲用戶名,偶數行爲密碼。
#建立文本命令 touch fileName.txt vim filename.txt
b、虛擬用戶名數據庫關聯來生成對應的db文件
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
c、定義pam認證文件(注意:db=/etc/vsftpd/login 文件就是上面生成的login.db文件;省略後綴.db)
[root@VM-8-6-centos ~]# vim /etc/pam.d/ftp [root@VM-8-6-centos ~]# cat /etc/pam.d/ftp auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
四、配置vsftpd.conf 文件
#禁止匿名登陸FTP服務器 anonymous_enable=NO #容許本地用戶登陸FTP服務器 local_enable=YES #能夠上傳(全局控制) write_enable=NO #匿名用戶能夠上傳 anon_upload_enable=NO #匿名用戶能夠建目錄 anon_mkdir_write_enable=NO #匿名用戶修改刪除 anon_other_write_enable=NO #所有用戶被限制在主目錄 chroot_local_user=YES #2.3.5版本以後,若是用戶被限定在了其主目錄下,則該用戶的主目錄不能再具備寫權限了 ,需新增長下面這條配置 allow_writeable_chroot=YES #將全部用戶當作虛擬用戶guest guest_enable=YES #指定虛擬用戶,也就是將guest用戶映射到virtual用戶 guest_username=virtual #指定爲獨立服務 listen=YES #指定監聽的端口 listen_port=21 #開啓被動模式 pasv_enable=NO #FTP服務器公網IP pasv_address=106.55.172.70 #設置被動模式下,創建數據傳輸可以使用port範圍的最小值 pasv_min_port=10000 #設置被動模式下,創建數據傳輸可以使用port範圍的最大值 pasv_max_port=10088 #是否容許匿名用戶下載全局可讀的文件 anon_world_readable_only=NO #指定虛擬用戶配置文件的路徑 user_config_dir=/etc/vsftpd/vusers_dir
五、建立虛擬用戶目錄
須要在其 vusers_dir 穿件對應虛擬用戶的權限文件
以虛擬用戶名爲文件名。
drwxr-xr-x 3 root root 4096 1月 27 13:41 . drwxr-xr-x. 104 root root 12288 1月 26 14:23 .. -rw------- 1 root root 125 10月 14 00:10 ftpusers -rw------- 1 root root 361 10月 14 00:10 user_list -rw------- 1 root root 1200 1月 19 15:43 vsftpd.conf -rw------- 1 root root 5114 1月 19 11:14 vsftpd.conf.bak -rwxr--r-- 1 root root 338 10月 14 00:10 vsftpd_conf_migrate.sh -rw------- 1 root root 12288 1月 19 15:34 vuser.db #須要與配置文件 vsftpd.conf 對應 drwxr-xr-x 2 root root 4096 1月 19 15:41 vusers_dir -rw-r--r-- 1 root root 35 1月 19 15:33 vuser.txt [root@VM-8-6-centos vsftpd]# cd vusers_dir/ [root@VM-8-6-centos vusers_dir]# ls -al 總用量 20 drwxr-xr-x 2 root root 4096 1月 19 15:41 . drwxr-xr-x 3 root root 4096 1月 27 13:41 .. -rw-r--r-- 1 root root 163 1月 19 15:20 joey -rw-r--r-- 1 root root 164 1月 19 15:40 joeyTest -rw-r--r-- 1 root root 163 1月 19 15:41 joeyTest2 [root@VM-8-6-centos vusers_dir]# vim joey [root@VM-8-6-centos vusers_dir]# cat joey write_enable=YES anon_world_readable_only=no anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_umask=022 local_root=/var/ftp/pub
六、啓動vsftpd
serivce vsftpd start
完成以上操做基本ftp搭建完成,但還須要另一臺客戶端機器測試(需擁有lftp命令支持)
#經過yum安裝lftp命令 yum install lftp #lftp 帳戶名稱:密碼@服務端IP地址 端口號(默認爲21,非21端口需填寫) [root@localhost ~]# lftp joeyTest:joey123@127.0.0.1 lftp joeyTest@127.0.0.1:~> mkdir test3 mkdir 成功, 創建 `test3' lftp joeyTest@127.0.0.1:/>