From de251704d66331f61417b9eaa42c58270ea6c766 Mon Sep 17 00:00:00 2001 From: Jamey Sharp Date: Wed, 3 Jul 2019 13:11:05 -0700 Subject: [PATCH] nixos/nscd: run with a dynamic user nscd doesn't create any files outside of /run/nscd unless the nscd.conf "persistent" option is used, which we don't do by default. Therefore it doesn't matter what UID/GID we run this service as, so long as it isn't shared with any other running processes. /run/nscd does need to be owned by the same UID that the service is running as, but systemd takes care of that for us thanks to the RuntimeDirectory directive. If someone wants to turn on the "persistent" option, they need to manually configure users.users.nscd and systemd.tmpfiles.rules so that /var/db/nscd is owned by the same user that nscd runs as. In an all-defaults boot.isContainer configuration of NixOS, this removes the only user which did not have a pre-assigned UID. --- nixos/modules/services/system/nscd.conf | 1 - nixos/modules/services/system/nscd.nix | 7 ++----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/nixos/modules/services/system/nscd.conf b/nixos/modules/services/system/nscd.conf index 603a5d01acc..b294e933918 100644 --- a/nixos/modules/services/system/nscd.conf +++ b/nixos/modules/services/system/nscd.conf @@ -6,7 +6,6 @@ # fallback to trying to handle the request by itself. Which won't work as glibc # is not aware of the path in which the nss modules live. As a workaround, we # have `enable-cache yes` with an explicit ttl of 0 -server-user nscd threads 1 paranoia no debug-level 0 diff --git a/nixos/modules/services/system/nscd.nix b/nixos/modules/services/system/nscd.nix index 14644003539..cf034caa128 100644 --- a/nixos/modules/services/system/nscd.nix +++ b/nixos/modules/services/system/nscd.nix @@ -39,11 +39,6 @@ in config = mkIf cfg.enable { environment.etc."nscd.conf".text = cfg.config; - users.users.nscd = - { isSystemUser = true; - description = "Name service cache daemon user"; - }; - systemd.services.nscd = { description = "Name Service Cache Daemon"; @@ -60,6 +55,8 @@ in serviceConfig = { ExecStart = "@${pkgs.glibc.bin}/sbin/nscd nscd"; Type = "forking"; + User = "nscd"; + DynamicUser = true; RuntimeDirectory = "nscd"; PIDFile = "/run/nscd/nscd.pid"; Restart = "always";