Vsftpd+MySQL實現虛擬用戶驗證登錄

一、安裝所需要包和包組:

在數據庫服務器上安裝包:

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

在FTP服務器上安裝包pam_mysql 
centos7:無對應rpm包,需手動編譯安裝 
yum -y groupinstall “Development Tools” 
yum -y install mariadb-devel pam-devel vsftpd 
下載pam_mysql-0.7RC1.tar.gz 
ftp://172.16.0.1/pub/Sources/sources/pam/ 
tar xvfpam_mysql-0.7RC1.tar.gz 
cd pam_mysql-0.7RC1/ 
./configure –with-mysql=/usr –with-pam=/usr –with-pam-mods-dir=/lib64/security 
make 
make install

二、在數據庫服務器上創建虛擬用戶賬號

1.建立存儲虛擬用戶的數據庫,示例創建為vsftpd數據庫 
mysql> CREATE DATABASE vsftpd; 
mysql> SHOW DATABASES; 
ftp服務和mysql不在同一主機: 
mysql> GRANT SELECT ON vsftpd.* TO 
vsftpd@’172.16.%.%’ IDENTIFIED BY ‘magedu’; 
ftp服務和mysql在同一主機: 
mysql> GRANT SELECT ON vsftpd.* TO 
vsftpd@localhost IDENTIFIED BY ‘magedu’; 
mysql> GRANT SELECT ON vsftpd.* TO 
vsftpd@’127.0.0.1′ IDENTIFIED BY ‘magedu’; 
mysql> FLUSH PRIVILEGES;

2.準備相關表 
mysql> USE vsftpd; 
Mysql> SHOW TABLES; 
mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL); 
mysql>DESC users; 

mysql -uvsftpd -h 172.16.200.200 -pmagedu 

mysql> SHOW DATABASES;

3.添加測試的虛擬用戶 
根據需要添加所需要的用戶,為了安全應該使用PASSWORD函數加密其密碼后存儲 
mysql>DESC users; 
mysql> INSERT INTO users(name,password) values(‘wang’,password(‘magedu’)); 
mysql> INSERT INTO users(name,password) values(‘mage’,password(‘magedu’)); 
mysql> SELECT * FROM users;

三、在FTP服務器上配置vsftpd服務

1.在FTP服務器上建立pam認證所需文件 

vi /etc/pam.d/vsftpd.mysql 

添加如下兩行 
auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
注意:參考README文檔,選擇正確的加密方式crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函數加密,3表示md5加密,4表示sha1加密 
配置字段說明 
auth 表示認證 
account 驗證賬號密碼正常使用 
required 表示認證要通過 
pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕對路徑;后面為給此模塊傳遞的參數 
user=vsftpd為登錄mysql的用戶 
passwd=mageedu 登錄mysql的的密碼 
host=localhost 在mysql中定義的允許連接的主機名或ip地址 
db=vsftpd 連接msyql的哪一個庫 
table=users 連接庫里的哪一個表 
usercolumn=name 當做用戶名的字段 
passwdcolumn=password 當做用戶名字段的密碼 
crypt=2 密碼的加密方式為mysql password()函數加密

2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證 
建立虛擬用戶映射的系統用戶及對應的目錄 
useradd -s /sbin/nologin -d /var/ftproot vuser 
chmod 555 /var/ftproot centos7 需除去ftp根目錄的寫權限 
mkdir /var/ftproot/{upload,pub} 
setfacl –m u:vuser:rwx /var/ftproot/upload 
確保/etc/vsftpd.conf中已經啟用了以下選項 
anonymous_enable=YES 
添加下面兩項 
guest_enable=YES 
guest_username=vuser 
修改下面一項,原系統用戶無法登錄 
pam_service_name=vsftpd.mysql

四、啟動vsftpd服務

service vsftpd start;systemctl start vsftpd 
chkconfig vsftpd on;systemctl enable vsftpd 
查看端口開啟情況 
netstat -tnlp |grep :21

五、Selinux相關設置:在FTP服務器上執行

restorecon -R /lib64/security 
setsebool -P ftpd_connect_db 1 
setsebool -P ftp_home_dir 1 
chcon -R -t public_content_rw_t /var/ftproot/

六、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果

tail /var/log/secure

七、在FTP服務器上配置虛擬用戶具有不同的訪問權限

vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可

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

vim /etc/vsftpd/vsftpd.conf 

添加如下選項 
user_config_dir=/etc/vsftpd/vusers_config

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

mkdir /etc/vsftpd/vusers_config/ 

cd /etc/vsftpd/vusers_config/ 

touch wangmage

3、配置虛擬用戶的訪問權限 
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。如果需要讓用戶wang具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下選項并設置為YES即可,只讀則設為NO 
注意:需確保對應的映射用戶對于文件系統有寫權限 
anon_upload_enable={YES|NO} 
anon_mkdir_write_enable={YES|NO} 
anon_other_write_enable={YES|NO}

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

(1)
sunhaosunhao
上一篇 2017-08-14 18:17
下一篇 2017-08-14 19:36

相關推薦

  • Find命令以及解壓與壓縮文件的相關指令

    1,find   實時查找,通過遍歷指定路徑完成文件的查找 查找路徑:指定具體目標路徑,默認為當前目錄 查找條件:指定的查找標準,可以文件名,大小,類型,權限等標準進行,默認為找出指定路徑下的所有文件 處理動作:對符合條件的文件做操作,默認輸出至屏幕 find -maxdepth level  最大搜索目錄深度 -mindept…

    2017-08-12
  • shell腳本進階

    一、流程控制 過程式編程語言:順序執行、選擇執行、循環執行 1.1 條件語句 1.1.1 if條件選擇語句  選擇執行: (注意: if 語句可嵌套) v  單分支:if  判斷條件;then           條件為真的分支代…

    Linux干貨 2016-11-27
  • 網絡基礎命令與配置文件地址

    centos6查看網卡dmesg | grep -i ethethtool -i eth0卸載網卡驅動modprobe -r e1000rmmod e1000裝載網卡驅動modprobe e1000網絡配置,靜態指定system-config-network-tui 字符界面式網絡配置ip addr add IP地址 via 網關IP地址動態分配在/etc/…

    2017-09-09
  • centos6啟動故障及修復

    前言 前文中我們熟悉了linux的啟動流程,如果在啟動過程中文件丟失或者損壞了怎么辦呢?難道只有重裝系統這一條路嗎?那我們不是成了普通網管了嗎?作為專業的運維工程師,我們需要掌握如何快速修復系統啟動。 實驗1: 破壞/boot/grup/下的文件——-stage2 階段  不影響啟動  mv /boot/grub …

    2017-09-03
  • 第七周學習總結–系統啟動流程

    寫在前面 作為一個理工科的你,我相信你一定給自己或者給別人裝過windows操作系統,作為windows操作系統都圖形化了,因此我們可能很難去了解中間都發生了什么。比如使用U盤安裝的時候,網上一大堆某某某U盤制作系統工具,按照網上的教程,制作完成以后,就可以在要裝系統的電腦上點擊電源鍵狂按F12(不同的電腦可能不同)進入BIOS設置了,然后就等著使用了。作為…

    2018-01-14
  • Linux文件管理

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示。 Linux上的文件管理命令   目錄管理類命令:mkdir,rmdir    mkdir [OPTION]… DIRECTORY…     -p: 自…

    Linux干貨 2016-09-26
欧美性久久久久