Como posso iniciar o python SimpleHTTPServer na porta 80?

96

Estou usando esse comando no Ubuntu, mas ele está iniciando na porta 8080 e não tenho outro servidor em execução, então gostaria que iniciasse na porta 80. Vi maneiras de configurar um script bash para fazer algo como isso, mas não há um sinalizador de linha de comando ou algo mais simples para especificar a porta?

python -m SimpleHTTPServer
cwd
fonte
3
Você está executando como root? Você não pode escutar em uma porta <1024, a menos que tenha privilégios de root - e eu recomendo fortemente isso.
Nathan Osman

Respostas:

163

sudo python -m SimpleHTTPServer 80

para a versão python 3.x , pode ser necessário:

sudo python -m http.server 80

Portas abaixo de 1024 requerem privilégios de root.

Como George adicionou em um comentário, executar este comando como root não é uma boa ideia - ele abre todos os tipos de vulnerabilidades de segurança.

No entanto, responde à pergunta.

jrg
fonte
6
Também devo acrescentar que executar este comando como root não é uma boa ideia - ele abre todos os tipos de vulnerabilidades de segurança.
Nathan Osman
2
@cwd :) Os números de porta TCP / IP abaixo de 1024 são especiais, pois os usuários normais não têm permissão para executar servidores neles. Esse é um recurso de segurança, pois se você se conectar a um serviço em uma dessas portas, poderá ter certeza de que possui a coisa real, e não uma farsa que algum hacker criou para você.
Jrg
4
@cwd Se você deseja executar o servidor em uma porta <1024, use iptables para rotear as conexões de entrada para uma porta ≥ 1024. Para testar, faça algo como sudo nc -l 80( netcat ). E consulte Por que as primeiras portas 1024 são restritas apenas ao usuário root?
Gilles
1
@jrg Uma porta <1024 só importa se você confia no sysadmin no servidor, mas não em outros usuários. Atualmente, é quase sem usuário fora de algumas redes locais: a maioria dos servidores não são máquinas multiusuário.
Gilles
3
Esta é uma relacionada pergunta sobre como descartar privilégios uma vez que você abriu a porta 80.
jcollado
2

Faça algo como:

python -SimpleHTTPServer 50505

Onde 50505está o número da porta.

Akash Yellappa
fonte