我有一个运行在CentOS 8上的jenkins,一个简单的工作,应该在文本文件中写一些东西。
echo "Hello" > /home/dev/Git/Test.txt
目标目录应为Git
:
[dev@h2899618 ~]$ ls -l /home/dev/
insgesamt 12
drwxrwxr-x 3 dev dev 4096 7. Okt 20:54 Git
用户dev
具有以下权限:
[dev@h2899618 ~]$ /usr/bin/id
uid=1002(dev) gid=1002(dev) Gruppen=1002(dev),10(wheel),48(apache),991(jenkins),994(docker)
Jenkins使用以下权限(通过在作业内部执行/usr/bin/id
进行验证):
uid=996(jenkins) gid=991(jenkins) groups=991(jenkins)
作业失败,并显示以下消息:
[Test4Jenkins] $ /bin/sh -xe /tmp/jenkins3692200929413510467.sh
+ /usr/bin/id
uid=996(jenkins) gid=991(jenkins) groups=991(jenkins)
+ echo Hallo
/tmp/jenkins3692200929413510467.sh: line 3: /home/dev/Git/Test.txt: Permission denied
那为什么詹金斯没有写这个目录的权限?
答案 0 :(得分:1)
因此,您具有 drwxrwxr-x 3 dev dev 4096 权限,这意味着用户dev
可以执行任何操作,组dev
中的用户可以执行任何操作,其他(包括jenkins
)没有写位,因此无法修改目录内容。但是,通过执行chmod o+w /home/dev/
添加此位将以最坏的方式解决问题,因为您要授予一个用户对另一个用户的主文件夹的权限。最好使用一些专用目录,例如/var/lib/share
。甚至最好尝试以不需要詹金斯访问任何东西的方式实现您的目标,但它是自己的主文件夹=)祝您好运!
附言您可能想将jenkins
个用户添加到组dev
,而不是将dev
添加到jenkins
用户