Daemon

通過 Jenkins 部署守護程序的最安全方法

  • October 16, 2015

我正在用 Java 開發系統服務,對於部署,我想執行以下操作:

  1. 從建構中複製新的 Initd
  2. 停止正在部署的服務
  3. 覆蓋/複製新的 JAR/config 範例
  4. 啟動服務。

有沒有一種方法可以在不授予詹金斯 root 訪問權限的情況下做到這一點?

$$ For those non-jenkins folk: Jenkins uses SCP & SSH to do the copying and command sending $$我擔心的是,如果我授予 Jenkins 根訪問權限,您並沒有限制所授予的權限。其範圍是僅將更改限制為該一項服務。(它不依賴於其他服務) 我願意放寬第一個要求,因為它可能會使解決方案更加棘手。

這個網站上已經有一些 關於如何讓一個使用者以 root 身份只執行一個腳本的問題(例如使用 sudo);基本上,您需要編寫一個執行步驟 2-4(例如service foo stop; cp -f ~jenkins/service.init /etc/init.d/; service foo start)的腳本,並在/etc/sudoers.

但是,從根本上說,允許 Jenkins安裝初始化腳本與授予 Jenkins(以及任何可以更改創建腳本並重新執行作業的輸入的人)完全的 root 訪問權限是一樣的,因為當您執行初始化腳本時,初始化腳本將以 root 身份執行重啟。

引用自:https://unix.stackexchange.com/questions/236701