Permissões do Linux para serviços

7

Como as permissões funcionam para serviços no Linux? Eu já sei que posso definir read , write e execute permissões para arquivos e diretórios com chmod each para owner , group e other users , mas como as permissões funcionam para um serviço em execução? Como posso ver quais permissões um serviço tem em arquivos / diretórios específicos?

    
por Gigitsu 10.09.2012 / 09:33

1 resposta

4

Um serviço está sujeito a restrições de permissão regulares. Tudo depende de qual usuário o serviço é executado. Os serviços são apenas processos regulares que estão sempre em execução.

Por exemplo,

$ ps aux | grep apache2
root      2845  0.0  0.2  75596  4508 ?        Ss   Sep06   0:19 /usr/sbin/apache2 -k start
www-data 25608  0.0  0.1  74428  2232 ?        S    Sep09   0:00 /usr/sbin/apache2 -k start
www-data 25609  0.0  0.1  75596  2288 ?        S    Sep09   0:02 /usr/sbin/apache2 -k start
www-data 25610  0.0  0.4 2003664 8436 ?        Sl   Sep09   0:37 /usr/sbin/apache2 -k start
www-data 25611  0.0  0.4 2003788 8584 ?        Sl   Sep09   0:36 /usr/sbin/apache2 -k start
www-data 25700  0.0  0.4 2003648 8528 ?        Sl   Sep09   0:36 /usr/sbin/apache2 -k start

Você pode ver que o serviço é executado por root e por www-data . O Apache usa o processo root apenas para ligação à porta 80 (ou qualquer porta que você tenha configurado). Lembre-se de que a ligação aos portos < 1024 requer que você seja root.

Por questões de segurança, o Apache transfere todo o processamento de pedidos para processos que são executados como www-data . O que esses processos podem acessar é com você. Se as permissões de seu arquivo na raiz do documento não permitirem que www-data acesse os arquivos, o Apache não poderá veiculá-los.

Este é o mesmo para qualquer serviço; normalmente eles têm

  • Um processo em execução como root (se eles precisarem se vincular a uma porta < 1024; nem todos os serviços têm um processo root , no entanto) que delega tarefas para o usuário com menos privilégios
  • Um processo em execução como um usuário que eles criaram ( bind para BIND, www-data para o Apache, proftpd para proftpd etc.). Tenha em mente que os nomes destes variam por sistema (o Apache às vezes é executado como apache ou apache2 em vez de www-data ).

Alguns processos são executados como nobody em vez de como um usuário específico. Isso pode ser uma má ideia, mas depende do processo e do que está fazendo.

Estas são apenas regras gerais; alguns processos são executados inteiramente como raiz (como sshd , embora ele use um processo do usuário quando alguém se conecta). Use ps aux para ver em qual usuário um processo está sendo executado.

    
por 10.09.2012 / 09:54