詳解Linux搭建vsftp服務器通過三種方式實現文件傳輸
FTP(File Transfer Protocol)中文稱為“文件傳輸協議”。用於Internet上的控制文件的雙向傳輸。
工作原理
一、主動模式:
1、客戶端通過用戶名和密碼登錄服務器端,登錄的是21端口(服務器端主動開啟的)。
2、服務器端通過21端口接收到客戶端的訪問,驗證用戶名和密碼。
3、 登陸成功,客戶端會隨機開啟一個1024以上的端口,在端口上會傳遞一個叫port的命令,通過命令告知服務器,打開端口,向客戶端傳遞數據。(順便的會將隨機端口號告知服務器)
4、服務器接收之後查看端口為port,服務器端就會開啟本機的20端口。然後向客戶端的隨機端口發送數據。
二、被動模式:
1、客戶端通過用戶名和密碼登錄服務器端,登錄的是21端口。
3、服務器端會開啟一個1024以上隨機端口。
4、服務器端會把隨機端口的號發送給客戶端,客戶端通過自己本機的隨機端口向服務器端傳遞數據。
主被動之間比較
主動模式中:管理員只能控制服務器端,不能控制客戶端,客戶端不在管理員的控制範圍,對方的防火墻有可能造成連接中斷。
被動模式中:雖然開啟的是隨機端口,但是服務器端在管理員的控制當中,只要把隨機端口指定清楚,在服務器的防火墻通過這些訪問,從而不會造成ftp連接中斷。
問題:被動模式中隨機開啟的端口範圍太多!!!
解決:服務器端可以修改配置文件將隨機開打的端口壓成10個或100個,在服務器端防火墻中把這針對100個隨機端口的訪問打開,ftp就可以正常訪問。
關於端口
FTP連接端口(主動模式中)
控制連接:TCP 21,用於發送FTP命令信息
數據連接:TCP 20,用於上傳、下載數據
FTP訪問方式
1、匿名用戶:anonymous或ftp
2、本地用戶:使用Linux系統用戶和密碼
3、虛擬用戶:管理員自定義的模擬用戶
實驗環境
- 系統環境:centos6.5、windows7
- Server端IP地址:192.168.1.77(Linux)
- Client端IP地址:192.168.1.10(windows7)
- yum掛載目錄:/mnt/sr0
- 使用的rpm包:vsftpd-2.2.2-11.el6_4.1.x86_64.rpm (主包)
搭建步驟
一、使用匿名用戶方式進行訪問
1、關閉iptables以及selinux
[root@redhat6 ~]# chkconfig iptables off
[root@redhat6 ~]# vim /etc/sysconfig/selinux
2、Server端安裝Vsftp服務rpm包
[root@redhat6 ~]# cd /mnt/sr0/Packages/
[root@redhat6 Packages]# rpm -ivh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
3、修改配置文件
[root@redhat6 ~]# cd /etc/vsftpd/
[root@redhat6 vsftpd]# vim vsftpd.conf
4、修改默認上傳目錄權限
[root@redhat6 ~]# chmod 777 /var/ftp/pub/ #一定要註意!!!不要對/var/ftp設置目錄權限,/var/ftp是ftp服務器站點,如果權限過大,意味著可以將整個站點進行刪除,登錄就會報錯。此時系統專門準備pub目錄進行權限設置。
5、上傳目錄寫入測試文件
[root@redhat6 ~]# echo "this is testFile" > /var/ftp/pub/test.txt
6、虛擬機訪問ftp實現下載
7、虛擬機訪問ftp實現上傳
8、查看上傳文件
[root@redhat6 ~]# cd /var/ftp/pub/
[root@redhat6 pub]# ll
二、使用本地用戶方式進行訪問_將用戶禁錮在指定目錄中
1、修改配置文件
[root@redhat6 ~]# cd /etc/vsftpd/
[root@redhat6 vsftpd]# vim vsftpd.conf
2、添加本地測試用戶
[root@redhat6 ~]# useradd zhangsan
[root@redhat6 ~]# passwd zhangsan
[root@redhat6 ~]# useradd lisi
[root@redhat6 ~]# passwd lisi
3、修改指定上傳目錄權限
[root@redhat6 ~]# chmod 777 /var/ftp/pub/ #之前已經改過了,但是還是要加深一下印象
4、用戶訪問
5、查看上傳文件
[root@redhat6 ~]# cd /var/ftp/pub/
[root@redhat6 pub]# ll
6、使用dos登錄查看用戶是否隨意切戶目錄
三、使用本地用戶方式進行訪問_啟用黑名單
1、修改配置文件
[root@redhat6 ~]# cd /etc/vsftpd/
[root@redhat6 vsftpd]# vim vsftpd.conf
2、修改用戶控制列表文件
[root@redhat6 ~]# cd /etc/vsftpd/
[root@redhat6 vsftpd]# echo "zhangsan" >> user_list #將zhangsan用戶添加至黑名單中
[root@redhat6 vsftpd]# cat user_list
[root@redhat6 ~]# /etc/init.d/vsftpd restart #重啟服務
3、訪問測試
四、使用虛擬用戶方式進行訪問
1、添加虛擬用戶口令文件
[root@redhat6 ~]# vim /etc/vsftpd/vuser.txt #創建虛擬用戶口令文件。可以叫任何名字,也可以放在任何地方。
2、生成虛擬用戶口令認證文件
[root@redhat6 ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
#將文本文檔轉變為認證的數據庫(通過用戶名、密碼文件生成一個數據庫)
-T:轉換;
-t:指定哈希算法;
-f:指定文件,生成 /etc/vsftpd/vuser.db數據文件。註意vuser.db是二進制文件。
3、編輯vsftpd的PAM認證文件
[root@redhat6 ~]# vim /etc/pam.d/vsftpd.vu #新建一個針對虛擬用戶pmd認證文件
4、建立本地映射用戶並設置宿主目錄權限
[root@redhat6 ~]# useradd -d /home/vfproot -s /sbin/nologin vuser #此用戶只做本地用戶對虛擬的映射
[root@redhat6 ~]# chmod 755 /home/vfproot/
5、修改配置文件
[root@redhat6 ~]# cd /etc/vsftpd/
[root@redhat6 vsftpd]# vim vsftpd.conf
6、重啟vsftpd服務,並測試
[root@redhat6 ~]# /etc/init.d/vsftpd restart
7、查看上傳文件
[root@redhat6 ~]# cd /home/vfproot/
[root@redhat6 vfproot]# ll
五、使用虛擬用戶方式進行訪問_為每一個用戶進行配置
1、修改配置文件
[root@redhat6 ~]# cd /etc/vsftpd/
[root@redhat6 vsftpd]# vim vsftpd.conf
2、手工創建目錄
[root@redhat6 ~]# mkdir /etc/vsftpd/vusers_dir
3、為"羅三炮"用戶建立配置文件
[root@redhat6 ~]# cd /etc/vsftpd/vusers_dir/
[root@redhat6 vusers_dir]# vim luosanpao #為"羅三炮"創建配置文件。註意!!!!必須要創建同名的配置文件
4、創建上傳目錄
[root@redhat6 ~]# mkdir /tmp/vluosanpao
[root@redhat6 ~]# chown vuser:vuser /tmp/vluosanpao/ #修改所有者、所屬組
5、重啟並測試
[root@redhat6 ~]# /etc/init.d/vsftpd restart
[root@redhat6 ~]# cd /tmp/vluosanpao/
[root@redhat6 vluosanpao]# ll
6、使用"展昭"虛擬用戶進行測試
詳解Linux搭建vsftp服務器通過三種方式實現文件傳輸