vsftp搭建

来源:https://www.cnblogs.com/henglinux/archive/2018/09/01/9571486.html
-Advertisement-
Play Games

FTP全名是File Transfer Protocol(文件傳輸協議) C/S架構 簡介: 下麵是關於FTP這個服務的屬性 (1)FTP服務相關軟體 IIS Serv-U Vsftpd proftpd pureftpd (2)FTP客戶端相關軟體 ftp命令 CuteFTP FlashFTP Le ...


FTP全名是File Transfer Protocol(文件傳輸協議) C/S架構

簡介:

下麵是關於FTP這個服務的屬性

1)FTP服務相關軟體

   IIS Serv-U Vsftpd proftpd pureftpd

2FTP客戶端相關軟體

   ftp命令 CuteFTP FlashFTP LeapFTP Filezilla gftp kuftp

3VSFTP的守護進程

   /usr/sbin/vsftpd

4FTP的啟動腳本

   /etc/init.d/vsftpd

5FTP的埠

   TCP協議的20,21埠與客戶端進行通信

      20用於建立數據連接,傳輸文件數據。(數據埠)

      21用於建立控制連接,並傳輸FTP控制命令。(命令埠)

 (6)用戶控制列表文件

/etc/vsftpd/ ftpusers  文件中的用戶禁止登錄FTP伺服器(黑名單)

/etc/vsftpd/ user_list 文件中的用戶可能被禁止或允許登錄FTP伺服器,具體看vsftpd.conf的設置

7)工作模式

      主動模式:

           客戶端想服務端21埠發送建立連接請求,需要傳輸數據時,客戶端會通過port命令告訴伺服器自己監聽的埠,伺服器會主動通過20埠與客戶端建立數據連接。

 

     

     被動模式

           客戶端想服務端21埠發送建立連接請求,需要傳輸數據時,

伺服器以pasv命令告訴客戶我打開了某個埠(非20埠),你來連接我,客戶端會像伺服器的非20埠建立數據連接

  

 8)根據傳輸文件是否進行字元轉換分為:

    文本模式(又稱為ASCII)以文本序列傳輸數據,用的較多

    二進位模式(又稱為Binary模式)以二進位序列傳輸數據

 

 

主配置文件

/etc/vsftpd/vsftpd.conf

 

 

 

搭建FTP服務:

  1、搭建yum倉庫

   1mount /dev/cdrom /mnt

   2cat /etc/yum.repos.d/rhel-debuginfo.repo

   [rhel-Server]

   name=Red Hat Enterprise Server

   baseurl=file:///mnt/Server

   enabled=1

   gpgcheck=0

   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

 

   2、安裝

      yum -y install vsftpd*

 

配置選項講解

實驗1

  1. 1.  創建測試文件
  2. 2.  匿名用戶ftp對/var/ftp/pub有寫入許可權
  3. 3.  允許匿名用戶瀏覽
  4. 4.  允許用戶(匿名,本地,虛擬)有上傳許可權
  5. 5.  允許匿名用戶有上傳許可權
  6. 6.  允許匿名用戶有上傳文件夾許可權
  7. 7.  禁止匿名用戶有刪除,覆蓋等許可權

 

(1)查看ftp的預設根路徑,預設是有一個pub目錄(預設的跟目錄),

    [root@Centos2 ~]# ls /var/ftp/

   pub

2)備份配置文件

cd /etc/vsftpd/vsftpd.confg

   cp vsftpd.conf vsftpd.bak

   vim vsftpd.conf

   內容如下

write_enable=YES

anon_umask=022

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=NO 是否允許匿名用戶有其他寫入權(改名,刪除,覆蓋)

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

3)啟動服務

   service vsftpd start

(4)改變根目錄的屬主,如果不改變的話,只能訪問,其他許可權不能生效。因為我們是以ftp用戶的身份訪問的,而pub預設的屬主屬組是root

   chown ftp /var/ftp/pub

 

驗證:

   在網路或是計算中輸入ftp地址:格式如下圖。

   我們會看到預設的pub目錄。

 

 

進入到pub目錄下,可以創建和上傳測試目錄了。如圖2

註意:(1)修改完配置之後需要重啟完服務才能生效

      2)還需要從新從客戶端登陸,否則修改後的配置看不到效果。

 

實驗2

  1.   創建測試帳號u1u2u3密碼都為“user”
  2.  允許本地用戶訪問
  3.  將許可權掩碼設為077
  4.   將本地帳號禁錮在宿主目錄中
  5.   只允許u1u2兩個用戶可以登錄

 

創建測試用戶,並且設置密碼

[root@crushlinux ~]# useradd u1

[root@crushlinux ~]# echo "user" |passwd --stdin u1

[root@crushlinux ~]# useradd u2

[root@crushlinux ~]# echo "user" |passwd --stdin u2

[root@crushlinux ~]# useradd u3

[root@crushlinux ~]# echo "user" |passwd --stdin u3

 

在配置文件中加入紅色部分內容

[root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

 

local_enable=YES

local_umask=077

chroot_local_user=YES

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=NO

tcp_wrappers=YES

 

 

 

將允許登陸的用戶加入到白名單中

 

vi /etc/vsftpd/user_list

u1

u2

 

service vsftpd restart

 

登陸驗證

   格式為:ftp://用戶名:密碼@ftpIP地址

 

 

登陸上預設是空白的,因為這是用戶的家目錄。

 

u3用戶登陸,會報錯誤(windows不同系統報錯不會完全一致):

 

 

實驗3

構建基於虛擬用戶的FTP服務

創建賬號數據

   1.建立虛擬FTP用戶的帳號資料庫文件

   2.創建FTP根目錄及虛擬用戶映射的系統用戶

   3.建立支持虛擬用戶的PAM認證文件

添加虛擬用戶支持

   4.在vsftpd.conf文件中添加支持配置

   5.為個別虛擬用戶建立獨立的配置文件

啟動服務並測試

   6.重新載入vsftpd配置

   7.使用虛擬FTP賬戶訪問測試

 

實驗部分

1.建立虛擬FTP用戶的帳號資料庫文件用到db_load工具先安裝軟體包

   rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm

   cd /etc/vsftpd/

2、創建虛擬用戶文件

   vim user

   a

   1

   b

   1

   c

   1

  

   基數行代表用戶名,偶數行代表密碼

 

通過db_load工具創建出Berkeley DB格式的資料庫文件

  

   db_load -T -t hash -f user user.db

  

 

    -f 指定數據原文件

   -T 允許非Berkeley DB的應用程式使用文本格式轉換的DB數據文件

   -t hash  讀取文件的基本方法

3、創建虛擬用戶對應的系統用戶

   useradd -s /sbin/nologin vu

4建立支持虛擬用戶的PAM認證文件

vi /etc/pam.d/vsftpd.vu

加入以下兩行

auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

對應剛纔生成user.db的文件

5、在vsftpd的配置文件中支持虛擬用戶

註意:在做虛擬用戶的時候,一定要去掉userlist_deny=NO

這個選項,否則會顯示用戶驗證失敗

vi /etc/vsftpd/vsftpd.conf

guest_enable=YES            啟用用戶映射功能

guest_username=vu     指定映射的系統用戶名稱

pam_service_name=vsftpd.vu   指定新的PAM認證文件

local_enable=YES

local_umask=077

chroot_local_user=YES  如果紅色3條配置沒有的話就會報錯:用戶身份驗證失敗

 

virtual_use_local_privs=YES

如果沒有這條配置的話上傳將會顯示錯誤.這條最重要

還要註意每行配值的末尾不要有空行,否則也會有報錯

 

 

 

6.為個別虛擬用戶建立獨立的配置文件

vi /etc/vsftpd/vsftpd.conf   加入下麵一行

user_config_dir=/etc/vsftpd/user_dir  用戶配置目錄支持

為用戶a、b建立獨立的配置目錄及文件 這一行也是必須有的

 

 mkdir /etc/vsftpd/user_dir

cd /etc/vsftpd/user_dir

vim a

local_root=/test   規定了a用戶的根目錄  註意:一定要把目錄的屬主改為虛擬用戶對應的系統用戶。

 

mkdir /test

 

預設就是所有許可權

 

 

總結:本地用戶和虛擬用戶不能同時登錄、因為認證方式只有一種

本地是pam_service_name =vsftpd

虛擬是pam_service_name =vsftpd.vu 

 

實驗4

1    修改vsftpd服務的監聽地址,埠

       1.1  IP為:192.168.200.129

        1.2  埠為:2121

2    使用vsftpd服務的被動模式

     2.1  下限埠為24500

     2.2  上限埠為24600

3    限制vsftpd服務的併發數,傳輸速度

      3.1  限制併發客戶連接最多200

      3.2  限制每個IP地址的連接數最多50

      3.3  限制匿名用戶傳輸速率為50KB/s

      3.4  限制本地用戶傳輸速率為200KB/s

[root@crushlinux ~]# netstat -naptu |grep "vsftpd"

[root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

listen=YES

listen_address=192.168.200.129

listen_port=2121

 

pasv_enable=YES

pasv_min_port=24500

pasv_max_port=24600

 

max_clients=200

max_per_ip=50

anon_max_rate=50000

local_max_rate=200000

 

[root@crushlinux ~]# service vsftpd restart

[root@crushlinux ~]# netstat -naptu |grep "vsftpd"

tcp        0      0 192.168.200.129:2121        0.0.0.0:*                   LISTEN      3552/vsftpd   

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 根據GUID+DateTime.Now.Ticks生產唯一訂單號 ...
  • 前言 昨天和一個技術比較好的前輩聊了聊,發現有的時候自己的學習方式有些問題,不知道有沒有和我一樣的越學習越感覺到知識的匱乏不過能認識到這個問題的同學們,也不要太心急路是一步一步走的飯是一口一口吃的認識到錯誤才能更高的改進錯誤,腳踏實地只要有上勁學習的心,終會有所成就。認識到自己薄弱的地方進行學習,要 ...
  • 一、字元串 通過string定義一個字元串,或者通過String類來創建對象。 通過new String() 創建有一下幾種構造函數(從元數據),以此順序創建string; // // 摘要: // 將 System.String 類的新實例初始化為由 Unicode 字元數組指示的值。 // // ...
  • 先新建一個過濾器ExceptionHandleErrorAttribute.cs 內容如下: 1 using System; 2 using System.Net; 3 using System.Web; 4 using System.Web.Mvc; 5 using ABBPMP.Utility. ...
  • Supervision,字面意思是監督,是父Actor發現子Actor有異常發生後,對子Actor產用保種策略處理的機制,如果父Actor不處理,則往上傳遞。 ...
  • touch 創建空文件(當然,你也可以使用echo >filename)ln 創建鏈接符號(快捷方式|引用):符號鏈接:ln –s硬鏈接:ln區別:符號鏈接產生了一個快捷方式,是對源文件的一個鏈接。硬鏈接是底層位元組的鏈接,簡單來說,相當於是一個文件,兩個文件名,占用同一塊扇區,好處是省空間,即便刪除... ...
  • 【原文】https://www.toutiao.com/i6593191234326495752/ 一、硬碟 硬碟最怕的是震動,大的震動會讓磁頭組件碰到碟片上,劃傷了可就壞大事了,修都不好修,最重要的是你的數據可就沒了——你的心血喲! 二、主板 主板最怕的是靜電和形變。靜電可能會弄壞BIOS晶元和數... ...
  • 一. Linux文件系統路徑說明 熟悉windows系統的,都知道文件路徑表示,如C:\User\rich\Documnets\test.doc。 在linux中目錄稱為虛擬目錄(virtual directory) 根目錄是root,根目錄下的目錄和文件會按照訪問它們的目錄路徑一一列出。如:/ho ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...