当以setuid位设置为非root用户运行时,composer发出错误警告

时间:2018-10-30 07:51:30

标签: php linux composer-php chown setuid

我为用户setuiddeploy配置了php可执行文件,即/ usr / local / bin / php。因此,如果有任何用户调用该PHP二进制文件,则应仅以deploy的身份执行。正如您在下面看到的那样,非二进制用户deploy阻塞了php二进制文件。但是,当我以root的身份执行php composer.phar时,为什么会收到警告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所有。

实际上,作曲者进程会忽略setuid位,但是在创建任何文件/目录时,它会遵循setuid。

我将其插入composer.phar的下面,并获得了正确的用户deploy,但有警告Don't call as root。这是作曲家的问题吗?

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];

1 个答案:

答案 0 :(得分:0)