更新:原来这个问题比我原来想的要复杂。我同时试图解决为什么我的mkdir停止工作的原因,这是因为我手动更改了父目录的权限以进行测试,然后将它们切换回来,并将一个chmod添加到脚本中,因为该脚本是由apache运行的,而不是由我自己运行的。我将用更大的问题发布一个新的问题,因为我认为将所有这些添加到这个问题中会变得很混乱。
我是我大学的一名实验室讲师,我一直在重写他们为上传作业提供的脚本,因为他们的任务是旧的和错误的。我没有修改现有的脚本(用python编写),而是用php从头开始编写它。
我遇到了一个问题,似乎chown不起作用。php脚本在用户apache下运行。我不确定该用户是否“骄傲”,但原始脚本使用了chown。
我是否可以假设,因此apache应该有必要的权威,我的问题在其他地方,或者是错误的逻辑?
服务器是大学的,他们不允许我做任何配置上的改变。我确实相信他们正在运行的是CentOS。没有错误消息,我只是注意到我可以chmod文件并更改权限,但是下一行的chown命令似乎没有效果。
旧脚本上的ls -al显示:
-rwxr-xr-x 1 mattw labstaff 5067 Sep 1 17:52 File_Upload.cgi看上去不像是开机了。
Stefan提到“用户apache很可能没有足够的权限来创建它不拥有的文件/文件夹”。我正在尝试的chown目录是用一个mkdir创建的,所以它应该是属于apache的。当您已经拥有该文件时,chown是否应该工作,而不管权限如何?
发布于 2012-01-05 02:22:15
Apache可能没有这样做的特权。这取决于在哪个环境中运行。您说apache是在用户apache下运行的,所以我将假设它是RHEL或像Centos这样的RHEL变体。
您可以编辑sudoers文件(使用visudo),并使apache能够在某个目录下不使用密码进行sudo操作。请注意,如果您非常有安全意识,则不建议这样做。
添加这样的东西
apache ALL = NOPASSWD: /bin/chown 11-90-9\:11-90-9 /var/www/a-zA-Z0-9*
您可以将apache添加到不同的组中,或者将其他用户添加到apache组或类似的类中,然后将其转换为0775或0664。
最好发布抛出错误的代码、错误消息(如果有的话),以及哪些用户和组需要访问正在上载的文件。
发布于 2012-01-05 02:11:50
如果旧脚本由apache用户运行,但能够执行chown,则可以使用塞图德位来允许它以提升的权限运行。那样的话,你的假设就错了。
请张贴ls -al /path/to/script的输出以确认这一点。它应该以它的模式显示root作为它的所有者和一个s。
要为新脚本启用setuid模式,请对其进行chmod u+s。请注意,这可能会对安全造成严重影响。特别是,不要留下一个setuid脚本或二进制可写。
发布于 2012-01-05 02:13:03
用户apache很可能没有足够的权限来创建它不拥有的文件/文件夹,您可以给予apache更多的权限,但是这可能会成为安全问题。
https://stackoverflow.com/questions/8736783
复制相似问题