Закройся
По всем интересующим вас вопросам вы можете связаться с нами:
администратор
Василий Марнопольский (sEpt0r)
мыло: [email protected]
тел: +7-910-611-69-88
аська: 252-371-321
IMG_0128
менеджер
Михаил Ванишев (Oxi Action)
мыло: [email protected]
тел: +7-915-593-94-01
x_1058b383
e-mail для материалов, новостей и любой интересной информации < [email protected] >
Мы ответим на любые ваши вопросы и предложения.
Контакты

В Linux обычный пользователь не может слушать порты ниже 1024, это можно сделать только от пользователя root. Бывают разные ситуации, вот и мне понадобилось дать возможность пользователю слушать порт ниже 1024.

Сделать это можно такой командой:

setcap 'cap_net_bind_service=+ep' /path/to/program

Подробнее

Примеры:

setcap 'cap_net_bind_service=+ep' /usr/bin/php5
setcap 'cap_net_bind_service=+ep' /bin/nc.openbsd

После этого можно запускать программу и слушать нужный порт:

php -S localhost:80 -t ~/myproject
запускает web сервер на порту 80 и ставит rootdirectory ~/myproject

nc -l 80
слушает порт 80 и выводит в консоль всё что приходит на этот порт

 

Конкретно в моём случае, понадобилось дать возможность PhpStorm запустить php на 80-м порту для отладки приложения из под обычного пользователя.

setcap не самый лучший способ т.к. у него есть некоторые ограничения:

  1. ядро должно быть не ниже 2.6.24
  2. не будет работать если файл является скриптом (bash, perl, php и т.д.) или ссылкой (ln -s)
  3. так же setcap отключает LD_LIBRARY_PATH. Если программа использует библиотеки ( .../lib ) то они не подключатся

Что бы обойти эти ограничения, можно попробовать воспользоваться перенаправлением портов вместо setcap

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080


но это уже другая история...


Добавить комментарий

Чтобы не вводить имя, мыло, капчу и т.д., войдите или зарегистрируйтесь, и просто комментируйте.


Velocity
2 июня 19:00 пл.Театральная

Погода в рязани

Погода в Рязани

Последние коменты