![我应该如何构建网络服务器的用户/组/权限?](https://linux22.com/image/588190/%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E6%9E%84%E5%BB%BA%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E7%94%A8%E6%88%B7%2F%E7%BB%84%2F%E6%9D%83%E9%99%90%EF%BC%9F.png)
我应该如何在运行 FTP + Nginx 的专用服务器上以最安全的方式设置权限?我希望 FTP 能够读取/写入文件,并且我希望 Nginx 能够读取/写入相同的文件。我是否应该在 ProFTPd 中设置用户掩码以作为 nginx 用户写入文件?
假设目录的权限为 700,文件的权限为 600,则需要假设它们归 nginx 用户和组所有?
任何信息均感激不尽
答案1
如果您的 Web 服务器可以写入您的所有文件,那么该网站就不一定安全;任何针对 nginx、PHP(或 Rails 或任何堆栈等)或您可能正在使用的 Web 应用程序的(已知或未知)漏洞都意味着攻击者可以写入所有内容。
最安全的方法是让所有文件归 Web 服务器(以及 PHP 等)运行用户以外的用户所有,并且只使那些应用程序运行所必需的内容可写,例如用户上传目录。
例如,在我的 Web 服务器上,nginx 以用户 nginx 的身份运行,php-fpm 也以用户 nginx 的身份运行,并且除上传目录外,所有文件均归我自己的用户帐户所有,上传目录归 nginx 所有,以便我的 Web 应用程序的文件上传功能可以正常工作。
每当我使用 SFTP 时,我都会使用自己的用户帐户登录,然后su
以 root 身份更改此类上传目录(例如 WordPress/wp-content/uploads
目录)的所有权。大多数 Web 应用程序在安装过程中,当文件或目录需要可写时都会打印警告。