/ vol / www在Ubuntu Web服务器上有什么权限?

我们在ubuntu 10.04服务器上部署我们的rails应用程序。 当cap deploy:setup时,有一个错误说:

* executing "mkdir -p /vol/www/myapp /vol/www/myapp/releases /vol/www/myapp/shared /vol/www/myapp/shared/system /vol/www/myapp/shared/log /vol/www/myapp/sha red/pids" servers: ["11.15.69.45"] Password: [11.15.69.245] executing command *** [err :: 11.15.69.45] mkdir: cannot create directory `/vol/www/myapp/releases' 

ls -ld / vol / www的输出是:

 drwxr-xr-x 3 root root 4096 2011-11-22 04:35 /vol/www 

我们需要在Web服务器上分配什么样的附加权限以及哪些子权限需要分配给哪些子权限?

这里似乎有一些关于你的问题的困惑。 Andrew的回答解决了这个问题,“Web服务器是否有适当的权限直接写入你正在部署的?

但是,实际上在早期阶段遇到问题:将代码部署到服务器。 在这个阶段, Web服务器是否可以写入/ vol / www,但是在部署代码时是否连接用户有权写入该目录并不重要。

安德鲁的解决scheme仍然基本适用,但略有不同。

我会推荐以下方法之一:

  1. 由于您已将/vol/www为可由www-data组进行分组写入,因此您可以将用户添加到该组中:

     sudo usermod -aG www-data your-username 
  2. 或者,你可以让自己的主人,让自己的方式访问。 由于您已经设置了Web服务器的组访问权限,所以更改目录的所有者不应该引起问题。

     sudo chown your-username /vol/www 

这两个选项都应该为用户提供适当的访问权限来部署代码,并保持Web服务器对该目录的访问权限。

Ubuntu中的Web服务器用户是www-data(除非你使用mod_suexec运行)。 所以www-data需要在/ vol / www上写入权限。 要做到这一点的一种方法是将www数据作为所有者:

 chown www-data /vol/www 

或者你可以使用组的所有权和权限:

 chgrp www-data /vol/www chmod g+w /vol/www 

第三种方法是使用ACL:

 setfacl -mu:www-data:rwx /vol/www getfacl /vol/www # to see the ACL grant