mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 13:10:33 +00:00
nixos/users: Increase maximum system uid/gid from 499 to 999
This enlarges the system uid/gid range 6-fold, from 100 to 600 ids. This is a preventative measure against running out of dynamically allocated ids for NixOS services with isSystemUser, which should become the preferred way of allocating uids for non-real users.
This commit is contained in:
parent
6c8aed6391
commit
23d920c8f0
|
@ -56,12 +56,12 @@ sub allocGid {
|
|||
$gidsUsed{$prevGid} = 1;
|
||||
return $prevGid;
|
||||
}
|
||||
return allocId(\%gidsUsed, \%gidsPrevUsed, 400, 499, 0, sub { my ($gid) = @_; getgrgid($gid) });
|
||||
return allocId(\%gidsUsed, \%gidsPrevUsed, 400, 999, 0, sub { my ($gid) = @_; getgrgid($gid) });
|
||||
}
|
||||
|
||||
sub allocUid {
|
||||
my ($name, $isSystemUser) = @_;
|
||||
my ($min, $max, $up) = $isSystemUser ? (400, 499, 0) : (1000, 29999, 1);
|
||||
my ($min, $max, $up) = $isSystemUser ? (400, 999, 0) : (1000, 29999, 1);
|
||||
my $prevUid = $uidMap->{$name};
|
||||
if (defined $prevUid && $prevUid >= $min && $prevUid <= $max && !defined $uidsUsed{$prevUid}) {
|
||||
print STDERR "reviving user '$name' with UID $prevUid\n";
|
||||
|
|
|
@ -6,17 +6,27 @@ with lib;
|
|||
|
||||
let
|
||||
|
||||
/*
|
||||
There are three different sources for user/group id ranges, each of which gets
|
||||
used by different programs:
|
||||
- The login.defs file, used by the useradd, groupadd and newusers commands
|
||||
- The update-users-groups.pl file, used by NixOS in the activation phase to
|
||||
decide on which ids to use for declaratively defined users without a static
|
||||
id
|
||||
- Systemd compile time options -Dsystem-uid-max= and -Dsystem-gid-max=, used
|
||||
by systemd for features like ConditionUser=@system and systemd-sysusers
|
||||
*/
|
||||
loginDefs =
|
||||
''
|
||||
DEFAULT_HOME yes
|
||||
|
||||
SYS_UID_MIN 400
|
||||
SYS_UID_MAX 499
|
||||
SYS_UID_MAX 999
|
||||
UID_MIN 1000
|
||||
UID_MAX 29999
|
||||
|
||||
SYS_GID_MIN 400
|
||||
SYS_GID_MAX 499
|
||||
SYS_GID_MAX 999
|
||||
GID_MIN 1000
|
||||
GID_MAX 29999
|
||||
|
||||
|
|
|
@ -84,8 +84,18 @@ stdenv.mkDerivation {
|
|||
"-Dldconfig=false"
|
||||
"-Dsmack=true"
|
||||
"-Db_pie=true"
|
||||
"-Dsystem-uid-max=499" #TODO: debug why awking around in /etc/login.defs doesn't work
|
||||
"-Dsystem-gid-max=499"
|
||||
/*
|
||||
As of now, systemd doesn't allow runtime configuration of these values. So
|
||||
the settings in /etc/login.defs have no effect on it. Many people think this
|
||||
should be supported however, see
|
||||
- https://github.com/systemd/systemd/issues/3855
|
||||
- https://github.com/systemd/systemd/issues/4850
|
||||
- https://github.com/systemd/systemd/issues/9769
|
||||
- https://github.com/systemd/systemd/issues/9843
|
||||
- https://github.com/systemd/systemd/issues/10184
|
||||
*/
|
||||
"-Dsystem-uid-max=999"
|
||||
"-Dsystem-gid-max=999"
|
||||
# "-Dtime-epoch=1"
|
||||
|
||||
(if !stdenv.hostPlatform.isEfi then "-Dgnu-efi=false" else "-Dgnu-efi=true")
|
||||
|
|
Loading…
Reference in a new issue