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

Как разрешить пользователю без полномочий root прослушивать привилегированный порт?

Я хочу, чтобы syslog запускался на моем Linux-сервере как пользователь без полномочий root. Это делает невозможным его привязку к порту 514, потому что это привилегированный порт. Есть ли способ предоставить пользователю "foo", не являющемуся администратором, возможность прослушивания порта 514?

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

Требуется не-древнее ядро ​​linux (2.6.24 или позже)

Вы можете настроить rinetd (доступен в большинстве, если не во всех, стандартных репозиториях дистрибутива) для прослушивания порта 514 и пересылки соединений на какой-либо другой порт (выше 1024, скажем, 1514). Таким образом, непривилегированный пользовательский процесс может прослушивать 1514 и rinetd будет перенаправлять соединения, так что кажется, что он прослушивает 514.

Однако это будет работать только для TCP-соединений. Если вам нужно поддерживать UDP (или что-то еще) таким же образом, а также или вместо TCP, вы можете использовать правила трансляции iptables для достижения того же эффекта.

Только что нашел здесь очень хорошее обсуждение: https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-li

Не выглядит легко

Слушайте непривилегированный порт и используйте iptables dnat для перенаправления соединений.