Назад | Перейти на главную страницу

Какое разрешение необходимо для открытия сокета TCP-сервера в Linux?

Я хочу запустить сервер websocket, но не могу подключиться к нему с других машин. Только когда я запускаю сервер websocket с правами root, он работает. Так что, похоже, это проблема с разрешением.

Какие разрешения нужны моему пользователю, чтобы открыть сокет?

Обычно для открытия портов ниже 1024 требуется root-доступ, который охватывает большинство известных сервисов, таких как web (80), ssh (22), ftp (21) и т. Д.

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

Есть и другие способы обхода, например использование CAP_NET_BIND_SERVICE, это описано более подробно в этом ответе, из которых сводится,

Короткий ответ: вы делаете:

setcap 'cap_net_bind_service=+ep' /path/to/program

И тогда, когда программа будет выполнена после этого, она будет иметь CAP_NET_BIND_SERVICE возможности. setcap находится в пакете debian libcap2-bin.