blob: c148aee16373893e9df3a181b427a1d15ff282b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
[Unit]
Description=Maly Music Daemon
StartLimitIntervalSec=30
StartLimitBurst=3
[Service]
Type=simple
ExecStart=/usr/bin/maly daemon
Restart=on-failure
RestartSec=2
# Hardening: maly solo habla por sockets Unix (su propio IPC, el de mpv, y
# D-Bus de sesión para MPRIS) y no necesita nada más. SIN ProtectHome:
# music_dir puede vivir fuera de $HOME (un disco externo). Mismo hardening
# que mallow-install.sh, solo cambia ExecStart (acá va a /usr/bin).
#
# RuntimeDirectory=/ConfigurationDirectory= (no ReadWritePaths a mano para
# estos dos) son la forma correcta de darle acceso a $XDG_RUNTIME_DIR/maly
# y $XDG_CONFIG_HOME/maly bajo ProtectSystem=strict: systemd las CREA antes
# de arrancar el proceso y quedan exceptuadas del resto solo lectura solas.
# La primera versión de este hardening usaba ReadWritePaths=%t/maly a mano,
# que EXIGE que la ruta ya exista al armar el namespace — rompía en un boot
# limpio, con /run/user/$UID/maly recién vacío todavía (status=226/NAMESPACE,
# encontrado en producción).
#
# $XDG_DATA_HOME (biblioteca/sesión) no tiene una directiva de systemd
# dedicada (solo cubre RUNTIME/CONFIGURATION/STATE/CACHE, y STATE apunta a
# $XDG_STATE_HOME, no a $XDG_DATA_HOME), así que sigue yendo a mano — pero
# con "-" al principio, que systemd documenta explícitamente para esto: si
# la ruta no existe todavía, se ignora en vez de abortar el arranque.
NoNewPrivileges=yes
ProtectSystem=strict
RuntimeDirectory=maly
RuntimeDirectoryMode=0700
ConfigurationDirectory=maly
ConfigurationDirectoryMode=0700
ReadWritePaths=-%h/.local/share/maly
PrivateTmp=yes
RestrictAddressFamilies=AF_UNIX
RestrictNamespaces=yes
LockPersonality=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectKernelLogs=yes
ProtectControlGroups=yes
ProtectClock=yes
ProtectHostname=yes
[Install]
WantedBy=default.target
|