如何讓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/目錄下建一個文檔
- [root@ns ~]# cd /etc/vsftpd/
- [root@ns vsftpd]# vim vusers.txt
- tom //奇數行爲用戶名
- 123 //偶數行爲密碼
- jerry
- 456
- 保存退出
- 安裝db4-tuils包
- [root@ns vsftpd]# yum list all db*
- [root@ns vsftpd]# yum -y install db4-utils
- 安裝完畢以後就有了db_load命令
- [ 查看:[root@ns vsftpd]# rpm -ql db4-utils
- db_load的用法
- [root@ns vsftpd]# db_load -h
- db_load: option requires an argument -- h
- usage: db_load [-nTV] [-c name=value] [-f file]
- [-h home] [-P password] [-t btree | hash | recno | queue] db_file
- usage: db_load -r lsn | fileid [-h home] [-P password] db_file ]
- [root@ns vsftpd]# db_load -T -t hash -f vusers.txt vusers.db
- //從vusers.txt中讀取列表保存到vsusers.db中
- [root@ns vsftpd]# file vusers.db
- vusers.db: Berkeley DB (Hash, version 8, native byte-order)
- //查看vsusers.db
(2) .創建FTP根目錄及虛擬用戶映射的系統用戶
- [root@ns vsftpd]# useradd -d /var/vuser vuser
- [root@ns vsftpd]# ll -d /var/vuser
- drwx------ 3 vuser vuser 4096 Oct 9 22:54 /var/vuser
- //文件屬性爲700,別的用戶不能訪問到,因此要修改屬性爲755
- [root@ns vsftpd]# chmod 755 /var/vuser/
(3).建立支持虛擬用戶的PAM認證文件
- [root@ns vsftpd]# vim /etc/pam.d/vusers
- 在裏面添加:
- auth required pam_userdb.so db=/etc/vsftpd/vusers
- account required pam_userdb.so db=/etc/vsftpd/vusers
- 保存退出
(4).編輯主配置文件vsftpd.conf,在文件中添加支持虛擬用戶
[root@ns vsftpd]# vim vsftpd.conf
添加如下:
- 先關閉ssl以免影響ssl_enable=NO
- pam_service_name=vusers
- #For virtual users
- anon_umask=022
- guest_enable=YES
- guest_username=vuser
保存退出,重啓服務
- [root@ns vsftpd]# service vsftpd restart
測試一下
- [root@ns vsftpd]# ftp 172.16.7.1
(5).爲個別虛擬用戶建立獨立的配置文件
文中以tom和jerry爲例
在vsftpd.conf文件中添加用戶配置目錄支持
爲用戶tom,jerry建立獨立的配置目錄及文件
配置文件名和用戶名同名
- [root@ns vsftpd]# mkdir vuser_dir
- [root@ns vsftpd]# vim vsftpd.conf
修改配置文件,添加一行
- user_config_dir=/etc/vsftpd/vuser_dir
保存退出
- [root@ns vsftpd]# cd vuser_dir/
- [root@ns vuser_dir]# touch tom jerry
- [root@ns vuser_dir]# vim tom
- //編輯tom的限制條件
- anon_upload_enable=YES
- #anon_mkdir_enable=YES
- anon_other_write_enable=YES
- [root@ns vuser_dir]# vim jerry
- //編輯jerry的限制條件
- anon_upload_enable=NO
- #anon_mkdir_enable=NO
- anon_other_write_enable=NO
(6).重新加載vsftpd配置
- service vsftpd reload | service vsftpd restart
(7).使用虛擬FTP賬戶訪問測試
此處不再詳細舉例
(8).優化虛擬用戶之編譯安裝pam模塊
安裝一個mysql模塊可以更加方便快捷的對用戶進行管理
下載 pam_mysql-0.7RC1.tar.gz
- [root@ns ~]# tar xvf pam_mysql-0.7RC1.tar.gz
- //解壓安裝
- [root@ns ~]# cd pam_mysql-0.7RC1
- [root@ns pam_mysql-0.7RC1]# ./configure --with-mysql=/usr/local/mysql
- //使用此模塊的前提是機器上面安裝了mysql纔可以
- 下面開始編譯安裝
- [root@ns pam_mysql-0.7RC1]# make && make install
- [root@ns pam_mysql-0.7RC1]# mysql -uroot -predhat
只要有pam_mysql.so這個模塊就可以用mysql做認證
- mysql> CREATE DATABASE vsftpd;
- //創建vsftpd數據庫
- mysql> USE vsftpd;
- //切換數據庫
- mysql> CREATE TABLE vusers (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(30) NOT NULL, Password CHAR(48) NOT NULL);
- //創建表
- 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)
//查看字段確保無誤
- mysql>insert into vusers (Name,Password) VALUES ('yang',password('redhat')),('yadi',password('redhat'));
- //創建兩個用戶yang和yadi,密碼都是redhat
- Database changed
- mysql> GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY '123456';
- Query OK, 0 rows affected (0.04 sec)
- mysql> GRANT SELECT ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY '123456';
- Query OK, 0 rows affected (0.00 sec)
- mysql> FLUSH PRIVILEGES;
- Query OK, 0 rows affected (0.00 sec)
- //給用戶vsftpd查詢等權限,這個根據實際情況。。。。
- //退出mysql
- [root@ns ~]# vim /etc/pam.d/vusers.mysql
- 增加如下內容:
- auth required pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=vusers usercolumn=Name passw dcolumn=Password crypt=2
- account required pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=vusers usercolumn=Name passw dcolumn=Password crypt=2
- [root@ns ~]# vim /etc/vsftpd/vsftpd.conf
- 修改主配置文件,修改如下:
- pam_service_name=vuser.mysql
- [root@ns ~]# service vsftpd restart
- //重啓服務
用剛纔在服務器中創建的用戶名登錄,此時實驗結束