我有一个特别涉及的 java 应用程序,它需要在构建运行文件挂载时对系统资源进行 root 访问。有没有办法通过 maven2/3 插件使用 jenkins 的“sudo”直接调用 maven?还是插件总是以jenkins运行。?
问问题
3437 次
4 回答
3
以下是如何以 root 身份运行 Jenkins - 这将导致 maven 插件进程也以 root 身份运行。
方法1)在JENKINS_USER中修改如下行/etc/sysconfig/jenkins
#JENKINS_USER=jenkins
JENKINS_USER=root
在基于 Debian 的系统中,该文件位于/etc/default/jenkins
方法二)直接修改/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
于 2013-02-28T19:11:40.437 回答
1
尝试以 root 身份运行 jenkins 进程(尽管在安全方面并不理想),它应该以同一用户的身份生成 maven 进程。
于 2013-02-28T01:13:06.777 回答
1
当您通过 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
于 2013-02-28T06:06:50.513 回答
-2
我对使用 jenkins 运行 root 的建议是在 jenkins 上编译一个二进制文件并给它 suid 位,以便它可以由 jenkins 用户启动但以 root 身份执行。例如,我写了一个 C 文件:
#include <stdio.h>
#include <stdlib.h>
int main(){
system("whoami");
}
编译它(作为根)
# gcc -c iamroot.c
# gcc -o iamroot iamroot.o
并给它一点
# chmod u+s iamroot
然后您获得(与任何其他用户一样)
$ ./iamroot
root
现在这可以由 jenkins 用户运行,并声明它是 root。在安全性方面,它比给 jenkins 用户 root 或 sudo 权限要好得多。
于 2013-02-28T07:03:09.107 回答