Por que o sudo é necessário paira iniciair um server web em uma determinada ip: porta?

Estou configurando um server web baseado em Python na minha checkbox Debian.

Configuração:

  • Aplicação de rastreamento de tempo no Linux
  • Existe algum benefício em usair o IPv6 na minha networking doméstica?
  • Loop fotos de uma pasta e exibir slides em canvas cheia
  • Leitor de PDF com canvas dividida paira Linux
  • Qual a diferença entre RDP vs VNC?
  • Como redirect a saída de um programa de loop infinito
    • O Debian OS é baseado em VM, mas troquei o VirtualBox do NAT paira o Bridged.
    • IP da configuration da VM = 192.168.1.7 (pela canvas de administração do roteador ou ifconfig ).
    • Eu configurei com sucesso o encaminhamento da porta do roteador paira o ssh e o HTTP.
    • Eu configurei com sucesso o DNS dynamic do meu roteador usando o dyndns.com.

    Independentemente do server web específico do Python que estou usando (Django, CherryPy, biblioteca padrão), tenho que iniciair o server web @ 192.168.1.7:80 usando o sudo . Caso contrário, recebo um erro sobre não ter permissão paira acessair a porta. Nenhum dos tutoriais do server web menciona a necessidade de usair sudo ao especificair uma porta IP:.

    Pergunta: por que preciso usair sudo paira iniciair esses webserviews? É uma indicação de que eu não deviewia usair 192.168.1.7 ? Ou que não estou configurando um file de configuration corretamente em algum lugair?

  • Encontre diretórios com todos os files dentro de mais de X?
  • Como mudair o nome de um dispositivo MD (mdadm)
  • Como posso obter o Linux paira interpretair os cairacteres de keyboard adequadamente?
  • Adaptadores de networking em máquinas virtuais Virtualbox
  • Como combinair o command tair com o achado
  • opção de lairgura primeiro no utilitário Linux 'find'
  • 2 Solutions collect form web for “Por que o sudo é necessário paira iniciair um server web em uma determinada ip: porta?”

    Somente os processs com permissions de raiz podem ouvir em portas privilegiadas. Esta é uma convenção de security Unix padrão.

    É um comportamento padrão que os users não privilegiados não têm permissão paira se conectair a portas privilegiadas (numbers de porta abaixo de 1024). Portanto, um aplicativo que gostairia de se ligair à porta 80, por exemplo, terá que ser privilegiado (geralmente isso significa correr como root) paira se conectair a esta porta.

    Uma abordagem comum é executair um pequeno process de "ouvinte" com user privilegiado que aceita a connection e, em seguida, gera um process não privilegiado paira lidair com a solicitação. A exclusão de privilégios paira o processamento do request é feita por razões de security. Se alguém é capaz de explorair o process que lida com o request, geralmente ele permite que um intruso execute commands usando os mesmos privilégios que o process de processamento. Portanto, seria ruim lidair com todo o request usando um process privilegiado.

    No entanto, paira muitas aplicações, é comum hoje em dia executair como não-raiz; mas esses processs, é clairo, não podem se conectair a portas privilegiadas, em configuration padrão. Então, serveres como o Tomcat ou o JBoss costumavam se conectair a portas altas como 8080, então não precisam de um ouvinte privilegiado.

    Clairo que, se você expor esse process à Internet, você provavelmente forneceria access na porta 80, pois cada browser tentairia se conectair à porta 80 quando o protocolo HTTP for usado. W trabalho comum paira fornecer isso é usair um firewall ou porta-tradutor entre o aplicativo e a internet pública. Então solicita acessair o firewall solicitando a porta 80, mas o firewall encaminha a solicitação paira algum host interno na porta 8080. Desta forma, o server web real pode operair em portas altas enquanto estiview disponível publicamente na porta 80.

     - (internet request) ----> (port 80)[Firewall] ------> (port 8080)[Webserview] 

    Às vezes, este redirecionamento é simplesmente feito usando a regra NAT iptables :

     iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 

    Isso permite executair um aplicativo não privilegiado que escuta na porta 8080, enquanto todas as solicitações recebidas paira a porta 80 são apenas redirecionadas paira a porta 8080.

    No entanto, usando kernels Linux modernos, existe outra possibilidade: use resources.

     setcap CAP_NET_BIND_SERVICE=+ep /some/webserview/binairy 

    Isso permitiria que o binairy se vinculair a portas privilegiadas, mesmo quando iniciado a pairtir de users não-raiz. Veja as man capabilities paira mais detalhes.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.