2 ################################################
3 ### Managed by someone's ansible provisioner ###
4 ################################################
5 # Part of: https://git.somenet.org/root/pub/somesible.git
6 # 2017-2025 by someone <someone@somenet.org>
10 Description=chrony, an NTP client/server
11 Documentation=man:chronyd(8) man:chronyc(1) man:chrony.conf(5)
12 Conflicts=openntpd.service ntp.service ntpsec.service
13 ConditionCapability=CAP_SYS_TIME
17 PIDFile=/run/chrony/chronyd.pid
18 EnvironmentFile=-/etc/default/chrony
20 # Daemon is started as root, but still sandboxed
21 ExecStart=!/usr/sbin/chronyd $DAEMON_OPTS
23 CapabilityBoundingSet=~CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE
24 CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE
25 CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_MKNOD CAP_SYS_ADMIN
26 CapabilityBoundingSet=~CAP_SYS_BOOT CAP_SYS_CHROOT CAP_SYS_MODULE CAP_SYS_PACCT
27 CapabilityBoundingSet=~CAP_SYS_PTRACE CAP_SYS_RAWIO CAP_SYS_TTY_CONFIG CAP_WAKE_ALARM
28 DeviceAllow=char-pps rw
29 DeviceAllow=char-ptp rw
30 DeviceAllow=char-rtc rw
33 MemoryDenyWriteExecute=yes
37 ProtectControlGroups=yes
41 ProtectKernelModules=yes
42 ProtectKernelTunables=yes
45 # Used for gps refclocks
47 RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
48 RestrictNamespaces=yes
50 SystemCallArchitectures=native
51 SystemCallFilter=~@cpu-emulation @debug @module @mount @obsolete @raw-io @reboot @swap
53 ConfigurationDirectory=chrony
54 RuntimeDirectory=chrony
55 RuntimeDirectoryMode=0700
56 # See dumpdir in chrony.conf(5)
57 RuntimeDirectoryPreserve=restart
59 StateDirectoryMode=0750
61 LogsDirectoryMode=0750
63 # Adjust restrictions for /usr/sbin/sendmail (mailonchange directive)
65 ReadWritePaths=-/var/spool
66 RestrictAddressFamilies=AF_NETLINK
74 WantedBy=multi-user.target