3

我刚刚移植了允许文件上传的网站服务器。现在它在 ubuntu 11.04 上运行 vps。上传的文件存储在具有所有者:root 和组:root 的文件夹调用文件中,与其他文件夹类似。

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

谁能描述这是如何发生的,以及如何将其更改为我自己的组或所有者。而且我的 VPS 中目前没有名为 10000 和 1005 的组和所有者。

它是在服务器上完成的某种错误或黑客行为。

4

1 回答 1

4

在 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您将无法写入此文件。

upload使用在 /var/www 中创建目录sudo mkdir uploads会授予权限。

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

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

您可以打开“其他”权限(不好,因为任何用户都可以写入此目录,而实际上您只希望 www-data 能够写入),您可以添加www-data为此目录的所有者。您可以创建一个admin组或其他东西并向其中添加 www-data,(或者www-data如果没有其他用户需要使用它,或者只是将组更改为,可能还有许多其他更安全的方式,我不是系统管理员,这就是为什么 serverfault会很好:))

至于您的用户问题,如果用户不存在并且您尝试使用chown

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

你检查过哪些用户是 presnet 吗?使用groupscat /etc/passwd

于 2012-11-08T17:01:34.143 回答