我应该与运行网站的同一用户一起部署吗?

Hug*_*ães 3 ssh permissions webserver nginx deployment

我有一个由 Nginx 提供服务的网站,我最近为其设置了 travis 构建和部署。

Nginx 以www-data用户身份运行网站。我创建了一个用户,deploy以便 Travis 可以通过 SSH 登录服务器并部署网站。部署的文件以deploy用户作为所有者存储,这与运行网站的用户不同 ( www-data)。

我担心使用此设置运行网站时会出现权限问题。我应该使用相同的用户www-data/deploy来运行和部署网站吗?使用这种方法,允许运行网站的用户通过 SSH 远程登录是否会出现问题?

请赐教我。

Ale*_*lke 5

实际上,这些文件不应该归其所有,www-data因为这意味着 Nginx 可以修改它们,这在大多数情况下不是您想要的(除非它是需要自我更新的 CMS。)

所以所有的文件都应该归deploy.

如果它是一个 CMS 并且您需要写入几个文件夹,那么那些极少数(一个?)文件夹确实应该由www-data. 如果部署也是第一次安装,这可能会导致问题。要么让用户运行一个手动步骤,要么让一个特殊的工具来完成这项工作,但如果这是一次性的事情,只需手动完成,它就会很容易(特别是因为你只有一个这样的文件夹,对吗?)CMS 还可以告诉您是否存在此类问题并停止而不是提供页面。这样您就可以立即知道,并且可以避免在尝试上传文件或执行某些类似操作时遇到问题。

当然,文件不属于,www-data但它们需要由www-data. 因此,要么让它被其他人 ( -rw-r--r--)读取,要么考虑将组设置为www-data( -rw-r-----)。在大多数情况下,我见过人们甚至不冒险使用该组。他们只是让其他人访问文件,因为这样更安全。

当然,这也意味着 Nginx 将没有deploy用户和组的访问权限。

  • +1 同上,在 1 层中,我采用相同的方法,但通常我们会有 2 层或 3 层环境,因此 apache / nginx 不拥有任何东西,但在应用程序所在的第 2 层中具有对静态内容的组 ro 访问权限,该应用程序将拥有自己的用户。 (2认同)