Чи існують способи, що дозволяють створити привілейований порт?


0

Я хочу дозволити звичайному користувачеві створити 161 порт. Одним із способів є:

setcap 'cap_net_bind_service=+ep' /home/user/bin/my_program

Але цей шлях для мене недоречний, тому що setcap порушує 'RPATH', тому я не можу запустити 'my_program'.

Можливо, є спосіб вирішення проблеми. Чи можна надати цей привілей користувачам ala?

Відповіді:


1

Це звучить як те, що ви хочете authbind . Сторінку Вікіпедії я посилав тут, а не на домашню сторінку, оскільки головна сторінка - це лише сторінка gitweb для офіційного сховища, і тому вона є непотрібною для кінцевих користувачів. Коротше кажучи, authbind використовує LD_PRELOAD для непрямого bind() виклик через допоміжну програму SUID, що дозволяє програмам зв'язувати зарезервовані порти. Переконайтеся, що ви обмежуєте доступ до авторизації до облікових записів, яким ви довіряєте, і майте на увазі, що це дозволить будь-якому користувачеві, який має доступ до нього, прив'язати до будь-який привілейований порт.

В іншому випадку, якщо ви не дбаєте про безпеку, ви можете додати цей рядок до конфігурації sysctl у цій системі:

net.ipv4.ip_unpriveleged_port_start = 0

Це призведе до видалення всієї концепції привілейованих портів з системи, починаючи з наступного перезавантаження.

Однак переконайтеся, що ви надзвичайно обережні. Багато портів з низькими номерами використовуються для інфраструктури базових мереж, і доступ до них непривілейованими користувачами є простим способом дозволу на зловживання. Особливо будьте обережні, якщо ви йдете з методом sysctl, як це дозволить нікому для прив'язки будь-який порт.


Примітка: net.ipv4.ip_unpriveleged_port_start є відносно новий - ядра 4.11+ або щось.
Kamil Maciorowski

@KamilMaciorowski Хороший пункт, я забув про цей факт.
Austin Hemmelgarn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.