Git hook无法更改文件权限

时间:2017-02-02 19:15:32

标签: git githooks

我有一个post-receive钩子,它执行一个更改某些文件权限的shell脚本,但这不会发生,因为我收到了错误

  

chown:更改'example'的所有权:不允许操作

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

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

PS: Git hook的用户是git,我正在尝试更改权限的文件的所有者/组也是如此。我正在使用chown来强化所有者并更改这些文件的组。

结论

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

1 个答案:

答案 0 :(得分:0)

除了它不是一个好主意(如评论中所述),您可以使用文件上的SUID或SGID位(// ==UserScript== // @name oua logos in header // @match http://oua.ca/sports/* // @run-at document-start // @grant GM_addStyle // ==/UserScript== GM_addStyle(` th a[href*="?sort=g&"] { width: 16px; height: 16px; background: url(http://www.freeiconspng.com/uploads/letter-g-icon-png-20.png); display: inline-block; color: transparent!important; background-size: 16px; margin-left: -32px; } th a[href*="?sort=g&"]:after { content: "GOALS"; color: white; margin-left: 8px; } `); 本身或某些外部文件)执行此操作, // ==UserScript== // @name oua logos in header // @match http://oua.ca/sports/* // @run-at document-start // @require https://greasyfork.org/scripts/12228/code/setMutationHandler.js // ==/UserScript== iconizeHeader(document.querySelectorAll('th a')); setMutationHandler(document, 'th a', iconizeHeader); function iconizeHeader(elements) { for (var i = 0, e; (e = elements[i++]); ) { var newImage, newText; switch (e.textContent) { case 'g': newImage = 'http://..................'; newText = 'GOALS'; break; case 'pts': newImage = 'http://............'; newText = 'POINTS'; break; default: continue; } e.textContent = newText; e.insertAdjacentHTML('beforebegin', '<img src="' + newImage + '" width=16 height=16>'); } } )。

  

SUID定义为为用户提供临时权限,以使用文件所有者的权限运行程序/文件,而不是运行它的用户。

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