有可能强制jenkins的maven插件以root用户身份运行吗?

有可能强制jenkins的maven插件以root用户身份运行吗?,maven,jenkins,root,Maven,Jenkins,Root,我有一个特别涉及的java应用程序,在运行文件装载的构建过程中需要root访问系统资源。有没有办法通过maven2/3插件直接使用jenkins的“sudo”调用maven?还是该插件总是以jenkins的身份运行?尝试以root用户身份运行jenkins进程(尽管在安全性方面并不理想),它应该以相同的用户身份生成maven进程。当您通过jenkins maven插件运行maven时,它在jenkins的进程中执行。在根目录下运行服务器是个坏主意。您可以尝试将插件作为shell命令运行: sud

我有一个特别涉及的java应用程序,在运行文件装载的构建过程中需要root访问系统资源。有没有办法通过maven2/3插件直接使用jenkins的“sudo”调用maven?还是该插件总是以jenkins的身份运行?

尝试以root用户身份运行jenkins进程(尽管在安全性方面并不理想),它应该以相同的用户身份生成maven进程。

当您通过jenkins maven插件运行maven时,它在jenkins的进程中执行。在根目录下运行服务器是个坏主意。您可以尝试将插件作为shell命令运行:

sudo mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DartifactId=...
另见:

我对jenkins运行root things的建议是在jenkins上编译一个二进制文件并给它suid位,这样jenkins用户就可以启动它,但作为root用户执行。例如,我编写了一个C文件:

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

int main(){
    system("whoami");
}
给它一点

# chmod u+s iamroot
然后您(作为任何其他用户)获得


现在jenkins用户可以运行它,并声明它是root。就安全性而言,这比授予jenkins用户root或sudo权限要好得多。

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

方法1)在
/etc/sysconfig/JENKINS
在基于Debian的系统中,文件位于
/etc/default/jenkins

方法2)直接修改/etc/init.d/jenkins 然后,当然,您必须运行:

service jenkins restart

当然这是个好主意,但它就像包装maven一样,所以它总是作为根运行。不幸的是,Jenkins在何处以及如何管理maven fromOn尚不清楚。在Jenkins上,您可以选择用于项目的构建工具的类型。如果选择maven,那么指定的maven命令将在构建触发器上执行。我相信它执行命令的方式只是通过生成自己的进程(因此maven进程应该属于同一个OS用户)是的,这是可行的。我添加了一个单独的答案,具体是如何以root身份运行jenkins。再想一想,也许我应该加上它作为对这个答案的回应。-1这似乎根本没有专门针对jenkins(jenkins是一个java程序,所以它不是一个纯二进制可执行文件)。除非我遗漏了什么……根据我的建议,您可以定义一些可以由任何用户作为root用户执行的操作,比如执行您所说的文件装载。如果具有suid位的可执行文件启动了系统调用“mount/mnt/mymount”,那么装载将像根用户在shell上编写命令一样执行。这不是你需要的吗?
$ ./iamroot
root
  #JENKINS_USER=jenkins
  JENKINS_USER=root
  #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