Apache - Permitir acesso aos diretórios home dos usuários

3

Estou preso a esse problema há uma semana, navegando em vários sites, não consigo fazer isso funcionar.

Eu tenho o Apache2 instalado e um site do Wordpress, localizado na pasta do usuário em /home/<user>/www .

Agora o site funciona e tudo, mas instalar plugins da interface web (e qualquer coisa que exija acesso para gravação - alterar configurações, carregar mídia, etc.) não funcionará, já que o wordpress (mais parecido com o apache) não tem escrever acesso a esses arquivos.

o diretório /home/<user>/www e tudo abaixo pertence ao usuário e o grupo <user> .

Já experimentei várias soluções, mas nenhuma delas funcionou, incluindo:

  1. Alterando o proprietário de /home<user>/www para www-data:www-data . Tudo bem - honestamente, eu não tentei essa solução, porque eu não quero. Se você fizer isso para todos os usuários no servidor, eles terão acesso a todas as pastas, mas eles só poderão acessar sua pasta base, não as outras.

  2. Adicionando www-data ao grupo do usuário. Eu pensei que isso poderia funcionar, mas aparentemente não funciona. O usuário www-data está de fato no grupo do usuário (verificado com o comando id), mas ainda parece não funcionar.

  3. Definindo uma ACL no diretório pessoal do usuário. Também fez isso e deu acesso www-data rwx ao diretório inicial, e ainda assim não ajudou.

Caso você esteja interessado, o diretório /home/<user>/ e todos os arquivos / diretórios abaixo têm a permissão 775.

    
por Skrypt 05.02.2018 / 16:33

1 resposta

1

Tudo bem, então, depois de continuar lutando com isso, finalmente encontrei uma solução que funciona para mim.

Aqui está o que eu fiz: Digamos que eu tenha criado um novo usuário chamado dummy com sua pasta pessoal localizada em /home/dummy e uma pasta dedicada à sua apresentação na Web localizada em /home/dummy/www .

  1. Use sudo chgrp -R www-data /home/dummy/www para alterar o grupo do diretório www e todo o conteúdo para www-data (o usuário padrão do Apache para acesso à Web.)
  2. Use sudo chmod -R g+wrxs /home/dummy/www para conceder ao grupo www-data permissão de gravação, leitura e execução para o diretório especificado e seu conteúdo. A coisa importante aqui é a parte s . Isso garante que o grupo ( www-data ) assuma a propriedade sobre qualquer arquivo criado dentro do diretório com o parâmetro s.

Não é necessário adicionar o usuário dummy a nenhum grupo.

Espero que isso ajude se alguém encontrar o mesmo problema que eu no futuro.

EDIT: Após alguns testes adicionais, isso por si só parece não ser suficiente. Além das duas etapas mencionadas acima, você também precisa explicitamente dizer ao wordpress como trabalhar com arquivos adicionando define('FS_METHOD', 'direct'); ao arquivo de configuração wordpress.

Além disso, para uma configuração de permissão mais rigorosa, consulte a Etapa 5 do DigitalOcean Como instalar o WordPress com LAMP no Ubuntu guia.

    
por Skrypt 09.02.2018 / 18:03