Как известно все ядра компилируют так, чтобы не-root не мог забиндится на порт 1-1023. Можно конечно пересобрать ядро и поменять эту настройку до компиляции, но поменять этот параметр на готовой работающей системе нельзя.
Есть еще вариант забиндить на непривилегированный порт, а привилегированный туда соединить либо через rinetd, либо через iptables такой командой:
Но зачастую это не подходит, особенно когда TCP-демон возвращает свой URI для работы, а не тот, за которым маскируется.
Неподходят также и варианты запуска через sudo, так как нам не нужен демон, запущенный от рута по причинам безопасности.
Единственные три варианта, это
либо использовать возможность setcap/getcap в новых ядрах:
либо запускать через authbind:
либо воспользоваться посредником supervisor:
***************
***************
Есть еще вариант забиндить на непривилегированный порт, а привилегированный туда соединить либо через rinetd, либо через iptables такой командой:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
Но зачастую это не подходит, особенно когда TCP-демон возвращает свой URI для работы, а не тот, за которым маскируется.
Неподходят также и варианты запуска через sudo, так как нам не нужен демон, запущенный от рута по причинам безопасности.
Единственные три варианта, это
либо использовать возможность setcap/getcap в новых ядрах:
apt-get install libcap2-bin
setcap 'cap_net_bind_service=+ep' /path/to/daemon
запуск:
/path/to/daemon
либо запускать через authbind:
apt-get install authbind
install -o my_user -m 500 /dev/null /etc/authbind/byport/443
запуск:
authbind /path/to/daemon
либо воспользоваться посредником supervisor:
apt-get install supervisor
и отконфигурировать его так.
***************
вообще команда install не особо популярна, но я ее написал, чтобы сократить количество команд. Если не понимаете, что она делает, то просто сделайте так:
touch /etc/authbind/byport/443
chown my_user /etc/authbind/byport/443
chmod 500 /etc/authbind/byport/443 ***************
Комментариев нет:
Отправить комментарий