Como configurar corretamente o usuário / grupos / permissões para um servidor web?

3

Eu passei o dia inteiro imaginando isso, mas sem sucesso, então espero conseguir alguma ajuda aqui: Eu tenho o servidor Ubuntu 13.10 VPS com nginx, PHP 5 e MariaDB instalado.

Eu criei um usuário de sistema personalizado (por exemplo, "myuser") que eu uso para conexão através de SFTP em meu servidor. No meu diretório pessoal do usuário, criei o diretório "public_html" para minha raiz da Web.

O que eu estou tentando realizar é que, se eu copiar meus arquivos através de SFTP (ou rsync também), eles estarão trabalhando não apenas com o meu usuário, mas também com o PHP / servidor.

Por exemplo, se eu instalar o WP, ele não terá permissão para gravar arquivos, pois eu sou o proprietário deles. (Portanto, não é possível fazer upload de arquivos, instalar temas, plugins etc.) No entanto, isso não é um problema do WP, mas um problema geral de configuração de usuários / grupos / permissões

Eu estava brincando com o diretório sgid, umask, designando-me para www-data etc. mas não consigo encontrar o caminho certo para fazer isso. (sem manualmente chmod meus arquivos) Por exemplo, na minha hospedagem ex-compartilhada, acabei de fazer upload de um arquivo no qual sou o proprietário e não há problema com permissões. Correndo nginx / php sob o meu usuário eu considero como não seguro.

Por favor me ajude com este problema - eu preciso de uma opção estável e segura.

P.S. Eu sei que posso chmod meus arquivos depois que eu carregar / criá-los, mas isso não é uma solução, pois é muito demorado / overhelming. Eu preciso automatizar esse processo e acredito que existe uma solução adequada.

    
por depi 27.12.2013 / 10:24

1 resposta

2

Estou certo de que entendi sua pergunta corretamente ...

Você está enviando arquivos para o seu servidor como usuário myuser em /home/myuser/public_html/ e eles estão aparecendo com permissões -rw------- . Então o seu servidor web (rodando como www-data ) não pode acessar esses arquivos porque não tem permissão?

Uma abordagem é definir umask para myuser como algo mais permissivo, como 0022 . (Você pode adicionar isso no seu .bashrc com a linha simples umask 0022 .) Isso fará com que todos os novos arquivos e diretórios criados por myuser estejam disponíveis para leitura e execução por todos os usuários no sistema, incluindo www-data . (Claro, isso pode ser muito permissivo para você, caso em que você terá que pensar em algo mais envolvido.)

Agora, uma pesquisa no Google por "sftp umask" indica que esta sugestão nem sempre funciona imediatamente. Depende de como o daemon FTP está configurado em sua máquina e como você está se conectando a ela. Por exemplo, pode ser que suas conexões de SFTP não leiam o arquivo .bashrc , portanto, você precisará encontrar outra maneira de aplicar o umask às suas conexões ou usar outro método de transferência de arquivos, como scp .

    
por 27.12.2013 / 23:21