- 论坛徽章:
- 0
|
本帖最后由 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
|
|