Hallo Andreas,
On Tue, Jun 13, 2023 at 15:29:02 +0200, Andreas Roth wrote:
[systemd-Unit non-root mit Capabilities]
Wenn ich eine ältere Version (8.2.*) der Software installiere sind die Werte:
NoNewPrivileges=yes AmbientCapabilities=CAP_DAC_READ_SEARCH
per default nicht gesetzt. Wenn ich sie hinzufüge, ein systemctl daemon-reload ausführe kann die Software nicht auf Dateien zugreifen, auf welche der Technische Nutzer Leseberechtigung hat.
Das verwundert mich. Ich habe geprüft ob die capabilites wirklich beim Dienst ankommen - sieht erstmal gut aus:
[...]
[root@ip-10-53-1-118 local]# getpcaps 3527 3527: cap_dac_read_search=eip
Mit getpcaps kannst Du nicht sehen, ob die Capabilities auch im Ambient-Set gesetzt sind. Besser direkt in /proc greppen:
# grep Cap /proc/PID/status
Das folgende Minimalbeispiel hat bei mir in einem Debian 11 Livesystem funktioniert:
# Put this in /etc/systemd/system/ # telnetd is actually busybox telnetd: # CONFIG_TELNETD=y # CONFIG_FEATURE_TELNETD_STANDALONE=y # Shell provided by telnet login runs as unprivileged user but has # CAP_DAC_READ_SEARCH, thus it can read any file/dir. # After login, run # $ grep Cap /proc/$$/status # to verify CAP_DAC_READ_SEARCH is allowed in ambient set. [Unit] Description=telnetd
[Service] User=user Group=user NoNewPrivileges=yes AmbientCapabilities=CAP_DAC_READ_SEARCH ExecStart=/usr/local/bin/telnetd -F -p 3333 -l /bin/bash
[Install] WantedBy=multi-user.target
Gruss, Christian