Я хочу разрешить обычному пользователю создавать 161 порт. Одним из способов является:

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

Но этот способ мне не подходит, потому что setcap нарушает 'RPATH', поэтому я не могу запустить 'my_program'.

Может быть, есть ли способ решить проблему. Можно ли дать эту привилегию пользователям аля?

1 ответ1

1

Похоже, что вы хотите, это authbind. Я связал здесь страницу Википедии, а не домашнюю страницу, так как домашняя страница является просто страницей gitweb для официального репозитория и, следовательно, является бесполезной для конечных пользователей. Короче говоря, authbind использует LD_PRELOAD для косвенного вызова bind() через вспомогательную программу SUID, что позволяет программам связывать зарезервированные порты. Убедитесь, что вы ограничиваете доступ к authbind для учетных записей, которым доверяете, и имейте в виду, что это позволит любому пользователю, который может получить к нему доступ, связываться с любым привилегированным портом.

В качестве альтернативы, если вас совсем не волнует безопасность, вы можете добавить эту строку в вашу конфигурацию sysctl в рассматриваемой системе:

net.ipv4.ip_unpriveleged_port_start = 0

Это удалит всю концепцию привилегированных портов из системы, начиная со следующей перезагрузки.

Убедитесь, что вы делаете это очень осторожно. Многие порты с низким номером используются для базовой сетевой инфраструктуры, и доступ к ним непривилегированных пользователей - это простой способ допустить злоупотребления. Особенно будьте осторожны, если вы используете метод sysctl, так как это позволит любому подключаться к любому порту.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .