Linux的鉴别(Authentication)机制--PAM
转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd
作者联系方式:李先静<xianjimli at hotmail dot com>
更新时间:2007-4-23
随着智能手机的日益普及,手机中储存的隐私信息越来越多,而手机的丢失率又居高不下,所以手机的安全性就显得更加重要了。为了保障数据的安全性,我们手机中的很多功能都需要鉴别(Authentication)之后才能使用。为了遵循标准的做法,不想自己搞一套鉴别(Authentication)机制,我花了一些时间去研究Linux-PAM。
有人说鉴别(Authentication)不就是对用户名和密码进行验证,以确认使用者的身份吗?没错,最简单的情况就是如此。但是,让用于单机的Login方法去代替于网络环境的 Kerberos方法,用户一定会觉得有很多不便。除此之外,事情也不那简单,比如对用户有效期的检查、对使用者的时间限制、对用户组的限制和对本地用户和远程用户的区分等等,处理方法都是不同的。由此可见,不同的场境需要不同的鉴别(Authentication)方法,或者需要多种鉴别(Authentication)方法的组合。
实际上,不仅有多种不同的鉴别(Authentication)方法存在,而且即使同一种方法也可能多种不同的表现形式。比如,同是普通用户名和密码验证方法,在Client/Server下,在Console下和在GUI下,它们的表现形式也不一样,这也是需要特别注意的。
不同的鉴别(Authentication)方法有自己的适用范围,把这些鉴别(Authentication)方法独立出来,供不同的应用程序使用,可以大大提高代码的复用率。而同一个应用程序,在不同环境,甚至在不同的时期,也可能会选择不同的鉴别(Authentication)方法。所以让鉴别(Authentication)方法的使用者和实现者分离开来,让它们各自独立发展,互不影响,显然是有利于软件维护的。这正是PAM(Pluggable Authentication Modules)的动机所在。
顾名思义,PAM就是基于插件式设计的一套鉴别(Authentication)方法框架和相应的模块实现代码。我们可以从以下几个方面来看PAM:
1. PAM的使用者。