O que você está pedindo é difícil, se não impossível. Mesmo se você restringisse a aplicação de chown
e chmod
aos arquivos em um diretório específico, alguém ainda poderia passar um link simbólico e assim afetar os arquivos em qualquer lugar que desejasse.
Felizmente, é altamente provável que o que você está tentando fazer não seja a solução certa para o problema real, e há outro método que funciona.
Normalmente, os usuários que precisam de permissões adicionais para criar e modificar arquivos em /var/www
são adicionados a um grupo (geralmente www-data
, ou você pode ter grupos diferentes para partes diferentes do site). Você pode usar a propriedade de grupo e os diretórios setgid: chgrp www-data /var/www/html; chmod g+ws /var/www/html
permite que todos no grupo www-data
gravem no diretório /var/www/html
, e os arquivos criados nesse diretório pertencerão ao grupo www-data
em vez do grupo principal de o usuário que criou o arquivo. No entanto, isso não é muito flexível.
O que você provavelmente deve fazer é configurar listas de controle de acesso para arquivos em /var/www
. Primeiro, certifique-se de que as ACLs estejam ativadas: o sistema de arquivos em que /var/www
está ativado deve ser montado com a opção acl
. Veja Faça todos os novos arquivos em um diretório acessível a um grupo para obter ajuda sobre isso. Instale também os utilitários do ACL ( getfacl
e setfacl
). Em seguida, conceda permissões extras à árvore em /var/www/html
para os usuários que devem tê-las. Você pode definir ACLs por usuário, mas geralmente é mais fácil colocar usuários que devem ter os mesmos direitos em uma parte do sistema de arquivos em um grupo e definir ACLs para esse grupo. Por exemplo, se os usuários do grupo html-writers
tiverem acesso de leitura / gravação à árvore em /var/www/html
:
setfacl -d -m group:html-writers:rwx /var/www/html
setfacl -m group:html-writers:rwx /var/www/html