我为用户setuid
用deploy
配置了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'];
答案 0 :(得分:0)