Hacker News new | past | comments | ask | show | jobs | submit login

You can use cap_net_bind_service to bind ports <1024. You can listen on >1024 and redirect in iptables, or even with a trivial TCP proxy.

There are options on pretty much any system, but certainly on Linux with capabilities. None of these require direct support from the application (dropping root after binding does).

You almost never need to run anything as root, especially not with these "run 6 different types of services in a box" type of appliances.

None of this is new; this was already widely considered best practice when I was starting out 25 years ago.




> There are options on pretty much any system, but certainly on Linux with capabilities.

If you're using systemd, you can grant the appropriate capability to the process by setting:

    [Service]
    AmbientCapabilities=CAP_NET_BIND_SERVICE
in its service file. Note that this will necessarily allow the process to listen to any port; there is, unfortunately, currently no way to lock it down to a single port.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: