IBM MQ Docker容器添加用户至mqm组提示权限拒绝问题咨询
问题根因
执行用户添加操作报权限不足、无法锁定/etc/group,核心原因有两点:
- 仅通过
-u 0参数切换root身份启动容器,没有放开容器必需的系统操作权限,root身份也无法执行用户配置修改 - IBM MQ官方镜像默认给
/etc/passwd、/etc/group等用户配置文件加了不可修改的文件锁,直接执行useradd命令会被系统拦截
解决方案
分两种场景选择对应操作:
运行中容器临时添加(仅适用于测试环境)
- 启动容器时不要只加
-u 0,需要额外追加权限参数,启动示例:docker run -e LICENSE=accept --cap-add=AUDIT_WRITE --user root -d ibmcom/mq:latest - 进入容器后,先移除用户配置文件的不可修改锁:
chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow - 执行用户添加命令:
useradd user101 -G mqm && \ echo user101:passw0rd | chpasswd - 操作完成后建议把锁加回,避免配置被意外篡改:
chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow
自定义镜像预置用户(生产环境推荐)
不要直接修改运行中容器的配置,通过Dockerfile构建自定义镜像,构建阶段默认拥有完整root权限,不会触发权限限制:
FROM ibmcom/mq:latest USER root RUN useradd user101 -G mqm && \ echo user101:passw0rd | chpasswd USER mqm
用构建完成的自定义镜像正常启动容器即可,不需要额外加特殊启动参数,配置也能持久化复用。
注意:生产环境不建议给运行中的容器追加额外系统权限、移除系统文件锁,会扩大攻击面,优先选择自定义镜像的方式预置用户。
内容的提问来源于stack exchange,提问作者user9439034
相关产品推荐
相关产品推荐

