Como daemons gostam de apache ou ligam portas abertas abaixo de 1024?

5

Eu sei que as portas abaixo de 1024 estão protegidas e não podem ser abertas por um usuário sem permissão suficiente.

No entanto, eu estou querendo saber como daemons como bind ou apache podem fazer isso, apesar de não estarem rodando como root.

Então, minha pergunta é a seguinte: como servidores como bind ou apache conseguem abrir portas como 80, 443, etc?

    
por mimipc 02.03.2015 / 16:27

2 respostas

3

O Apache é um exemplo de um daemon que suporta a eliminação de privilégios. O Apache é iniciado como root e se liga às portas como raiz. Depois de ter sido ligado, ele usa a chamada de sistema setuid e setgid para baixar para privilégios menores. O usuário para o qual ele muda é determinado por suas opções de configuração "Usuário" e "Grupo".

    
por 02.03.2015 / 16:36
2

Qualquer aplicativo pode ter um conjunto de recursos raiz usando setcap .
Abrindo o porto abaixo de 1024, se um deles.
Você pode executar o aplicativo como um usuário não raiz e, se os recursos necessários estiverem definidos, não haverá problemas. Leia sobre as possíveis capacidades: link .

Por exemplo, executando o apache-tomcat como não-raiz:
setcap <your needed caps> <java_home>/<java_executable>

Para ver quais limites são definidos para um executável:
getcap /path/to/the/executable

    
por 03.03.2015 / 12:18