Capifony setfacl权限:“不允许操作”

时间:2013-02-05 22:54:43

标签: permissions nginx capistrano acl capifony

我有一个用户didongo(用户和组didongo)和nginx服务器(用户和组www-data)。我已将Capifony设置为以didongo用户身份登录:我第一次部署setfacl命令时工作正常(当logs文件夹为空时)。但是,在由nginx提供服务的Web应用程序生成了一些日志(prod.log)后,下一次部署失败,出现setfacl错误。

我确定我在使用用户和Web服务器之间的权限做了noob错误,但我没有看到什么错误。我看到didongo不能更改他没有权限的文件的权限。但是,我应该如何配置服务器或Capifony?

谢谢!

相关(希望如此)Capifony deploy.rb config:

set :user,                  "didongo"
set :webserver_user,        "www-data"
set :permission_method,     :acl
set :use_set_permissions,   true

set :shared_children,       [app_path + "/logs", web_path + "/uploads", "vendor"]
set :writable_dirs,         ["app/cache", "app/logs"]

这是Capifony错误:

$ setfacl -R -m u:didongo:rwx -m u:www-data:rwx /home/didongo/staging/shared/app/logs
setfacl: /home/didongo/staging/shared/app/logs/prod.log: Operation not permitted

ACL上的一些数据:

$ getfacl app/logs

# file: logs
# owner: didongo
# group: didongo
user::rwx
user:www-data:rwx
user:didongo:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:didongo:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

# file: logs/prod.log
# owner: www-data
# group: www-data
user::rw-
user:www-data:rwx               #effective:rw-
user:didongo:rwx                #effective:rw-
group::rwx                      #effective:rw-
mask::rw-
other::r--

3 个答案:

答案 0 :(得分:2)

使用sudo尝试一次,之后就不需要使用sudo了

sudo sh -c 'setfacl -R -m u:didongo:rwX -m u:www-data:rwX /home/didongo/staging/shared/app/logs'

由于您需要设置x+权限,请阅读此What is trailing Plus indicates

答案 1 :(得分:0)

最后,我设法创建了与用户具有相同权限的不同PHP-FPM池。这样我可以让不同的用户彼此分开。作为奖励deploy.rb被简化。

答案 2 :(得分:0)

此处的问题是,prod.log文件是自动创建的,因此其所有者为www-data。 Capifony以didongo用户身份运行部署。一个用户无法setfacl到另一个所有者的文件。

所以只需将didongo添加到论坛www-datasudo adduser didongo www-data