Quellcode durchsuchen

Raise a warning if current user and owner of deploy dir doesn't match

William Sandin vor 7 Jahren
Ursprung
Commit
dbea825871
1 geänderte Dateien mit 7 neuen und 0 gelöschten Zeilen
  1. 7 0
      src/Composer/Command/SelfUpdateCommand.php

+ 7 - 0
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('<warning>You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"</warning>');
+        }
+
         if ($input->getOption('rollback')) {
             return $this->rollback($output, $rollbackDir, $localFilename);
         }