Rundeck创建非管理员用户异常:默认带admin角色且配置用户无法登录
Rundeck 非管理员用户配置异常排查
核心问题根因
当前JAAS认证链配置存在两处逻辑问题,直接对应遇到的两个故障:
- 所有用户额外携带admin角色:认证链第一个加载的
JettyPamLoginModule配置了supplementalRoles="admin"参数,该参数会给所有通过PAM认证(即服务器本地系统用户)的登录主体无条件追加admin角色,和realm.properties中配置的角色列表无关。 - realm.properties中创建的纯文件用户无法登录:当前配置的
JettyRolePropertyFileLoginModule仅负责读取realm.properties中的角色映射关系,不提供用户名密码校验能力;同时配置的useFirstPass="true"参数指定该模块不会独立校验密码,只会复用前序PAM模块的认证结果。realm.properties中创建的operationsuser2没有对应本地系统用户时,第一步PAM认证就会直接失败,自然无法完成登录。
注意:
JettyRolePropertyFileLoginModule是角色补充模块,并非用户认证模块,可同时支持文件内账号密码校验+角色读取的认证模块是PropertyFileLoginModule。
修复方案
根据实际用户管理需求二选一即可,所有配置修改完成后需执行systemctl restart rundeckd重启服务生效。
方案1:同时支持本地系统用户登录+realm.properties内置用户登录,取消默认admin权限
修改/etc/rundeck/jaas-loginmodule.conf配置,调整模块加载顺序、移除不合理的默认角色配置,参考配置如下:
RDpropertyfilelogin { // 优先加载文件认证模块,校验realm.properties中内置用户的账号密码与角色 org.eclipse.jetty.jaas.spi.PropertyFileLoginModule sufficient debug="true" file="/etc/rundeck/realm.properties"; // PAM认证模块后置,校验本地系统用户身份,移除supplementalRoles配置避免默认授予管理员权限 org.rundeck.jaas.jetty.JettyPamLoginModule requisite debug="true" service="sshd" storePass="true"; // 角色映射模块,为通过PAM认证的系统用户匹配realm.properties中配置的角色 org.rundeck.jaas.jetty.JettyRolePropertyFileLoginModule required debug="true" useFirstPass="true" file="/etc/rundeck/realm.properties"; };
配置生效后逻辑如下:
- 登录时优先匹配realm.properties中的内置账号,匹配成功直接完成认证,无需对应本地系统用户,权限完全按文件中配置的角色生效。
- 本地系统用户登录时走PAM校验,不会再被默认追加admin角色,权限以realm.properties中对应用户名配置的角色为准,未配置角色的用户仅能拿到基础访问权限。
方案2:仅使用realm.properties维护全量用户,关闭PAM系统用户登录
如果不需要支持服务器本地系统用户直接登录Rundeck,可简化JAAS配置,仅保留文件认证模块:
RDpropertyfilelogin { org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required debug="true" file="/etc/rundeck/realm.properties"; };
该配置下仅realm.properties中定义的用户可登录Rundeck,权限完全由文件内配置的角色决定,不会出现默认携带admin角色的问题。
补充说明
当前配置的operations角色ACL策略逻辑正确,用户成功绑定operations角色后,即可正常获得指定项目的只读权限、指定作业的读取/执行权限、节点读取权限和临时命令执行权限,无需额外调整。
内容的提问来源于stack exchange,提问作者Acceptance
相关产品推荐
相关产品推荐

