composer выдает ложное предупреждение при запуске от имени пользователя без полномочий root с установленным битом setuid

Я настроил свой исполняемый файл 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'];

0

Решение

Это похоже на ошибку в композиторе https://github.com/composer/composer/issues/7758#issuecomment-434308672

0

Другие решения

Других решений пока нет …