vsftpd+pam+MySQL—->實現虛擬用戶認證

一、安裝所需要程序

1、安裝vsftpd

yum -y install vsftpd

2、安裝MySQL

yum -y install  mysql-server mysql-devel pam_mysql

二、創建虛擬用戶賬號

1.準備數據庫及相關表 首先請確保mysql服務已經正常啟動。而后,按需要建立存儲虛擬用戶的數據庫即可,這里將其創建為vsftpd數據庫。

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to vsftpd@localhost identified by ' 
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by ' 
mysql> flush privileges;

mysql> use vsftpd;
mysql> create table users (
 id int AUTO_INCREMENT NOT NULL,
 name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
 primary key(id)
 );

2、添加測試的虛擬用戶

根據需要添加所需要的用戶,需要說明的是,這里將其密碼為了安全起見應該使用PASSWORD函數加密后存儲。

mysql> insert into users(name,password) values('magedu1',password('magedu'));mysql> insert into users(name,password) values('magedu2',password('magedu'));

三、配置vsftpd

1.建立pam認證所需文件

#vi /etc/pam.d/vsftpd.mysql添加如下兩行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

2.修改vsftpd的配置文件,使其適應mysql認證

建立虛擬用戶映射的系統用戶及對應的目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod go+rx /var/ftproot

請確保/etc/vsftpd.conf中已經啟用了以下選項
anonymous_enable=NOlocal_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下選項
guest_enable=YES
guest_username=vuser

并確保pam_service_name選項的值如下所示
pam_service_name=vsftpd.mysql

四、啟動vsftpd服務

service vsftpd startchkconfig vsftpd on

查看端口開啟情況

netstat -tnlp |grep :21tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd

使用虛擬用戶登錄,驗正配置結果

ftp 10.0.0.2 
[root@localhost ~]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd 
257 "/"

[root@localhost ~]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pws 
?Invalid command
ftp> pwd 
257 "/"

五、配置虛擬用戶具有不同的訪問權限

1、配置vsftpd為虛擬用戶使用配置文件目錄

# vim vsftpd.conf添加如下選項
user_config_dir=/etc/vsftpd/vusers_config

2、創建所需要目錄,并為虛擬用戶提供配置文件

mkdir /etc/vsftpd/vusers_config/cd /etc/vsftpd/vusers_config/touch  magedu1 magedu2

3、配置虛擬用戶的訪問權限

修改/etc/vsftpd/vusers_config/ magedu1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
修改/etc/vsftpd/vusers_config/ magedu2
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

4、驗證結果

[root@localhost vusers_config]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls 
227 Entering Passive Mode (10,0,0,2,114,1).
150 Here comes the directory listing.
drwx------    2 500      500          4096 Sep 16 15:45 cd
226 Directory send OK.
ftp> mkdir ccd 
257 "/ccd" created
ftp> exit
221 Goodbye.

[root@localhost vusers_config]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir cd 
550 Permission denied.

原創文章,作者:N21_ Dominic,如若轉載,請注明出處:http://www.www58058.com/47042

(0)
N21_ DominicN21_ Dominic
上一篇 2016-09-19 13:48
下一篇 2016-09-19 13:48

相關推薦

  • 那些年我們一起追過的緩存寫法(二)

    原文出處: 蘑菇先生   上次主要討論緩存讀寫這塊各種代碼實現。本篇是就上次的問題接著來,繼續看那些年我們各種緩存用法。 一:緩存預熱 上次有同學問過。在第一次加載時,我們的緩存都為空,怎么進行預熱。 單機Web情況下,一般我們使用RunTimeCache。相對于這種情況下: 1:我們可以在啟動事件里面刷新 1 2 3 4 vo…

    Linux干貨 2015-03-04
  • linux用戶和組及其配置

    LINUX用戶和組概念及相關配置 1.   用戶 我們在使用linux過程中,最直觀的就是用戶。用戶就是我們要登錄、操作的那個人。系統驗證密碼的過程就是在驗證“你就是你”的過程。用戶分為管理員和普通用戶,計算機能識別的語言就是一堆的數字。你所看到的用戶名計算機也會把它轉化為數字,叫做ID號。管理員的ID為0,普通用戶分為兩種,一種是系統用…

    Linux干貨 2016-10-24
  • 正則表達式及文本處理

    正則表達式及文本處理 通俗點說,正則表達式就是處理字符串的方法,更加快速簡潔的代表各個要求參數,一般用于描述字符排列和匹配模式的一種語法規則,通過正則表達式一些特殊符號的輔助,讓用戶輕易的查找、刪除、替換一些字符串的處理程序。( ps:正則表達式和通配符不一樣,通配符代表的是bash接口的一個功能,但正則表達式是一種字符串處理的表達方式,兩者一定要分清楚。)…

    2017-06-11
  • Linux系統目錄結構

    root 管理員家目錄home 普通用戶家目錄bin 系統啟動和運行可能會用到的普通命令sbin 管理類命令proc 虛擬文件系統,由內核參數映射而來usr 系統軟件資源存放位置include 存放C/C++頭文件的目錄lib 庫文件lib64 64位系統庫文件tmp 臨時文件目錄boot 引導加載器所需文件,系統所需圖片保存于此etc 配置文件sys 虛擬…

    Linux干貨 2018-03-03
  • 進程管理之進程基礎及操作命令

    進程管理 今天我們開始講進程管理的相關知識,進程是學習LInux系統的重要一節內容,不僅能更幫助我們了解LInux系統的原理組成,又能方便我們在平常運維工作中的管理工作,幫助我們故障排查.希望大家牢固的掌握進程知識. 以下是我們分享的內容: 概論 進程控制 進程管理工具 概論 程序執行: 多道程序的執行分為順序執行和并發執行 程序順序執行時的特征: &nbs…

    Linux干貨 2016-09-07
  • Linux自動備份腳本

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1541163        今天網上一個朋友問了我一個shell的題目,讓我幫他做下。下面是題目以及解題思路。 題目:…

    Linux干貨 2016-08-15
欧美性久久久久