Comment puis-je démarrer SimpleHTTPServer python sur le port 80?

96

J'utilise cette commande sur Ubuntu, mais elle commence sur le port 8080 et je n'ai pas d'autre serveur en cours d'exécution. J'aimerais donc le démarrer sur le port 80. J'ai vu comment vous pouvez configurer un script bash pour faire quelque chose comme: ceci, mais n’y at-il pas un indicateur de ligne de commande ou quelque chose de plus simple pour spécifier le port?

python -m SimpleHTTPServer
cwd
la source
3
Êtes-vous en cours d'exécution en tant que root? Vous ne pouvez pas écouter sur un port <1024 si vous ne disposez pas des privilèges root - et je vous le déconseille vivement.
Nathan Osman

Réponses:

163

sudo python -m SimpleHTTPServer 80

pour la version 3.x de python , vous aurez peut-être besoin de:

sudo python -m http.server 80

Les ports inférieurs à 1024 nécessitent des privilèges root.

Comme l'a ajouté George dans un commentaire, exécuter cette commande en tant que root n'est pas une bonne idée - cela ouvre toutes sortes de failles de sécurité.

Cependant, cela répond à la question.

Jrg
la source
6
J'ajouterai peut-être qu'exécuter cette commande en tant que root n'est pas une bonne idée - cela ouvre toutes sortes de failles de sécurité.
Nathan Osman
2
@cwd :) Les numéros de port TCP / IP inférieurs à 1024 ont ceci de particulier que les utilisateurs normaux ne sont pas autorisés à y exécuter des serveurs. C’est un problème de sécurité, car si vous vous connectez à un service sur l’un de ces ports, vous pouvez être à peu près sûr que vous avez la vraie chose, et non un faux qu'un pirate informatique a mis en place pour vous.
Jrg
4
@cwd Si vous souhaitez exécuter le serveur sur un port <1024, utilisez iptables pour router les connexions entrantes vers un port ≥ 1024. Pour tester, faites quelque chose comme sudo nc -l 80( netcat ). Et voir Pourquoi les premiers 1024 ports sont-ils limités à l'utilisateur root?
Gilles
1
@jrg Un port <1024 ne compte que si vous faites confiance à l'administrateur système sur le serveur mais pas aux autres utilisateurs. De nos jours, il est presque sans utilisateur en dehors de quelques réseaux locaux: la plupart des serveurs ne sont pas des ordinateurs multi-utilisateurs.
Gilles
3
Ceci est une question liée au sujet de la suppression des privilèges une fois que vous avez ouvert le port 80.
jcollado
2

Faites quelque chose comme:

python -SimpleHTTPServer 50505

50505est le numéro de port.

Akash Yellappa
la source