6.1. pam_access-logdaemon 样式的登录访问控制

pam_access.so [调试] [nodefgroup] [noaudit] [accessfile = * +2+ *] [fieldsep = * +3+ *] [listsep = * +4+ *]

6.1.1. DESCRIPTION

pam_access PAM 模块主要用于访问 Management。它提供基于登录名,主机或域名,Internet 地址或网络号,或基于终端行名称,X $DISPLAY值或 PAM 服务名称的 Logdaemon 风格的登录访问控制(如果是非网络登录)。

默认情况下,如果您未指定其他文件,则访问 Management 规则将从配置文件/etc/security/access.conf中获取。然后读取/etc/security/access.d/目录中的各个*.conf文件。这些文件将按照系统区域设置的 Sequences 进行解析。各个文件的效果与按解析 Sequences 将所有文件串联在一起的效果相同。这意味着一旦在某些文件中匹配了模式,就不会再解析其他文件。如果使用accessfile选项显式指定了配置文件,则不会解析上述目录中的文件。

如果 Linux PAM 是在审计支持下编译的,则该模块将在基于源(主机,tty 等)拒绝访问时进行报告。

6.1.2. DESCRIPTION

/etc/security/access.conf文件指定(* user/group host ),( user/group network/netmask ),( user/group tty ),( user/group X-$DISPLAY-value )或( user/group *, * pam-service-name *)组合,可以接受或拒绝登录。

当有人登录时,将扫描文件access.conf以查找与(* user/group host )或( user/group network/netmask )组合相匹配的第一项,或者在非网络登录的情况下,对第一项进行扫描匹配( user/group tty )组合的条目,或者在没有 tty 的非网络登录的情况下,第一个与( user/group X-$DISPLAY-value )或( user/group *,*匹配的条目pam-service-name/ *)组合。该表条目的权限字段确定登录是被接受还是被拒绝。

登录访问控制表的每一行都有三个字段,中间用“:”字符(冒号)分隔:

permission : users/groups : origins

第一个字段* permission *字段可以是授予访问权限的“ * *”字符(加号),也可以是拒绝访问的“ -”字符(减号)。

第二个字段* users / group 字段应该是一个或多个登录名,组名或 ALL (始终匹配)的列表。为了区分用户条目和组条目,组条目应使用方括号括起来,例如(组)*。

第三个字段* origins 字段应该是一个或多个 tty 名称(用于非网络登录),X $DISPLAY值或 PAM 服务名称(用于没有 tty 的非网络登录),主机名,域的列表名称(以“.”开头),主机地址,互联网网络号(以“.”结尾),带有网络掩码的互联网网络地址(其中网络掩码可以是十进制数字或互联网地址), ALL (其中总是匹配)或 LOCAL *。 * LOCAL 关键字匹配且仅当 pam_get_item(3)当以 item_type PAM_RHOST *调用时返回NULL或空字符串(因此,将origins 字段与 pam_get_item 的返回值进行比较( 3)用 PAM_TTY item_type 调用,或者不使用 PAM_SERVICE *)调用。

如果系统支持,则可以在主机或用户模式中使用* @ netgroupname *。 * @@ netgroupname *语法仅在用户模式中受支持,它使用户名和用户名之外的本地系统主机名也传递给 netgroup 匹配调用。这在某些 libc 实现上可能无法正确运行,从而导致匹配始终失败。

  • EXCEPT *运算符使编写非常紧凑的规则成为可能。

如果未设置nodefgroup,则在名称与登录用户的名称不匹配时搜索组文件。仅匹配明确列出用户的组。但是,PAM 模块不会查看用户的主要组 ID。

行首的“ #”字符(前面没有空格)可用于将该行标记为 Comments 行。

6.1.3. OPTIONS

  • accessfile=/path/to/access.conf

    • 指示替代的access.conf样式配置文件以覆盖默认设置。当不同的服务需要不同的访问列表时,这很有用。
  • debug

    • syslog(3)打印了很多调试信息。
  • noaudit

    • 不要将不允许的主机和 tty 的登录报告给审计子系统。
  • fieldsep=separators

    • 此选项修改在解析访问配置文件时 pam_access 将识别的字段分隔符。例如:* fieldsep = | 将导致默认的':'字符被视为字段值的一部分,而`|'成为字段分隔符。这样做对于要在基于 X 的应用程序中使用 pam_access 的系统很有用,因为 PAM_TTY *项可能采用“主机名:0”的形式,其值中包含一个“:”字符。但是您不应该需要这个。
  • listsep=separators

    • 此选项修改了 pam_access 在解析访问配置文件时将识别的列表分隔符。例如:* listsep =,*将导致默认的`` t'(制表符)被视为列表元素值的一部分,而`,'成为唯一的列表元素分隔符。在具有从 Windows 域获得的组信息的系统上,执行此操作可能很有用,其中默认内置组“域用户”,“域 Management 员”包含一个空格。
  • nodefgroup

    • 未包含在括号中的用户令牌将不会与组数据库匹配。向后兼容的默认值是即使没有括在括号中的令牌也要尝试与组数据库匹配。

6.1.4. 提供的模块类型

提供了所有模块类型(authaccountpasswordsession)。

6.1.5. 返回值

  • PAM_SUCCESS

    • 授予访问权限。
  • PAM_PERM_DENIED

    • 没有授予访问权限。
  • PAM_IGNORE

    • pam_setcred被呼叫,它什么都不做。
  • PAM_ABORT

    • 并非可以获得所有相关数据或选项。
  • PAM_USER_UNKNOWN

    • 该系统未知用户。

6.1.6. FILES

  • /etc/security/access.conf

    • 默认配置文件

6.1.7. EXAMPLES

这些是可能在/etc/security/access.conf中指定的示例行。

应该允许用户* root 通过 cron ,X11 终端:0 tty1 ,..., tty5 tty6 *进行访问。

:root:crond:0 tty1 tty2 tty3 tty4 tty5 tty6

应该允许用户* root *从拥有 IPv4 地址的主机获取访问权限。这并不意味着该连接必须是 IPv4,来自具有该 IPv4 地址之一的主机的 IPv6 连接也可以工作。

:根:192.168.200.1 192.168.200.4 192.168.200.9

+:root:127.0.0.1

用户* root 应该从网络192.168.201.获得访问权限,该网络将通过字符串匹配对术语进行评估。但是最好改用网络/网络掩码。 192.168.201.的相同含义是 192.168.201.0/24 192.168.201.0/255.255.255.0 *。

+:root:192.168.201.

用户* root 应该能够从主机 foo1.bar.org foo2.bar.org *进行访问(也使用字符串匹配)。

+:root:foo1.bar.org foo2.bar.org

用户* root 应该能够从域 foo.bar.org *进行访问(也使用字符串匹配)。

+:root:.foo.bar.org

应该拒绝用户* root *才能从所有其他来源获取访问权限。

-:root:ALL

应该允许用户* foo *和 netgroup * admins *的成员从所有来源获取访问权限。仅在网络组服务可用时,此功能才有效。

+:@admins foo:ALL

用户* john foo *应该从 IPv6 主机地址获得访问权限。

+:john foo:2001:db8:0:101::1

用户* john *应该从 IPv6 网络/掩码获得访问权限。

+:john:2001:db8:0:101::/64

  • wheel *组的成员应被允许从所有来源获得访问权限。

+:(wheel):ALL

禁止控制台登录到除 wheel 组之外的所有其他帐户,包括 shutdown,sync 和所有其他帐户。

-:除轮外所有同步:本地

应拒绝所有其他用户从所有来源获得访问权限。

-:ALL:ALL

6.1.8. AUTHORS

logdaemon 样式的登录访问控制方案是由 Wietse Venema 设计和实现的。 pam_access PAM 模块由 Alexei Nogin<[email protected]>开发。 IPv6 支持和网络(地址)/网络掩码功能是由 Mike Becher<[email protected]>开发和提供的。