即使使用SUID,PHP也无法更改文件权限?

时间:2011-06-27 19:54:14

标签: php file-permissions

给定一个包含内容的脚本test.php

#!/usr/bin/php
<?php
echo exec('whoami');
chmod('test.txt', 0755);

和纯文本文件test.txt在同一目录中,如果创建这些文件的用户运行脚本,它可以正常工作。但是,如果我按照以下方式做某事:

chown apache:apache test.php test.txt
chmod 4775 test.php

这使得test.php能够作为'apache'用户运行,无论是谁运行它。但是当我在该上下文中运行它时,我得到一个“警告:chmod():不允许操作”错误。由“whoami”命令回应的用户是通用用户,而不是'apache'用户。

那么,有没有办法允许PHP脚本作为特定用户运行,而不是授予用户sudo以“apache”运行脚本的权限?

1 个答案:

答案 0 :(得分:0)

  

那么,有没有办法允许PHP脚本作为特定用户运行,而不是授予用户sudo访问权限以'apache'运行脚本?

你一定错过了什么。您是否允许apache在不同的用户(sudo / suexec)下执行该文件。但是,这仅仅是配置。因此,您应首先确定要实现的目标,然后根据需要配置服务器。

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

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

因此,做出您想要实现的目标。但是如果你想改变用户,我唯一知道的方式(可能还有别的东西,但我怀疑它)是利用apache sudo功能。