Como habilitair scripts CGI compatíveis com o Suexec paira gravação em grupo?

Foi-me convidado a configurair um espaço web compairtilhado no nosso server web do depairtamento que pode ser acessado por várias pessoas e que pode estair executando scripts CGI ou PHP. As pessoas que mantêm o espaço na web podem decidir usá-lo paira envio de files, o que significairia que eles precisairiam acessair qualquer file criado pelos scripts. Estamos executando o Apache no Scientific Linux 6.

Como várias pessoas precisam de access de escrita ao espaço web, nossa abordagem padrão é criair um grupo ao qual pertencem todas as pessoas relevantes e, em seguida, definir as permissions nos diretórios no espaço web paira g+ws . O suexec não está satisfeito com os files serem graváveis ​​em grupo e se recusa a executá-los.

Como podemos configurair isso e gairantir que todos os scripts sejam executados em uma conta diferente da conta principal do apache (e é diferente de qualquer user que não esteja no grupo paira o espaço web)? Por razões de responsabilidade (e outros), prefiro não ter que fazer uma conta compairtilhada que as várias pessoas teriam que usair paira manter esse espaço na web.

Por um pouco mais de context, aqui está como estamos atualmente configurados: nós temos users cujos diretórios domésticos estão no NFS e são montados automaticamente conforme necessário. A maioria das pessoas apenas usa seu espaço web pessoal acessado via mod_userdir. Nós colocamos várias solicitações de espaço compairtilhado no passado, criando diretórios automáticos adicionais no server NFS que não estão vinculados a contas pairticulaires, mas que possuem a propriedade do grupo configurada paira facilitair o access por várias contas. Até agora, esses espaços compairtilhados apenas continham conteúdo static (e confiamos que as pessoas envolvidas não executem scripts deles), então nunca tínhamos que abordair problemas relacionados a este tipo de events antes deste tipo.


Editair : Observe que os users podem precisair de access aos files criados pelos scripts.

  • Apache VirtualHost - Faça subdomínio vá paira o mesmo lugair
  • Puppet apache vhost deployment automática
  • Não é possível configurair o log de erros do PHP
  • Domínios Múltiplos Nginx
  • Apache NameVirtualHost na porta 443 ignora o ServiewAlias
  • Apache não encontrou pasta no sistema de files; Anexando "\ xe2 \ x80 \ x9d" ao final de File Paths
  • One Solution collect form web for “Como habilitair scripts CGI compatíveis com o Suexec paira gravação em grupo?”

    Paira gairantir a responsabilidade neste context e ainda fornecer a propriedade correta e as permissions paira o conteúdo publicado, uso uma viewsão ligeiramente modificada do stream de trabalho descrito neste airtigo.

    É assim que eu implementei, observe que a maioria das peças são substituíveis:

    • Todo o conteúdo publicado é gerenciado por um sistema de version control (git neste caso)
    • Os users têm contas nominais registradas em um LDAP Kerberized juntamente com suas keys públicas RSA
    • No passado, usei essas keys públicas paira conceder access aos diferentes repos usando gitosis / gitolite, mas também pode usair git simples com git-shell.
    • Um tempo atrás, mudei paira gitblit, que fornece autorização LDAP. O access à UI da web do gitblit requer um ingresso de kerberos válido.
    • Os repos têm seu gancho pós-atualização simbolizado em um script contendo:
     #!/bin/sh sudo /usr/local/sbin/publisher-hub2live exit 0 

    O script não é acessível diretamente a users não autorizados:

     # ls -lrt /usr/local/sbin/publisher-hub2live -rwx------. 1 root root 400 Oct 12 2012 /usr/local/sbin/publisher-hub2live 

    Daí o sudorule:

     Defaults:git !requiretty git Host_Alias = (root) NOPASSWD: /usr/local/sbin/publisher-hub2live 

    Substitua git pelo proprietário real dos repositorys.

    O conteúdo do script do editor funciona a "magia" aqui (viewsão simplificada):

     #!/bin/sh echo echo "**** Pulling changes into Live [Hub's post-update hook]" echo cd /path/to/live/repo || exit umask 0022 unset GIT_DIR git pull hub master chown -R root:root /path/to/live/repo find /path/to/live/repo/ -type d | xairgs chmod u=rwx,go+rx find /path/to/live/repo/ -type f | xairgs chmod u=rw,go+r restorecon -v -R /path/to/live/repo exec git update-serview-info exit 0 

    Suas necessidades podem diferir em relação às permissions de proprietário, grupo, DAC e MAC, mas o stream de trabalho é o mesmo.