我有一个由我的用户拥有的目录vagrant
。 Web 服务器(和 Web 应用程序)作为www-data
.
两个用户都需要创建和修改该目录中的目录和文件,无论是谁创建的。因为vagrant
我可以修改由创建的文件www-data
,但无法在由创建的目录中创建新文件www-data
。
我相信我被困住了,因为我无法更改应用于创建的目录的掩码www-data
。
vagrant@iadev:/var/www/web$ sudo rm -r core/cache
vagrant@iadev:/var/www/web$ mkdir core/cache
vagrant@iadev:/var/www/web$ sudo setfacl -R -m u:www-data:rwX,u:vagrant:rwX core/cache
vagrant@iadev:/var/www/web$ sudo setfacl -dR -m u:www-data:rwX,u:vagrant:rwX core/cache
vagrant@iadev:/var/www/web$ getfacl core/cache
# file: core/cache
# owner: vagrant
# group: vagrant
user::rwx
user:www-data:rwx
user:vagrant:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:vagrant:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
我浏览网络应用程序并填充缓存
vagrant@iadev:/var/www/web$ getfacl core/cache/locks/
# file: core/cache/locks/
# owner: www-data
# group: www-data
user::rwx
user:www-data:rwx #effective:r-x
user:vagrant:rwx #effective:r-x
group::rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:vagrant:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
vagrant@iadev:/var/www/web$ vi core/cache/locks/test.txt
当用户vagrant
尝试保存文件时core/cache/locks
失败。我明白#effective:r-x
这是问题所在,但我不知道如何改变它。
我已经尝试了 ~30 个setfacl
命令变体(包括-n
和m:rwX
):我不明白什么?
答案1
我有同样的问题。去查看ACLcore/cache/locks/test.txt
有什么:
getfacl core/cache/locks/test.txt
目录默认 ACL 可能尚未应用于刚刚创建的文件(输出可能类似于):
# file: test.txt
# owner: www-data
# group: www-data
user::rw-
group::r--
other::r--
重新启动 Apache 对我有帮助。重新加载没有。
另一方面,我有另一个不需要重新启动的 Apache 实例。去搞清楚。