首页 > 解决方案 > 可以创建文件,但不能修改?

问题描述

我的权限有问题。我在 shell 中运行 gitlab-runner,它应该将文件从我的 repo 复制到它也可以访问的特定目录。当 gitlab 运行程序应该复制文件的这些目录不存在时,它会创建并复制它而没有任何问题。但是在我的仓库提交一次之后,管道卡住了,我收到了这个错误消息:

$ cp -r api /var/www/example.com
cp: cannot create regular file '/var/www/example.com/api/.git/objects/b9/b63973775876c6be690a53cc82612f7b3c14c9': Permission denied
cp: cannot create regular file '/var/www/example.com/api/.git/objects/73/1d82c36e404eb20984824078d73496995314d3': Permission denied

我不知道为什么,因为所有权限都应该设置正确,并且目录是由 gitlab-runner 本身创建的。

有谁知道为什么在创建目录后运行者不能修改目录内的文件?

非常感谢。

标签: ubuntugitlab-ci-runner

解决方案


如果您想授予所有人权限,您可以sudo chmod a+rwx /path/to/file在终端中键入,替换/path/to/file为文件。您还可以使用该命令sudo chmod -R a+rwx /path/to/folder授予所选文件夹及其文件的权限

这不是一个好的解决方案,您应该授予 gitlab-runner 的读写权限,而不是所有人!

您可以使用setfacl控制用户/组对文件或文件夹的访问

setfacl -R -m u:gitlab-runner:rwx myfolder

-R 标志将递归地设置所有子目录的权限。

这会为特定用户设置权限,而不会更改目录的所有权。


推荐阅读