Page MenuHomePhabricator

D16391.id39421.diff
No OneTemporary

D16391.id39421.diff

diff --git a/src/infrastructure/daemon/PhabricatorDaemon.php b/src/infrastructure/daemon/PhabricatorDaemon.php
--- a/src/infrastructure/daemon/PhabricatorDaemon.php
+++ b/src/infrastructure/daemon/PhabricatorDaemon.php
@@ -34,6 +34,24 @@
return $command;
}
+ // We may reach this method while already running as the daemon user: for
+ // example, active and passive synchronization of clustered repositories
+ // run the same commands through the same code, but as different users.
+
+ // By default, `sudo` won't let you sudo to yourself, so we can get into
+ // trouble if we're already running as the daemon user unless the host has
+ // been configured to let the daemon user run commands as itself.
+
+ // Since this is silly and more complicated than doing this check, don't
+ // use `sudo` if we're already running as the correct user.
+ if (function_exists('posix_getuid')) {
+ $uid = posix_getuid();
+ $info = posix_getpwuid($uid);
+ if ($info && $info['name'] == $user) {
+ return $command;
+ }
+ }
+
// Get the absolute path so we're safe against the caller wiping out
// PATH.
$sudo = Filesystem::resolveBinary('sudo');

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 21, 4:01 PM (13 h, 13 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6914563
Default Alt Text
D16391.id39421.diff (1 KB)

Event Timeline