Как я изменяю полномочия на сокет?

Я пытаюсь выполнить простой основанный на Python веб-сервер, данный сюда.

И я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File "webserver.py", line 63, in 
    main()
  File "webserver.py", line 55, in main
    server = HTTPServer(('', 80), MyHandler)
  File "/usr/lib/python2.5/SocketServer.py", line 330, in __init__
    self.server_bind()
  File "/usr/lib/python2.5/BaseHTTPServer.py", line 101, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python2.5/SocketServer.py", line 341, in server_bind
    self.socket.bind(self.server_address)
  File "", line 1, in bind
socket.error: (13, 'Permission denied')

Насколько я понимаю, что мой брандмауэр блокирует доступ к сокету?Я прав? Если имеет место, как я могу изменить полномочия? Действительно ли опасно изменить эти полномочия?

6
задан Roman 23 February 2010 в 22:48
поделиться

2 ответа

Если вы хотите работать на порту меньше 1024, вам нужно быть root. Вы можете открыть сокет и отказаться от прав root для остальной части вашей программы, переключившись на другого пользователя.

В большинстве случаев проще запустить настоящий веб-сервер (например, nginx) на порту 80 и передавать запросы вашей программе, которую вы можете запустить на порту с большим номером (например, 8080). Таким образом, вам не нужно беспокоиться о том, что вы что-то испортите в то время, когда ваш процесс работает от имени root, поскольку он никогда не работает от имени root.

Если это просто для тестирования, запустите сервер на порту 8080 и подключитесь по адресу http://localhost:8080/

2
ответ дан 8 December 2019 в 18:35
поделиться

Если вы хотите выполнить привязку к портам с номерами <1024, вы должны быть пользователем root. Это не проблема брандмауэра ; это обеспечивается операционной системой. Вот ссылка на w3.org , и раздел часто задаваемых вопросов , относящийся к Unix.

11
ответ дан 8 December 2019 в 18:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: