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

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

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

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

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

请赐教我这一点。

答案1

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

所以所有文件都应该属于deploy.

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

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

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

相关内容