Я настроил свой исполняемый файл php, т. Е. / Usr / local / bin / php, с помощью setuid
для пользователя deploy
, Так что если любой пользователь вызывает этот двоичный файл php, он должен быть выполнен как deploy
только. Как вы можете видеть ниже, бинарный файл php прерван пользователем без полномочий root deploy
, Но когда я выполняю php composer.phar как root
почему я получаю это предупреждение Do not run Composer as root/super user!
, Я не должен получить это предупреждение, так как бинарный файл php принадлежит deploy
и бит setuid установлен.
> ls -al /usr/local/bin/php
-rwxr-xr-x 1 root root /usr/local/bin/php
> chown deploy:deploy /usr/local/bin/php
> chmod u+s /usr/local/bin/php
> ls -al /usr/local/bin/php
-rwsr-xr-x 1 deploy deploy /usr/local/bin/php
> ls -al composer.phar
-rwxr-xr-x 1 deploy 1000 composer.phar
> whoami
root
> php composer.phar -V
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Composer version 1.7.2 2018-08-16 16:57:12
Однако, даже если выполняется php composer.phar install
как root
созданный каталог поставщика принадлежит deploy
,
Фактически процесс composer игнорирует бит setuid, но когда он создает какой-либо файл / dir, он подчиняется setuid.
Я вставил ниже в composer.phar и получить правильный пользователь deploy
но с предупреждением Don't call as root
, Это проблема композитора?
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
Это похоже на ошибку в композиторе https://github.com/composer/composer/issues/7758#issuecomment-434308672
Других решений пока нет …