2013-02-27 26 views

回答

1

嘗試以root身份運行jenkins進程(儘管不是理想的安全方式),它應該以同一用戶的身份生成maven進程。

+0

當然是一個好主意,但是想包裝maven,以便它始終以root身份運行。不幸的是,目前還不清楚詹金斯在哪裏以及如何管理來自 – jayunit100 2013-02-28 02:52:36

+0

的maven在Jenkins上,您可以選擇使用什麼類型的構建工具用於您的項目。如果你選擇maven,那麼指定的maven命令將在構建觸發器上執行。我相信它執行命令的方式只是產生它自己的進程(因此maven進程應該在同一個操作系統用戶下) – gerrytan 2013-02-28 04:02:14

+0

是的,這是有效的。我已經添加了一個單獨的答案,特別是如何以root身份運行jenkins。第二個想法,也許我應該剛剛添加,作爲對這個答案的迴應。 – jayunit100 2013-02-28 19:14:35

-2

我與詹金斯運行根東西的建議是,在詹金斯編譯二進制文件,並給予它suid位,所以它可以由jenkins用戶啓動,但以root身份執行。舉例來說,我寫了一個C文件:

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 
    system("whoami"); 
} 

編譯(根)

# gcc -c iamroot.c 
# gcc -o iamroot iamroot.o 

,並給它suid位

# chmod u+s iamroot 

然後你獲得(與任何其他用戶)

$ ./iamroot 
root 

現在這可以運行jenkins用戶,並說明它是根。就安全性而言,這比給詹金斯用戶root或sudo權利要好得多。

+0

-1這似乎沒有專門針對jenkins(詹金斯是一個java程序,所以它不是純二進制可執行文件)。除非我錯過了一些東西...... – jayunit100 2013-03-01 14:36:23

+0

用我的建議,你可以定義一些可以作爲root用戶執行的操作,就像你正在討論的文件掛載一樣。如果帶有suid位的可執行文件啓動系統調用「mount/mnt/mymount」,則掛載將按照root用戶在shell上編寫命令的方式執行。這不是你需要的嗎? – rcomblen 2013-03-02 14:16:54

2

以下是如何以root身份運行Jenkins - 這將導致maven插件進程也以root身份運行。

方法1)修改在JENKINS_USER以下行中/etc/sysconfig/jenkins

#JENKINS_USER=jenkins 
    JENKINS_USER=root 

在基於Debian的系統,該文件位於/etc/default/jenkins

方法2)直接修改/etc/init.d/中詹金斯

#daemon --user "$JENKINS_USER" --pidfile "$JENKINS_PID_FILE" $JAVA_CMD $PARAMS > /dev/null 
    echo "WARNING: RUNNING AS ROOT" 
    daemon --user root --pidfile "$JENKINS_PID_FILE" $JAVA_CMD $PARAMS > /dev/null 

然後,當然,你必須運行:

service jenkins restart 
相關問題