Em qual grupo deveria public_html pertencer?

2

Eu tenho um servidor de aplicativos em execução no Linux - CentOS.

Para poder editar meus arquivos php no Windows, eu vinculei o servidor à minha conta do Dropbox e criei um link simbólico da pasta Dropbox, que está localizado em / root / Dropbox, para minha pasta public_html. Então, quando tentei editar um arquivo em public_html através do Windows, a permissão dele virou para root e, assim, recebi o famoso erro 500. Eu acho que tem a ver com a permissão do link mencionado, então eu mudei a permissão para o link simbólico para minha conta de usuário, mas isso não mudou. Mas o que aconteceu a seguir me surpreendeu: de repente, quando tento acessar qualquer página do meu site, fico:

Proibido Você não tem permissão para acessar /My/site/name/page.php neste servidor.

Pesquisando, descobri que o proprietário e o grupo public_html são root, ps aux | grep apache mostrou

root      4533  0.0  0.0  10892  1604 ?        S    Jul31   0:00     /usr/local/apache/bin/httpd -k start -DSSL
nobody    4534  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4535  0.0  0.1  10892  2952 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4536  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4537  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4538  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4551  0.0  0.1  10892  2208 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4556  0.0  0.1  10892  2200 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4565  0.0  0.1  10892  2200 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4572  0.0  0.1  10892  2200 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL

mudar o grupo de public_html para nobody resolveu o erro e conseguiu esse erro. Mas eu não sei se deveria ser assim, Quero dizer, não sei que grupo tinha antes.

Então eu tenho duas qustions:

1. Dado o usuário do apache mencionado, a qual usuário deveria estar o public_html?

2. Se a resposta for 1, você pode pensar em algum motivo que causou esse erro de repente, e o que deve ser feito para resolvê-lo?

Vale a pena mencionar que comecei postando a pergunta aqui mas eu não recebi nenhuma resposta, então estou tentando aqui. Espero que seja legal.

    
por Subway 11.05.2013 / 09:16

1 resposta

2

Você pode executar o Dropbox como um usuário não-root, ter o public_html de propriedade desse usuário e do grupo apache e permissão rwxrwx --- (ou seja, 770) para que tanto o usuário quanto o Apache possam ler e escrever.

Além disso, como princípio geral da administração Linux / Unix, você nunca deve executar aplicativos como root, a menos que seja absolutamente necessário.

Para explicar por que o Apache parece usar o root, os aplicativos só podem escutar em portas privilegiadas (aquelas abaixo de 1024) se elas forem iniciadas com privilégios de root. Como o HTTP / HTTPS é servido nas portas 80/443 (respectivamente), o Apache é iniciado como root e então bifurca os processos sob seu próprio usuário (por padrão, chamado 'apache' nas distribuições baseadas no Red Hat - das quais o CentOS é um - ou 'www-data' em distribuições baseadas em Debian - por exemplo, Ubuntu). O usuário não privilegiado pode ser configurado na sua configuração do Apache, embora para 95% dos aplicativos o padrão seja bom.

    
por 11.05.2013 / 14:30