1. 程式人生 > >Jenkins許可權配置失誤後導致登入失敗的解決辦法

Jenkins許可權配置失誤後導致登入失敗的解決辦法

    為了便於管理,Jenkins一般需要設定使用者,而且這些使用者是需要配置相應的許可權的,如果一不小心配置的時候出了問題,那麼,你就斯巴達了。
    這裡,用我的切身經歷,為大家說一下Jenkins因為許可權配置失誤而導致的登入失敗如何解決。
  1. 問題出現原因
    情況是這樣的:當時俺還不知道配置許可權如果點選確定了,當前使用者如果許可權不夠會直接被踢出來,於是,小夥伴就很開心的進行了這樣的額操作:開啟許可權配置中的安全矩陣,沒有給任何使用者配置許可權就點選了儲存。如下圖所示
    配置許可權的時候配置失誤的截圖
    於是,被系統踢出來了,再次登入的時候,系統很有好的提示我:Access Denied test使用者沒有overall/RunScripts許可權。如圖所示:
    登入失敗時的截圖

    小夥伴當時就斯巴達了,經過我的不(shang)懈(wang)努(qiu)力(zhu),終於成功的再次登入了,現在將這些解決方案分享給大家。
  2. 解決辦法1
    有一個比較簡單的方法:
    • 刪除使用者相關的目錄
    • 修改$Jenkins_home/config.xml檔案:false
    • 刪除authorizationStrategy、securityRealm節點
    • 重新啟動Jenkins
    這種方法將刪除Jenkins的許可權管理,恢復成初始狀態。不過可能會丟一些東西。
  3. 解決辦法2
    找到儲存使用者許可權的config檔案,該檔案一般在Jenkins的主目錄下,如圖所示:
    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中有的賬戶名,其他不需要改變。

  4. 配置檔案的其他作用
    配置檔案還有其他作用,比如我們在需要修改Jenkins登入的埠號的時候,通過修改config檔案中的程式碼將程式碼:
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
     中的8080修改為你需要的埠號,儲存,重啟,然後就可以了。