Como eu dou aos arquivos e diretórios criados pelo FTP as permissões corretas para o Apache ler e escrever os mesmos?

8

Eu sou mais uma pessoa do Windows, então, por favor, desculpe minha ignorância com esta questão básica do Linux.

Estou cuidando de um servidor Linux (Debian) que possui apenas Apache2 e vsftp instalado.

O que está acontecendo é que estou tendo uma batalha constante com quem possui arquivos e pastas e não consigo acertar.

Até agora, este é o meu entendimento:

  • O usuário www-data precisa da propriedade de pastas e arquivos, pois todos os arquivos em / var / www / html executam scripts que exigem que eles gravem em suas pastas. E é claro que precisa ser capaz de servir as páginas via http.
  • Meu usuário ftp (permite chamá-lo de ftpuser ) também requer permissão para gravar na pasta / var / www / html (recursiva), já que preciso carregar novos arquivos.

Com isso em mente, criei um grupo chamado ftpandwww e fiz um chowned de todas as pastas e arquivos para esse grupo. Isso funcionou em um grau ...

Estou quase no lugar certo, exceto pelo fato de que qualquer nova pasta criada usando meu cliente FTP tem as permissões erradas (que eu posso corrigir alterando-as no cliente FTP), mas o www-data não pode escrever para eles, porque eles são de propriedade do ftpuser e eu acabo tendo SSH e executando um chown para o grupo ftpandwww para que eles sejam ambos felizes.

Como faço para que todas as novas pastas que eu crie no FTP tenham as permissões corretas (774) e sejam de propriedade automática do grupo ftpandwww para que eu possa fazer upload e veiculação via web (com permissões de gravação ) sem ter que ir e chown todas as novas pastas e arquivos de cada vez?

    
por omega1 15.07.2015 / 18:28

1 resposta

10

Use as permissões SetGID no diretório raiz da web, e propagá-los para as crianças.

Quando você aplica o SetGID em um diretório, todos os novos itens nesse diretório serão criados com o mesmo grupo que seu pai possui, independentemente da associação do grupo padrão do usuário.

Para aplicar o SetGID a um objeto do sistema de arquivos, use chmod com um 2 na frente do código de permissão.
(ex .: 740 = > 2740).

Eu uso o SetGID em muitos dos meus compartilhamentos Samba, para que os arquivos sempre tenham o ownergroup Users e qualquer membro do grupo possa ler os arquivos (geralmente uso 2750 para que apenas o usuário proprietário possa gravar no arquivo Arquivo).

No seu caso, execute algo assim (substitua XXX pelas suas permissões desejadas):

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www 

Em seguida, novos arquivos e pastas sairão com propriedade, como ftpuser:ftpandwww .

Editar:

Dependendo do seu uso, o SetGID é suficiente para resolver o problema, mas se você tiver problemas contínuos em que um ou outro usuário é negado, devido a uma permissão de grupo incorreta (mas a propriedade é correta), sua melhor aposta é definir um UMASK personalizado para o usuário que cria os arquivos .

Se você tiver dificuldade em configurar o UMASK para o usuário (porque é um daemon), verifique este tópico nas opções para definindo UMASK do usuário daemon .

Eu recomendaria a máscara 007 se você quiser que os membros do grupo possam gravar e excluir arquivos, e sem privilégios para não-proprietários.

    
por 15.07.2015 / 18:39