Daemon
通過 Jenkins 部署守護程序的最安全方法
我正在用 Java 開發系統服務,對於部署,我想執行以下操作:
- 從建構中複製新的 Initd
- 停止正在部署的服務
- 覆蓋/複製新的 JAR/config 範例
- 啟動服務。
有沒有一種方法可以在不授予詹金斯 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 身份執行重啟。