Como executo um aplicativo da Web PHP como um usuário e um grupo em particular no CentOS 5 com o Apache?

4

Estou ciente de que há várias maneiras diferentes de fazer isso, mas não tenho certeza de que o "melhor" caminho seria para minha situação específica:

  • Cada site deve ter sua própria conta de usuário (usuário do site)
  • Os hosts virtuais apontam para um diretório dentro do diretório inicial do usuário do site
  • O Apache executa cada site como o usuário do usuário do site: group
  • Os comandos da CLI podem ser executados no site como o usuário do site
  • Vários contratados são responsáveis pela manutenção de 1 ou mais sites e cada contratado deve ter sua própria conta de usuário
  • Os contatores também terão as informações da conta de cada conta do site que são mainatian. Eles farão login como usuário do site para manter cada site - seja com o ssh diretamente na conta desse site ou fazendo login na conta do fornecedor e alternando os usuários.

Meu primeiro pensamento foi usar mod_fcgi , pois acho que é assim que normalmente é feito em alguns dos ambientes de servidor compartilhado que eu usei. Eu pesquisei esta configuração, claro, mas a maioria dos guias que encontrei eram posts aleatórios. O que eu gostaria é de algo com um pouco mais de credibilidade (como o howto KB da empresa VPS ou um wiki distro). Desta forma eu posso apontar o admin para ele como um guia geral que im certeza de que ele irá se adaptar a como ele tem esse servidor específico configurado.

    
por prodigitalson 03.05.2011 / 19:02

1 resposta

3

Eu duvido que você encontre este texto escrito de uma fonte confiável .

Acho que a resposta à sua pergunta é dar uma olhada em suPHP . Infelizmente, a documentação é bastante esparsa.

Fora da caixa o suPHP é compilado no modo paranóico, o que significa que você tem que configurar o usuário e grupo que você quer que o PHP rode como na diretiva suPHP_UserGroup em uma base por vhost (um padrão global pode ser definido também ). Cada vhost seria algo como isto

<VirtualHost *:80>
    suPHP_Engine on
    ServerName hostname.tld
    DocumentRoot /home/websites/hostname.tld
    suPHP_UserGroup hostname hostgroup
</VirtualHost>

Se você tem (ou espera ter) um grande número de vhosts, o método acima pode se tornar difícil de administrar. Você pode compilar o suPHP e alterar o modo paranoid para o modo owner . Isso executa scripts como o proprietário / grupo do arquivo .php e permite que você utilize a diretiva VirtualDocumentRoot do apache2 e simplifica consideravelmente a configuração do vhost.

<VirtualHost *:80>
    suPHP_Engine on
    ServerName something.tld
    ServerAlias *
    VirtualDocumentRoot /home/websites/%1/public_html
</VirtualHost>

Você precisará desabilitar check_vhost_docroot em seu suphp.conf para fazer a última configuração funcionar

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=false

Fazer o acima permite que o apache 'execute' os sites como o usuário / grupo da conta.

O resto dos seus pontos são de administração básica que seu administrador deve saber.

    
por 03.05.2011 / 22:11