问题是关于最佳实践,而不是具体的问题。
静态网站文件和目录的正确所有权和权限是什么?我将使用root:<server-group>
权限 640(文件)和 750(目录)。因此,由于组权限,服务器可以读取所有内容,但普通用户无法在未明确使用 sudo 的情况下意外或故意修改文件。
或者也许有我不知道的更好的做法?我的方法看起来有点过于复杂。
答案1
无需 root 权限即可防止用户修改他人负责的文件。可以通过将所有权授予非特权用户(例如同步文件的服务用户)来实现相同的目的。
理想情况下,不是以 Web 服务器的身份运行的用户,也不是任何特定的人,只是进行文件传输的一些自动化用户。负责将内容文件暂存到某个存储中的人员,并在准备部署文件传输时将它们复制到位。无需人员接触生产 Web 服务器,也无需特殊权限。
属于 root,如果需要重组或更改文件,管理员或自动化脚本可能需要成为 root。这是非常高的权限,能够删除安全措施或以其他方式破坏主机。
当然,挂载点或软件包归 root 所有是有道理的,因此更改系统需要特权。例如,如果网站内容位于 /srv/www/example.net/,则 /srv/ 和 /srv/www/ 可能归 root 所有,而 /srv/www/example.net/ 等网站则归非特权用户所有。