FTP服務-實現vsftpd虛擬用戶

来源:https://www.cnblogs.com/xsuid/archive/2018/08/26/9537235.html
-Advertisement-
Play Games

前幾篇介紹了基礎,這篇將具體實現幾個案例 實現基於文件驗證的vsftpd虛擬用戶,每個用戶獨立一個文件夾 1、創建用戶資料庫文件 備註:文件內容格式為奇數行為用戶名,偶數行為密碼 2、設置許可權與編譯此文件 備註:修改許可權是為了安全 3、創建linux用戶和ftp目錄(這個賬號將來虛擬賬號映射成它) ...


前幾篇介紹了基礎,這篇將具體實現幾個案例

 

實現基於文件驗證的vsftpd虛擬用戶,每個用戶獨立一個文件夾

1、創建用戶資料庫文件

vim /etc/vsftpd/vusers.txt
qq
centos
momo
centos

備註:文件內容格式為奇數行為用戶名,偶數行為密碼

2、設置許可權與編譯此文件

cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db ##編譯文件
chmod 600 vusers.db 

備註:修改許可權是為了安全

3、創建linux用戶和ftp目錄(這個賬號將來虛擬賬號映射成它)

useradd -s /sbin/nologin vftpuser
chmod 555 /home/vftpuser/  ###把用戶家目錄的寫許可權去掉

備註:映射賬號對根要沒有寫許可權

mkdir upload  ##創建上傳用的文件夾
chown vftpuser upload/  

備註:把這個文件夾的所屬人改為vftpuser用戶,次用戶雖然對 /home/vftpuser/ 就也是根,沒有寫許可權,但是對根下的目錄有寫許可權。

把匿名寫許可權打開

clipboard

4、修改pam配置文件

vim /etc/pam.d/vusers.db  #這個名字叫什麼都可

auth required pam_userdb.so db=/etc/vsftpd/vusers  

註意:這個vusers名字一定要和第二步中創建的xxxx.db名字一樣

account required pam_userdb.so db=/etc/vsftpd/vusers

5、讓主配置文件知道你要用自己修改的pam模塊

clipboard

備註:放在vusers.txt裡面的就是合法用戶,可以登陸

6、把所有系統賬號映射成我們創建的vftpuser賬號,並關閉linux系統賬號登陸

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

 

7、虛擬用戶建立獨立的配置文件

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vftpuser.d/

 

創建上面這個文件夾創建出來

mkdir /etc/vsftpd/vftpuser.d/

在這個文件夾目錄下創建針對虛擬用戶的配置

[root@centos7_77 vftpuser.d]# cat > qq
anon_upload_enable=YES
anon_mkdir_write_enable=YES      
備註:意思是說虛擬用戶qq有匿名寫許可權

 

8、讓兩個虛擬用戶進來時看到的文件夾不一樣

vim /etc/vsftpd/vftpuser.d/qq

local_root=/data/qq

備註:要是這個文件夾不存在就創建

mkdir /data/qq

備註:在qq目錄下創建個文件用於測試

touch /data/qq/qq.txt

重啟,測試

clipboard

備註:想要增加用戶,在vusers.txt文件中寫入,再生成db文件

 

實現:基於MYSQL驗證的vsftpd虛擬用戶

說明:本實驗在兩台CentOS主機上實現,一臺做為FTP伺服器,一臺做資料庫伺服器

一、安裝所需要包和包組

在資料庫伺服器上安裝包:

Centos7:在資料庫伺服器上安裝

yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb

Centos6:在資料庫伺服器上安裝

yum –y install mysql-server

 

在FTP伺服器上安裝vsftpd和pam_mysql包

centos6:pam_mysql由epel6的源中提供

yum install vsftpd pam_mysql

centos7:無對應rpm包,需手動編譯安裝

yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd

下載pam_mysql-0.7RC1.tar.gz

https://sourceforge.net/projects/pam-mysql/

 

1、解壓縮pam模塊

[root@centos7_77 ~]# tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

2、編譯

[root@centos7_77 pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

備註:這樣需要註意指定的位置,mysql

 

現在還沒有pam_mysql.so

clipboard

開始make

[root@centos7_77 pam_mysql-0.7RC1]# make && make install

clipboard

3、創建資料庫和表

1)創建ftpdb資料庫

MariaDB [(none)]> create database ftpdb;

2)授權一個用戶可以連這個資料庫(有讀許可權就行)

MariaDB [(none)]> grant select on ftpdb.* to vsftpd@'localhost' identified by 'centos';

3)創建一個表

MariaDB [ftpdb]> create table users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );

4)往表裡增加虛擬用戶

MariaDB [ftpdb]> INSERT INTO users(name,password) values('gg',password('centos'));

MariaDB [ftpdb]> INSERT INTO users(name,password) values('mm',password('centos'));

clipboard

3、準備一個pam配置文件(在FTP伺服器上建立pam認證所需文件)

cd /etc/pam.d/
vim vsftpd.mysql

auth required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=password
 crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passw
ord crypt=2

 

備註:

配置欄位說明

• auth 表示認證

• account 驗證賬號密碼正常使用

• required 表示認證要通過

• pam_mysql.so模塊是預設的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕

對路徑;後面為給此模塊傳遞的參數

• user=vsftpd為登錄mysql的用戶

• passwd=magedu 登錄mysql的的密碼

• host=mysqlserver mysql伺服器的主機名或ip地址

• db=vsftpd 指定連接msyql的資料庫名稱

• table=users 指定連接資料庫中的表名

• usercolumn=name 當做用戶名的欄位

• passwdcolumn=password 當做用戶名欄位的密碼

• crypt=2 密碼的加密方式為mysql password()函數加密

 

4、讓ftp伺服器知道調用我們配置的pam模塊配置文件

vim /etc/vsftpd/vsftpd.conf

clipboard

5、映射為系統賬號vftpuser

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

備註:意思說,啟動guest用戶,系統用戶映射為guest用戶,而guest用戶是vftpuser,

別忘了去掉此用戶的家目錄的讀W許可權

6、讓登陸的賬號許可權不一樣(針對每個用戶都有自己的配置文件)

指定用戶存放配置的文件夾

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vftpuser.d
cd /etc/vsftpd/vftpuser.d
[root@centos7_77 vftpuser.d]# cat > mm
local_root=/data/mm
cat > gg
local_root=/data/gg

備註:要想gg mm 充當虛擬用戶的根必須沒有寫許可權

[root@centos7_77 data]# chmod a=rx mm
[root@centos7_77 data]# chmod a=rx gg
再gg、mm目錄下創建個文件好測試
[root@centos7_77 gg]# touch gg.txt
[root@centos7_77 mm]# touch mm.txt

重啟

測試

clipboard

clipboard

備註:要想讓gg用戶有寫許可權,在/etc/vsftpd/vftpuser.d/gg文件中加入

anon_upload_enable=YES

anon_mkdir_write_enable=YES

還要對/data/gg這個目錄要有寫許可權

setfacl -m u:vftpuser:rwx /data/gg


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

-Advertisement-
Play Games
更多相關文章
  • Asp.Net MVC EF之二:原生EF插入,更新數據的正確方法,EF更新數據將之前修改的欄位也還原了 ...
  • 實驗說明: 雲計算的發展使得桌面上雲,windows 10就必不可少,這一章就如何製作QCOW2鏡像文件並優化進行說明。 實驗環境: 宿主機系統 :Fedora 28 WorkStation 虛擬機管理器 :Virt-Manager 1.5.1 虛擬機配置 :Windows10 1709 virbr ...
  • 關於進程 Process what is process ? 什麼是進程 process life cycle 進程的生命周期 process states 進程狀態 什麼是進程? 進程是已啟動的可執行程式的運行實例,進程有以下組成部分: • 已分配記憶體的地址空間; • 安全屬性,包括所有權憑據和特 ...
  • 一、簡介 當下有許多的運維自動化工具( 配置管理 ),例如:Ansible、SaltStack、Puppet、Fabric 等。 Ansible 一種集成 IT 系統的配置管理、應用部署、執行特定任務的開源平臺,是 AnsibleWorks 公司名下的項目,該公司由 Cobbler 及 Func 的 ...
  • 文件管理 創建、複製、刪除、移動、查看、編輯、壓縮、查找 一、Linux目錄結構 Windows: 以多根的方式組織文件 C:\ D:\ E:\Linux: 以單根的方式組織文件 / /目錄結構: FSH (Filesystem Hierarchy Standard) 註:下圖為Centos7目錄結 ...
  • 整體環境配置 整體環境的配置,如果一個一個 Dockerfile 去寫,那麼是相當麻煩的,好在 Docker 有一個名為 Docker-Compose 的工具提供,我們可以使用它一次性完成整體環境的配置: 首先我們看看 docker-compose.yml 配置文件的內容:version: "3"s ...
  • if else判斷語句 if語句 語法格式1: 語法格式2: 常用於終端命令提示符中 if else語句 語法格式: if else-if else語句 語法格式: for迴圈語句 語法格式1: 語法格式2: 常用於終端命令提示符中 for死迴圈 語法格式: while迴圈語句 用於不斷執行一系列命 ...
  • 第1章 sed基礎 1.1 sed的選項 stream editor 流編輯器 -r 支持擴展正則 -n 取消預設輸出 -i 直接修改不輸出到桌面 -i.bak 備份 1.2 sed的書寫格式 sed '條件命令' sed 'pattern命令' sed '模式命令' 1.3 sed命令執行過程 1 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...