我经常遇到 Apache/me 的读写和执行权限问题。在“konrad”组中有一个用户“konrad”(是我),在Apache使用的“www-data”组中有一个用户“www-data”。当我(“konrad”)创建一个目录时,Apache 无权写入该文件夹,这会导致问题。
所以现在我有以下“想法”:我将自己(“konrad”用户)添加到“www-data”组(Apache 的用户也属于该组),然后我 chown 所有 www 项目,以便它们属于用户“konrad”但组:“www-data”。我将 chmod 项目,以便该组拥有文件和目录的所有权限(我认为应该是 770)。
然后我会将我的主要组从“konrad”更改为“www-data”,因此每次我创建一个新的目录/文件时,Apache 也将对其具有完全访问权限。
问题是:这是个好主意吗?我对权限甚至 Unix 本身都没有很好的经验。所以也许我错过了一些东西。但这对我来说似乎很合理。
答案1
Apache 作为 Debian 发行版中的非特权用户运行,www-data
有一个很好的理由:安全性。
在处理放弃特权的守护进程时,它被认为是一种良好的安全实践,尽可能避免创建具有运行守护进程的非特权用户的所有权的配置文件或数据文件 - 因此,如果 Apache 用户是一旦受到损害,攻击者将更难以搞乱事情或破坏网站。
尽可能地,我建议创建具有不同用户的站点,并仅授予 www-data 组读取权限;并且只能对真正需要的目录中的 www-data 进行写访问。然而,使用 mod-ruid2 甚至可以避免这种情况。
mod-ruid2 实际上允许与其所有者一起运行每个站点/虚拟主机,并且处理页面的安全模型要容易得多。它消除了创建世界可写目录的必要性。它还保证,如果一个虚拟主机受到威胁,攻击者无法在其他虚拟主机中植入恶意软件。
mod-ruid2 也建议拥有托管模型的人使用,我们在这里使用它来运行数百个站点,并取得了相当成功。
不幸的是,关于 mod-ruid2 的文档有点少,我不得不写一篇更详细的文章来描述它在 Unix 和 Linux 中。
答案2
我认为你错误配置了 apache。我真的会让我的项目和文件具有konrad
权限,这样我的代码在某些“漏洞”的情况下是安全的计算机图形图像处理“脚本。你的网络服务器应该可以很好地读取你的文件(如果它们是世界可读的)。你只需要超级用户来配置 apache 来读取你拥有的一个目录,或者创建/更改由 apache 服务的目录的所有者。
您最终需要 Web 服务器可写的一两个目录/ www-data
,但这是另一个问题。
答案3
我了解到您应该始终为网络服务器使用单独的用户。这就是我从老师那里学到的——出于安全原因,你应该始终使用不同的用户来做不同的事情。顺便说一句,ich chown www-data:www-data 以秒为单位输入:P
但是您将哪些文件创建为“konrad”以及为什么 www-data 可以访问它?我运行 2 个网络服务器,当我创建一些用于 www-data 的文件时,我su - www-data
然后创建它们。
所以这是一个非常不典型的情况:P