Как я могу запустить Python SimpleHTTPServer на порт 80?

96

Я использую эту команду в Ubuntu, но она запускается на порте 8080, и у меня нет другого запущенного сервера, поэтому я бы хотел, чтобы он запускался на порте 80. Я видел способы, которыми вы могли бы настроить скрипт bash, чтобы сделать что-то вроде это, но разве нет флага командной строки или чего-то более простого для указания порта?

python -m SimpleHTTPServer
УХО
источник
3
Вы работаете от имени root? Вы не можете прослушивать порт <1024, если у вас нет привилегий root - и я бы настоятельно не рекомендовал это делать.
Натан Осман

Ответы:

163

sudo python -m SimpleHTTPServer 80

для версии Python 3.x вам может понадобиться:

sudo python -m http.server 80

Порты ниже 1024 требуют привилегий суперпользователя.

Как добавил Джордж в комментарии, запуск этой команды от имени пользователя root не очень хорошая идея - она открывает все виды уязвимостей безопасности.

Тем не менее, это отвечает на вопрос.

JRG
источник
6
Я мог бы также добавить, что запуск этой команды от имени пользователя root не является хорошей идеей - она ​​открывает все виды уязвимостей безопасности.
Натан Осман
2
@cwd :) Номера портов TCP / IP ниже 1024 отличаются тем, что обычные пользователи не могут запускать на них серверы. Это особенность безопасности: если вы подключаетесь к сервису на одном из этих портов, вы можете быть уверены, что у вас есть реальная вещь, а не подделка, которую выложил какой-то хакер.
JRG
4
@cwd Если вы хотите запустить сервер на порту <1024, используйте iptables для маршрутизации входящих соединений на порт ≥1024. Для тестирования сделайте что-то вроде sudo nc -l 80( netcat ). И посмотрите, почему первые 1024 порта ограничены только пользователем root?
Жиль
1
@jrg Порт <1024 имеет значение, только если вы доверяете системному администратору на сервере, а не другим пользователям. В настоящее время практически нет пользователей вне нескольких локальных сетей: большинство серверов не являются многопользовательскими компьютерами.
Жиль
3
Это связанный вопрос о том, как отбросить привилегии после того, как вы открыли порт 80.
jcollado
2

Сделать что-то вроде:

python -SimpleHTTPServer 50505

Где 50505номер порта.

Акаш Йеллаппа
источник