Иногда программа запускается без root, но всё равно умеет открывать
raw sockets, bind low ports или менять network stack. Обычно причина заключается в Linux capabilities.Посмотреть
capability бинарника:getcap /usr/bin/ping
Часто увидишь что-то вроде:
cap_net_raw=ep
Это значит, что бинарник может работать с
raw sockets без полного root-доступа.Проверить
capabilities всех бинарников в системе:sudo getcap -r / 2>/dev/null
Так можно быстро найти потенциально опасные или нестандартные разрешения.
Выдать
capability бинарнику:sudo setcap cap_net_bind_service=+ep ./app
Теперь приложение сможет слушать порты ниже 1024 без root.
Например, запускать HTTP сервер сразу на 80:
./app
Удалить
capability:sudo setcap -r ./app
Посмотреть
capabilities процесса:grep Cap /proc/1234/status
🔥 Linux
capabilities позволяют выдавать процессам точечные привилегии без полного root-доступа.🚪 Linux Ready | #практика