传统的PAM策略文件是 /etc/pam.conf. 这个文件包含了系统的所有PAM策略。 这个文件的每一行描述了一个链中的一个步骤, 如下所示:
这些区域是, 按顺序: 服务名, 功能名, 控制标签, 模块名以及模块参数。 其余的地方是解释其它的模块参数.login auth required pam_nologin.so no_warn
一个单独的链由每个服务 / 功能对构成, 所以同样的服务和功能出现的顺序是很重要的, 而列出的单独的服务和功能的顺序则不重要。这些例子源于原始的PAM文件,每行一个功能, Solaris™ 系的 pam.conf 仍保持着这种结构, 但FreeBSD系则通过服务来配置组和行。两种方式全很好; 殊途同归.
17.5.1.2. /etc/pam.d 目录
OpenPAM和Linux-PAM支持一种候补的配置机制, 这种机制在FreeBSD和NetBSD中是首选的机制. 本方案中, 每个策略被包含进一个单独的文件内,这个文件以显示的服务名称命名。这些文件保存在 /etc/pam.d/.
这些对应每个服务的策略文件只有四个区域,而不是像 pam.conf 文件那样有五个区域: 服务名区域被省略了。因此,替换上小节示例中 pam.conf 的行, 用户可以将下行添加到 /etc/pam.d/login:
因为这个简化的语法, 它有可能通过链接每个服务的名称到同一个策略文件为多个服务使用同样的策略。 例如, 应用同样的策略到 su 和 sudo 服务, 你可以这样:auth required pam_nologin.so no_warn
代码: 全选
# cd /etc/pam.d
# ln -s su sudo
因为每个服务的策略被保存在一个单独的文件里, pam.d 机制也可以非常容易地为第三方软件包安装额外的策略。
17.5.1.3. 策略搜索顺序
如上所见, PAM策略可以保存在很多地方。 如果没有发现某个服务的配置文件, 则会使用 /etc/pam.d/other 作为替代。 如果这个文件不存在, 会搜索 /etc/pam.conf 文件来寻找指定服务的匹配项, 如还没有,"other" 服务就失败了.
理解PAM的配置系统是链的中心环节很重要。