Jenkins許可權配置失誤後導致登入失敗的解決辦法
為了便於管理,Jenkins一般需要設定使用者,而且這些使用者是需要配置相應的許可權的,如果一不小心配置的時候出了問題,那麼,你就斯巴達了。
這裡,用我的切身經歷,為大家說一下Jenkins因為許可權配置失誤而導致的登入失敗如何解決。
- 問題出現原因
情況是這樣的:當時俺還不知道配置許可權如果點選確定了,當前使用者如果許可權不夠會直接被踢出來,於是,小夥伴就很開心的進行了這樣的額操作:開啟許可權配置中的安全矩陣,沒有給任何使用者配置許可權就點選了儲存。如下圖所示
於是,被系統踢出來了,再次登入的時候,系統很有好的提示我:Access Denied test使用者沒有overall/RunScripts許可權。如圖所示:
小夥伴當時就斯巴達了,經過我的不(shang)懈(wang)努(qiu)力(zhu),終於成功的再次登入了,現在將這些解決方案分享給大家。 - 解決辦法1
有一個比較簡單的方法:
• 刪除使用者相關的目錄
• 修改$Jenkins_home/config.xml檔案:false
• 刪除authorizationStrategy、securityRealm節點
• 重新啟動Jenkins
這種方法將刪除Jenkins的許可權管理,恢復成初始狀態。不過可能會丟一些東西。 解決辦法2
找到儲存使用者許可權的config檔案,該檔案一般在Jenkins的主目錄下,如圖所示:
選中,右擊,用記事本開啟。開啟後是這個樣紙的:
是不是感覺有點亂,沒關係的了,我們只需要從中找到你的一個使用者,然後給它分配所有的許可權,然後就可以了。
我們要找到其中的兩句程式碼
<useSecurity>true</useSecurity>
和</securityRealm>
然後,將它們之間的程式碼選中,替換為下面的程式碼:<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
<permission>hudson.model.Computer.Configure:admin</permission>
<permission>hudson.model.Computer.Connect:admin</permission>
<permission>hudson.model.Computer.Create:admin</permission>
<permission>hudson.model.Computer.Delete:admin</permission>
<permission>hudson.model.Computer.Disconnect:admin</permission>
<permission>hudson.model.Hudson.Administer:admin</permission>
<permission>hudson.model.Hudson.Read:admin</permission>
<permission>hudson.model.Hudson.Read:anonymous</permission>
<permission>hudson.model.Hudson.RunScripts:admin</permission>
<permission>hudson.model.Item.Build:admin</permission>
<permission>hudson.model.Item.Cancel:admin</permission>
<permission>hudson.model.Item.Configure:admin</permission>
<permission>hudson.model.Item.Create:admin</permission>
<permission>hudson.model.Item.Delete:admin</permission>
<permission>hudson.model.Item.Discover:admin</permission>
<permission>hudson.model.Item.Read:admin</permission>
<permission>hudson.model.Item.Workspace:admin</permission>
<permission>hudson.model.Run.Delete:admin</permission>
<permission>hudson.model.Run.Update:admin</permission>
<permission>hudson.model.View.Configure:admin</permission>
<permission>hudson.model.View.Create:admin</permission>
<permission>hudson.model.View.Delete:admin</permission>
<permission>hudson.model.View.Read:admin</permission>
<permission>hudson.scm.SCM.Tag:admin</permission>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
這時,admin這個使用者是擁有所有的許可權的,將Jenkins重啟(如果不知道怎麼重啟的可以直接儲存後重啟電腦,比較簡單。)然後用admin這個賬號登入就可以了。如果沒有admin使用者,可以將admin替換為Jenkins中有的賬戶名,其他不需要改變。- 配置檔案的其他作用
配置檔案還有其他作用,比如我們在需要修改Jenkins登入的埠號的時候,通過修改config檔案中的程式碼將程式碼:
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
中的8080修改為你需要的埠號,儲存,重啟,然後就可以了。