您的位置:首页 > 数据库 > SQL

实现让vsftpd支持虚拟用户和用mysql对用户进行管理

2012-11-04 21:35 579 查看
如何让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

//重启服务

用刚才在服务器中创建的用户名登录,此时实验结束本文出自 “MGnuLinux” 博客,请务必保留此出处http://inspriion.blog.51cto.com/3283848/1050021
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: