更新摘要
/ var / www目录归root:root
其所有,这意味着没有人可以使用它,并且它完全没有用。由于我们都希望Web服务器能够正常工作(并且没有人应该以“ root”身份登录),因此我们需要修复此问题。
只有两个实体需要访问。
PHP / Perl / Ruby / Python都需要访问文件夹和文件,因为它们创建了很多文件夹(即
/uploads/
)。这些脚本语言应该在nginx或apache下运行(或者甚至在其他类似PHP的FastCGI)下运行。开发商
他们如何获得访问权限?我知道有人在某个地方做过此事。然而,有数十亿个网站存在,您会认为将会有更多有关此主题的信息。
我知道777对所有者/组/其他拥有完全的读取/写入/执行权限。因此,这似乎并不需要正确,因为它赋予了随机用户完全的权限。
需要使用什么权限,/var/www
以便:
- 像git或svn这样的源代码控制
- 像“网站”这样的组中的用户(甚至添加到“ www-data”中)
- 像apache或lighthttpd这样的服务器
- 和PHP / Perl / Ruby
都可以在那里读取,创建和运行文件(和目录)吗?
如果我是正确的话,Ruby和PHP脚本不会直接“执行”,而是传递给解释器。因此,无需对/var/www
...中的文件具有执行权限?因此,似乎正确的许可chmod -R 1660
将使
- 这四个实体可共享的所有文件
- 所有文件均不可错误执行
- 完全阻止其他人进入目录
- 将以后所有文件的权限模式设置为“粘滞”
这个对吗?
更新1:我只是意识到文件和目录可能需要不同的权限-上面我在谈论文件,因此我不确定目录权限是什么。
更新2:文件夹结构/var/www
发生了巨大变化,因为上述四个实体之一总是添加(有时是删除)许多级别的文件夹和子文件夹。他们还创建和删除其他3个实体可能需要读/写访问权限的文件。因此,权限需要对文件和目录执行以上四项操作。由于它们都不需要执行许可(请参阅上面有关ruby / php的问题),我将假定rw-rw-r--
许可将是所有需要的并且完全安全,因为这四个实体是由受信任的人员(请参阅#2)和所有其他用户运行的系统只有读取权限。
更新3:这是用于个人开发计算机和私人公司服务器。没有像共享主机这样的随机“网络客户”。
更新4: slicehost的这篇文章似乎最能解释为www文件夹设置权限所需的内容。但是,我不确定运行PHP或svn / git的哪个用户或组apache / nginx以及如何更改它们。
更新5:我(终于)终于找到了一种方法来使所有这些工作(下面的答案)。但是,我不知道这是否是正确且安全的方法。因此,我开始了赏金计划。拥有保护和管理www目录的最佳方法的人将获胜。