2012-01-05 59 views
1

更新:证明问题比我原先想象的更复杂。我同时尝试排除为什么我的mkdir停止工作,这是因为我手动更改了父目录的权限以便测试,然后将其切换回来,并将chmod添加到脚本中,因为该脚本正在运行,因此该脚本正在运行apache而不是我自己。我将在更大的问题上发布一个新问题,因为我认为将所有这些添加到这个问题中会变得令人困惑。chown in scripts


我在我的大学实验室教练,我已经重写它们提供上传作业的脚本,因为他们有一个是老车。而不是修改现有的脚本(用python编写),我一直在从头开始写它在PHP中。

我遇到了一个问题,看起来chown不起作用。 php脚本在用户apache下运行。我不确定那个用户是否被'priveleged',但是原始脚本使用chown。

我可以假设因此apache应该具有所需的权限,并且我的问题在别处或者是错误的逻辑吗?


服务器是大学的,他们不会让我做任何配置更改。我确信他们正在运行的是CentOS。没有错误信息,我只注意到我可以chmod该文件并更改权限,但下一行上的chown命令似乎没有任何影响。

的老段子ls -al显示:

-rwxr-xr-x 1 mattw labstaff 5067 Sep 1 17:52 File_Upload.cgi 

看起来不像setuid位上。

Stefan提到“用户apache最有可能没有足够的权限来chown它不拥有的文件/文件夹”。我试图chown的目录只是用mkdir创建的,所以它应该属于apache。当你已经拥有该文件时,chown是否应该工作而不考虑特权?

回答

2

Apache可能没有这样做的权限。这取决于它运行在哪个环境中。你说apache在用户apache下运行,所以我只是假设它是RHEL或RHEL变种,比如Centos。

你将能够编辑sudoers文件(使用visudo)并让apache能够在某个目录下没有密码的情况下sudo。请注意,如果您非常关注安全性,则不建议这样做。

添加类似

阿帕奇ALL = NOPASSWD:/ bin中/ CHOWN 1 [1-9] [0-9] [0-9] \:1 [1-9] [0-9] [ 0-9]/var/www/[a-zA-Z0-9] *

您可以将apache添加到其他组,或者将其他用户添加到apache组中或进行排序并chmodding它改为0775或0664。

最好是发布抛出错误的代码,错误消息(如果有的话)以及哪些用户和组需要访问正在上传的文件。

1

如果旧的脚本由阿帕奇用户运行,但能够执行chown它可能对setuid位,使其能够以更高权限运行。在这种情况下,你的假设是错误的。

请寄出ls -al /path/to/script的输出确认。它应该在其模式下显示root作为其所有者和s

要为新脚本启用setuid模式,请使用chmod u+s它。请注意,这可能会造成严重的安全隐患。特别是永远不要留下setuid脚本或二进制可写。

1

用户apache最有可能没有足够的权限来chown它不拥有的文件/文件夹,你可以给apache更多的权限,但这可能会成为一个安全问题。