Skip to content

Commit

Permalink
nixos/ntpd: fix permissions error when creating drift file
Browse files Browse the repository at this point in the history
This fixes "frequency file /var/lib/ntp/ntp.drift.TEMP: Permission denied".

Creating a directory via StateDirectory makes that directory /var/lib/ntp owned by root:root.
However, when running ntpd we change to user ntp (see ntpFlags), so the process cannot
actually use that directory.

Actually creating a home directory for the user at that location solves that problem.

(cherry picked from commit 31942f2)
  • Loading branch information
SFrijters authored and github-actions[bot] committed Dec 22, 2024
1 parent fb48298 commit dbb71e2
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 1 deletion.
2 changes: 1 addition & 1 deletion nixos/modules/services/networking/ntp/ntpd.nix
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ in
group = "ntp";
description = "NTP daemon user";
home = "/var/lib/ntp";
createHome = true;
};
users.groups.ntp = { };

Expand All @@ -155,7 +156,6 @@ in
serviceConfig = {
ExecStart = "@${ntp}/bin/ntpd ntpd -g ${builtins.toString ntpFlags}";
Type = "forking";
StateDirectory = "ntp";

# Hardening options
PrivateDevices = true;
Expand Down
2 changes: 2 additions & 0 deletions nixos/tests/ntpd.nix
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import ./make-test-python.nix (
machine.wait_for_console_text('Listen normally on 10 eth*')
machine.succeed('systemctl is-active ntpd.service')
machine.succeed('ntpq -p')
# ntp user must be able to create drift files
machine.succeed('su -s /bin/sh -c "touch /var/lib/ntp/ntp.drift" ntp')
'';
}
)

0 comments on commit dbb71e2

Please sign in to comment.