實現讓vsftpd支持虛擬用戶和用mysql對用戶進行管理

 如何讓vsftpd支持虛擬用戶

(1).建立虛擬FTP用戶的帳號數據庫文件

建立虛擬用戶的賬戶名、密碼列表

 奇數行爲帳號名

 偶數行爲上一行中帳號的密碼

轉化爲Berkeley DB格式的數據文件

 db_load 轉換工具

 需安裝db4-utils軟件包

(2).創建FTP根目錄及虛擬用戶映射的系統用戶

此係統帳號就是ftp

虛擬用戶, 還是當前系統對應的某個用戶,所以要提供用於映射的用戶

(3).建立支持虛擬用戶的PAM認證文件

(4).vsftpd.conf文件中添加支持配置

   vsftpd支持虛擬用戶

以上四個步驟基本可以搞定

(5).爲個別虛擬用戶建立獨立的配置文件

(6).重新加載vsftpd配置

(7).使用虛擬FTP賬戶訪問測試

 

步驟如下:

(1)/etc/vsftpd/目錄下建一個文檔

 

  1. [root@ns ~]# cd /etc/vsftpd/ 
  2.  
  3. [root@ns vsftpd]# vim vusers.txt 
  4.  
  5. tom              //奇數行爲用戶名 
  6.  
  7.   123              //偶數行爲密碼 
  8.  
  9.   jerry 
  10.  
  11. 456 
  12.  
  13. 保存退出 
  14.  
  15. 安裝db4-tuils包 
  16.  
  17. [root@ns vsftpd]# yum list all db* 
  18.  
  19. [root@ns vsftpd]# yum -y install db4-utils 
  20.  
  21. 安裝完畢以後就有了db_load命令 
  22.  
  23. [ 查看:[root@ns vsftpd]# rpm -ql db4-utils 
  24.  
  25. db_load的用法 
  26.  
  27. [root@ns vsftpd]# db_load -h 
  28.  
  29. db_load: option requires an argument -- h 
  30.  
  31. usage: db_load [-nTV] [-c name=value] [-f file] 
  32.  
  33.       [-h home] [-P password] [-t btree | hash | recno | queue] db_file 
  34.  
  35. usage: db_load -r lsn | fileid [-h home] [-P password] db_file ] 
  36.  
  37. [root@ns vsftpd]# db_load -T -t hash -f vusers.txt vusers.db 
  38.  
  39. //從vusers.txt中讀取列表保存到vsusers.db中 
  40.  
  41. [root@ns vsftpd]# file vusers.db 
  42.  
  43. vusers.db: Berkeley DB (Hash, version 8, native byte-order) 
  44.  
  45. //查看vsusers.db 

(2) .創建FTP根目錄及虛擬用戶映射的系統用戶

  1. [root@ns vsftpd]# useradd -d /var/vuser vuser 
  2.  
  3. [root@ns vsftpd]# ll -d /var/vuser 
  4.  
  5. drwx------ 3 vuser vuser 4096 Oct  9 22:54 /var/vuser 
  6.  
  7. //文件屬性爲700,別的用戶不能訪問到,因此要修改屬性爲755 
  8.  
  9. [root@ns vsftpd]# chmod 755 /var/vuser/ 

(3).建立支持虛擬用戶的PAM認證文件

  1. [root@ns vsftpd]# vim /etc/pam.d/vusers 
  2.  
  3. 在裏面添加: 
  4.  
  5. auth required pam_userdb.so db=/etc/vsftpd/vusers 
  6.  
  7. account required pam_userdb.so db=/etc/vsftpd/vusers 
  8.  
  9. 保存退出 

(4).編輯主配置文件vsftpd.conf,在文件中添加支持虛擬用戶

[root@ns vsftpd]# vim vsftpd.conf

添加如下:

  1. 先關閉ssl以免影響ssl_enable=NO 
  2.  
  3. pam_service_name=vusers 
  4.  
  5. #For virtual users 
  6.  
  7. anon_umask=022 
  8.  
  9. guest_enable=YES 
  10.  
  11. guest_username=vuser 

保存退出,重啓服務

  1. [root@ns vsftpd]# service vsftpd restart 

測試一下

  1. [root@ns vsftpd]# ftp 172.16.7.1 

(5).爲個別虛擬用戶建立獨立的配置文件

文中以tomjerry爲例

vsftpd.conf文件中添加用戶配置目錄支持

爲用戶tom,jerry建立獨立的配置目錄及文件

配置文件名和用戶名同名

  1. [root@ns vsftpd]# mkdir vuser_dir 
  2.  
  3. [root@ns vsftpd]# vim vsftpd.conf 

修改配置文件,添加一行

  1. user_config_dir=/etc/vsftpd/vuser_dir 

保存退出

 

  1. [root@ns vsftpd]# cd vuser_dir/ 
  2.  
  3. [root@ns vuser_dir]# touch tom jerry 
  4.  
  5. [root@ns vuser_dir]# vim tom 
  6.  
  7. //編輯tom的限制條件 
  8.  
  9. anon_upload_enable=YES 
  10.  
  11. #anon_mkdir_enable=YES 
  12.  
  13. anon_other_write_enable=YES 
  14.  
  15.   
  16.  
  17. [root@ns vuser_dir]# vim jerry 
  18.  
  19. //編輯jerry的限制條件 
  20.  
  21. anon_upload_enable=NO 
  22.  
  23. #anon_mkdir_enable=NO 
  24.  
  25. anon_other_write_enable=NO 
 

(6).重新加載vsftpd配置

  1. service vsftpd reload | service vsftpd restart 

(7).使用虛擬FTP賬戶訪問測試

此處不再詳細舉例

(8).優化虛擬用戶之編譯安裝pam模塊

安裝一個mysql模塊可以更加方便快捷的對用戶進行管理

下載 pam_mysql-0.7RC1.tar.gz 

  1. [root@ns ~]# tar xvf pam_mysql-0.7RC1.tar.gz 
  2.  
  3. //解壓安裝 
  4.  
  5. [root@ns ~]# cd pam_mysql-0.7RC1 
  6.  
  7. [root@ns pam_mysql-0.7RC1]# ./configure --with-mysql=/usr/local/mysql 
  8.  
  9. //使用此模塊的前提是機器上面安裝了mysql纔可以 
  10.  
  11. 下面開始編譯安裝 
  12.  
  13. [root@ns pam_mysql-0.7RC1]# make && make install 
  14.  
  15. [root@ns pam_mysql-0.7RC1]# mysql -uroot -predhat 

只要有pam_mysql.so這個模塊就可以用mysql做認證

  1. mysql> CREATE DATABASE vsftpd; 
  2.  
  3. //創建vsftpd數據庫 
  4.  
  5. mysql> USE vsftpd; 
  6.  
  7. //切換數據庫 
  8.  
  9. mysql> CREATE TABLE vusers (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(30) NOT NULL, Password CHAR(48) NOT NULL); 
  10.  
  11. //創建表 
  12.  
  13. mysql> DESC vusers; 

+----------+------------------+------+-----+---------+----------------+

| Field    | Type             | Null | Key | Default | Extra          |

+----------+------------------+------+-----+---------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

| Name     | varchar(30)      | NO   |     | NULL    |                |

| Password | char(48)         | NO   |     | NULL    |                |

+----------+------------------+------+-----+---------+----------------+

3 rows in set (0.05 sec)

//查看字段確保無誤

  1. mysql>insert into vusers (Name,Password) VALUES ('yang',password('redhat')),('yadi',password('redhat')); 
  2.  
  3. //創建兩個用戶yang和yadi,密碼都是redhat 
  4.  
  5. Database changed 
  6.  
  7. mysql> GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY '123456'
  8.  
  9. Query OK, 0 rows affected (0.04 sec) 
  10.  
  11.   
  12.  
  13. mysql> GRANT SELECT ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY '123456'
  14.  
  15. Query OK, 0 rows affected (0.00 sec) 
  16.  
  17.   
  18.  
  19. mysql> FLUSH PRIVILEGES; 
  20.  
  21. Query OK, 0 rows affected (0.00 sec) 
  22.  
  23. //給用戶vsftpd查詢等權限,這個根據實際情況。。。。 
  24.  
  25. //退出mysql 

  1. [root@ns ~]# vim /etc/pam.d/vusers.mysql 
  2.  
  3. 增加如下內容: 
  4.  
  5. auth    required       pam_mysql.so     user=vsftpd passwd=123456 host=localhost db=vsftpd table=vusers usercolumn=Name passw    dcolumn=Password crypt=2 
  6.  
  7.  account required       pam_mysql.so     user=vsftpd passwd=123456 host=localhost db=vsftpd table=vusers usercolumn=Name passw    dcolumn=Password crypt=2 
  8.  
  9. [root@ns ~]# vim /etc/vsftpd/vsftpd.conf 
  10.  
  11. 修改主配置文件,修改如下: 
  12.  
  13. pam_service_name=vuser.mysql 
  14.  
  15. [root@ns ~]# service vsftpd restart 
  16.  
  17. //重啓服務 

用剛纔在服務器中創建的用戶名登錄,此時實驗結束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章