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

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

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

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

关于这一点请赐教.

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

所以所有文件都应该由deploy拥有.

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

当然,文件不归www-data所有,但需要通过www-data读取.因此要么让其他人可读(-rw-r -r–),要么将组设置为www-data(-rw-r —–).在大多数情况下,我看到人们甚至没有冒险使用该组.他们只是让其他人访问这些文件,因为它更安全.

当然,这也意味着Nginx对部署用户和组没有访问权限.

转载注明原文:ssh – 我应该与运行网站的同一用户一起部署吗? - 代码日志