我已经将最新的 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
所以我已经在目录所有者的用户下运行。
最佳答案
查看哪个用户正在运行
cp ./build/libs/myproject.war /usr/share/tomcat6/webapps
然后,您可以向该用户授予权限。在
build
中运行此命令->Shell Script
您工作的部分configure
.$ whoami // show the user, say 'xyz'
然后,从终端本地运行此命令以更改目录的所有权。
$ sudo chown -R xyz: /var/lib/tomcat6/webapps // give permission to that user
如果两个或更多用户需要该目录的权限,那么您可以创建
group
与users
,然后授予group
权限。请参阅this & this
关于tomcat - 如何让 Jenkins WAR 文件在不同用户下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33352044/