From dbea8258711bcdcc3ddf620c7e2e9783ea19f00a Mon Sep 17 00:00:00 2001 From: William Sandin Date: Sun, 31 Dec 2017 19:35:09 +0700 Subject: [PATCH 1/3] Raise a warning if current user and owner of deploy dir doesn't match --- src/Composer/Command/SelfUpdateCommand.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Composer/Command/SelfUpdateCommand.php b/src/Composer/Command/SelfUpdateCommand.php index 055f8af7f..1f86e7ed9 100644 --- a/src/Composer/Command/SelfUpdateCommand.php +++ b/src/Composer/Command/SelfUpdateCommand.php @@ -93,7 +93,9 @@ EOT $cacheDir = $config->get('cache-dir'); $rollbackDir = $config->get('data-dir'); $home = $config->get('home'); + $homeOwner = posix_getpwuid(fileowner($home)); $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0]; + $composeUser = posix_getpwuid(posix_geteuid()); if ($input->getOption('update-keys')) { return $this->fetchKeys($io, $config); @@ -107,6 +109,11 @@ EOT throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); } + // check if composer is running as the same user that owns the directory root + if ($composeUser !== $homeOwner) { + $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); + } + if ($input->getOption('rollback')) { return $this->rollback($output, $rollbackDir, $localFilename); } From 4296fe657f3e0568f3e820473831536f254813e0 Mon Sep 17 00:00:00 2001 From: William Sandin Date: Sat, 6 Jan 2018 19:02:14 +0700 Subject: [PATCH 2/3] Adding check to confirm POSIX is defined and callable --- src/Composer/Command/SelfUpdateCommand.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Composer/Command/SelfUpdateCommand.php b/src/Composer/Command/SelfUpdateCommand.php index 1f86e7ed9..147d65c02 100644 --- a/src/Composer/Command/SelfUpdateCommand.php +++ b/src/Composer/Command/SelfUpdateCommand.php @@ -93,9 +93,7 @@ EOT $cacheDir = $config->get('cache-dir'); $rollbackDir = $config->get('data-dir'); $home = $config->get('home'); - $homeOwner = posix_getpwuid(fileowner($home)); $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0]; - $composeUser = posix_getpwuid(posix_geteuid()); if ($input->getOption('update-keys')) { return $this->fetchKeys($io, $config); @@ -109,9 +107,13 @@ EOT throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); } - // check if composer is running as the same user that owns the directory root - if ($composeUser !== $homeOwner) { - $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); + // check if composer is running as the same user that owns the directory root, only if POSIX is defined and callable + if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { + $composeUser = posix_getpwuid(posix_geteuid()); + $homeOwner = posix_getpwuid(fileowner($home)); + if ($composeUser !== $homeOwner) { + $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); + } } if ($input->getOption('rollback')) { From 49068c579ea5ace2e1b105da19ec81f5fa88c26b Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 24 Jan 2018 11:14:40 +0100 Subject: [PATCH 3/3] Fix indenting --- src/Composer/Command/SelfUpdateCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Composer/Command/SelfUpdateCommand.php b/src/Composer/Command/SelfUpdateCommand.php index 147d65c02..3ed72bdbc 100644 --- a/src/Composer/Command/SelfUpdateCommand.php +++ b/src/Composer/Command/SelfUpdateCommand.php @@ -112,7 +112,7 @@ EOT $composeUser = posix_getpwuid(posix_geteuid()); $homeOwner = posix_getpwuid(fileowner($home)); if ($composeUser !== $homeOwner) { - $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); + $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); } }