4.1. 配置文件语法

/etc/pam.conf配置文件的语法如下。该文件由规则列表组成,每个规则通常放在一行中,但可以通过转义的行尾\ '进行扩展。Comments 以“#”标记开头,并扩展到下一行。

每个规则的格式是用空格分隔的令牌集合,前三个不区分大小写:

服务类型控制模块-路径模块参数

/etc/pam.d/目录中包含的文件的语法相同,除了没有任何* service 字段。在这种情况下, service *是/etc/pam.d/目录中文件的名称。该文件名必须小写。

如果上面列表中的* type 值前面带有-*字符,则由于无法在系统中丢失模块而无法加载模块,因此 PAM 库将不会记录到系统日志中。这对于那些并非总是安装在系统上并且不需要正确进行登录会话的身份验证和授权的模块尤其有用。

第三个字段* control ,指示模块无法成功完成身份验证任务时 PAM-API 的行为。此控制字段有两种语法:简单的具有一个简单的关键字;比较复杂的是对 value = action *对的方括号选择。

对于简单(历史)语法,有效的* control *值是:

对于更复杂的语法,有效的* control *值具有以下形式:

[value1=action1 value2=action2 ...]

其中* valueN 对应于在为其定义了行的模块中调用的函数的返回码。它是从以下之一中选择的:成功 open_err symbol_err service_err system_err buf_err perm_denied auth_err cred_insufficient authinfo_unavail user_unknown maxtries new_authtok_reqd acct_expired session_err cred_unavail cred_expired cred_err no_module_data conv_err authtok_err authtok_rebus_er,* authtok_recover_er * authtok_disable_aging try_again ignore abort authtok_expired module_unknown bad_item conv_again incomplete default *。

其中的最后一个* default 表示未明确提及“所有 valueN *”。请注意,PAM 错误的完整列表在/usr/include/security/_pam_types.h中可用。 * actionN *可以采用以下形式之一:

四个关键字中的每个关键字:必填;必要条件足够;和可选的,在语法上有一个等效的表达式。它们如下:

squid auth required pam_mysql.so user=passwd_query passwd=mada \
          db=eminence [query=select user_name from internet_service \
          where user_name='%u' and password=PASSWORD('%p') and \
        service='web_proxy']

使用此约定时,可以在字符串中包含``]'字符以使参数解析有效,则应使用`]'。换一种说法:

[..[..\]..]    -->   ..[..]..

配置文件(其中一个)中的任何行,如果格式不正确,通常会趋向于(警告侧)使身份验证过程失败。通过调用 syslog(3)将相应的错误写入系统日志文件。

上一章 首页 下一章