背景:我记得在我以前的工作地点,网络服务器管理员总是让我更改 httpd 可访问的文件上传目录,以便它们归 apache:apache 或 nobody:nobody 所有。
他说这是出于安全原因。
问题:您能告诉我这具体会带来哪些安全隐患吗?还有,有没有办法让 Apache 以 nobody:nobody 身份运行,这是否也会带来安全隐患?
短暂性脑缺血发作
答案1
一些应用程序默认使用用户 nobody。例如,您可能从来都不想让 apache 服务覆盖属于 bind 的文件。为每个服务设置一个帐户往往是个好主意。
让 apache 以 nobody:nobody 的身份运行非常简单,只需更新User
和Group
. 设置即可。但正如我上面提到的,我并不推荐该特定用户/组。未来某个时候,您完全有可能想向系统添加一个也以 nobody 身份运行的服务,然后您会忘记已将文件系统的写访问权限授予用户 nobody。
至于为什么你需要对上传目录这样做。你真的不需要更改上传目录的所有者。我只会更改组,然后将权限设置为 2775。当然,如果你设置一个系统,其中许多不同的用户共享同一个 Web 服务器,那么设置权限以获得最佳安全性可能会复杂得多
答案2
我认为主要的一点是,如果 Web 服务器不能通过所有者和组访问来写入文件,那么这些文件必须是全世界可写的。
现在,由 apache 或任何人拥有的文件或目录听起来比任何人(包括其他服务)可写入的文件更可取。
我认为将 apache 的有效用户更改为“nobody”不会带来任何重大安全隐患,除非您有其他服务也以该用户身份运行。另一方面,我真的看不出有什么好的理由不将其保留为“apache”。