我有一个post-receive钩子,它执行一个更改某些文件权限的shell脚本,但这不会发生,因为我收到了错误
chown:更改'example'的所有权:不允许操作
有些文件显示错误,有些文件只是默默地失败。
如何在git挂钩中更改文件权限(特别是后收发)?
PS: Git hook的用户是git
,我正在尝试更改权限的文件的所有者/组也是如此。我正在使用chown来强化所有者并更改这些文件的组。
我确实接受并回答了我最初的问题,但我决定不在git hook中这样做,而是在另一个我经常手动执行的脚本中。
答案 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。