vsftp通過pam_mysql做虛擬用戶認證

vsftpd可以通過三種賬戶登錄系統:

  • 系統賬戶:系統本地賬戶登錄系統,默認進入的目錄是用戶家目錄,可以在所有有權限的路徑切換;

  • 匿名賬戶:匿名用戶登錄,然后映射為一個本地用戶;

  • 虛擬賬戶:既不是系統本地用戶也不是匿名用戶,而是通過pam做第三方認證的方法,支持文件和數據庫,ldap的認證,此處通過mysql進行實驗;

一、準備實驗環境

  1. 實驗在一臺虛擬機上進行,此虛擬機需要安裝vsftpd和mysql,此處采用的是centos7.3的系統。

    1. 安裝vsftpd和mariadb-server:

       yum install -y vsftpd mariadb-server
    2. 因為是通過pam_mysql進行用戶驗證,所以需要安裝pam_mysql模塊,但是默認系統yum源不提供,所以此處通過編譯安裝,此前需要先安裝如下環境:

       yum install -y mariadb-devel pam-devel  yum groupinstall -y "Develop Tools"
    3. 下載pam_mysql并進行編譯安裝,加壓縮之后切換到目錄內并執行如下命令:

       ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security make && make install

二、具體實驗配置

  1. 首先需要在vsftpd的配置文件編輯/etc/vsftpd/vsftpd.conf如下選項:

     #通過mysql驗證的文件路徑# pam_service_name=vsftpd.mysql #允許虛擬賬號登錄# guest_enable=YES #虛擬用戶映射為本地的ftp用戶# guest_username=ftp #系統用戶權限單獨配置文件路徑# user_config_dir=/etc/vsftpd/vusers_config/
  2. mysql數據庫創建數據庫和數據表,并插入值,并授權指定用戶對庫有訪問權限;

         mysql> CREATE DATABASE vsftpd;     mysql> CREATE TABLE users (         -> id INT AUTO_INCREMENT NOT NULL,         -> name CHAR(30) BINARY NOT NULL,         -> password CHAR(48) BINARY NOT NULL,         -> PRIMARY KEY (id)         -> );     mysql> INSERT INTO users (name,password) VALUES ('tom',password('1234567a'));     mysql> INSERT INTO users (name,password) VALUES ('cat',password('1234567a'));     mysql> GRANT select ON vsftpd.* TO vsftpd@'%' IDENTIFIED BY 'mageedu';     mysql> FLUSH PRIVILEGES;
  3. 創建步驟1指定的pam_service_name文件,路徑在必須在/etc/pam.d下:

     auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=192.168.11.137 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2  account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=192.168.11.137 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
  4. 在/etc/vsftpd/vusers_config/目錄下創建和tom,jerry同名的文件,指定權限,此處權限如下:

     #tom允許所有權限# anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES #jerry不允許創建目錄# non_upload_enable=YES anon_mkdir_write_enable=NO anon_other_write_enable=YES
  5. 通過ftp登錄,然后測試即可。

原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/77736

(0)
王子豪王子豪
上一篇 2017-06-07
下一篇 2017-06-07

相關推薦

  • CentOS7安裝Zabbix3.0版本應用

    一、Zabbix介紹        zabbix 簡介   Zabbix 是一個高度集成的網絡監控解決方案,可以提供企業級的開源分布式監控解決方案,由一個國外的團隊持續維護更新,軟件可以自由下載使用,運作團隊靠提供收費的技術支持贏利  &n…

    Linux干貨 2016-11-03
  • 用戶和組相關的配置文件總結

    包括:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/etc/login.defs,/etc/dufaults/useradd,/etc/skel/.*,/etc/gdm/custom.conf,   /etc/passwd 用戶信息庫文件;用于保存用戶賬號信息; 各字段含義依次為: 用戶名:用戶密…

    Linux干貨 2016-10-25
  • Linux-文件基本權限及特殊權限詳解

    Linux文件基本權限及特殊權限詳解 背景 Linux文件基本權限和特殊權限對于初學者很少煩惱,各種無法理解,所以在學到這一節時,將自己學到的以及自己的理解寫出來以檢查自己對這個部分的掌握情況。 什么是權限 在Linux里一切皆文件,所謂的權限就是用戶對文件(目錄也是以個文件)的操作范圍,對文件的操作包括讀、寫和執行,用戶對文件有不同的權限就能做相應的操作?!?/p>

    Linux干貨 2017-07-22
  • N25-第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;      在線的主機使用綠色顯示;      不在線的主使用紅色顯示; 2、如何給網絡接口配置多個地址,有哪些方式?     ifconfig eth#:# &n…

    Linux干貨 2017-02-01
  • Shell腳本編程

    shell腳本編程 Bash為用戶提供了編程環境 相對于計算機而言,只能識別二進制文件,因此其所運行的其實是二進制指令,而這些二進制指令我們稱之為機器語言,屬于低級語言;程序員編程所使用的語言為高級語言,是人們比較容易理解的語言;因此,程序的執行過程:先把源碼程序翻譯成機器語言(生成可執行的文件),然后解釋執行。程序( 程序=指令+數據 )的編程風格有兩種:…

    2017-04-14
  • 常用的MySQL數據庫備份

    常用的MySQL數據庫備份方式 前言 為什么需要備份數據? 數據的備份類型 MySQL備份數據的方式 備份需要考慮的問題 設計合適的備份策略 實戰演練 使用cp進行備份 使用mysqldump+復制BINARY LOG備份 使用lvm2快照備份數據 使用Xtrabackup備份 總結 前言 我們試著想一想, 在生產環境中什么最重要?如果我們服務器的硬件壞了可…

    2016-10-01
欧美性久久久久