¿Cómo puedo iniciar Python SimpleHTTPServer en el puerto 80?

96

Estoy usando este comando en Ubuntu pero está comenzando en el puerto 8080 y no tengo otro servidor ejecutándose, así que me gustaría que comenzara en el puerto 80. Vi formas en que podría configurar un script bash para hacer algo como esto, pero ¿no hay un indicador de línea de comando o algo más simple para especificar el puerto?

python -m SimpleHTTPServer
cwd
fuente
3
¿Estás corriendo como root? No puede escuchar en un puerto <1024 a menos que tenga privilegios de root, y lo desaconsejaría encarecidamente.
Nathan Osman el

Respuestas:

163

sudo python -m SimpleHTTPServer 80

para la versión python 3.x , puede necesitar:

sudo python -m http.server 80

Los puertos inferiores a 1024 requieren privilegios de root.

Como George agregó en un comentario, ejecutar este comando como root no es una buena idea, ya que abre todo tipo de vulnerabilidades de seguridad.

Sin embargo, responde la pregunta.

jrg
fuente
66
También podría agregar que ejecutar este comando como root no es una buena idea, ya que abre todo tipo de vulnerabilidades de seguridad.
Nathan Osman el
2
@cwd :) Los números de puerto TCP / IP inferiores a 1024 son especiales porque los usuarios normales no pueden ejecutar servidores en ellos. Esta es una característica de seguridad, ya que si se conecta a un servicio en uno de estos puertos, puede estar bastante seguro de que tiene la cosa real, y no una falsificación que algún pirata informático ha preparado para usted.
jrg
44
@cwd Si desea ejecutar el servidor en un puerto <1024, use iptables para enrutar las conexiones entrantes a un puerto ≥1024. Para probar, haga algo como sudo nc -l 80( netcat ). Y vea ¿Por qué los primeros 1024 puertos están restringidos solo al usuario raíz?
Gilles
1
@jrg Un puerto <1024 solo importa si confía en el administrador del sistema en el servidor pero no en otros usuarios. Hoy en día es casi sin usuarios fuera de algunas redes locales: la mayoría de los servidores no son máquinas multiusuario.
Gilles
3
Esta es una pregunta relacionada sobre cómo quitar privilegios una vez que haya abierto el puerto 80.
jcollado
2

Haz algo como:

python -SimpleHTTPServer 50505

¿Dónde 50505está el número de puerto?

Akash Yellappa
fuente