我有一個特別涉及的Java應用程序,需要對系統資源進行根訪問才能運行文件裝載。有沒有辦法通過maven2/3插件使用jenkins中的「sudo」直接調用maven?或者插件總是像jenkins一樣運行。?是否可以強制jenkins的maven插件以root身份運行?
回答
嘗試以root身份運行jenkins進程(儘管不是理想的安全方式),它應該以同一用戶的身份生成maven進程。
當你通過Jenkins maven插件運行maven時,它會在jenkins的進程中執行。運行服務器是一個根本不好的主意。你可以嘗試運行插件作爲shell命令:
sudo mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DartifactId=...
也看到這一點: https://superuser.com/questions/67765/sudo-with-password-in-one-command-line
這是一個值得嘗試的好主意。 – jayunit100 2013-02-28 19:31:10
我與詹金斯運行根東西的建議是,在詹金斯編譯二進制文件,並給予它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權利要好得多。
-1這似乎沒有專門針對jenkins(詹金斯是一個java程序,所以它不是純二進制可執行文件)。除非我錯過了一些東西...... – jayunit100 2013-03-01 14:36:23
用我的建議,你可以定義一些可以作爲root用戶執行的操作,就像你正在討論的文件掛載一樣。如果帶有suid位的可執行文件啓動系統調用「mount/mnt/mymount」,則掛載將按照root用戶在shell上編寫命令的方式執行。這不是你需要的嗎? – rcomblen 2013-03-02 14:16:54
以下是如何以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
- 1. 以root身份自動運行我的可執行文件ubuntu
- 2. 以root身份運行vim的問題
- 3. 是否可以在Mac上以NetBeans身份以root用戶身份運行Android模擬器
- 4. 如何在Jenkins中以root身份運行腳本?
- 5. 以root用戶身份運行本機android可執行文件?
- 6. 是否有可能在crontab中以root身份運行Bash文件?
- 7. 以root身份運行docker容器是否安全?
- 8. 以root身份運行php腳本
- 9. 以非root用戶身份運行Nginx
- 10. 以非root用戶身份運行Docker
- 11. 只能以root身份運行uwsgi
- 12. 以root身份運行部分代碼
- 13. 以非root用戶身份運行ntpdate
- 14. Ipython Notebook僅以root身份運行
- 15. 如何以root身份運行Google Chrome?
- 16. iPhone應用程序可以以root身份運行嗎?
- 17. 安裝Maven插件時是否可以運行maven artifact?
- 18. 以用戶「hudson」身份運行jenkins
- 19. 以root身份運行crontab,嘗試以root訪問權限運行cmd。幫助
- 20. 我們可以以root身份從APK運行一個.sh文件
- 21. Buildroot裏面沒有root身份運行,不希望以root
- 22. 應該以root身份運行自制服務?
- 23. 以普通用戶身份執行程序(以root身份)
- 24. 以root身份運行時以用戶身份啓動外部進程
- 25. Apache以root身份運行而不是新用戶
- 26. 以root用戶身份以編程方式運行C程序
- 27. 服務器軟件 - 以root身份運行哪一個?
- 28. Python以root身份運行腳本和/ home文件夾
- 29. 以root身份啓動lighttpd?
- 30. PHP - 以root身份執行命令
當然是一個好主意,但是想包裝maven,以便它始終以root身份運行。不幸的是,目前還不清楚詹金斯在哪裏以及如何管理來自 – jayunit100 2013-02-28 02:52:36
的maven在Jenkins上,您可以選擇使用什麼類型的構建工具用於您的項目。如果你選擇maven,那麼指定的maven命令將在構建觸發器上執行。我相信它執行命令的方式只是產生它自己的進程(因此maven進程應該在同一個操作系統用戶下) – gerrytan 2013-02-28 04:02:14
是的,這是有效的。我已經添加了一個單獨的答案,特別是如何以root身份運行jenkins。第二個想法,也許我應該剛剛添加,作爲對這個答案的迴應。 – jayunit100 2013-02-28 19:14:35