2012-03-22 2 views
1

У меня есть приложение Java, работающее как не root-режим.Связывание порта <1024 для пользователя без root в Java

Мое приложение создаст TFTP-сервер (используя apache commons tftp). TFTP-сервер привязывается к порту 69 (порт TFTP по умолчанию). При запуске приложения из IDE все работает отлично, так как IDE работает от root. Но если приложение запускается из другого пользователя я получаю ошибку

java.net.BindException: Permission denied 

Очевидно, что Для не суперпользователя я не могу открыть порт. Есть ли обходной путь для этой проблемы?

С уважением
Dheeraj Joshi

+1

Я думаю, что это невозможно. Я также много пробовал для этого, но я не мог этого сделать. –

+0

Ох. Мне нужно, чтобы порт 69, поскольку приложение стороннего будет отправлять файл в порт 69 :( –

+3

Java здесь не имеет значения, это гораздо более широкая проблема. См. Http://stackoverflow.com/questions/413807/is-there- а-путь-к-некорень-процессы-к-Bind-к-привилегированные порты-1024-на-л – skaffman

ответ

4

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

BTW - Запуск IDE с правами root - не очень хорошая идея.

2

Для решения этой проблемы. Вы можете использовать системные вызовы setuid() и setfid(). Чтобы вы могли временно повысить права доступа, а затем отбросить разрешение на разрешения пользователя.

Смежные вопросы