Git 挂钩无法更改文件权限

Git hook can't change file permission

我有一个 post-receive 挂钩,它执行一个 shell 脚本来更改一些文件的权限,但这并没有发生,因为我得到了错误

chown: changing ownership of 'example': Operation not permitted

有些文件显示该错误,有些文件只是默默地失败。

如何在 git 挂钩(特别是 post-接收挂钩)中更改文件权限?

PS: Git 挂钩的用户是 git,我正在尝试的文件的 owner/group 也是更改权限。我正在使用 chown 来加强这些文件的所有者和更改组。

结论

我确实接受并回答了我最初提出的问题,但我决定不在 git 挂钩中这样做,而是在我经常手动执行的另一个脚本中这样做。

除了这不是一个好主意(如评论中所述)之外,您可以使用文件上的 SUID 或 SGID 位来执行此操作(post-receive 本身或某些外部文件,运行 来自 post-receive).

SUID is defined as giving temporary permissions to a user to run a program/file with the permissions of the file owner rather that the user who runs it.

您可以阅读如何设置此位 here