whx00 2014-08-15
Linux-PAM 是一种可插拔式认证模块,是 Linux 操作系统首选的用户身份认证方式。OpenLDAP 是轻量级目录访问协议的实现,是企业广泛使用的用户管理工具。本文详细讲述了 Linux-PAM 集成 LDAP 实现企业用户的统一管理的方法,以及该类认证模式在企业中的应用。
Linux-PAM (Linux 系统的可插入式认证模块) 是一套共享函数库,它表示一种性能健硕而且灵活方便的用户级认证方式,允许系统管理员来决定应用程序如何识别用户,即不需要 (重写和) 重新编译一个 (支持 PAM 的) 应用,就可以切换它所用的认证机制。目前,Linux-PAM 已经成为 Linux、BSD 和其它一些 Unix 操作系统的首选认证方式,特别是在 Linux 上,几乎所有的 daemon 和一些与授权有关的命令都通过 PAM 来进行验证。
Linux-PAM 主要是由一组共享库文件(share libraries, 也就是.so 文件)和一些配置文件组成。当用户请求服务时,具有 PAM 认证功能的应用程序将与这些.so 文件进行交互,以此判断是否可以授权给发起请求的用户来使用服务,比如 su、vsftp、httpd 等。如果认证成功,那么用户便可以使用该服务或命令;如果认证失败,用户将不能使用该服务,同时,PAM 将向指定的 log 文件写入警告信息。PAM 不依赖于任何应用或服务,用户完全可以升级这些应用或服务而不必管 PAM 的共享库的更新或升级,反之亦然。所以它非常的灵活。
PAM 的认证过程是通过对一些服务或应用的配置文件来控制的。在 Linux 上,PAM 配置信息通常位于目录 /etc/pam.d,但是 UNIX 系统把所有的配置都放在/etc/pam.conf 文件里。对于使用 PAM 的各项服务,/etc/pam.d 目录中都有一个对应的配置文件,PAM 的配置文件是一系列的单行配置命令构成,每行配置都说明一种在操作系统上使用的特殊 PAM 模块。
其一般格式为:
[service] module-type control-flag module-path [arguments]
PAM 配置文件中的字段包括:
PAM 框架将按照配置文件中列出的条目顺序调用相应的模块,这取决于每个条目允许的 control_flag 的值。control_flag 指定了"配置段"里的模块应该怎么相互作用,生成该配置段的最终结果。control_flag 值包括:
/etc/pam.d/login #%PAM-1.0 auth requisite pam_nologin.so auth [user_unknown=ignore success=ok ignore=ignore auth_err=die default=bad]pam_securetty.so auth include common-auth account include common-account password include common-password session required pam_loginuid.so session include common-session session required pam_lastlog.so nowtmp session optional pam_mail.so standard
PAM 配置文件来源于 SUSE Linux Enterprise Server11 操作系统。对于 PAM 的结构有了基本的了解,我们来看看 PAM 是如果控制 login 的,从上至下对于 login 的 PAM 配置文件的流程控制为:
OpenLDAP 是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,是最常用的目录服务之一。在 Linux 的发型版本中提供的 OpenLDAP 软件按照客户机/服务器模式实现了轻量级目录访问协议(LDAP)。
LDAP 目录以树状的层次结构来存储数据(这很类同于 DNS),最顶层即根部称作"基准 DN",形如"dc=mydomain, dc=org"或者"o= mydomain.org",在根目录的下面有很多的文件和目录,为了把这些大量的数据从逻辑上分开,LDAP 像其它的目录服务协议一样使用 OU (Organization Unit),可以用来表示公司内部机构,如部门等,也可以用来表示设备、人员等。同时 OU 还可以有子 OU,用来表示更为细致的分类。