6.37. pam_unix-传统密码验证

pam_unix.so [ ... ]

6.37.1. DESCRIPTION

这是标准的 Unix 身份验证模块。它使用来自系统库的标准调用来检索和设置帐户信息以及身份验证。通常,如果启用了 shade,则可以从/ etc/passwd 和/ etc/shadow 文件获得该文件。

帐户组件基于以下* shadow 元素执行构建用户帐户和密码状态的任务:expire,last_change,max_change,min_change,warn_change。对于后者,它可以为用户提供有关更改密码的建议,或者通过 PAM_AUTHTOKEN_REQD *返回,延迟向用户提供服务,直到他们构建了新密码。上述列出的条目记录在 shadow(5)手册页中。如果用户的 Logging 不包含这些条目中的一个或多个,则不会执行相应的“shade”检查。

认证组件执行检查用户凭据(密码)的任务。该模块的默认操作是,如果用户的官方密码为空,则不允许用户访问服务。

提供了辅助二进制文件 unix_chkpwd(8),用于在用户密码存储在受保护的读取数据库中时检查用户密码。这个二进制文件非常简单,只会检查调用它的用户的密码。该模块的认证组件代表用户透明地调用它。这样,xlock(1)之类的应用程序就可以在没有 setuid-root 的情况下运行。默认情况下,该模块将在帮助程序二进制文件执行期间暂时关闭 SIGCHLD 处理。通常这是正确的做法,因为许多应用程序都不准备处理他们不知道是fork() d 的孩子的 signal。 noreap模块自变量可用于抑制此临时屏蔽,在某些应用程序中可能需要使用该参数。

pam_unix 模块通过帮助程序二进制文件支持的密码的最大长度为* PAM_MAX_RESP_SIZE *-当前为 512 字节。对话功能提供给模块的其余密码将被忽略。

该模块的密码组件执行更新用户密码的任务。默认加密哈希来自*/etc/login.defs ENCRYPT_METHOD *变量

用户登录或离开系统时,此模块的会话组件会记录日志。

该模块的其他功能支持的其余参数将被忽略。其他参数通过 syslog(3)记录为错误。

6.37.2. OPTIONS

  • debug

    • 通过 syslog(3)打开调试。
  • audit

    • 比调试更极端。
  • quiet

    • 关闭参考消息,即有关通过 syslog(3)打开和关闭会话的消息。
  • nullok

    • 该模块的默认操作是,如果用户的官方密码为空,则不允许用户访问服务。 nullok参数将覆盖此默认值。
  • nullresetok

    • 即使未设置nullok,如果强制执行密码重置,也允许用户使用空白密码进行身份验证。如果不需要重置密码并且未设置nullok,则使用空白密码的身份验证将被拒绝。
  • try_first_pass

    • 在提示用户 Importing 密码之前,该模块会先尝试使用先前堆叠的模块的密码,以防该模块也满足要求。
  • use_first_pass

    • 参数use_first_pass强制模块使用以前的堆叠模块密码,并且永远不会提示用户-如果没有可用的密码或密码不合适,则将拒绝用户访问。
  • nodelay

    • 如果整个身份验证失败,则可以使用此参数来阻止身份验证组件请求延迟。模块的默认操作是请求两秒数量级的故障延迟。
  • use_authtok

    • 更改密码时,强制模块将新密码设置为先前堆叠的password模块提供的密码(在下面记录的 pam_cracklib 模块的堆叠示例中使用了该密码)。
  • authtok_type=type

    • 更改密码以包括密码类型时,可以使用此参数来修改密码提示。默认为空。
  • nis

    • NIS RPC 用于设置新密码。
  • remember=n

    • 每个用户的最后* n *个密码保存在/etc/security/opasswd中,以强制更改密码历史记录,并防止用户过于频繁地在同一密码之间进行切换。 MD5 密码哈希算法用于存储旧密码。代替此选项,应使用 pam_pwhistory 模块。
  • shadow

    • 尝试维护基于影子的系统。
  • md5

    • 当用户接下来更改密码时,请使用 MD5 算法对其进行加密。
  • bigcrypt

    • 当用户接下来更改其密码时,请使用 DEC C2 算法对其进行加密。
  • sha256

    • 当用户接下来更改其密码时,请使用 SHA256 算法对其进行加密。 crypt(3)函数必须支持 SHA256 算法。
  • sha512

    • 当用户接下来更改其密码时,请使用 SHA512 算法对其进行加密。 crypt(3)函数必须支持 SHA512 算法。
  • blowfish

    • 当用户接下来更改密码时,请使用河豚算法对其进行加密。 crypt(3)函数必须支持河豚算法。
  • gost_yescrypt

    • 当用户接下来更改密码时,请使用 gost-yescrypt 算法对其进行加密。 crypt(3)函数必须支持 gost-yescrypt 算法。
  • yescrypt

    • 当用户接下来更改密码时,请使用 yescrypt 算法对其进行加密。 yescrypt 算法必须受 crypt(3)函数支持。
  • rounds=n

    • 将 SHA256,SHA512,河豚,gost-yescrypt 和 yescrypt 密码哈希算法的可选回合数设置为* n *。
  • broken_shadow

    • 忽略在帐户 Management 模块中读取用户影子信息的错误。
  • minlen=n

    • 将密码的最小长度设置为* n *个字符。最高基于 DES crypt 的密码为 8 个字符。
  • no_pass_expiry

    • 设置后,忽略用户的* shadow 条目所定义的密码到期时间。该选项仅在未使用 pam_unix 进行认证或返回认证失败(意味着其他认证源或方法成功)的情况下才有效。该示例可以是 sshd 中的公钥身份验证。该模块将返回 PAM_SUCCESS 而不是最终的 PAM_NEW_AUTHTOK_REQD PAM_AUTHTOK_EXPIRED *。

无效的参数使用 syslog(3)记录。

6.37.3. 提供的模块类型

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

6.37.4. 返回值

  • PAM_IGNORE

    • 忽略此模块。

6.37.5. EXAMPLES

/etc/pam.d/login的示例用法是:

# Authenticate the user
auth       required   pam_unix.so
# Ensure users account and password are still active
account    required   pam_unix.so
# Change the user's password, but at first check the strength
# with pam_cracklib(8)
password   required   pam_cracklib.so retry=3 minlen=6 difok=3
password   required   pam_unix.so use_authtok nullok yescrypt
session    required   pam_unix.so

6.37.6. AUTHOR

pam_unix 由许多人撰写。