1. 程式人生 > >詳解Linux搭建vsftp服務器通過三種方式實現文件傳輸

詳解Linux搭建vsftp服務器通過三種方式實現文件傳輸

x86 sys fig passwd 問題: mage vpd cee 啟用

概述

FTP(File Transfer Protocol)中文稱為“文件傳輸協議”。用於Internet上的控制文件的雙向傳輸。

工作原理

一、主動模式:

技術分享圖片

1、客戶端通過用戶名和密碼登錄服務器端,登錄的是21端口(服務器端主動開啟的)。
2、服務器端通過21端口接收到客戶端的訪問,驗證用戶名和密碼。
3、 登陸成功,客戶端會隨機開啟一個1024以上的端口,在端口上會傳遞一個叫port的命令,通過命令告知服務器,打開端口,向客戶端傳遞數據。(順便的會將隨機端口號告知服務器)
4、服務器接收之後查看端口為port,服務器端就會開啟本機的20端口。然後向客戶端的隨機端口發送數據。

二、被動模式:

技術分享圖片

1、客戶端通過用戶名和密碼登錄服務器端,登錄的是21端口。

2、 登陸成功,客戶端會開啟PASV命令,通過PASV,告知服務器端,采用被動模式連接。
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服務器通過三種方式實現文件傳輸