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 processoroot
, 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 comoapache
ouapache2
em vez dewww-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.