usuários ACL para alterar as permissões de gravação

1

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?

    
por Maciej Łebkowski 06.11.2009 / 12:01

1 resposta

2

Nada permite que o usuário não-proprietário não-root altere as permissões de arquivo. Eu iria com o script do sudo - eu não vejo o que é tão difícil nisso, no entanto. Use readlink -f para canonicalizar o nome do arquivo para alterar para que você possa verificar se o prefixo está correto, não deixe o usuário realmente especificar as permissões, apenas torne um script "conceder acesso de gravação ao Apache".

    
por 06.11.2009 / 12:36