Permissões do diretório raiz do servidor

3

Eu tive esse problema em várias configurações e não tenho certeza de como lidar com isso.

Primeiramente, todo /var é de propriedade de root:root . Obviamente, não quero que o diretório da web seja de propriedade de root, portanto, eu faço chown apache:apache /var/www . No entanto, quando alguém é ssh 'd in como root, se eles fizerem algo como svn update ou editarem um arquivo, isso alterará a propriedade de volta para o root.

Existe alguma maneira de corrigir isso? Já ouvi falar em usar algo com o suPhp, mas não tenho certeza se é necessário.

    
por John 14.08.2011 / 19:23

2 respostas

6

Observação: No seu caso, o melhor seria simplesmente descartar privilégios de root para atualizações e executar seus scripts com seu apache user:

 su apache -c "./update-script"

Caso contrário, use chmod g+s /var/www . Novos arquivos e subdiretórios criados dentro deste diretório compartilharão o mesmo proprietário / group como o diretório pai, por padrão. (Isso se espalha recursivamente.)

De acordo com o manual do coreutils este é um GNU Extensão -ish que não é portátil. Isso parece funcionar apenas para o ID do grupo, mas acho que deve ser o suficiente para lidar com esse tipo geral de problema. (Usar umask 002 ao executar o script também pode ajudar.)

    
por 14.08.2011 / 19:29
3

Clearly I don't want the web directory to be owned by root

Por quê? Qual é o seu modelo de segurança?

chown apache:apache /var/www

WTF é o seu modelo de segurança !!! ????

when someone is ssh'd in as root

Aaaarrggghhhh!

A resposta de Stephane G faz muito sentido se você NÃO USAR o usuário do apache . Para a maioria dos modelos de segurança, uma abordagem mais sensata é configurar um grupo de usuários para ter acesso de gravação aos arquivos e definir a propriedade do grupo e grupo, executar e gravar bit nos diretórios e permitir o acesso do servidor como 'outro' . Se você precisa ter diretórios / arquivos específicos graváveis pelo servidor web, defina o usuário como uid para o servidor web (mas mantenha o mesmo grupo que em outro lugar).

E você nunca deve permitir logins root ssh (uma lista de permissões AllowGroups / AllowUsers é muito melhor do que negar usuários específicos / PermitRootLogin = no)

    
por 16.08.2011 / 14:29