Configurando vários sites no servidor linux apache

2

Eu sei como configurar o servidor Apache e obter vários sites funcionando, mas essa pergunta é mais sobre as práticas recomendadas.

Basicamente eu tenho um VPS rodando o servidor Ubuntu, e eu estou olhando para rodar vários sites a partir disso. O que eu gostaria de fazer é configurar cada conta em um diretório dentro das pastas base, mas ter minha conta sites capaz de criar, modificar e excluir arquivos dentro de cada uma dessas pastas sem precisar usar permissões de root. Isso é possível e, se for, essa é uma maneira aceitável de configurar meu ambiente?

    
por user204088 04.03.2013 / 17:07

2 respostas

0

Obrigado user204088 - uma pergunta sobre permissões que descreve um modelo de segurança! (a maioria das pessoas simplesmente reclama que eles não conseguem fazer as coisas funcionarem, e aceitam a resposta que diz mudar as permissões para 0777).

Uma coisa que você não mencionou é como os sites são criados, como são modificados e quanto isolamento deve haver entre sites.

Algumas coisas importantes:

1) Eu recomendaria definir a raiz do documento como uma pasta abaixo da pasta base. Dessa forma, você pode ter um escopo para um diretório de inclusão por site, um diretório de uploads por site e um diretório de dados de sessão por site, nenhum dos quais é exibido como URLs pelo servidor da web. Isso também significa que todo o lixo do / etc / skel também não está acessível.

2) Exceto em circunstâncias muito raras, o seu servidor web não deve ter acesso de gravação a qualquer conteúdo dentro do documentroot.

Para criar usuários (com diretórios home) você precisa ser root - daí eu iria com a criação de um site de template em / etc / skel e escrever um script bash simples para criar um usuário e adicionar um registro vhost para o httpd.conf (na minha caixa PCLinux isso vai em /etc/httpd/conf/vhosts.d - nomeie o arquivo como o nome do host, menos o prefixo www.

Permitir que o acesso de leitura / gravação da conta do site a todo o conteúdo do site seja o local onde ele fica confuso. Você pode configurar um grupo comum e garantir que todos os arquivos / diretórios sejam graváveis em grupo (chmod g + S), mas isso significa que os usuários podem acessar o conteúdo uns dos outros. É provavelmente uma idéia melhor usar o modelo de um grupo por usuário, definir as permissões de arquivo como graváveis pelo grupo e adicionar a conta de 'sites' a cada um dos grupos de usuários únicos.

O Apache obtém acesso de leitura aos arquivos / diretórios através do 'outro' - então lembre-se de definir a umask apropriadamente.

Agrupar tudo isso em um script bash executável apenas pelo root é simples. Você pode fazer coisas como invocar isso via sudo (certifique-se de adicionar outra autenticação) do seu servidor web para colocar um simples front-end na criação de contas / vhosts.

E assim que a conta de usuário é criada, você pode manipular os arquivos usando a conta "sites".

    
por 04.03.2013 / 23:11
0

É possível e se você achar isso como uma maneira aceitável de manter seu servidor, não vejo por que não é uma opção viável. Uma alternativa seria não ter o usuário do site e executar um script como apache ou qualquer usuário do serviço da web que você usa.

    
por 04.03.2013 / 22:49