补上一篇作为对PAM机制的深入了解:
使用PAM进行统一身份的认证
PAM是PLUGGABLEAUTHENTICATIONMODULES的缩写.可插入的认证模块(并不是Linux指的模块)用于实现应用程序的认证机制,是程序员或管理员不需要重新编写或编译程序就可以改变认证机制.
在linux它已经被广泛的应用了,例如:/etc/securitty/etc/onlogin/etc/ftpusers实际上都是给它用的.你在登陆的时候的输入密码和你修改密码时也都用的是它./etc/pam.conf和/etc/pam/*都是它的配置文件.
它最大的优点是它的弹性和可扩充性.你可以随意修改认证机制,按你的实际需要来定制系统.你了解后就会非常清楚了.
DESIGNGOALS(设计目标)
(a)管理员可以选择认证方式,从简单的密码到智能卡系统.
(b)可以为不同的程序配置不同的认证机制.如使telnet使用S/Key认证.
而本机的login缺使用一般的UNIXpassword.
(c)支持程序的显示方式的需求.如login需要基于终端的显示,而dtlogin
需要X显示,而`ftp'和`telnet'需要透过网络来认证.
(d)支持为一个程序配置同时使用多种认证机制.
(e)可是用户在使用多种认证机制时,不必为同一个密码敲入多次.
(f)可是用户在认真时需要输入多个密码.
(g)当底层的认证机制改变时上层软件不需要修改.
(h)结构为systemauthentication提供一个_pluggable_model.
(i)必须能满足现有的服务需要.
4.OVERVIEWOFTHEPAMFRAMEWORK(纵览PAM的框架)其核心实际上是一些库函数.你写的应用程序要调用它们.PAM为你提供了一套入口(thefrontend).而这套函数互调用特定认证机制所定义的模块
(thebackend).
简单的说是这样的:你调用一个函数仅仅告诉它你要认正,这就足够了.至于用那一种机制来认证是由配置文件规定的.你只需要看一看返回值就知道认证是否成功了.对于开发应用程序的人来说只需要记住几个函数.
ftptelnetlogin(Applications) ||| ||| +--------+--------+ | +-----+-----+ |PAMAPI|<--pam.conffile +-----+-----+ | +--------+--------+ UNIXKerberosSmartCards(Mechanisms)
|
Figure1:基本的PAM结构PAM的功能被分为四个部分:(1)authentication(认证),(2)account(账号管理),(3)session(对话管理),和(4)password(密码管理).这四个东东都是什么呢?
(a)Authenticationmanagement:
包括`pam_authenticate()'来认证用户,`pam_setcred()'来设置刷新和销毁用户的credentials.
(b)Accountmanagement:
包括`pam_acct_mgmt()'来检查用的账号是否还有效.可以被用来检查用户是否超时或账号是否过期.
(c)Sessionmanagement:
包括`pam_open_session()'和`pam_close_session()'用于对话过程的管理.例如:可以用来纪录用户的连接时间.一次telnet过程实际上也是一个session.
(d)Passwordmanagement:`pam_chauthtok()'用来修该密码.
程序通过调用