我有一个由 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对该用户和组没有访问权限。