1. 程式人生 > >Linux系統中ftp服務的使用

Linux系統中ftp服務的使用

ftp服務的簡介:

         FTP伺服器(File Transfer Protocol Server)是在網際網路上提供檔案儲存和訪問服務的計算機,它們依照FTP協議提供服務。 FTP是File Transfer Protocol(檔案傳輸協議)。顧名思義,就是專門用來傳輸檔案的協議。簡單地說,支援FTP協議的伺服器就是FTP伺服器。

         在FTP的使用當中,使用者經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"檔案就是從遠端主機拷貝檔案至自己的計算機上;"上傳"檔案就是將檔案從自己的計算機中拷貝至遠端主機上。用Internet語言來說,使用者可通過
客戶機
程式向(從)遠端主機上傳下載)檔案。

          使用FTP時必須首先登入,在遠端主機上獲得相應的許可權以後,方可上傳或下載檔案。也就是說,要想同哪一臺計算機傳送檔案,就必須具有哪一臺計算機的適當授權。換言之,除非有使用者ID和口令,否則便無法傳送檔案。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個使用者在每一臺主機上都擁有帳號。匿名FTP就是為解決這個問題而產生的。

@下面開始我們的實驗吧: 真機(172.25.254.148作為客戶端) 虛擬機器(ASUKA:172.25.254.48)作為服務端:

 1.首先對於服務端(ASUKA):進行相關操作:

檢視虛擬機器IP:172.25.254.48

檢視yum源是否配置成功:(進入yum源的目錄)

檢視yum原始檔內容:

可以發現為網路yum源:

安裝 vsftpd服務:

開啟vsftpd服務並使vsftpd服務開機自啟:

檢視防火牆狀態:

可以看到是開啟狀態(active)

fireware-cmd --list-all 檢視防火牆支援服務項:可以看到沒有vsftpd服務;需要我們新增它。

新增vsftpd服務:

永久加入ftp服務給防火牆服務支援項:

新增成功:

重新載入:

再次檢視可以發現ftp服務新增成功:

注:直接關閉防火牆也是可以的。

#然後檢視selinux的狀態(getenforce)

可以看到是Enforcing,這樣我們的ftp是沒能正常啟動的:

需要修改配置檔案:

改為disabled:

重啟系統才能生效:reboot:

可以看到生效了:

2.對客戶端:(真機)進行操作:

只需要安裝:lftp服務即可:(我們真機已經安裝過lftp服務了)

#開始使用ftp服務做實驗:

一些基本知識:

預設釋出的目錄: /var/ftp

協議介面:             FTP標準命令TCP埠號為21,Port方式資料埠為20

服務配置檔案:     /etc/vsftpd/vsftpd.conf

報錯id的解析:      500    @檔案系統許可權過大

                                   530    @使用者認證失敗

                                   550    @服務本身功能未開放

                                   553    @本地檔案系統許可權過小

開始實驗:

從客戶端訪問ftp伺服器(ASUKA):

@(匿名使用者訪問ftp伺服器)

當我們看到 pub檔案時表示訪問成功了!:

退出訪問輸入 quit

@客戶端利用『伺服器本地使用者』訪問ftp伺服器:

在服務端新建一個本地使用者kexin :

並給kexin設定一個密碼:

客戶端利用kexin訪問ftp伺服器:(可以看到以kexin登陸成功):

對伺服器kexin使用者進行操作:(進入使用者家目錄,編寫一個檔案

再次利用kexin進行訪問:(可以看到我們剛才編寫的hahaha檔案了):(相當於我們訪問了使用者的家目錄)

#對匿名使用者的管理:

編寫/etc/vsftpd/vsftpd.conf檔案:

內容為:

如果將第12行的anonymouss_enable=YES 改為=NO的話 匿名使用者就不可以訪問伺服器了:

ps:設定行號方便檢視: 用輸入:set nu即可

改為=NO

注:每次編寫完檔案需重啟vsftpd服務才能生效:

可以看到從客戶端我們已經無法用匿名使用者訪問伺服器了:

當然做完實驗 還原預設設定是一個很好的習慣!

@匿名使用者的上傳:(注:都得cd 進入pub 裡才進行上傳操作

上傳我們的/etc/passwd檔案到pub目錄 發現錯誤為550 服務未開啟。

編寫vsftpd檔案:

加入anon_upload_enable=YES:

重啟服務後,再次上傳可以發現:

報錯變為了553說明本地檔案系統許可權過小(需要我們給 /var/ftp/pub加許可權和更改組)

給服務端的/var/ftp/pub目錄加許可權,更改組:

現在再次上傳:(上傳成功了)

@對本地使用者:

編寫vsftpd檔案使本地使用者不能訪問:

改為NO

可以發現無法登入了:

@對匿名使用者:

家目錄的更改:

首先在服務端新建一個遞迴的根目錄 下的/jack/wu目錄

編寫vsftpd檔案進行家目錄的修改:

找一個空白的地方進行新增:

可以看到匿名使用者訪問後的家目錄變了:(變為我們設定的/jack了)

匿名使用者上傳檔案預設許可權修改:

編寫vsftpd服務檔案:

將022改稱011

匿名使用者可以下載服務端家目錄裡的檔案:

在服務端家目錄裡新建一個檔案:

用匿名使用者訪問下載這個檔案:加入第21行

在/jack/wu下 get wudipipiguo:

匿名使用者刪除檔案:

編寫vsftpd檔案:

以當時未修改的/var//ftp/pub 家目錄為例:我們刪除不掉檔案:

更改之後可以刪除:

匿名使用者設定最大上傳速率:

沒設定之前:

修改檔案後:

設定速率不超過102400k

可以看到速率明顯變慢了(迅雷下載軟體下載資源也是同理!)

匿名使用者最大連結數(最大可訪問人數):

max_clients=2      #設定最多兩個人可訪問那麼最後訪問的第三個人是訪問不上服務端的

想要訪問得等已經訪問的兩人中有人下線才可登陸!

匿名使用者使用的使用者身份修改:

編寫下面內容:

匿名使用者建立目錄:

更改之前無法建立目錄:

更改檔案:

再次建立目錄:(建立wudi目錄成功了)

@本地使用者 家目錄的修改:

local_root=/指定的目錄          #目錄底下需要有一個目錄!

新建一個/haha/nimei目錄

找一個空白行編寫:

可以看到效果:(家目錄變成了/haha,

 本地使用者限制登陸:

vim /etc/vsftpd/ftpusers   #編譯這個檔案

ftpusers是永久黑名單(限制性高)

加入kexin使用者:

可以發現kexin無法訪問了:

第二種方法:(臨時黑明但『限制性比永久黑名單低一些』)

vim    /etc/vsftpd/user_list           #臨時黑名單

當然作之前需要把永久黑名單裡的kexin釋放出去:

在臨時黑名單里加入kexin使用者:

@本地使用者白名單的設定:

userlist_deny=NO  #在配置檔案裡面修改填寫:
vim /etc/vssftpd/user_list  #加入你想要的使用者進入白名單 比如:本服務端的kexin使用者 
 #臨時黑名單就變為了白名單,
  而且不在白名單裡的使用者無法訪問伺服器了!

白名單裡沒有asuka使用者,有kexin使用者:

kexin可以訪問

asuka不可以訪問

但是,如果本地使用者同時出現在白名單和永久黑名單裡那使用者還是不能登陸的,因為永久黑名單優先順序高於》白名單(臨時黑名單)

當kexin出現在黑名單時:

可以看到kexin也無法訪問了:

##########虛擬使用者的管理##########

(1)建立虛擬使用者認證:

建立虛擬使用者的原因:系統使用者登陸ftp服務的同時也可以登入系統,這是不安全的,所以我們需要建立ftp的虛擬使用者,使這些使用者只能登陸訪問ftp服務;

虛擬使用者的建立方式:(在服務端ASUKA進行操作!)

在/etc/下編寫一個名為:/etc//vsftpd/loginusers的檔案:(當然名字是可以任意起的)

vim   /etc/vsftpd/loginusers

1.編寫新使用者名稱稱及密碼(eg:cool1 使用者, 密碼為123,編寫過程注不要用空格!

編寫完畢:

2.對編寫的檔案進行雜湊(hash)加密以保障安全性:

並且可以看到loginusers.db的檔案型別:

3.編輯策略檔案(驗證密碼與使用者是否一致的檔案):

/etc/pam.d 目錄下進行檔案編輯

內容如下:

其中required表示  account使用者名稱認證必須正確,否則登陸不了;

db=/etc/vsftpd/loginusers 後面預設會帶.db 不需要我們手動編譯!

4.編輯配置檔案:

vim  /etc/vsftpd/vsftpd.conf 

可以看到原來的配置檔案:(pam_service_name=vsftpd)

同時也可以看看vsftpd裡如何編寫的認證資訊:(vim vsftpd)

現在將它更改為(pam........=ftpauth)

並且加入guest_enable=YES

更改完畢退出儲存,並且重啟服務:

看看效果如何:

可以看到我們新建的虛擬使用者可以登陸ftp了

而且我們也可以發現更改完畢之後:除了虛擬使用者之外,匿名使用者還可以登陸,但是其他本地使用者不可以登陸了:

但還是可以指定虛擬使用者登陸身份的

(2)虛擬使用者登陸身份的指定:

在此我們新建一個使用者westos,並且在它的家目錄底下新建一個名為kobe的目錄:作為實驗背景!

1.將虛擬使用者指定身份設定為westos:(vim /etc/vsftpd/vsftpd.conf)

加入guest_username=westos

重啟服務:

再次用cool1,2,3虛擬使用者登陸ftp服務檢視效果:(如果可以看到westos家目錄底下的kobe目錄資訊說明試驗成功了)

初次登陸可以發現報錯500:(許可權過大)

2.修改許可權:

檢視家目錄許可權:(755

更改許可權為 555

chmod 555 /home/westos

更改完畢:

再次登陸發現問題解決了:(可以看到westos家目錄底下的kobe目錄)

(3)虛擬使用者家目錄的設定:

@新建一系列新目錄用來當作虛擬使用者家目錄:

@給目錄加上滿許可權(777)方便後續實驗操作:

@編輯配置檔案:

新增下面兩行:

注: $USER為C語言中的一個變數,輸入不同的值,輸出不同的結果

           129行表示:將shell中$USER的用法帶給ftp服務使用!

實驗:

可以看到試驗成功:

最後一項:

(4)虛擬帳號的獨立設定:

一般情況下我們建立的虛擬帳號擁有一樣的功能與權力(實際上虛擬使用者使用的就算匿名使用者的引數設定),當我們想讓不同的虛擬帳號之間權力不同時:

可以通過設定虛擬使用者的次配置檔案來實現:

@新建虛擬使用者的次配置目錄及次配置檔案:

@編輯配置檔案:

首先註釋掉匿名使用者上傳功能:(虛擬使用者可以用此引數):(註釋後虛擬使用者,匿名使用者都不可以上傳了)

其次:

新增131行給配置檔案:

@再編輯次配置檔案:

vim /etc/vsftpd/user_conf/cool1

注:(所有編寫檔案裡的數字僅代表行號,用set nu 來設定!從而方便我們檢視)

讓cool1虛擬使用者可以上傳其他cool2 cool3使用者不可以:

cool1可以上傳/etc/group檔案!

cool2, cool3使用者不可以上傳:(報錯550 服務未開啟!)

ftp服務的介紹到此結束!