Ответ 1
Я решил эту проблему, используя команду sudo +, начиная с вашего сервера.
В настоящее время я работаю над проектом по созданию сервера TCP на mac os mountain lion. Я написал script под названием: Server.py
Внутри этого python script я использовал скрученный, чтобы прослушивать порт 80, как показано ниже:
reactor.listenTCP(80, factory)
reactor.run()
Как бы то ни было, я получаю ошибки как таковые:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/posixbase.py", line 436, in listenTCP
p.startListening()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/tcp.py", line 641, in startListening
raise CannotListenError, (self.interface, self.port, le)
twisted.internet.error.CannotListenError: Couldn't listen on any:80: [Errno 13] Permission denied.
Я думаю, это потому, что у tcp.py script есть неправильное разрешение для пользователя admin? или есть способ установить разрешение на порт < 1024? (Чтобы изменить разрешение, как это повлияет на безопасность такого сервера?)
Любые более эффективные решения будут apprieciated.
Я решил эту проблему, используя команду sudo +, начиная с вашего сервера.
Просто зайдите на терминал и введите sudo python server.py. Теперь он будет запрашивать пароль, введите пароль. Ваша проблема будет решена. Счастливое кодирование
Похоже, ты на правильном пути. По соглашению, только суперпользователю (или в некоторых более новых системах, нормальному пользователю, которому были предоставлены определенные специальные полномочия) разрешено связываться с портами ниже 1024.
Инструмент authbind
- это удобный способ предоставить эту привилегию не-суперпользователям. Кажется, есть порт OS X, https://github.com/Castaglia/MacOSX-authbind (хотя я всегда использовал authbind в Linux, сам).
Другой подход заключается в том, чтобы launchdb bind порт для вас и передать его в вашу программу Twisted. Этот подход более типичен для того, что вы можете найти в OS X, и выполняется с использованием (недавно представленного) API IReactorSocket.adoptStreamPort
. Подробную информацию о том, как настроить это и как ваша программа Twisted узнает, где сокет должен принять, см. В документации для запуска.
Возможно, ваш tcp46 использует ваш 80. ВЫКЛЮЧИТЕ ВАШ АПАЧ, ВСЕ БУДЕТ БЫТЬ УБЫТКОЙ.
sudo apachectl stop