Page MenuHomePhabricator

In Git, always "sudo" to the daemon user if a daemon user is configured

Authored by epriestley on Apr 13 2022, 6:23 PM.
Referenced Files
F13062046: D21756.id51863.diff
Fri, Apr 19, 8:55 PM
Fri, Apr 19, 6:13 AM
Unknown Object (File)
Tue, Apr 16, 11:23 PM
Unknown Object (File)
Sat, Apr 13, 12:30 AM
Unknown Object (File)
Thu, Apr 11, 2:07 PM
Unknown Object (File)
Tue, Apr 9, 12:01 PM
Unknown Object (File)
Tue, Apr 9, 9:41 AM
Unknown Object (File)
Wed, Apr 3, 12:48 PM



See T13673. Recent versions of Git (and older versions with backported security patches) now refuse to run Git commands if the top-level repository directory is not owned by the user running the command.

Currently, we "sudo" to that user only when performing writes, so upgrading Git can aggressively break a Phabricator system by knocking out essentially all Diffusion/Conduit read pathways.

As an immediate mitigation, just "sudo" in all cases where a daemon user is available. This fixes the problem, and seems like the least-bad approach. The downside is that the web user may theoretically have fewer privileges than the daemon user and this could reduce the number of layers an attacker armed with some other Git vulnerability might have to get through to do something dangerous (e.g., perform a write on a pathway where only reads are expected), but any separation between the web and daemon accounts is essentially theoretical and has never been enforced.

Test Plan

Applied patch to impacted Phacility shard, saw Diffusion work properly again.

Diff Detail

rP Phabricator
Lint Not Applicable
Tests Not Applicable