A melhor maneira de garantir que o conteúdo de um diretório seja sempre de propriedade do Apache

0

Temos um Apache VirtualHosts em um servidor CentOS 7, e o PHP às vezes requer a capacidade de criar / editar / excluir arquivos e / ou pastas, por isso é importante que as permissões sempre sejam apache.apache recursivamente.

As implementações são feitas via Jenkins, como o usuário Jenkins, e eu sei que posso simplesmente adicionar uma execução shell simples a chown -R apache.apache /var/www/website , e eu vou, mas se alguém diferente de mim fizer uma implantação manual, ou qualquer coisa que Para alterar as permissões, como criar um novo arquivo ou pasta, isso pode causar alguns problemas.

Eu pensei em apenas fazer um cron job para chover o diretório inteiro de vez em quando, mas vai haver 4 VHosts diferentes e, possivelmente, uma grande quantidade de arquivos para cada um deles, então fazer isso frequentemente não é o ideal, mas então novamente, não fazê-lo freqüentemente significa que pode haver problemas entre quando os perms foram alterados e o trabalho cron é executado.

Alguém sabe de uma boa maneira de garantir que o proprietário esteja sempre configurado para um diretório específico? (recursivamente), independentemente do que o usuário faz o quê?

Primeiro pensei em Sticky Bits ... mas eu só funcionaria para as permissões, não para propriedade.

Em seguida, pensei em usar algo como entr , que encontrei em uma simples pesquisa no google. Ele não está disponível em nenhum repositório que eu encontrei, então você precisa instalá-lo manualmente, mas ele basicamente dispara os comandos que você especifica quando vê alguma alteração nas pastas / arquivos, então algo como

ls -d /var/www/foo.company.com | entr sh -c 'chown -R apache.apache /var/www/foo.company.com & & echo "Chowned em $ (data)" > > /var/log/entr.log '

seria suficiente ... Mas tenho certeza que há uma solução que não requer a instalação manual deste binário nos servidores (tento gerenciar os pacotes via yum o máximo possível)

Qualquer ajuda seria apreciada!

Obrigado

Atualizar

Zoredache mencionou que eu deveria adicionar o usuário apache ao outro grupo de usuários que requer permissões de gravação (que é jenkins , pois é assim que estou fazendo implantações), então defina o grupo bit de ID de permissão (chmod 2775).

Eu gosto dessa abordagem, mas agora estou me deparando com um problema.

Aqui estão os comandos / saída do console relacionados às permissões

[root@svr www]# chown -R apache.apache www.company.com
[root@svr www]# chmod -R 2775 www.company.com
[root@svr www]# getfacl www.company.com/
# file: www.company.com/
# owner: apache
# group: apache
# flags: -s-
user::rwx
group::rwx
other::r-x
[root@svr www]# ls -l
total 0
drwxrwsr-x. 2 apache apache  6 Apr 29 09:47 www.company.com

Então parece ok, certo? No entanto, quando tento uma implantação, recebo um problema de permissão ... Mas, se eu alterar o diretório de volta para 0775 , ele funcionará. Por que não funciona quando eu definir o sgid?

    
por Justin 29.04.2016 / 18:56

0 respostas