Manchmal möchte man einem Prozess oder Tool, welches nicht als root Benutzer läuft, erlauben einen Port unterhalb von 1024 zu nutzen.
Ein Beispiel dafür findet sich in dem Techgoat-Artikel zu Caddy, wo dem Webserver Caddy mithilfe des Befehls sudo setcap cap_net_bind_service=+ep $(which caddy)
gestattet wurde den Port 80 bzw. 443 zu öffnen ohne als root Benutzer gestartet worden zu sein.
Dieser Schritt mit der Freigabe kann auch direkt in der entsprechenden Systemd .service
Datei hinterlegt werden.
Systemd-Service Datei bearbeiten
Grundsätzlich lässt sich ein servive-Script von Systemd mit systemctl edit <servicename>.service
bearbeiten.
Hierbei wird ein drop-in script erzeugt, welche unter /etc/systemd/system/<servicename>.service.d/override.conf
zu finden ist und die entsprechende .service-Datei erweitert.
Mit der Option --full
kann man auch direkt die entsprechende .service-Datei bearbeiten.
Um nun einem unprivilegierten Prozess zu erlauben einen Port unter 1024 zu verwenden fügt man folgende Zeile(n) in das entsprechende .service-Script ein:
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
Anmerkung: Dies funktioniert allerdings erst ab systemd v229 oder später