實現FTP基於MYSQL虛擬用戶認證

兩臺主機實現:一臺做爲ftp服務器,一臺做爲mysql服務器    
    host1 : 192.168.1.107     vsftpd    pam_mysql.so    
    host2 : 192.168.1.109     mariadb  mariadb-server

一.準備數據庫

1.安裝數據庫並啓動mysql

~]# yum install mariadb  mariadb-server -y   
        ~]# systemctl start mariadb

2.建立vsftpd服務的虛擬數據庫及用戶列表

1)建立vsftp的數據庫
                    [none]> create database vsftpd;
                    [none]>use vsftpd     
              2)建立vsftp虛擬用戶表
                    [none]>create table vuser;    
                    [none]>create table vuser (id int auto_increment primary key,username char(30),password char(50) binary);     
              3)將虛擬用戶的用戶名及密碼填入表中
                    [none]>insert into vuser(username,password)values('user1',password('centos')),('user2',password('linux'));    
              4)建立並受權用戶,做爲vsftp服務器鏈接數據庫服務的受權用戶
                    [none]>grant select on vsftpd.vuser to vsftpd@'192.168.1.107' identified by 'centos';

二.vsftp服務器端準備

1.編譯安裝模塊驅動pam_mysql.so

1) 準備編譯環境所須要的包
                     ~]# yum install gcc gcc-c+ pam-devel mariadb-devel
                 2) 將驅動源碼文件解壓 
                     ~]# tar xvf /data/tools/pam_mysql-0.7RC1.tar.gz   /data/tools
                 3) 進入模塊驅動源碼解壓後的文件夾  
                     ~]# cd /data/tools/pam_mysql-0.7RC1   
                 4) 將模塊驅動安裝到正確的 路徑下/lib64/security  
                     ~]#  ./configure  --with-pam-mods-dir=/lib64/security                                                                    
                  5) 進行編譯安裝
                     ~]#  make && make install

2.建立pam配置文件

~]#  vim /etc/pam.d/vsftpd.mysql      
    # 認證依賴於pam_mysql.so 模塊,其他爲鏈接數據庫受權的用戶、密碼等信息
    auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.1.109
    db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2    
    # accunt 驗證帳號必須是有效性,其中crypt=2 爲加密類型
     account required pam_mysql.so user=vsftpd passwd=centos host=192.168.1.109     
     db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2

3.修改vsftpd主配置文件,調用pam模塊配置

~]#  vim /etc/vsftpd/vsftpd.conf

                 pam_service_name=vsftpd.mysql #調用pam模塊
                 userlist_enable=YES
                 tcp_wrappers=YES

                 guest_enable=YES    #將全部用戶映射到guest用戶,並映射到其家目錄
                 guest_username=vuser  #guest命名爲vuser用戶
                 user_config_dir=/etc/vsftpd/vusers.d/  #虛擬用戶配置文件路徑

4.建立系統用戶指定其家目錄

~]# useradd -r -s /sbin/nologin/  -d /data/ftproot   vuser
             給系統用戶vuser設置權限,使的虛擬用戶和其餘用戶映射到vuser,有權限上傳文件或對文件增刪改的必要條件,還需知足vsftp配置才能實現
             ~]#  setfacl -m u:vuser:rwx /data/ftproot/upload

5.建立虛擬用戶配置文件,配置每一個用戶特定屬性

如:user1能夠上傳文件而user2不能夠上傳文件
             ~]# vim /etc/vsftpd/vusers.d/user1      
                        anon_upload_enable=YES   #容許上傳文件         
                        anon_mkdir_write_enable=YES  #容許建立文件夾
                        anon_other_write_enable=YES   #可刪除和可修改上傳的文件
                        local_root=/data/user1   #指定user1的家目錄

              ~]#vim /etc/vsftpd/vusers.d/user2
                         local_root=/data/user2  #指定user2的家目錄

三.啓動vsftp服務,實現mysql虛擬用戶認證

~]#  systemctl start vsftpd
相關文章
相關標籤/搜索