所以我搜索了这个很多并找到了相互矛盾的答案。
为了每个人的利益,如果有人能够就如何设置 /var/www/html 的所有权/权限提出一个充分合理和引用的答案,我将不胜感激
例如,假设您想使用 sftp 访问该目录,但默认情况下您的用户无法在那里写入文件。从安全角度来看,正确的解决方案是什么?
(我们假设一个灯环境)
答案1
从安全角度来看,对我来说,这个目录以及网络服务器需要访问的任何目录都应该以这样的方式设置:网络服务器不是文件/目录的所有者,并且以这样的方式没有权利写入任何目录/文件。
这样做意味着,无论您的服务器出现什么漏洞,都只会导致 DOS 和渗漏,网络服务器将无法写入文件。
当然,在现实生活中,事情可能会变得更加复杂:
- Web 服务器内的某些 CGI/应用程序可能需要在某处具有写访问权限,例如,如果未使用数据库完成存储会话数据
- 网络服务器本身通常需要在某个地方有写访问权限来写入日志文件等。
- 在某些设置中,Web 服务器内的每个应用程序都可以在 Web 服务器本身之外的另一个 UID 下运行,这可以产生积极的安全效果。所有权和权利的权衡可能会变得复杂。这可能就是为什么你可以在网上多次看到很多人说:
rwx
到处放就可以了。当然,如果你赋予每个人一切权利,它就会“起作用”,但它们会带来安全方面的后果。
因此,如果您有类似的用户连接到您的服务器并通过 SFTP 上传新文件,以便网络服务器可以为它们提供服务,我会:
- 让每个用户拥有其特定的目录并拥有完全的权限
- 使网络服务器主组成为每个用户特定目录的组,并
rx
为其赋予权限 - 其他用户没有任何权利
通过这样做,每个用户只能看到自己的文件,而看不到其他任何内容(SFTP 还可以选择 chroot 来增强安全性,但这会带来其自身的复杂性),并且网络服务器只能访问所有文件以进行读取。
在每个目录中,您可以拥有网络服务器组拥有的所有文件,甚至可以rx
为任何人放置所有文件,因为这些文件将受到顶级目录的保护,除了所有者或网络服务器之外,其他用户没有任何权限。