提问人:himneh 提问时间:11/16/2023 更新时间:11/17/2023 访问量:27
在 jenkins 中使用 lxc-container 运行 shell bash 命令时权限被拒绝
Permission denied while running shell bash command with lxc-container in jenkins
问:
在 Jenkinsfile 中运行此块时:
String runTest = """
#!/bin/bash
if [ ${EXTRA_ENV} != "none" ]; then
echo "source extra environment file"
source ${WORKSPACE}/${upgradeEnvFile} //this one create a tmp.txt file
fi
cat tmp.txt
"""
rc = sh(script: runTest, returnStatus: true)
我遇到了这个问题:
Cannot contact KVM-66: java.io.FileNotFoundException: /home/coolboy/workspace/DemoJob@tmp/durable-451e7be4/jenkins-log.txt (Permission denied)
当我访问 KVM 并 ls 它时:
total 84
drwxrwxr-x 3 coolboy coolboy 4096 Nov 15 16:37 ..
-rw-rw-r-- 1 coolboy coolboy 652 Nov 15 16:37 script.sh
-rwx------ 1 root coolboy 65849 Nov 15 16:37 jenkins-log.txt
-rw-rw-r-- 1 coolboy coolboy 2 Nov 15 16:37 jenkins-result.txt
drwxrwxr-x 2 coolboy coolboy 4096 Nov 15 16:37 .
不知何故,“jenkins-log”的所有者更改为 root。并且,“tmp.txt”已成功创建。
我试过这些: 在运行 bash 脚本的 jenkins 管道中拒绝权限 运行 maven 命令 jenkins 时权限被拒绝
但这些都行不通。 使用相同的作业和配置,在 ubuntu18.04 上运行时总是成功的。 我的版本:
- Jenkins 的版本:2.249.2
- KVM 操作系统:ubuntu20.04
- 持久任务的版本:1.35
我用以下命令设置了新的环境:
- Jenkins 版本:2.375.3
- 持久任务:510.v324450f8dca_4
但仍然有同样的问题。
有什么想法吗?提前致谢
答:
0赞
Jeff Sloyer
11/17/2023
#1
该文件是问题归 root 所有,而不是当前 jenkins 用户。您可以尝试运行以下命令:
sudo root
chown coolboy:coolboy jenkins-log.txt
评论
0赞
himneh
11/24/2023
实际上,该文件夹(具有 jenkins-log)是由持久任务插件创建的。所以我不知道我可以在哪里插入 chown 命令:D奇怪的是,我的管道有许多持久的任务(每个任务都有一个 jenkins-log 文件,所有这些都是在 root root 权限下传递的)。只有我提到的块失败了
评论