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
下一篇 2016-09-19

相關推薦

  • tcp socket文件句柄泄漏

    今天發現有臺redis機器上出現socket個數告警,這是很奇怪的現象。因為一臺redis服務器上就部署了幾個redis實例,打開的端口應該是有限。 1、netstat顯示的tcp連接數正常 netstat -n | awk '/^tcp/ {++state[$NF]} END …

    Linux干貨 2016-04-13
  • 壓縮和歸檔——釋放你的磁盤空間

    壓縮和解壓縮工具 壓縮比:文件壓縮比就是指文件經過壓縮后的文件大小與源文件大小的一個比差,經過壓縮工具包可以把文件壓縮 壓縮的目的:      時間換空間      CPU時間換硬盤的空間 壓縮工具: compress/uncompress 以.Z作為文件后綴 gzip/gunz…

    Linux干貨 2016-08-18
  • Ansible應用介紹

    Ansible 簡介 ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。這個工具的目標有這么幾項:自動化部署APP;自動化管理配置項;自動化的持續交互;自動化的(AWS)云服務管理。所有的這幾個目標從本質上來說都是在一個臺或者幾臺服務器上,執行一系列的命令而已。通俗的說…

    Linux干貨 2015-07-03
  • Linux Zabbix監控

                           Linux Zabbix監控 zabbix監控系統:    zabbix是基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。zab…

    Linux干貨 2016-11-19
  • 馬哥教育網絡班21期+第14周課程練習

    iptables關鍵點 表:filter(過濾,防火墻);nat(網絡地址轉換);mangle(拆解報文,做出修改,封裝報文);raw(關閉nat表啟用的鏈接追蹤機制);上述是根據功能來區分的,寫規則要明白要實現的功能 鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 數據流向:流入PREROUTING–…

    Linux干貨 2016-08-26
  • LVS實際操作與調度方法

    LVS概念、類型、調度方法、命令操作與實際配置 字數2134 閱讀4 評論0 喜歡1 LVS (一)LVS概念 LVS( Linux Virtual Server)是一種負載均衡(LB,Laod Balance)技術,采用IP負載均衡技術和基于內容請求分發技術。具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行。LVS是一套…

    Linux干貨 2016-10-30
欧美性久久久久