我只是移植我的网站服务器,允许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? 使用groups
或cat /etc/passwd
?