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
-- 
Christian Perle                                    chris AT linuxinfotag.de
010111                                              http://chris.silmor.de/
101010                          LinuxGuitarKitesBicyclesBeerPizzaRaytracing

Antwort per Email an