Jenkins构建失败,Shell命令权限被拒绝。

6

我正在尝试在 Mac 上运行 Shell build 命令,但是像 ls /Users/... 这样的命令会显示 permission denied

我发现 whoamijenkins,而不是我的用户登录账号?

我在网上看到需要为 jenkins 用户运行 chmod,该如何操作?

我使用 chmod 777 更改文件权限可以吗?

是否需要更改 jenkins 用户?


你的 ls 命令中的 ... 对我们来说很重要,请不要缩短它。此外,“为 jenkins 用户运行 chmod” 对我来说毫无意义。chmod 哪个文件/目录?你更改了哪个文件的权限? - Kusalananda
6个回答

5
在Linux系统(例如Ubuntu)中,您可以将用户“jenkins”添加到root组中:
sudo usermod -a -G root jenkins

然后重新启动Jenkins:

sudo service jenkins restart

请注意,将Jenkins用户添加到root组可能会使其权限过于强大,请谨慎使用。


只能以管理员模式删除目录/文件夹,即jenkins/workspace$ sudo rm -rf <文件夹名称>。 - HydTechie

3
也许你遇到了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

我在这里找到了它:安装 Jenkins 在 OS X Yosemite 上

0

我在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"


0
在我的情况下,文件夹位于NFS/Samba/Webdav共享中,这些脚本似乎无法处理。 我在我的文件系统中创建了一个真实的文件夹,并将其链接到共享文件夹的子目录。这样,就不会再出现权限被拒绝的错误了。

0

Jenkins用户没有权限运行非Jenkins用户文件夹或文件。在shell中使用其他用户身份运行(假设为Linux操作系统),或将文件夹或内容复制到Jenkins默认文件夹。

sh ''' su - - << EOF 要运行的命令 '''

或者

将文件夹复制到Jenkins默认文件夹

cp -rp <要运行的文件夹/文件/相关脚本> </usr/lib/jenkins/>


0
打开终端 sudo nano /etc/sudoers 在文件末尾添加以下语句: Jenkins ALL=(ALL) NOPASSWD: ALL 保存并退出

4
按照描述的步骤操作会带来巨大的安全风险!每个Jenkins调用都将使用SUDO权限进行(即根访问)。如果构建服务器上执行了任何恶意脚本(例如,由构建内部的依赖项),这可能对您的基础设施造成严重威胁。 - de-jcup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接