关于pam_mysql 的安装参见 http://blog.vkill.net/read.php?103
pam_mysql的使用在源码包中README文件已说的很清楚了,这里只是用图表的形式来简单的说一下:
pam_mysql的工作流程如下:
1、读取参数
2、连接mysql
3、提交查询,得到一字符串
4、比对,提交的密码经处理后是否和刚得到的字符串一致
pam_mysql最终提交给mysql的查询语句是下面这句,这个查询语句可以通过查看mysql通用查询日志或者查看pam_mysql调试日志来获得。
__________xxx7
SELECT xxx1, xxx2 FROM xxx3 WHERE xx4 = 'xx5' AND (xxx6)
其中:
xxx1:users.status_column (非必须参数),如不定义值为0,只有这里是0时用户才会被验证通过
xxx2:users.password_column(必须参数)
xxx3:users.table(必须参数)
xxx4:users.user_column(必须参数),可以这样定义 concat(fa,'@',fb) ,意思就是可以拿多个字段的组合来用。
xxx5:用户提交的用户名
xxx6:users.where_clause (非必须参数),可以定义为 fa='a' 也可以定义为 fa='a' and fb='b' ,意思就是说可以嵌套and
xxx7:AND (...),只有当users.where_clause参数被定义了后,这才会有,否则不显示
总之,pam_mysql很灵活的,只要各参数的值组合起来的sql查询语句正确就行。
附:
附:
下面是postfix smtp-->saslauthd-->pam-->pam_mysql配置:
关于postfix smtp-->saslauthd-->pam-->pam_mysql 参见http://blog.vkill.net/read.php?106 和 http://blog.vkill.net/read.php?107
[root@myhost ~]# cat /etc/pam.d/smtp
#%PAM-1.0
auth required pam_mysql.so config_file=/etc/security/pam_smtp_mysql.conf
account required pam_mysql.so config_file=/etc/security/pam_smtp_mysql.conf
[root@myhost ~]# cat /etc/security/pam_smtp_mysql.conf
users.host = localhost
users.database = test
users.db_user = mail
users.db_passwd = pass123456
users.table = users
users.status_column = status
users.user_column = concat(name,'@',domain)
users.password_column = pass
users.password_crypt = 3
verbose = 1
mysql数据结构与数据信息如下:
[root@myhost ~]# mysql -u mail -ppass123456 test
mysql> desc users;
+--------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------+------+-----+---------+-------+
| name | char(16) | YES | | NULL | |
| pass | char(48) | YES | | NULL | |
| domain | char(255) | YES | | NULL | |
| status | int(1) | YES | | NULL | |
+--------+-----------+------+-----+---------+-------+
mysql> select * from users;
+------+----------------------------------+----------+--------+
| name | pass | domain | status |
+------+----------------------------------+----------+--------+
| aaa | 123456 | test.net | 0 |
| bbb | e10adc3949ba59abbe56e057f20f883e | test.net | 0 |
| ccc | e10adc3949ba59abbe56e057f20f883e | test.net | 1 |
+------+----------------------------------+----------+--------+
Last modified by vkill on2008/10/23 13:29
pam_mysql的使用在源码包中README文件已说的很清楚了,这里只是用图表的形式来简单的说一下:
pam_mysql的工作流程如下:
1、读取参数
2、连接mysql
3、提交查询,得到一字符串
4、比对,提交的密码经处理后是否和刚得到的字符串一致
pam_mysql最终提交给mysql的查询语句是下面这句,这个查询语句可以通过查看mysql通用查询日志或者查看pam_mysql调试日志来获得。
__________xxx7
SELECT xxx1, xxx2 FROM xxx3 WHERE xx4 = 'xx5' AND (xxx6)
其中:
xxx1:users.status_column (非必须参数),如不定义值为0,只有这里是0时用户才会被验证通过
xxx2:users.password_column(必须参数)
xxx3:users.table(必须参数)
xxx4:users.user_column(必须参数),可以这样定义 concat(fa,'@',fb) ,意思就是可以拿多个字段的组合来用。
xxx5:用户提交的用户名
xxx6:users.where_clause (非必须参数),可以定义为 fa='a' 也可以定义为 fa='a' and fb='b' ,意思就是说可以嵌套and
xxx7:AND (...),只有当users.where_clause参数被定义了后,这才会有,否则不显示
总之,pam_mysql很灵活的,只要各参数的值组合起来的sql查询语句正确就行。
附:
附:
下面是postfix smtp-->saslauthd-->pam-->pam_mysql配置:
关于postfix smtp-->saslauthd-->pam-->pam_mysql 参见http://blog.vkill.net/read.php?106 和 http://blog.vkill.net/read.php?107
[root@myhost ~]# cat /etc/pam.d/smtp
#%PAM-1.0
auth required pam_mysql.so config_file=/etc/security/pam_smtp_mysql.conf
account required pam_mysql.so config_file=/etc/security/pam_smtp_mysql.conf
[root@myhost ~]# cat /etc/security/pam_smtp_mysql.conf
users.host = localhost
users.database = test
users.db_user = mail
users.db_passwd = pass123456
users.table = users
users.status_column = status
users.user_column = concat(name,'@',domain)
users.password_column = pass
users.password_crypt = 3
verbose = 1
mysql数据结构与数据信息如下:
[root@myhost ~]# mysql -u mail -ppass123456 test
mysql> desc users;
+--------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------+------+-----+---------+-------+
| name | char(16) | YES | | NULL | |
| pass | char(48) | YES | | NULL | |
| domain | char(255) | YES | | NULL | |
| status | int(1) | YES | | NULL | |
+--------+-----------+------+-----+---------+-------+
mysql> select * from users;
+------+----------------------------------+----------+--------+
| name | pass | domain | status |
+------+----------------------------------+----------+--------+
| aaa | 123456 | test.net | 0 |
| bbb | e10adc3949ba59abbe56e057f20f883e | test.net | 0 |
| ccc | e10adc3949ba59abbe56e057f20f883e | test.net | 1 |
+------+----------------------------------+----------+--------+
Last modified by vkill on2008/10/23 13:29
网友评论(0):


