搭建FTP服務器實現文件共享


搭建FTP服務器實現文件共享

 

VSFTP服務器概述

4.1.1  FTP服務概述:

FTP服務器(File Transfer Protocol Server)是在互聯網上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。

FTP(File Transfer Protocol: 文件傳輸協議)作用:Internet 上用來傳送文件的協議。

 

常見FTP服務器:

Windows:Serv-U 、FTP Server、filezilla_server

Linux:ProFTPD:(Professional FTP daemon)一個Unix平台上或是類Unix平台上(如Linux, FreeBSD等)的FTP服務器程序。

1.2  VSFTP

VSFTP是一個基於GPL發布的類Unix系統上使用的FTP服務器軟件,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全。

特點:

它是一個安全、高速、穩定的FTP服務器。

VSFTP模式: C/S 模式 

端口:

[root@K3 ~]# vim /etc/services    

FTP監聽的端口有兩個:

端口20:用於傳輸數據  

端口21:用於傳輸指令

FTP(File Service Protocol):文件服務協議。

1.3  工作流程(原理)分為兩種模式:

主動和被動模式:

FTP會話包含了兩個通道,控制通道和數據傳輸通道,FTP的工作有兩種模式,一種是主動模式,一種是被動模式,以FTP Server為參照,主動模式,服務器主動連接客戶端傳輸,被動模式,等待客戶的連接。

主動模式的工作原理:

FTP客戶端連接到FTP服務器的21號端口,發送用戶名和密碼,客戶端隨機開放一個端口(1024以上),發送PORT命令到FTP服務器,告知服務器客戶端采用主動模式並開放端口,FTP服務器收到PORT主動模式命令和端口后,通過服務器的20號端口和客戶端開放的端口連接,發送數據,原理如圖 4-2 所示,(無論是主動還是被動模式,首先的控制通道都是先建立起來,只是在數據傳輸模式上的區別)

 

 

 

 PASV是Passive的縮寫,中文成為被動模式,工作原理:FTP客戶端連接到FTP服務器所監聽的21號端口,發送用戶名和密碼,發送PASV命令到FTP服務器,服務器在本地隨機開放一個端口(1024以上),然后把開放的端口告知客戶端,而后客戶端再連接到服務器開放的端口進行數據傳輸

 

 

2.搭建匿名登錄FTP

 

服務器 IP 角色
k2 10.27.17.92 vsftp服務端
k3 10.27.17.93 客服端
k4 10.27.17.94 windows

 

2.1 安裝服務端

[root@k2 ~]# yum -y install vsftpd

 

2.2 安裝客戶端:

[root@xuegod64 ~]# yum install -y lftp                 #使用Yum安裝ftp客戶端。

lftp

注:從CentOS開始,系統鏡像中默認沒有ftp客戶端命令。取而代之的是lftp命令。

Linux客戶端:

lftp 是一個功能強大的下載工具,它支持訪問文件的協議: ftp、ftps、http、https、hftp、fish(其中ftps和https需要在編譯的時候包含openssl庫),llftp的界面非常類似一個Shell,有命令補全、歷史記錄、允許多個后台任務執行等功能,使用起來非常方便。它還有書簽、排隊、鏡像、斷點續傳、多進程下載、等功能

2.3  配置文件位置:

/etc/vsftpd/vsftpd.conf              #vsftpd 的核心配置文件。

/etc/vsftpd/ftpusers                   #用於指定哪些用戶不能訪問FTP 服務器,即黑名單。

/etc/vsftpd/user_list                   #指定允許使用VSFTP的用戶列表文件,即白名單。

 

首先請明確一點:ftpusers不受任何配制項的影響,它總是有效,它是一個黑名單!

而user_list則是和vsftpd.conf中的userlist_enable和userlist_deny兩個配置項緊密相關的,它可以有效,也可以無效,有效時它可以是一個黑名單,也可以是一個白名單!那么是什么的設置決定了它的作用呢?這就是問題二要解釋的。
  所以簡單總結就是:ftpusers和user_list沒有任何關系,ftpusers文件總是生效,user_list則取決於userlist_enable和userlist_deny兩項配置。

 

[root@k2  ~]# vim /etc/vsftpd/user_list          

 如果userlist_deny= YES(默認),絕不允許在這個文件中的用戶登錄ftp,甚至不提示輸入密碼。

2.4啟動服務

[root@k2 vsftpd]# systemctl start vsftpd           #啟動FTP服務。

[root@k2 vsftpd]# systemctl enable vsftpd #設置開啟自動啟動FTP服務。

[root@k2 ~]# netstat -antup | grep ftp              #查看FTP服務監聽的端口。

tcp    0     0 0.0.0.0:21          0.0.0.0:*          LISTEN       11725/vsftpd

2.5允許匿名用戶訪問

[root@xuegod63 vsftpd]# vim  /etc/vsftpd/vsftpd.conf      

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

允許匿名用戶上傳文件並可以創建目錄

但不能刪除,報500的錯

解決辦法是手動添加一行

[root@K2 vsftpd]# chown ftp.ftp /var/ftp/pub/               #修改FTP共享目錄屬主、

anon_other_write_enable=YES  

 

注:千萬不要和anon_mkdir_write_enable=YES這個挨着,換一個位置。

重啟FTP服務,使配置文件生效:

[root@k2 vsftpd]# systemctl restart vsftpd

2.6 測試一下:

 

 

 

 k3上測試

[root@k3 ~]# lftp 10.27.17.92
lftp 10.27.17.92:~> ls
drwxr-xr-x 3 14 50 26 Oct 09 03:07 pub
lftp 10.27.17.92:/> cd pub
lftp 10.27.17.92:/pub> ll
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 01:47 新文件夾
lftp 10.27.17.92:/pub> mkdir aa
mkdir ok, `aa' created
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 aa
drwx------ 2 14 50 6 Oct 09 01:47 新文件夾
lftp 10.27.17.92:/pub> mkdir bb cc
mkdir ok, 2 directories created
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 aa
drwx------ 2 14 50 6 Oct 09 03:08 bb
drwx------ 2 14 50 6 Oct 09 03:08 cc
drwx------ 2 14 50 6 Oct 09 01:47 新文件夾
lftp 10.27.17.92:/pub> rm -rf aa
rm ok, `aa' removed
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 bb
drwx------ 2 14 50 6 Oct 09 03:08 cc
drwx------ 2 14 50 6 Oct 09 01:47 新文件夾
lftp 10.27.17.92:/pub>

 

3、用戶名密碼方式訪問VSFTP

WEB服務器維護,FTP 給不同的部門賬號,進行相關目錄的維護

 設置兩個用戶,共享/var/www/html   ,用戶名kezi1,kezi2     

這兩個帳號的根目錄限制為/var/www/html,不能進入該目錄以外的任何目錄。

只允許:kezi1和kezi2兩用戶 可以上傳,vsftp禁止匿名。

3.1  建立用戶並設置密碼

[root@k2 vsftpd]# useradd -s /sbin/nogling kezi1
[root@k2 vsftpd]# useradd -s /sbin/nogling kezi2
[root@k2 vsftpd]# echo "123456"|passwd --stdin kezi1
Changing password for user kezi1.
passwd: all authentication tokens updated successfully.
[root@k2 vsftpd]# echo "123456"|passwd --stdin kezi2
Changing password for user kezi2.
passwd: all authentication tokens updated successfully.

3.2 配置vsftpd.conf 主配置文件並作相應修改

[root@k2 vsftpd]# vim vsftpd.conf

anonymous_enable=NO             #禁止匿名用戶登錄

local_enable=YES                 #允許本地用戶登錄

 

local_root=/var/www/html         #設置本地用戶的根目錄為/var/www/html 。

chroot_list_enable=YES               #激chroot 功能。

chroot_list_file=/etc/vsftpd/chroot_list            #設置鎖定用戶在根目錄中的列表文件。此文件存放要鎖定的用戶名。

allow_writeenable_chroot=YES              #允許鎖定的用戶有寫的權限。

3.3 建立/etc/vsftpd/chroot_list 文件,添加kezi1 和kezi2帳號

[root@k2 vsftpd]# touch /etc/vsftpd/chroot_list
[root@k2 vsftpd]# vim chroot_list

kezi1
kezi2

3.4 修改本地權限

[root@k2 vsftpd]# ll -d /var/www/html
drwxr-xr-x. 2 root root 24 Sep 27 15:28 /var/www/html
[root@k2 vsftpd]# chmod -R o+w /var/www/html/index.html
[root@k2 vsftpd]# ll -d /var/www/html
drwxr-xr-x. 2 root root 24 Sep 27 15:28 /var/www/html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM