De vez em quando, procurarei como fazer permissões no nível do usuário para acesso à porta de rede no Linux e me tornarei um tanto seco. Por exemplo, se você tem uma máquina que executa um processo crítico que escuta na porta 5080, acho que deve haver uma maneira de conceder a apenas um conjunto específico de usuários confiáveis acesso a essa porta - assim como qualquer outro processo de permissões sãs é feito, como permissões do sistema de arquivos.
Mas parece que portas altas estão disponíveis para todos os usuários, e portas baixas estão disponíveis apenas para o root, com apenas hacks brutos como authbind e encaminhamento com iptables para permitir que outros usuários usem portas baixas. Parece uma situação muito estranha, então eu estou me perguntando, por que foi projetado dessa maneira e por que as pessoas não sentiram a necessidade de mudar essa situação?
Inicialmente, eu acho, porque exigiria um design complexo que estivesse fora de linha com o escopo dos primeiros sistemas Unix.
Mais tarde, acho, porque havia uma maneira estabelecida de implementar permissões de porta de rede no nível do usuário para casos comuns: inetd , que apareceu alguns anos depois do TCP / IP ( 4.3BSD ) ( 4.2BSD ). O
inetd
daemon é executado como root e escuta as portas especificadas em seu arquivo de configuração. Em uma conexão de entrada,inetd
gera outro programa especificado em seu arquivo de configuração e é executado como um usuário também especificado no arquivo de configuração inetd. Portanto, pelo menos para os serviços em que é aceitável iniciar um novo processo em cada conexão, o problema está resolvido.fonte
Eu acho que um dos motivos é que a maioria dos usuários precisa usar portas efêmeras para se conectar a outros servidores, sem necessariamente ser root.
fonte