作曲家在以设置了 setuid 位的非 root 用户身份运行时会发出错误警告



我配置了我的php可执行文件,即/usr/local/bin/php,并带有用于用户deploysetuid。因此,如果任何用户调用该 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

但是,即使按root执行php composer.phar install,创建的供应商目录也归deploy所有。

事实上,作曲家进程忽略了setuid位,但是当它创建任何文件/目录时,它服从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 中的一个错误

相关内容

最新更新