【问题标题】:How do I get the Jenkins WAR file to run under a different user?如何让 Jenkins WAR 文件在不同的用户下运行?
【发布时间】:2016-01-25 22:10:32
【问题描述】:

我已经将最新的 Jenkins WAR 部署到了这种 Linux 风格的 Tomcat 6 服务器上……

[daveaip-30-888-22-999 ~]$ uname -a
Linux ip-30-888-22-999 4.1.7-99.99.amzn1.x86_64 #1 SMP Mon Sep 14 23:20:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

我有一份构建 Gradle 项目的工作。构建成功后,我想将新生成的 WAR 文件复制到 Tomcat 6 目录下。我有这个 shell 脚本作为额外的构建步骤……

cp ./build/libs/myproject.war /usr/share/tomcat6/webapps

Tomcat6 webs 目录有这些权限……

[daveaip-30-888-22-999 ~]$ ls -al /var/lib/tomcat6/webapps
total 77876
drwxrwxr-x  4 tomcat tomcat     4096 Oct 23 19:52 .

但命令失败并出现此错误……

+ cp ./build/libs/myproject.war /usr/share/tomcat6/webapps
cp: cannot create regular file ‘/usr/share/tomcat6/webapps/myproject.war’: Permission denied

我需要做什么才能授予 Jenkins 复制此文件的权限?我不想将目录的权限更改为 777。

编辑:响应给出的答案,我在构建脚本中添加了一个“whoami”...

whoami
cp ./build/libs/myproject.war $CATALINA_HOME/webapps

输出是

+ whoami
tomcat
+ cp ./build/libs/myproject.war /usr/share/tomcat6/webapps

所以我已经在作为目录所有者的用户下运行了。

【问题讨论】:

    标签: tomcat jenkins permissions


    【解决方案1】:
    1. 然后查看是哪个用户运行cp ./build/libs/myproject.war /usr/share/tomcat6/webapps命令,可以给该用户权限。

    2. 在工作的configureShell Script 部分中运行此命令。

      $ whoami    // show the user, say 'xyz'
      

      然后,从终端本地运行此命令以更改目录的所有权。

      $ sudo chown -R xyz: /var/lib/tomcat6/webapps  // give permission to that user
      
    3. 如果两个或更多用户需要对该目录的权限,那么您可以使用users 创建一个group,然后将权限授予该group。见this & this

    【讨论】:

    • 嘿,我在语句中添加了“whoami”,但它输出的用户已经是拥有我试图复制到的目录的用户。
    • 你能试试cp -f ./build/libs/myproject.war /usr/share/tomcat6/webapps吗?并重新启动服务器。
    • 查看./build/libs/myproject.war的权限。您可以尝试从您的詹金斯终端复制是否有效。
    • 是的,./build/libs/myproject.war 的文件所有权是问题所在。改变它可以让一切正常工作。
    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多