Gerenciando o Apache para compensar o mascaramento de segurança do WebDAV

5

Quando um usuário cria um arquivo via WebDAV, o comportamento padrão é que o arquivo é de propriedade do usuário e do grupo executando o processo Apache, com um umask de 022.

Infelizmente, isso torna impossível para os usuários sem privilégios escrever nos arquivos por outros meios sem ser um membro do grupo no qual o Apache é executado (o que me parece uma idéia particularmente ruim).

Minha solução atual é definir umask 000 nos enviros do Apache e remover todas as permissões mundiais do diretório pai do webdav para o usuário. Portanto, se o compartilhamento WebDAV for /home/foo/www , então / home / foo / www será de www-data:foo com permissões de 770 . Isso mantém os usuários desprivilegiados de fora, mais ou menos, mas, na melhor das hipóteses, é uma fraude e um desastre de segurança aguarda na pior das hipóteses.

Da minha pesquisa e do mod_dav e do Apache, não consigo encontrar uma solução razoável antes de uma tarefa do cron inverter todas as permissões (prefiro não ter a carga e aumentar a complexidade no servidor). O SuExec também não funcionará, porque as operações do WebDAV não serão executadas como um usuário diferente.

Alguma opinião sobre isso? Obrigado.

    
por Tohuw 12.12.2012 / 02:44

1 resposta

4

Evitei a falta de recursos de troca de usuários do Apache usando o Posix ACL. Eles permitem que você adicione mais entradas de grupos e usuários em todos os arquivos e também permite a configuração de permissões padrão nos diretórios que são automaticamente adicionados a cada arquivo criado dentro.

Se eu acho certo e você está executando o Linux, você pode ativar o Posix ACL você precisa remontar seu sistema de arquivos com a opção acl . Em seguida, você pode usar setfacl e getfacl para gerenciar permissões adicionais. Nos sistemas baseados em Debian, estas ferramentas podem ser encontradas no pacote acl . Você pode ler mais sobre o Posix ACL em man acl e man setfacl . O Posix ACL também está disponível em alguns sistemas BSD e MacOS, mas nunca os usei lá.

Por exemplo, você pode configurar uma pasta na qual o grupo fileserver sempre tenha acesso de leitura e gravação a todos os arquivos em:

setfacl -Rm default:group:fileserver:rw,group:fileserver:rx /srv/fileserver

Isso resultaria em getfacl /srv/fileserver informando algo assim:

# file: /srv/fileserver
# owner: aef
# group: aef
user::rwx
group::rwx
group:fileserver:r-x
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:fileserver:rw-
default:mask::rwx
default:other::r-x

Um aviso: Você provavelmente precisará de algum tempo para se acostumar com as Posix ACLs, elas adicionam um pouco mais de complexidade, mesmo que não pareça no começo.

    
por 12.12.2012 / 04:47