【问题标题】:Best practice: Files/Folders permission/owner in symfony2最佳实践:symfony2 中的文件/文件夹权限/所有者
【发布时间】:2013-05-10 13:10:51
【问题描述】:
symfony2 的内核需要写入缓存(作为 http 用户)。由于这些原因,我还需要读取/写入文件夹:
- IDE 需要在文档根目录中读取/写入/创建
- 在 shell 中,我的用户应该能够生成捆绑包并清除缓存
- 我的用户应该能够操作 .git 文件夹(通过暂存和提交)
- 我正在推送到远程/生产服务器,这应该由我的用户完成
设置文档根目录及其下文件的所有权和权限的最佳做法是什么?
谢谢
【问题讨论】:
标签:
apache
security
symfony
permissions
web-deployment
【解决方案2】:
我为此使用ACL。
假设您的用户是 arsham 而 apache 组是 www-data
创建一个文件夹来保存您开发的所有应用程序的文档根
sudo mkdir -p /var/vhosts
sudo chown arsham:www-data /var/vhosts
接下来我们为用户和组设置 rwx 权限 + SGID 位,以便新文件和文件夹将跟随父目录组。
sudo chmod 770 /var/vhosts
sudo chmod g+s /var/vhosts
接下来我们通过 ACL 为新文件设置默认权限
sudo setfacl -dm u::rwx /var/vhosts
sudo setfacl -dm g::rwx /var/vhosts
sudo setfacl -dm u:arsham:rwx /var/vhosts
sudo setfacl -dm g:www-data:rwx /var/vhosts
sudo setfacl -m u:arsham:rwx /var/vhosts
sudo setfacl -m g:www-data:rwx /var/vhosts
现在,您只需为新项目创建文档根目录:
cd /var/vhosts && mkdir newproject
注意,如果需要修改已有文件的权限,
您需要运行 setfacl 和 chmod 并包含 -R(递归)选项