On 2020-04-15 at 21:36:14, Junio C Hamano wrote: > luciano.rocha@xxxxxxxxxxx writes: > > > Update freshen_file() to use a NULL `times', semantically equivalent to > > the currently setup, with an explicit `actime' and `modtime' set to the > > "current time", but with the advantage that it works with other files > > not owned by the current user. > > > > Fixes an issue on shared repos with a split index, where eventually a > > user's operation creates a shared index, and another user will later do > > an operation that will try to update its freshness, but will instead > > raise a warning: > > $ git status > > warning: could not freshen shared index '.git/sharedindex.bd736fa10e0519593fefdb2aec253534470865b2' > > A couple of questions: > > - Does utime(fn, NULL) work for any non-owner user, or does the > user need to have write access to it? The Linux man page says the following: Changing timestamps is permitted when: either the process has appropriate privileges, or the effective user ID equals the user ID of the file, or times is NULL and the process has write permission for the file. So the answer is the user needs to have write access with utime(fn, NULL), but the same EUID (or root) with a specific time. I believe this behavior is because it doesn't make sense to restrict the operation which uses the current time since a user with write permissions could just run open(2) and write(2) instead with the same effect, just less efficiently. (We've discussed this on the list before, but "appropriate privileges" is POSIX-speak for "root access" or the equivalent in an alternate system, such as capabilities.) -- brian m. carlson: Houston, Texas, US OpenPGP: https://keybase.io/bk2204
Attachment:
signature.asc
Description: PGP signature