免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2446 | 回复: 0
打印 上一主题 下一主题

[FTP] CentOS vsftpd+mysql虚拟用户验证配置方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-21 20:22 |只看该作者 |倒序浏览
本帖最后由 lucky-wang 于 2012-11-21 20:26 编辑

本篇内容侧重于vsftpd与mysql之间的能否连接,至于vsftpd的使用配置不在本篇中累赘说明
需要涉及的软件:
vsftpd
mysql
pam_mysql

1.vsftpd和mysql安装略过

2.安装pam_mysql, pam_mysql 在 CentOS里目前还没有加入,需要自行编译:
2.1.(此步可先跳过,如果无法编译configure,再来执行此步)编译过程要用到mysql-devel pam-devel gcc gcc-c++,如果没有的话先安装
#yum install -y mysql_devel pam-devel gcc gcc-c++ openssl
2.2.下载 pam_mysql-0.7RC1.tar.gz , 下载地址为: http://pam-mysql.sourceforge.net/
2.3.编译,安装
#tar zxvf pam_mysql-0.7RC1.tar.gz
#cd pam_mysql-0.7RC1
#./configure --with-mysql=/usr/local/mysql --with-openssl
    <----注意您的mysql安装路径
#make
#make install
2.4.编译完毕后会在/lib/security目录下生成pam_mysql.so和pam_mysql.la两个文件
2.5.在编译前可先确认系统的pam模块是在/lib/security目录还是在/lib64/security/目录(64位系统)中, 如果在/lib64/security/目录中,还需要将/lib/security下的pam_mysql.so和pam_mysql.la两文件硬链接到/lib64/security/目录下,执行指令
#ln /lib/security/pam_mysql.* /lib64/security/

3.为vsFTPd创建一个用户数据库表
3.1打开数据库
#mysql -uroot -p
3.2创建数据库
create database vsftpd;
use vsftpd;

3.3创建用户表
create table users (
        id int not null auto_increment primary key,
        username char(15) not null unique key,
        password char(48) not null
        );
3.4添加测试用户
insert into users (username,password) values ('testuser',password('123456'));

4.建立pam认证所需文件vsftpd.mysql:
4.1创建配置文件
#vi /etc/pam.d/vsftpd.mysql
输入以下内容
auth    required pam_mysql.so user=root passwd=123456 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=root passwd=123456 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

4.2上面字段说明
user=mysql用户名
passwd=myqsl密码
host=mysql连接主机
db=数据库
table=表
usercolumn=用户名字段
passwdcolumn=密码字段
crypt=验证方式, 0明文,1unix加密,2表示password()函数加密,3表示md5加密
5.修改vsftpd的配置文件,使其适应pam_mysql认证
5.1建立虚拟用户映射的系统用户及对应的目录  
# useradd -s /sbin/nologin -d /var/ftpuser ftpuser <----这个家目录将成为虚拟用户访问ftp目录的起始位置  
# chmod go+rx /var/ftpuser
5.2编辑/etc/vsftpd/vsftpd.conf配置文件
#vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES                       <---- 限制用户在本地目录
                                                        |---- 以下几个可在最后面修改或添加
pam_service_name=vsftpd.mysql        <---- pam_mysql认证配置文件
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES                             <---- 上是否所有用户都当成匿名登录,虚拟用户开启
guest_username=ftpuser                   <---- 上传文件的关联用户        

5.2重启vsftpd
#service vsftpd restart

6.由于以上的pam验证使用了自己创建的/etc/pam.d/vsftpd.mysql的文件,只含有的mysql验证信息,那么系统用户将无法得到验证,
如果要想系统用户也能正常使用,可以将/etc/pam.d/vsftpd文件中的原有验证内容整合到/etc/pam.d/vsftpd.mysql文件中,如下
#session optional      pam_keyinit.so    force revoke
auth       sufficient     pam_mysql.so user=root passwd=123456 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2
auth       required      pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required      pam_shells.so
auth       include        password-auth
account  sufficient     pam_mysql.so user=root passwd=123456 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2
account  include        password-auth
session  required      pam_loginuid.so
session  include        password-auth



参考
http://www.hndzz.cn/post/1168.html
http://blog.chinaunix.net/uid-24988815-id-3075933.html
http://xinghuiru.blog.51cto.com/5118848/935606
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP