Jak mogę uruchomić Pythona SimpleHTTPServer na porcie 80?

96

Używam tego polecenia w systemie Ubuntu, ale zaczyna się ono na porcie 8080 i nie mam innego serwera, więc chciałbym, aby uruchomił się na porcie 80. Widziałem sposoby, w których można skonfigurować skrypt bash, aby zrobić coś takiego to, ale czy nie ma flagi wiersza polecenia lub czegoś prostszego do określenia portu?

python -m SimpleHTTPServer
cwd
źródło
3
Czy działasz jako root? Nie możesz nasłuchiwać na porcie <1024, chyba że masz uprawnienia roota - zdecydowanie odradzam to.
Nathan Osman

Odpowiedzi:

163

sudo python -m SimpleHTTPServer 80

w przypadku wersji Python 3.x może być potrzebne:

sudo python -m http.server 80

Porty poniżej 1024 wymagają uprawnień roota.

Jak dodał George w komentarzu, uruchomienie tego polecenia jako root nie jest dobrym pomysłem - otwiera on wszystkie luki w zabezpieczeniach.

Odpowiada jednak na pytanie.

jrg
źródło
6
Mógłbym również dodać, że uruchomienie tego polecenia jako root nie jest dobrym pomysłem - otwiera on wszelkiego rodzaju luki w zabezpieczeniach.
Nathan Osman
2
@cwd :) Numery portów TCP / IP poniżej 1024 są wyjątkowe, ponieważ normalni użytkownicy nie mogą na nich uruchamiać serwerów. Jest to zabezpieczenie, ponieważ jeśli łączysz się z usługą na jednym z tych portów, możesz być całkiem pewien, że masz prawdziwą rzecz, a nie podróbkę, którą wymyślił dla ciebie jakiś haker.
jrg
4
@cwd Jeśli chcesz uruchomić serwer na porcie <1024, użyj iptables do kierowania połączeń przychodzących do portu ≥1024. Do testowania zrób coś takiego jak sudo nc -l 80( netcat ). I zobacz Dlaczego pierwsze 1024 porty są ograniczone tylko do użytkownika root?
Gilles
1
@jrg Port <1024 ma znaczenie tylko wtedy, gdy ufasz sysadmin na serwerze, ale nie innym użytkownikom. Obecnie jest prawie bezużyteczny poza kilkoma sieciami lokalnymi: większość serwerów nie jest maszynami dla wielu użytkowników.
Gilles
3
To jest powiązane pytanie dotyczące tego, jak zrzucić uprawnienia po otwarciu portu 80.
jcollado
2

Zrób coś takiego:

python -SimpleHTTPServer 50505

Gdzie 50505jest numer portu?

Akash Yellappa
źródło