Re: odb_mkstemp's 0444 permission broke write/delete access on AFP
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Feb 17, 2015, 08:51 UTC
- Message-ID
- <vpqr3tozzs5.fsf@anie.imag.fr>
- In-Reply-To
- <13683B35-70A8-4D9E-80E1-440E4E0DC7F0@gmail.com>
Fairuzan Roslan <fairuzan.roslan@gmail.com> writes:
Show 7 quoted lines
> $ git clone https://github.com/robbyrussell/oh-my-zsh.git > Cloning into 'oh-my-zsh'... > remote: Counting objects: 11830, done. > remote: Total 11830 (delta 0), reused 0 (delta 0) > Receiving objects: 100% (11830/11830), 2.12 MiB | 481.00 KiB/s, done. > Resolving deltas: 100% (6510/6510), done. > warning: unable to unlink /Volumes/installer/oh-my-zsh/.git/objects/pack/tmp_pack_zjPxuc: Operation not permitted
This should be fixable from Git itself, by replacing the calls to "unlink" with something like
int unlink_or_chmod(...) {
if (unlink(...)) {
chmod(...); // give user write permission
return unlink(...);
}
}This does not add extra cost in the normal case, and would fix this particular issue for afp shares. So, I think that would fix the biggest problem for afp-share users without disturbing others. It seems reasonable to me to do that unconditionnally.
> $ rm -rf oh-my-zsh/.git/objects/pack/tmp_* > rm: oh-my-zsh/.git/objects/pack/tmp_idx_oUN1sb: Operation not permitted > rm: oh-my-zsh/.git/objects/pack/tmp_pack_zjPxuc: Operation not permitted
What happens if you do "rm -fr oh-my-zsh/.git/objects/pack/" (i.e. remove the directory, not the files)?
If you can still remove the directory, then I'd say the solution above could be sufficient: the user isn't supposed to interfer with the content of .git/objects other than by using Git, and if he or she does, then asking a chmod prior to an rm seems reasonable.
If you can't, then it's another problematic use-case (basically, you can't just "rm -fr" a whole clone), and then it deserves at least an opt-in configuration to get writable pack files.
(Unfortunately, I suspect we're in the later case)
> If you insist on setting the tmp idx & pack file permission to 0444 at > least give it a u+w permission whenever you try to unlink and rename > it so it won’t fail.
Yes. In case you hadn't guessed, this is precisely what I had in mind when I asked "Is it a problem when using Git [...] or when trying to remove files outside Git?".
-- Matthieu Moy http://www-verimag.imag.fr/~moy/