是否有可能强制jenkins的maven插件以root身份运行?

时间:2013-02-27 23:32:36

标签: maven jenkins root

我有一个特别涉及的Java应用程序,它需要对运行文件挂载的构建版本的系统资源进行root访问。有没有办法直接调用maven使用" sudo"来自jenkins通过maven2 / 3插件?或者插件总是像詹金斯一样运行。?

4 个答案:

答案 0 :(得分:2)

以下是如何以root身份运行Jenkins - 这将导致maven插件进程也以root身份运行。

方法1)修改/etc/sysconfig/jenkins

中JENKINS_USER中的以下行
  #JENKINS_USER=jenkins
  JENKINS_USER=root

在基于Debian的系统中,文件位于/etc/default/jenkins

方法2)直接修改/etc/init.d/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权限更好。