Eu sou mais uma pessoa do Windows, então desculpe minha ignorância com esta pergunta básica do Linux.
Estou cuidando de um servidor Linux (Debian) que tenha apenas o Apache2 e o vsftp instalados.
O que está acontecendo é que estou tendo uma batalha constante com quem possui arquivos e pastas e parece que não consigo acertar.
Este é o meu entendimento até agora:
- 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 sua pasta. E é claro que ele precisa ser capaz de servir as páginas via http.
- Meu usuário de ftp (vamos chamá-lo de ftpuser ) também requer permissão para gravar na pasta / var / www / html (recursiva), pois eu preciso fazer o upload de novos arquivos.
Com isso em mente, criei um grupo chamado ftpandwww e copiei todas as pastas e arquivos para esse grupo. Isso funcionou até certo ponto ...
Estou quase no lugar certo, exceto pelo fato de que todas as novas pastas criadas usando o meu cliente FTP têm as permissões erradas (que eu posso corrigir alterando-as no cliente FTP), mas os dados da www não conseguem gravá-las porque eles são de propriedade do ftpuser e eu acabo tendo que fazer o SSH e executar um grupo chown to ftpandwww para que ambos fiquem felizes.
Como faço para que todas as novas pastas criadas no FTP tenham as permissões corretas (774) e sejam automaticamente de propriedade do grupo ftpandwww , para que eu possa fazer upload e servir via web (com permissões de gravação) sem precisar entrar e exibir todos os novas pastas e arquivos de cada vez?
fonte
Respostas:
Use as permissões SetGID no diretório raiz da web e propague-as para os filhos.
Quando você aplica o SetGID em um diretório, todos os novos itens desse diretório serão criados com o mesmo grupo que seus pais, independentemente da associação ao 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.(por exemplo: 740 => 2740).
Eu uso o SetGID em muitos dos meus compartilhamentos do Samba, para que os arquivos sempre tenham o grupo do proprietário
Users
e qualquer membro do grupo possa ler os arquivos (eu costumo usar2750
para que apenas o usuário proprietário possa gravar no arquivo).No seu caso, execute algo como isto (substitua XXX pelas permissões desejadas):
Em seguida, novos arquivos e pastas sairão como propriedade
ftpuser:ftpandwww
.Editar:
Dependendo do seu caso de uso, é provável que SetGID seja suficiente para resolver seu problema, mas se você tiver problemas contínuos em que um ou outro usuário não poderá gravar, devido a uma permissão de grupo incorreta (mas a propriedade é correta), sua melhor opção será 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 encadeamento nas opções para configurar o UMASK de um 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.fonte