Embora o POSIX possua um padrão para recursos que, acredito, inclua CAP_NET_BIND_SERVICE, eles não são necessários para conformidade e pode de certa forma ser incompatível com a implementação, por exemplo, no linux.
Como os servidores web como o apache não são escritos para apenas uma plataforma, o uso de privilégios de root é o método mais portátil. Eu suponho que isso poderia ser feito especificamente no Linux e no BSD (ou onde quer que o suporte seja detectado), mas isso significaria que o comportamento variaria de plataforma para plataforma, etc.
Parece-me que você poderia configurar seu sistema para que qualquer servidor web pudesse ser usado dessa maneira; há algumas sugestões (talvez desajeitadas) sobre esse apache do WRT aqui: NonRootPortBinding .
So why are they traditionally being started as root when afterwards everything is done to get rid of implied security issues that come with it?
Eles são iniciados como root porque geralmente precisam acessar uma porta privilegiada, e tradicionalmente essa é a única maneira de fazer isso. A razão pela qual eles fazem o downgrade depois é porque não precisam de privilégios posteriormente e para limitar o potencial de dano introduzido pela miríade de software complementar de terceiros comumente usado pelo servidor.
Isso não é irracional, já que a atividade privilegiada é muito limitada e, por convenção, muitos outros daemons do sistema executam raiz continuamente, incluindo outros daemons inet (por exemplo, sshd
).
Lembre-se de que se o servidor fosse empacotado para que pudesse ser executado como um usuário não privilegiado com CAP_NET_BIND_SERVICE, isso permitiria que qualquer usuário não privilegiado iniciasse o serviço HTTP (S), que é talvez um risco maior.