【问题标题】:Jenkins Permission Denied詹金斯权限被拒绝
【发布时间】:2018-05-25 04:46:18
【问题描述】:

我很抱歉来这里问这个问题,但我已经阅读了所有互联网试图找到解决方案,但我仍然遇到这个问题......

我已经成功安装(当我还有希望的时候开始)jenkins 可以在我们的持续集成流程中使用它。

我尝试从一个像这样的简单示例开始:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn -B -DskipTests clean package' 
            }
        }
    }
}

但是每次启动都会出现这个错误:

sh: /var/lib/jenkins/workspace/Test@tmp/durable-f70a79f3/script.sh: Permission denied

问题是用户 jenkins(服务和主节点以 Jenkins 身份运行)拥有此存储库的所有权限。我也尝试授予组和其他人读取和执行的权限,但这并没有改变任何东西。

[centos@jenkins workspace]$ ll
total 8
drwxr-xr-x 2 jenkins jenkins 4096 Dec  8 18:35 Test
drwxr-xr-x 2 jenkins jenkins 4096 Dec 11 16:40 Test@tmp

我们正在使用这些参数启动 jenkins:

 -Djava.awt.headless=true -Djenkins.install.runSetupWizard=false -Djava.io.tmpdir=/var/lib/jenkins/tmp

在 /jenkins 网址上。除此之外,我看不出问题的原因......

edit : 使用 noexec 挂载的卷

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
/dev/mapper/rootvg-var_lv on /var type ext4 (rw,nodev,noexec,relatime,nobarrier,data=ordered)

非常感谢您的帮助。

【问题讨论】:

  • Test@tmp 中有什么?尝试仅将权限更改为您的script.sh。比如:chmod 755 ${WORKSPACE}/Test@tmp/**/*.sh
  • 代理能否在卷上有noexec(请参阅superuser.com/questions/99635/…)?
  • @Edwin :我没有任何脚本。我认为是 jenkins 在持久存储库中创建了一个 .sh 并尝试执行它。
  • 你看过你的pom.xml,也许你当时正在用maven做一些事情
  • @mkobit :我刚刚看到 /var 没有执行安装...我没想到 /var 中的所有文件都不允许执行。起初我以为它只是在存储库中,但它似乎是一个很好的线索,当我找到改变它的解决方案时,我会不断更新。谢谢

标签: jenkins permissions jenkins-pipeline file-permissions user-permissions


【解决方案1】:

确实是带有 noexec 的 /var...我没想到所有 /var 都在 noexec 中。这行我读了 10 遍,甚至没有尝试更改它...谢谢您的帮助

解决方案: 就像我在 cmets 中所说的,就是这一行:

/dev/mapper/rootvg-var_lv on **/var** type ext4 (rw,nodev,**noexec**,relatime,nobarrier,data=ordered)

所以我使用了sudo mount -o remount,exec /var,现在它工作正常。

【讨论】:

  • 哈,很高兴我能指出你正确的方向!保留您为确定这一点所做的一些步骤可能会有所帮助,以免其他人也遇到这种情况。
猜你喜欢
  • 2018-04-04
  • 2012-06-08
  • 2014-08-25
  • 2020-01-08
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
相关资源
最近更新 更多