| 8 Jul 2025 |
Zhaofeng Li | maybe let's just give kea a UID and call it a day 🫠| 23:58:20 |
Zhaofeng Li | * looks like having multiple DynamicUser= services sharing the same RuntimeDirectory= isn't a good idea after all: https://github.com/systemd/systemd/issues/5394 | 23:58:43 |
| 9 Jul 2025 |
Zhaofeng Li | * looks like having multiple ~~DynamicUser=~~ services sharing the same RuntimeDirectory= isn't a good idea after all: https://github.com/systemd/systemd/issues/5394
Edit: I think sharing RuntimeDirectory just isn't supported, even with static User=s
| 00:11:59 |
hexa | ok yeah, right | 00:26:22 |
hexa | can't repro the sucess anymore | 00:26:28 |
hexa | wild | 00:26:32 |
Zhaofeng Li | maybe we can just... uh, chmod before starting the actual daemon 🫠| 00:27:01 |
Zhaofeng Li | but a more fundamental issue is that what we are doing isn't really supported, looking at the systemd issues | 00:28:02 |
hexa | it's funny that it used to work and now only the ownership is off | 00:28:32 |
hexa | * it's funny that it used to work and now only the permissions are off | 00:28:41 |
hexa | what even? | 00:28:43 |
hexa | the issue with moving creating non-shared runtime dirs is that its breaking for the socket-path option | 00:37:49 |
hexa | well, I can probably keep /run/kea alive with a static user | 00:38:23 |
hexa | with tmpfiles, right? | 00:38:49 |
Zhaofeng Li | actually it's not that easy | 00:39:09 |
Zhaofeng Li | because there is state in /var/lib/private/kea | 00:39:22 |
hexa | i remember systemd migrating state between dynamicuser=true/false | 00:39:47 |
Zhaofeng Li | oh really? | 00:40:06 |
Zhaofeng Li | but still, if you have some kind of impermanence setup where you mount /var/lib/private/kea you are still screwed | 00:40:31 |
hexa | e.g. https://github.com/systemd/systemd/pull/15033 | 00:40:40 |
hexa | true, but there is not much we can do about that, right"? | 00:40:55 |
hexa | * true, but there is not much we can do about that, right? | 00:40:56 |
Zhaofeng Li | but it's kind of rude to break stable like that | 00:42:46 |
hexa | yeah, true | 00:43:05 |
hexa | so we hack around with chmod in prestart? | 00:43:21 |
hexa | * so we hack around with chmod in prestart for now | 00:44:09 |
Zhaofeng Li | yeah, looks like the least dramatic option, though not ideal | 00:45:06 |
Zhaofeng Li | maybe we can migrate to a static user, but force everyone with stateVersion <= 25.11 to explicitly set stateDir to acknowledge the migration | 00:46:41 |
Zhaofeng Li | * maybe we can migrate to a static user in unstable, but force everyone with stateVersion <= 25.11 to explicitly set stateDir to acknowledge the migration | 00:47:13 |
hexa | diff --git a/nixos/modules/services/networking/kea.nix b/nixos/modules/services/networking/kea.nix
index 6e0af62425a4..6f815659f567 100644
--- a/nixos/modules/services/networking/kea.nix
+++ b/nixos/modules/services/networking/kea.nix
@@ -272,12 +272,13 @@ in
};
commonServiceConfig = {
- ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
+ ExecStartPre = "${lib.getExe' pkgs.coreutils "chmod"} 0750 /run/kea";
+ ExecReload = "${lib.getExe' pkgs.coreutils "kill"} -HUP $MAINPID";
DynamicUser = true;
User = "kea";
ConfigurationDirectory = "kea";
RuntimeDirectory = "kea";
- RuntimeDirectoryMode = "750";
+ RuntimeDirectoryMode = "0750";
RuntimeDirectoryPreserve = true;
StateDirectory = "kea";
UMask = "0077";
| 00:47:46 |