2019年5月6日 星期一

centos7 架設 vsftpd (virtual user 使用 mysql)

接續上一篇的使用 db 檔案的方式,如果改用 mysql 儲存帳密,可調如下:

1. 安裝所需要的 pam_mysql.so
  可以從 source code 抓取 compile 安裝,或已經 build好的版本可以下載 :
  https://centos.pkgs.org/7/cheese-x86_64/pam_mysql-0.7-0.21.rc1.el7.x86_64.rpm.html

    wget http://www.nosuchhost.net/~cheese/fedora/packages/epel-7/x86_64//pam_mysql-0.7-0.21.rc1.el7.x86_64.rpm
    rpm -Uvh ./pam_mysql-0.7-0.21.rc1.el7.x86_64.rpm

2. 請先裝好 mysql (可參閱其他文章),並建立 db 提供使用。
  假定建立 DB vsftpd 及 下面的 accounts table,並 grant 權限給 vsftpd 這個帳號,
  使用密碼 42fdsFDE3$ :
  
  CREATE TABLE `accounts` (
    userid int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(30) DEFAULT NULL,
    `password` varchar(50) DEFAULT NULL,
    primary key(userid),
    unique key(username)
  ) ENGINE=MYISAM;

  grant all on vsftpd.* to 'vsftpd'@'localhost' IDENTIFIED BY '42fdsFDE3$';

  PS:千萬記住,密碼不要用到#,以免PAM設定檔中,#後面被當作註解。

3. 編輯 pam 檔 /etc/pam.d/vsftpd_dbuser

  #%PAM-1.0
  auth required pam_mysql.so user=vsftpd passwd=42fdsFDE3$ host=localhost db=vsftpd   table=accounts usercolumn=username passwdcolumn=pass crypt=3
  account required pam_mysql.so user=vsftpd passwd=42fdsFDE3$ host=localhost db=vsftpd   table=accounts usercolumn=username passwdcolumn=pass crypt=3

  其中的 crypt=3,是指定 table 中密碼的欄位使用 md5( )運算,
  所以 insert 資料時記得使用類似下面sample:
  
  insert into accounts (username, pass) values ('user1', md5('paswd1'))

4. 完成就可以重啟 vsftpd 了。


沒有留言:

張貼留言