在Ubuntu和Apache服务器的特定文件夹的奇怪的行为

我只是移植我的网站服务器,允许file upload。 现在它在Ubuntu 11.04上运行vps。 上传的文件存储在具有所有者:root和group:root的文件夹调用文件中,与其他文件夹相似。

但问题是,当我试图运行PHP函数(readfile())从它没有读取该文件的文件夹中读取任何文件,但是当我将文件夹所有者和组更改为10000和1005是相同的在以前的服务器。 PHP立即发现文件和下载已经开始。 我无法猜测出什么问题,以及这是怎么发生的。 因为我试图将文件及其内容组和所有者更改为root。

任何人都可以描述这是怎么发生的,以及如何将其改变成我自己的团体或所有者。而且我的VPS中也没有任何组和所有者命名为10000和1005。

在服务器上是否存在某种bug或黑客行为?

在Ubuntu的Apache的用户是www-data

在你的第一个场景中,apache没有正确的访问权限。 以/ var / www目录下的默认权限12.04为例

-rw-r--r-- 1 root root 177 Sep 15 11:43 index.html

正如你所看到的,apache只能运行这个文件。 这就是所需要做的。 第一组-rw-对应于用户。 第二组烫发r--对应于组,第三组r--对应于其他人。

由于php正在通过www-data运行,您将无法写入此文件。

使用sudo mkdir uploads在/ var / www中创建一个upload目录提供了权限。

drwxr-xr-x 2 root root 4096 Nov 8 11:59 uploads

www-data再次无法写入上传目录!

你可以打开'其他'权限(不好,因为任何用户都可以写入这个目录,实际上你只需要www-data就可以写),你可以添加www-data作为这个目录的所有者。 你可以创建一个admin组或其他东西,并添加万维网数据,(或只是改变组www-data如果没有其他用户需要使用它,可能还有其他更安全的方式,我不是一个系统管理员,这就是为什么serverfault会好:))

至于你的用户问题,这是一个问题,如果用户不存在,你尝试使用chown

 daniel@daniel:/var/www$ sudo chown doesnotexist:stuff uploads/ chown: invalid user: doesnotexist:stuff' 

你有没有检查哪些用户是presnet? 使用groupscat /etc/passwd