搭建FTP-----實現基於mysql驗證的虛擬使用者

來源:互聯網
上載者:User

標籤:ftp   服務   mysql   

前言:

    在上一篇部落格中,我們已經實現了基於檔案認證的ftp服務,不過此方法也存在不少問題,比如過使用者資料不好管理呀,以明文儲存不安全呀。不能把使用者資料單獨存放在其他伺服器呀等等。所以此次我們把使用者資料放在mysql中,然後通過pam模組去mysql中找使用者資料來實現認證。主體的過程和上篇區別不大~那我們就開始把~

本文:

    此次,我們的環境是centos6,因為centos7中的pam_mysql模組得自己手動編譯,所以就先使用centos6,不過兩者區別也不大,而且編譯pam_mysql模組也不難。老規矩,第一步先安裝要使用到的程式:

yum install vsftpd mysql-server pam_mysql

此次我們依然使用系統的ftp使用者來作為虛擬使用者登入後的guest。當然,也可以自行建立新的使用者,此處就不再示範啦~在centos7中記住一點,使用者的家目錄,使用者不可以有寫入權限喲。好吧,我們先在mysql中建立認證需要的資料庫和表~先啟動mysql服務

#service mysqld start#mysql                    #用mysql命令以匿名的方式串連到資料庫#mysql>CREATE DATABASE vsftpd; #建立名為vsftpd的資料庫mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY ‘1234‘;  #給mysql使用者 vsftpd許可權,讓其有查詢許可權,且密碼為1234,因為我們的mysqld和vsftpd在同一伺服器,所以host填寫的是localhost,如果你們的mysql在單獨的伺服器就添伺服器的地址啦~mysql>FLUSH PRIVILEGES;   mysql>USE vsftpd;  #進入我們的資料庫,開始建立表啦~~mysql>CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50)BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);  #建立一個名為users的表,有三個欄位分別是id為整型,主鍵,並且可以自增,name欄位 是有50位的字串,不可為空,password欄位,因為我們還要對密碼進行加密處理,處理後的長度是48位,所以長度是48 且不可為空mysql> INSERT INTO users(name,password) values(‘xiaofengfeng‘,password(‘1234‘));mysql> INSERT INTO users(name,password) values(‘xiaofengfeng2‘,password(‘1234‘));#添加兩個使用者,密碼都為1234

好啦~我們用於驗證的資料庫這邊已經建立完畢,接下就開始配置ftp伺服器啦,和上篇部落格沒太大區別,主要就是用了不同的pam模組,此處用到的是pam_mysql.so模組,首先我們先修改ftp的設定檔,只列出修改過的配置哈~

#/etc/vsftpd/vsftpd.confanonymous_enable=NO               #進位匿名登入guest_enable=YES guest_username=ftp                 #所有登入的使用者在服務端都當作ftp使用者pam_service_name=vsftpd.mysql      #pam的設定檔在/etc/pam.d目錄下需要 自己建立

然後我們來建立pam模組需要的配置,在/etc/pam.d目錄下建立檔案vsftpd.mysql

#/etc/pam.d/vsftpd.mysqlauth required  pam_mysql.so user=vsftpd passwd=1234 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2account required  pam_mysql.so user=vsftpd passwd=1234 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2#此處用到pam_mysql.so模組,資料庫的使用者名稱為vsftpd 密碼為1234 因為mysql資料庫在本地所以host為localhost,如果在遠端就寫ip地址,資料庫名為 vsftpd 表名為users 且要是用的使用者名稱在name欄位,用到的密碼在password欄位,因為密碼欄位是用musql的password()函數加密的,標號為2的密碼編譯演算法可以就是與mysql的password()函數對應,所以此處crypt為2

還是老規矩,檢查selinux是否關閉,iptables是否允許存取ftp服務。如果沒有問題我們就可以用資料庫的兩個帳號登入了。如果需要哪個使用者有上傳資料的功能可以參考上篇部落格,建立單獨的使用者設定檔,開啟匿名上傳功能。特別要注意的一點是,能讓ftp使用者對/var/ftp/pub有寫入權限,可以用acl也可以直接開放所有許可權,或者建一個屬主為ftp的目錄upload專門用來讓使用者ftp上傳檔案。

本文出自 “機制小風風” 部落格,請務必保留此出處http://xiaofengfeng.blog.51cto.com/8193303/1885913

搭建FTP-----實現基於mysql驗證的虛擬使用者

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.