SUSE12Openssh升级 ./configure 遇到configure: error: *** libpam missing的解决办法

在SUSE12系统进行源码包安装OPENSSH时,./configure遇到libpam missing报错。虽之前已安装pam - devel,但可能包有问题。通过安装阿里源(https://mirrors.aliyun.com/opensuse/update/leap/42.3/),使用zypper in pam - devel解决了该问题。

系统 :SUSE12
源码包安装OPENSSH
./configure 时遇到这个报错 configure: error: *** libpam missing
我之前安装前已经安装pam-devel 但是估计安的这个包有问题,我安装了阿里源
地址 : https://mirrors.aliyun.com/opensuse/update/leap/42.3/
然后 zypper in pam-devel 解决掉了该问题

<think> 我们遇到了一个问题:在执行 `grep pam_pwquality /etc/pam.d/system-auth` 命令时提示 `/etc/pam.d/system-auth: No such file or directory`。这通常是因为在当前的Linux发行版中,系统认证配置文件的名字可能不是 `system-auth`,而是其他名称,或者该文件不存在。我们需要根据不同的发行版和PAM配置结构来定位正确的文件。 ### 解决步骤: #### 1. **确认系统发行版** 不同的Linux发行版使用不同的PAM配置文件结构: - **Red Hat/CentOS/Fedora**:通常使用 `/etc/pam.d/system-auth`。 - **Debian/Ubuntu**:通常使用 `/etc/pam.d/common-password`。 - **openSUSE/SLES**:可能使用 `/etc/pam.d/common-password` 或 `/etc/pam.d/passwd`。 可以通过以下命令查看系统发行版: ```bash cat /etc/os-release ``` #### 2. **查找正确的PAM配置文件** 我们需要查找与密码策略相关的PAM配置文件。通常,密码策略配置在以下文件中: - `/etc/pam.d/common-password`(Debian/Ubuntu) - `/etc/pam.d/system-auth`(Red Hat/CentOS/Fedora) - 也可能是其他文件,如 `/etc/pam.d/password-auth`(某些系统) 可以使用以下命令尝试搜索: ```bash ls /etc/pam.d | grep -E 'common-password|system-auth|password-auth' ``` #### 3. **检查文件中是否包含 `pam_pwquality` 配置** 一旦找到正确的文件,使用 `grep` 检查: ```bash # 例如,在Debian/Ubuntu上 grep pam_pwquality /etc/pam.d/common-password # 在Red Hat/CentOS/Fedora上 grep pam_pwquality /etc/pam.d/system-auth ``` 如果仍然找不到,可能是系统没有使用 `pam_pwquality` 模块,而是使用 `pam_cracklib`(旧版系统)。可以尝试搜索 `pam_cracklib`: ```bash grep pam_cracklib /etc/pam.d/* ``` #### 4. **如果文件不存在或没有配置,如何修复?** **情景1:文件不存在** - 可能是发行版使用了不同的配置文件路径,或者PAM配置尚未初始化。 - 可以尝试重新安装PAM配置包: ```bash # Debian/Ubuntu sudo apt install --reinstall libpam-runtime # Red Hat/CentOS sudo yum reinstall pam ``` **情景2:未配置 `pam_pwquality`** - 需要手动配置密码复杂度策略: - 编辑正确的PAM配置文件(如 `/etc/pam.d/common-password` 或 `/etc/pam.d/system-auth`)。 - 添加或修改一行来启用 `pam_pwquality`(或 `pam_cracklib`): ``` password requisite pam_pwquality.so retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 ``` 参数说明: - `retry=3`:允许重试3次 - `minlen=8`:最小长度8 - `dcredit=-1`:至少需要1个数字 - `ucredit=-1`:至少需要1个大写字母 - `lcredit=-1`:至少需要1个小写字母 - `ocredit=-1`:至少需要1个特殊字符 这样配置后,密码必须包含4种字符类型中的至少3种(因为如果设置4个参数都为-1,则要求至少4种字符?但我们的需求是至少3种)。注意,实际上 `minlen` 和这些 `credit` 参数共同作用,可能会影响实际的最小长度要求(例如,每个字符类型会贡献长度)。为了确保至少3种字符类型,我们可以选择设置其中3个参数为-1,另一个为0(即不要求)。例如,要求至少包含数字、大写字母、小写字母,而不要求特殊字符: ``` password requisite pam_pwquality.so retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=0 ``` 这样,密码需要至少8个字符,其中包含数字、大写、小写(3种类型),特殊字符可选。 - **注意**:不同发行版的配置位置可能不同,通常是在 `password` 模块的配置行中。 #### 5. **配置文件语法验证** 修改PAM配置文件后,务必使用 `pam-auth-update`(Debian/Ubuntu)或手动检查语法,避免配置错误导致无法登录。 - 在Debian/Ubuntu上,可以使用: ```bash sudo pam-auth-update ``` - 在其他系统上,建议重启前先在另一个终端保持root登录,以防配置错误被锁。 ### 常见错误处理: - **引用[4]中提到的权限问题**:如果遇到 `/etc/pam.conf` 权限问题,确保该文件权限为644(`-rw-r--r--`)且属主为root。 ```bash sudo chmod 644 /etc/pam.conf sudo chown root:root /etc/pam.conf ``` - **引用[3]中提到的头文件缺失**:如果编译PAM相关程序时缺少头文件,需要安装开发包: ```bash # Debian/Ubuntu sudo apt install libpam0g-dev # Red Hat/CentOS sudo yum install pam-devel ``` ### 总结: 1. 确定发行版,找到正确的PAM配置文件。 2. 若文件不存在,重新安装PAM包或创建配置文件。 3. 配置 `pam_pwquality` 参数以满足密码复杂度要求。 4. 测试配置后重启服务(如SSH)或重启系统(谨慎操作)。 §§相关问题§§ 1. 如何在不同的Linux发行版中统一配置密码复杂度策略? 2. `pam_pwquality` 和 `pam_cracklib` 模块有什么区别? 3. 配置错误的PAM导致无法登录系统,如何恢复? 4. 如何通过脚本批量配置多台服务器的密码策略? 5. 如何测试配置的密码策略是否生效? </think> 针对执行 `grep pam_pwquality /etc/pam.d/system-auth` 提示文件不存在的错误,以下是系统的排查和解决方案: --- ### 一、错误原因分析 1. **发行版差异** - Debian/Ubuntu 默认使用 `common-password` 而非 `system-auth` - OpenSUSE 使用 `passwd` 文件 - Arch Linux 使用 `system-local-login` - 验证当前系统: ```bash cat /etc/os-release # 查看发行版信息 ls /etc/pam.d/ # 列出所有PAM配置文件 ``` 2. **PAM配置缺失** - 系统未安装 `pam_pwquality` 模块(常见于最小化安装) - `/etc/pam.d/` 目录结构异常(权限问题或文件损坏) --- ### 二、解决方案 #### ▶ 情况1:确认正确配置文件(Debian/Ubuntu示例) ```bash # 检查密码策略文件 grep pam_pwquality /etc/pam.d/common-password # 输出示例: # password requisite pam_pwquality.so retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ``` - ✅ 输出包含 `minlen=8` 和至少3个 `*credit=-1` 即合规 - ❌ 无输出表示未配置 --- #### ▶ 情况2:修复未配置的策略(所有发行版通用) 1. **安装依赖包** ```bash # RedHat/CentOS sudo yum install libpwquality # Debian/Ubuntu sudo apt install libpam-pwquality ``` 2. **手动配置策略** 编辑对应配置文件(以 Ubuntu 为例): ```bash sudo nano /etc/pam.d/common-password ``` 添加以下行(实现长度8+3种字符): ```ini password requisite pam_pwquality.so retry=3 minlen=8 \ dcredit=-1 ucredit=-1 lcredit=-1 ocredit=0 enforce_for_root ``` > 📝 参数说明: > - `dcredit=-1`:至少1个数字 > - `ucredit=-1`:至少1个大写字母 > - `lcredit=-1`:至少1个小写字母 > - `ocredit=0`:特殊字符不作强制要求(满足3种字符类型即可)[^1] 3. **验证配置** ```bash # 测试密码复杂度 echo "TestPassword123" | pwscore # 输出分数>80即合规 echo "weakpass" | pwscore # 应返回低分 ``` --- #### ▶ 情况3:修复文件系统错误(引用[4]问题) ```bash # 检查PAM配置权限 ls -l /etc/pam.conf /etc/pam.d/ # 修复权限(示例) sudo chown root:root /etc/pam.d/ sudo chmod 755 /etc/pam.d/ sudo chmod 644 /etc/pam.d/* # 重置文件权限 ``` --- ### 三、配置验证方法 ```bash # 1. 检查模块是否加载 sudo pam_tally2 # 正常输出表示PAM基础正常 # 2. 强制密码策略测试 echo "user:newpassword" | sudo chpasswd # 故意用弱密码测试 # 合规系统应报错:BAD PASSWORD... ``` --- ### 四、跨发行版配置参考 | 发行版 | 配置文件 | 模块名称 | |---------------|----------------------------|------------------| | **RHEL/CentOS** | `/etc/pam.d/system-auth` | `pam_pwquality` | | **Debian/Ubuntu** | `/etc/pam.d/common-password` | `pam_pwquality` | | **OpenSUSE** | `/etc/pam.d/passwd` | `pam_cracklib` | | **Arch** | `/etc/pam.d/system-login` | `pam_unix` | > ⚠️ 注意:SUSE 通常使用 `pam_cracklib`,需改用参数: > `password requisite pam_cracklib.so minlen=8 difok=3 dcredit=-1 ucredit=-1` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值