经过两年多的客户定制CMS运行良好,我接到一个电话说,他们上传的图像,PDF文件和文档没有出现在他们的网站上。 看着这个我发现file upload到服务器,但不可读。 他们有权限0600而不是0644.我可以看到所有以前上传的文件在权限值为0644的服务器上。另一个值得注意的是所有者/组值从258809/1015更改为258809/0。
从我的angular度来看,我认为这是对服务器configuration的一种改变,但是主机认为这与它们无关,没有设置被改变。 我也可以说,两年多来我并没有改变这个守则。
我已经做了一些testing,并可以使用chmod函数来更改权限,但是我不想打开代码并查看可以上传和更改代码的所有types的文件。
我想知道的是可以修改configuration来解决这个问题? 服务器的细节如下:
Apache / 1.3.33(Unix)
任何帮助apreciated,谢谢,Dafydd
这里有两个问题。 首先,apache服务器现在运行在根组(0)中,当它运行在任何组1015中时,显然这里发生了一些变化。 Apache具有configuration选项来指定运行的用户和组,“组”选项已更改或已被删除。
其次,关于权限,有可能他们没有“改变”任何东西……他们只是从来没有设置一个具体的umask。 Apache使用启动它的用户的umask,当他们第一次启动它的时候,umask可能是0022(可能是0033)。 当他们重新启动它来改变组设置,他们的umask可能是0077(或0066)。 同样,PHP使用Apache的umask。
解释umask需要一些工作:基本上,umask从文件模式中“取消”权限位。 大多数程序尝试以rw-rw-rw-mode和rwxrwxrwx模式创build目录。 用一个相当标准的0022(—- w – w-)的umask,这些位将会被删除,并且你最终会得到rw-r-r–文件和rwxr-xr-x目录。 使用0077(— rwxrwx)的umask,这些文件将是rw ——-和目录rwx ——。 在二进制math中,文件的最终模式是(mode & !umask) (限于正常的权限位,而不是umask不影响的suid / sgid / sticky)。
除了让主机closures并使用所需的umask重新启动web服务器之外,您可以自己chmod所有内容,或者在中央configuration文件中调用umask(0022) (注意那里的警告提示您在multithreading服务器上使用chmod() )。