1 Commits

Author SHA1 Message Date
4b3c5dde11 Limit slurm partition users with AllowGroups
All checks were successful
CI / build:cross (pull_request) Successful in 8s
CI / build:all (pull_request) Successful in 32s
Fixes: #245
2026-03-13 12:14:48 +01:00
3 changed files with 10 additions and 3 deletions

View File

@@ -224,6 +224,8 @@
groups = { groups = {
Computational = { gid = 564; }; Computational = { gid = 564; };
fox = { gid = 565; };
owl = { gid = 566; };
tracing = { }; tracing = { };
}; };
}; };

View File

@@ -17,8 +17,13 @@ with lib;
allowedUser = host: userConf: builtins.elem host userConf.hosts; allowedUser = host: userConf: builtins.elem host userConf.hosts;
filterUsers = host: users: filterAttrs (n: v: allowedUser host v) users; filterUsers = host: users: filterAttrs (n: v: allowedUser host v) users;
removeHosts = users: mapAttrs (n: v: builtins.removeAttrs v [ "hosts" ]) users; removeHosts = users: mapAttrs (n: v: builtins.removeAttrs v [ "hosts" ]) users;
addExtraGroups = mapAttrs (_: user: user // {
extraGroups = (user.extraGroups or [ ])
++ (lib.optionals (allowedUser "fox" user) [ "fox" ])
++ (lib.optionals (allowedUser "owl1" user || allowedUser "owl2" user) [ "owl" ]);
});
currentHost = config.networking.hostName; currentHost = config.networking.hostName;
in { in {
users.users = removeHosts (filterUsers currentHost config.users.jungleUsers); users.users = removeHosts (addExtraGroups (filterUsers currentHost config.users.jungleUsers));
}; };
} }

View File

@@ -10,8 +10,8 @@
]; ];
partitionName = [ partitionName = [
"owl Nodes=owl[1-2] Default=YES DefaultTime=01:00:00 MaxTime=INFINITE State=UP" "owl Nodes=owl[1-2] Default=YES DefaultTime=01:00:00 MaxTime=INFINITE State=UP AllowGroups=wheel,owl"
"fox Nodes=fox Default=NO DefaultTime=01:00:00 MaxTime=INFINITE State=UP" "fox Nodes=fox Default=NO DefaultTime=01:00:00 MaxTime=INFINITE State=UP AllowGroups=wheel,fox"
]; ];
# See slurm.conf(5) for more details about these options. # See slurm.conf(5) for more details about these options.