You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buildroot根文件系统阻止非root用户通过su命令提权问题咨询

问题根因
  1. 你仅验证了/bin/login链接了PAM库,但未确认实际使用的su二进制是否支持PAM:Buildroot默认使用BusyBox提供的su工具,即使开启了BR2_PACKAGE_LINUX_PAM=y,如果没有开启BusyBox的PAM编译选项,su不会加载PAM配置,你写的/etc/pam.d/su规则完全不生效。
  2. /etc/pam.d/su配置不完整,仅添加pam_wheel.so规则缺少必要的PAM校验链兜底逻辑,即使su支持PAM也可能因规则链不完整导致限制不生效。
  3. 可能存在pam_wheel.so路径配置错误,导致模块加载失败,规则失效。
解决步骤

步骤1:启用su的PAM支持

首先执行以下命令确认当前su是否支持PAM:

ldd /bin/su | grep pam

如果无输出,说明su未链接PAM库,二选一处理:

  • 方案A(继续使用BusyBox su):在Buildroot配置中开启BR2_PACKAGE_BUSYBOX_PAM=y,重新编译BusyBox和根文件系统
  • 方案B(替换为shadow包su):在Buildroot配置中开启BR2_PACKAGE_SHADOW=y,默认会替换BusyBox的su为shadow包的PAM兼容版本

步骤2:补全/etc/pam.d/su配置

将/etc/pam.d/su内容修改为完整规则:

# 允许root用户免密执行su
auth            sufficient      pam_rootok.so
# 仅允许wheel组成员执行su
auth            required        pam_wheel.so use_uid
# 账户合法性校验
account         required        pam_unix.so
# 会话初始化
session         required        pam_unix.so

步骤3:验证模块路径和组配置

  • 执行ls /lib/security/pam_wheel.so确认模块存在,若不存在则将配置中的路径替换为实际路径(常见路径还有/usr/lib/security/pam_wheel.so、/lib64/security/pam_wheel.so)
  • 执行grep wheel /etc/group确认输出为wheel:x:10:,没有admin用户在组列表中

步骤4:验证效果

使用admin用户SSH登录后执行su,会直接返回权限拒绝或密码验证失败,即限制生效。

内容的提问来源于stack exchange,提问作者aicastell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:36:03