我有一个在 Ubuntu 14.04 上运行的 Web 应用程序。将应用程序部署到我在 AWS 上的服务器时,应用程序的部署服务会自动创建单独的用户、组和权限。
该应用程序以名为 的用户身份运行nginx
,该用户是也称为 的组的一部分nginx
。当我 ssh 登录时,我必须以另一个用户的身份执行此操作:michaelmichael
。我不是该nginx
团体的成员。
该应用程序有一个/tmp/cache
目录,我必须能够以michaelmichael
用户身份写入该目录,以便手动初始化某些设置。当我尝试这样做时,我收到“权限被拒绝”错误。
我的下一步是检查该文件夹的权限。事情开始变得混乱。该目录是符号链接的,以便它可以引用应用程序的多个迭代。因此,例如,我尝试写入的实际目录是/var/deploy/my-app/web_head/releases/20150221204050/tmp/cache
如果我ls -l
在此目录上,我会得到以下内容:
lrwxrwxrwx 1 nginx nginx 43 Feb 21 20:40 /var/deploy/my-app/web_head/releases/20150221204050/tmp/cache -> /var/deploy/my-app/web_head/shared/cache
如果我ls -l /var/deploy/my-app/web_head/shared
可以看到这cache
是一个具有以下权限的目录:
drwxrwxr-x 14 nginx nginx 4096 Feb 21 20:31 cache
那么,为了写入此目录,我是否需要将我的用户添加michaelmichael
到 nginx 组中?我是否需要修改符号链接目录( /releases/
dir)或目录本身( dir)的权限cache
?
答案1
显而易见的答案有时就是正确的。需要对cache
目录进行写操作,所以需要对该cache
目录有写权限。您能够执行此操作的事实ls -l
表明您拥有该目录的所有必要访问权限releases
。
您可以通过将用户添加到nginx
组或更改目录模式cache
(可能更改为 777)来获得所需的访问权限。