Estou tentando criar um ambiente no qual vários usuários possam trabalhar em um único projeto de website. Além disso, todos devem poder conceder permissões adicionais de gravação para o apache.
A ideia é que todos usem um login separado (digamos que seja joe
, jane
e mark
no grupo users
). O apache está sendo executado como apache:www
. Todo mundo tem que ter permissões de gravação para todos os arquivos, o apache tem acesso somente leitura. Agora, os arquivos escolhidos pelos usuários precisam ser graváveis pelo apache (é importante que o apache não possa ter permissões de gravação para todos os arquivos - questões de segurança).
Eu tentei duas configurações, uma usando ACL-s, uma usando umask, grupo comum, etc. Ambas têm a mesma falha - os usuários não podem alterar as permissões de gravação para o apache.
As duas abordagens que tentei:
-
setfacl -m default:group:users:rwx project/
Dessa forma, é fácil gerenciar permissões de gravação para todos os usuários. Nenhuma configuração adicional, apenas funciona. Qualquer que seja o proprietário do arquivo, todos os usuários da equipe podem modificar o arquivo. Infelizmente, somente o proprietário do arquivo pode adicionar permissões de gravação para apache
-
umask 0002
em .bashrc
, todos os usuários no mesmo grupo
Baseando-se em permissões simples, cada usuário tem acesso de leitura e gravação a todos os arquivos. chgrp www ...
é necessário para o apache ter permissões de gravação. Novamente - somente o proprietário do arquivo pode fazer isso.
Então, basicamente, estou procurando uma maneira de conceder a vários usuários a permissão para fazer um g+w
em um arquivo. Pensei em outras formas de fazer isso, por exemplo:
- script bash para alterar permissões, executado pelo sudo. Poderia funcionar, mas é um problema de segurança. É muito complicado restringir o acesso ao diretório do projeto apenas. Mesmo se eu fizer, haverá complicações com o modo recursivo e assim por diante.
- estrutura de diretórios assim:
- / project / www - o htdocs do apache (
setfacl -m d:group:users:rwx
)
- / project / data - gravável pelo apache (
setfacl -m d:user:apache:rwx
)
- o que quer que esteja no diretório
./www
deve ser gravável por apache
, precisa ser criado em ./data
e linkado por links simbólicos - mas isso não é elegante nem conveniente
Então, estou procurando uma solução fácil de usar. A configuração inicial pode ser complicada, mas o uso diário não deve ser. Alguma sugestão?