Задать вопрос
khusamov
@khusamov
ReactJS, NodeJS, TypeScript, Sencha ExtJS

Как дать пользователю в Линуксе доступ к порту 80?

Программу, которая пытается занять порт 80 (например apache), запустить можно от root.
А вот запустить от иного пользователя не получается. Ошибка нет привилегий на эту операцию.
Как дать доступ пользователю к этим привилегиям?

Команду sudo не предлагать, так как мне нужно избавиться от необходимости вводить какие-либо пароли.
  • Вопрос задан
  • 1886 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
miraage
@miraage
Старый прогер
➜  ~ sudo cat /etc/sudoers | grep miraage
miraage ALL=(ALL) NOPASSWD: ALL


Сделайте то же самое в своем файле, разве что имя пользователя своё подставьте.
Ответ написан
kulinich
@kulinich
С++ программист
Порты < 1024 могут открываться только под рутом вроде.
Здесь подробнее (приведен пример перенаправления с 80 на 8080 порт).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
Использовать sudo с настройкой запуска без пароля.
Ответ написан
Mystray
@Mystray
NOC
Ну гуглится же ответ.
setcap 'cap_net_bind_service=+ep' /path/to/program

Now for the caveats:

  • You will need at least a 2.6.24 kernel
  • This won't work if your file is a script. (ie, uses a #! line to launch an interpreter). In this case, as far I as understand, you'd have to apply the capability to the interpreter executable itself, which of course is a security nightmare, since any program using that interpreter will have the capability. I wasn't able to find any clean, easy way to work around this problem.
  • Linux will disable LD_LIBRARY_PATH on any program that has elevated privileges like setcap or suid. So if your program uses its own .../lib/, you might have to look into another option like port forwarding.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы