【问题标题】:jenkins build failure shell command permission denied詹金斯构建失败shell命令权限被拒绝
【发布时间】:2016-06-19 02:09:57
【问题描述】:

我正在尝试在 mac 上运行 shell build 命令,但我得到了permission denied,例如ls /Users/... 命令。

我看到whoamijenkins,这与我的uesr 登录不同?

我在线阅读我需要为 jenkins 用户运行 chmod,我该怎么做?

我使用 chmod 777 更改了文件权限?

我需要更换 jenkins 用户吗?

【问题讨论】:

  • ... 在您的ls 命令中对我们来说很重要,不要缩短它。此外,“为詹金斯用户运行 chmod”对我来说毫无意义。 chmod 什么文件/目录?您更改了文件权限,在什么方面?

标签: shell jenkins


【解决方案1】:

也许你有一个问题,jenkins 不是一个完整的用户。试试这个:

为 Jenkins 创建用户

最好以自己的用户身份运行 Jenkins(然后可以限制其拥有的权限),并且您需要为其创建一个标准(完整)用户。

您可以通过系统偏好设置、服务器管理器或命令行来执行此操作。

对于本地用户:

# create an applications group
dseditgroup -o create -n . -u username -p -r ‘Applications’ applications
# get the id for that group
sudo dscl . -read /Groups/applications
# find a unique identifier to give the user
sudo dscl . -list /Users UniqueID
# create the jenkins user
sudo dscl . -create /Users/jenkins
sudo dscl . -create /Users/jenkins PrimaryGroupID 505
sudo dscl . -create /Users/jenkins UniqueID 1026
sudo dscl . -create /Users/jenkins UserShell /bin/bash
sudo dscl . -create /Users/jenkins RealName "Jenkins"
sudo dscl . -create /Users/jenkins NFSHomeDirectory /Users/jenkins
sudo dscl . -passwd /Users/jenkins
# create and set the owner of the home directory
sudo mkdir /Users/jenkins
sudo chown -R jenkins /Users/jenkins

我在这里找到了这个:installing jenkins on OS X Yosemite

【讨论】:

    【解决方案2】:

    在 linux 中,例如ubuntu,你可以将用户 jenkins 添加到根组:

    sudo usermod -a -G root jenkins
    

    然后重启jenkins:

    sudo service jenkins restart
    

    请注意,将 jenkins 用户添加到 root 组会使用户过于强大,谨慎使用

    【讨论】:

    • 只能使用 sudo 模式删除目录/文件夹,即 jenkins/workspace$ sudo rm -rf
    【解决方案3】:

    就我而言,该文件夹位于 NFS/Samba/Webdav 共享中,这些脚本似乎无法处理。 我在我的 fs 中创建了一个真实文件夹,并将其链接到共享文件夹中的子目录。这样,就不会再发生权限被拒绝错误。

    【讨论】:

      【解决方案4】:

      Jenkins 用户无权运行非 jenkins 用户的文件夹或文件。使用在 shell 中以其他用户身份运行(假设是 linux 操作系统)或将文件夹或内容复制到 jenkins 默认文件夹。

      sh ''' 苏 - -

      复制文件夹到jenkins默认文件夹

      cp -rp /lib/jenkins/>

      【讨论】:

        【解决方案5】:
        1. 打开终端

        2. sudo nano /etc/sudoers

        在文件末尾添加以下语句:

        Jenkins ALL=(ALL) NOPASSWD: ALL

        保存退出

        【讨论】:

        • 执行上述步骤会带来很大的安全风险!每个 jenkins 调用都将使用 SUDO 权限完成 - 意味着 root 访问。如果构建服务器执行了任何恶意脚本(例如,通过构建中的依赖项),这可能会对您的基础架构构成巨大威胁。
        【解决方案6】:

        我在 Windows 中遇到了同样的问题,其中唯一的用户是 tadmin 和 Jenkins,它以提升/管理员权限从 CMD 运行。 我正在使用“内容替换插件” - 它只运行一次,之后说文件被锁定,但是 Unlocker 和其他实用程序没有显示任何内容,但我无法删除或重命名该文件。重新启动 Jenkins 服务并重新加载没有帮助,文件仍然被锁定。只有重新启动才能释放文件。

        它最终通过使用 powershell 插件来更改文件的内容 - 这运行没有问题(需要进行一些调整以使用 jenkins 变量和双引号)

        例如替换'img src' -> 'img title="branch, build..." src'

        powershell -Command "(gc ad/bootstrapheader.jsp) -replace 'img src', 'img title=""""branch: $env:GIT_BRANCH; build: $env:BUILD_ID"""""" src' | Out-File ad/bootstrapheader.jsp"

        【讨论】:

          猜你喜欢
          • 2018-05-25
          • 2018-04-04
          • 2012-06-08
          • 2014-08-25
          • 2020-01-08
          • 1970-01-01
          • 2017-03-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多