PHP可以';即使使用SUID也不能更改文件权限?

PHP可以';即使使用SUID也不能更改文件权限?,php,file-permissions,Php,File Permissions,给定包含以下内容的脚本test.php: #!/usr/bin/php <?php echo exec('whoami'); chmod('test.txt', 0755); 这使test.php能够以“apache”用户的身份运行,无论是谁在运行它。但当我在该上下文中运行它时,会出现“Warning:chmod():Operation not allowed”错误。得到“whoami”命令响应的用户是通用用户,而不是“apache”用户 那么,除了授予用户sudoaccess以“apa

给定包含以下内容的脚本
test.php

#!/usr/bin/php
<?php
echo exec('whoami');
chmod('test.txt', 0755);
这使test.php能够以“apache”用户的身份运行,无论是谁在运行它。但当我在该上下文中运行它时,会出现“Warning:chmod():Operation not allowed”错误。得到“whoami”命令响应的用户是通用用户,而不是“apache”用户

那么,除了授予用户
sudo
access以“apache”的身份运行脚本之外,还有其他方法允许PHP脚本以特定用户的身份运行吗

那么,除了授予用户sudo访问权以“apache”身份运行脚本之外,还有没有其他方法允许PHP脚本以特定用户的身份运行

你一定错过了什么。您可以允许apache在其他用户(sudo/suexec)下执行该文件,也可以不允许。然而,这仅仅是配置。因此,您应该首先决定要实现什么,然后根据需要配置服务器

因此,如果要在特定用户下运行PHP脚本,可以使用sudo功能并指定用户。Apache随后将在该配置用户下执行脚本

如果您不喜欢使用sudo,那么没有其他选项可以在运行apache的用户下运行脚本,或者apache已配置为用于调用脚本


所以,做出你想要实现的决定。但是,如果您想更改用户,我知道的唯一方法(可能还有其他方法,但我对此表示怀疑)是使用apache sudo功能。

suid位只有在运行您的脚本的php解释器确认它的情况下才起作用,很可能不会起作用。您必须起诉解释器二进制本身,这可能是个坏主意。
chown apache:apache test.php test.txt
chmod 4775 test.php