nixos/geoip-updater: run as user 'geoip' instead of 'nobody'

That way 'nobody' is prevented from messing with the databases.

Changed files
+12 -4
nixos
modules
misc
services
+2
nixos/modules/misc/ids.nix
···
pdns-recursor = 269;
kresd = 270;
rpc = 271;
+
geoip = 272;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
···
gogs = 268;
kresd = 270;
#rpc = 271; # unused
+
#geoip = 272; # unused
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal
+10 -4
nixos/modules/services/misc/geoip-updater.nix
···
}
];
+
users.extraUsers.geoip = {
+
group = "root";
+
description = "GeoIP database updater";
+
uid = config.ids.uids.geoip;
+
};
+
systemd.timers.geoip-updater =
{ description = "GeoIP Updater Timer";
partOf = [ "geoip-updater.service" ];
···
preStart = ''
mkdir -p "${cfg.databaseDir}"
chmod 755 "${cfg.databaseDir}"
-
chown nobody:root "${cfg.databaseDir}"
+
chown geoip:root "${cfg.databaseDir}"
'';
serviceConfig = {
ExecStart = "${geoip-updater}/bin/geoip-updater";
-
User = "nobody";
+
User = "geoip";
PermissionsStartOnly = true;
};
};
···
preStart = ''
mkdir -p "${cfg.databaseDir}"
chmod 755 "${cfg.databaseDir}"
-
chown nobody:root "${cfg.databaseDir}"
+
chown geoip:root "${cfg.databaseDir}"
'';
serviceConfig = {
ExecStart = "${geoip-updater}/bin/geoip-updater --skip-existing";
-
User = "nobody";
+
User = "geoip";
PermissionsStartOnly = true;
# So it won't be (needlessly) restarted:
RemainAfterExit = true;