在大多数Linux发行版中,`/etc/pam.d/system-auth` 文件是系统认证(如密码验证)的PAM配置的核心文件。不同的Linux发行版可能会有细微的差别,但它们通常会包含一些标准的模块和配置。以下是一个典型的`system-auth`文件的示例配置:
```plaintext
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet
auth required pam_deny.so
account required pam_nologin.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so nullok use_authtok try_first_pass sha512
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
```
这里是每个部分的简要说明:
1. **auth**: 这部分处理认证请求。`pam_env.so` 设置环境变量,`pam_unix.so` 允许使用传统的UNIX密码认证,`pam_succeed_if.so` 允许UID大于或等于1000的用户安静地(无提示)登录,`pam_deny.so` 拒绝所有认证尝试。
2. **account**: 这部分用于账户管理,例如检查用户的账户是否被锁定或是否允许登录。`pam_nologin.so` 阻止使用`/etc/nologin`文件中列出的用户登录,`pam_permit.so` 允许所有用户通过账户验证。
3. **password**: 这部分处理密码管理。`pam_pwquality.so` 检查密码质量,`pam_unix.so` 用于UNIX密码管理,`pam_deny.so` 拒绝所有密码更改尝试。
4. **session**: 这部分处理会话管理。`pam_keyinit.so` 初始化用户会话,`pam_limits.so` 应用用户限制,`pam_succeed_if.so` 允许特定服务(如crond)在不进行认证的情况下启动会话,`pam_unix.so` 用于设置用户环境。
请注意,这只是一个示例配置,你的系统上的实际配置可能会有所不同。如果你需要查看或修改你的系统上的`system-auth`文件,你应该使用root权限,并小心操作,因为错误的配置可能会导致系统安全问题或登录问题。如果你不确定,最好咨询有经验的系统管理员。