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