我有一个特别涉及的Java应用程序,它需要对运行文件挂载的构建版本的系统资源进行root访问。有没有办法直接调用maven使用" sudo"来自jenkins通过maven2 / 3插件?或者插件总是像詹金斯一样运行。?
答案 0 :(得分:2)
以下是如何以root身份运行Jenkins - 这将导致maven插件进程也以root身份运行。
/etc/sysconfig/jenkins
#JENKINS_USER=jenkins
JENKINS_USER=root
在基于Debian的系统中,文件位于/etc/default/jenkins
#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 :(得分:1)
尝试以root身份运行jenkins进程(尽管不是理想的安全性),它应该以同一个用户的身份生成maven进程。
答案 2 :(得分:1)
当您通过Jenkins maven插件运行maven时,它在jenkins的进程中执行。运行服务器是root是个坏主意。您可以尝试将插件作为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
答案 3 :(得分:-2)
我建议用jenkins运行root用法是在jenkins上编译一个二进制文件并给它suid位,这样它就可以由jenkins用户启动但是以root身份执行。例如,我写了一个C文件:
#include <stdio.h>
#include <stdlib.h>
int main(){
system("whoami");
}
编译它(以root身份)
# gcc -c iamroot.c
# gcc -o iamroot iamroot.o
并给它suid位
# chmod u+s iamroot
然后你获得(和任何其他用户一样)
$ ./iamroot
root
现在这可以由jenkins用户运行,并声明它是root用户。在安全性方面,它比给jenkins用户root或sudo权限更好。