系统管理指南:安全性服务

PAM 配置文件(参考)

PAM 配置文件 pam.conf 确定要使用的验证服务模块,以及这些模块的使用顺序。可以修改此文件来为每个系统登录应用程序选择验证模块。

PAM 配置文件语法

PAM 配置文件所包含项的语法如下:


service-name module-type control-flag module-path module-options
service-name

系统登录服务的名称,例如 ftp logintelnet

module-type

服务的模块类型。有关更多信息,请参见PAM 模块类型

control-flag

确定模块的延续行为或失败行为。

module-path

指定实现安全策略的库对象的路径。

module-options

指定传送到服务模块的选项。

通过以 #(井号)开始行,可以向 pam.conf 文件中添加注释。可以使用空格或制表符来分隔字段。


注 –

如果在 PAM 配置文件的项中发现错误,则会生成 syslog 错误消息。如果此错误是请求服务的项,则此服务可能会返回一个错误。


PAM 的服务名称

每项服务的特定服务名称应该在该服务的手册页中进行介绍。例如,sshd(1M) 手册页列出 sshd 命令的所有 PAM 服务名称。

PAM 模块类型

您需要了解 PAM 模块类型,因为这些类型定义模块的接口。以下是 PAM 模块的类型:

PAM 控制标志

使用 PAM 服务模块的请求返回以下三种状态之一:

栈中的每个模块都可以确定请求的成功或失败。要确定模块的延续行为或失败行为,必须为 PAM 配置文件中的每个项选择一个控制标志

延续行为定义是否检查后面的所有模块。根据特定模块的响应,可以决定跳过所有其他模块。

失败行为定义如何记录或报告错误消息。失败信息既可以是可选信息,也可以是必需信息。必需的失败信息会导致此请求失败,即使其他模块成功也是如此。可选的失败信息不会始终导致此请求失败。

控制标志如下所示:

有关这些控制标志的更多信息,请参见下一节,其中介绍了通用 /etc/pam.conf 文件。

PAM 模块

每个 PAM 模块都可实现一种特定的功能。设置 PAM 验证时,需要指定模块和模块类型,后者定义模块执行的操作。一个模块可以实现多个模块类型,例如 authaccountsessionpassword

每个模块的路径由已安装的 Solaris 发行版中提供的指令集确定。对于 32 位模块,模块路径为 /usr/lib/security。对于 64 位模块,路径为 /usr/lib/security/ $ISA。有关更多信息,请参见 isalist(5) 手册页。

Solaris PAM 模块的完整列表位于 /usr/lib/security/$ISA 中。每个模块都有关联的手册页,其中介绍了应用的模块类型以及所有的特殊选项。

出于安全原因,这些模块文件必须由 root 拥有,并且禁止使用 groupother 权限写入。如果文件并非由 root 拥有,则 PAM 不会装入模块。

通用 pam.conf 文件的示例

通用 /etc/pam.conf 文件包括以下项:


login   auth requisite          pam_authtok_get.so.1

login   auth required           pam_dhkeys.so.1

login   auth required           pam_unix_cred.so.1

login   auth required           pam_unix_auth.so.1

login   auth required           pam_dial_auth.so.1

运行 login 命令时,必须针对 pam_authtok_getpam_dhkeyspam_auth_credpam_auth_unixpam_dial_auth 模块成功执行验证。pam_authtok_get 项中的 requisite 标志表示,如果此模块响应失败,则不再检查任何其他模块。但是,如果此模块响应成功,则会继续检查其余模块。如果针对所有模块的验证都失败,则验证请求也会失败。


rlogin  auth sufficient         pam_rhosts_auth.so.1

rlogin  auth requisite          pam_authtok_get.so.1

rlogin  auth required           pam_dhkeys.so.1

rlogin  auth required           pam_unix_cred.so.1

rlogin  auth required           pam_unix_auth.so.1

对于 rlogin 命令,sufficient 控制标志表示通过 pam_rhosts_auth 模块进行的验证足以使验证请求成功。无需执行任何其他检查。如果通过 pam_rhosts_auth 进行的验证失败,则通过 pam_authtok_getpam_dhkeyspam_auth_credpam_unix_auth 模块进行的验证必须成功。虽然其他模块中的失败信息会阻止成功验证,但是 pam_rhosts_auth 模块中的失败信息不会。此外,与 login 中的项相同,pam_authtok_get 项中的 requisite 控制标志表示如果此模块响应失败,则验证请求失败,并且不再检查任何其他模块。


other   session required        pam_unix_session.so.1

使用 other 服务名称,可以为 pam.conf 文件中未包括的任何其他命令设置缺省服务。other 服务名称简化了文件管理,因为只需一个项就可涵盖使用同一模块的许多服务。此外,other 服务名称用作“全面管理功能”时,可以确保每个访问都由一个模块来表示。

module-path 的项是“相对于根目录的”。如果为 module-path 指定的文件名未以斜杠 (/) 开始,则文件名前面为路径 /usr/lib/security/$ISA。必须对位于其他目录中的模块使用全路径名。可以在每个模块的手册页中找到 module-options 的值。