Como atribuir permissões corretas ao servidor web e ao svn?

2

Eu tenho um problema com os proprietários de arquivos no Unix.

Eu tenho um site drupal e a pasta "files" precisa ser de propriedade de "www-data" para permitir que os usuários façam upload de arquivos com php.

No entanto, estou usando agora o svn e preciso que todas as pastas e arquivos sejam próprios do "svnuser" para funcionar.

Então, agora, acho que preciso adicionar os dois usuários a um grupo com as permissões adequadas. Não tenho certeza do que exatamente fazer, você poderia me dizer quais são os passos exatos necessários?

obrigado

    
por aneuryzm 04.01.2011 / 17:14

1 resposta

1

A maneira mais fácil de gerenciar isso é com listas de controle de acesso . Eles permitem que as permissões sejam configuradas para quantos usuários e grupos você quiser, não apenas um usuário e um grupo, como as permissões básicas do Unix.

As ACLs precisam estar ativadas no sistema de arquivos. Com ext [234] ou reiserfs, você precisa passar a opção acl mount. Também verifique se você tem os utilitários ACL instalados (pacote acl no Debian ou Ubuntu).

Defina uma ACL que permita que ambos os usuários acessem os arquivos e defina uma ACL padrão correspondente nos diretórios (a ACL padrão é herdada pelos arquivos criados no diretório).

setfacl -m user:www-data:rwx -m user:svnuser:rwx -R /path/to/directory/tree
setfacl-d -m user:www-data:rwx -m user:svnuser:rwx -R /path/to/directory/tree

Você pode definir permissões diferentes, se quiser. O bit executável será ignorado se o arquivo não for executado através das permissões não-ACL (aquelas que você definiu com chmod ).

Os comandos dados são para o Linux. Muitas outras variantes unix suportam ACLs, mas o conjunto exato de permissões disponíveis e o utilitário para defini-las não são padronizados.

Você pode usar grupos para controlar o acesso, se quiser. Mesmo se você fizer isso, a ACL terá a vantagem de não se deparar com um problema de umask: se você acabou de criar um grupo, é necessário garantir que todos os arquivos e diretórios sejam graváveis por grupo, o que significa que você precisa garantir criar um arquivo tem umask de 002 ou 007, o que, por sua vez, pode fazer com que as permissões em outros lugares sejam mais liberais. Então, mesmo se você criar um grupo, as ACLs serão úteis.

setfacl -m group:mygroup:rwx -R /path/to/directory/tree
setfacl -d -m group:mygroup:rwx -R /path/to/directory/tree

Observe que não concedo nenhuma garantia quanto à adequação desse modelo de segurança ao seu caso de uso. Estou apenas fornecendo uma implementação.

    
por 04.01.2011 / 20:47