jenkins修改安全策略,权限设置丢失
一、概述
默认的jenkins用户权限,通过插件Role-based Authorization Strategy来设置的。
安装策略如下:
由于调式gitlab webhook自动提交部署,网上文章说,需要调整安全策略为:
保存之后,发现Manage and Assign Roles中的manage-roles只有admin,其他的权限都没有了。
普通用户登录之后,提示没有权限。
由于改之前,忘了对$JENKINS_HONE/config.xml 做备份,这咋办呢?
难道一个个重建?这么多用户,重建工作比较累。
二、恢复权限
最近的config.xml没有,但是2个月前的config.xml还有一份。不能直接拿这个文件直接覆盖掉,否则会导致很多Jenkins job丢弃。
config.xml大致结构如下:
<?xml version='1.1' encoding='UTF-8'?> <hudson> <disabledAdministrativeMonitors> <string>hudson.diagnosis.ReverseProxySetupMonitor</string> </disabledAdministrativeMonitors> <version>2.164.2</version> <installStateName>RESTART</installStateName> <numExecutors>3</numExecutors> <mode>NORMAL</mode> <useSecurity>true</useSecurity> <authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy"> <roleMap type="globalRoles"> <roleMap type="projectRoles"> <roleMap type="slaveRoles"> </authorizationStrategy> <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> <disableSignup>false</disableSignup> <enableCaptcha>false</enableCaptcha> </securityRealm> <disableRememberMe>false</disableRememberMe> <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/> <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir> <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir> <markupFormatter class="hudson.markup.EscapedMarkupFormatter"/> <jdks> <jdk> <name>JDK1.8.0_144</name> <home>/data/jdk1.8.0_144</home> <properties/> </jdk> </jdks> <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/> <clouds/> <quietPeriod>5</quietPeriod> <scmCheckoutRetryCount>0</scmCheckoutRetryCount> <views> <hudson.model.AllView> <owner class="hudson" reference="../../.."/> <name>all</name> <description>建立job后默认分类ALL</description> <filterExecutors>false</filterExecutors> <filterQueue>false</filterQueue> <properties class="hudson.model.View$PropertyList"/> </hudson.model.AllView> <listView></listView> </views> <primaryView>all</primaryView> <slaveAgentPort>0</slaveAgentPort> <label></label> <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer"> <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb> </crumbIssuer> <nodeProperties/> <globalNodeProperties/> </hudson>
将<useSecurity>true</useSecurity>到<scmCheckoutRetryCount>0</scmCheckoutRetryCount> 这部分内容替换掉。
再次重启jenkins,查看权限,就恢复好了
最后申明一下,gitlab webhook自动提交部署,不需要修改安全策略:登录用户可以做任何事。
出现403的原因是,jenkins job的token和gitlab设置的token不一致导致的。改成一样,就可以了,出现http 200表示成功。