1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-13 14:02:42 +01:00
Nix, the purely functional package manager
Find a file
Bernardo Meurer ad5b46ba27 fix(libstore/lock): support users that belong to more than 10 groups
The manpage for `getgrouplist` says:

> If the number of groups of which user is a member is less than or
> equal to *ngroups, then the value *ngroups is returned.
>
> If the user is a member of more than *ngroups groups, then
> getgrouplist() returns -1.  In this case, the value returned in
> *ngroups can be used to resize the buffer passed to a further
> call getgrouplist().

In our original code, however, we allocated a list of size `10` and, if
`getgrouplist` returned `-1` threw an exception. In practice, this
caused the code to fail for any user belonging to more than 10 groups.

While unusual for single-user systems, large companies commonly have a
huge number of POSIX groups users belong to, causing this issue to crop
up and make multi-user Nix unusable in such settings.

The fix is relatively simple, when `getgrouplist` fails, it stores the
real number of GIDs in `ngroups`, so we must resize our list and retry.
Only then, if it errors once more, we can raise an exception.

This should be backported to, at least, 2.9.x.

(cherry picked from commit 931930feb1)
2022-06-14 10:29:52 -04:00
.github Bump zeebe-io/backport-action from 0.0.7 to 0.0.8 2022-05-23 22:01:52 +00:00
config Run autoupdate 2021-06-01 11:42:38 +02:00
contrib function-trace: always show the trace 2019-09-18 23:23:21 +02:00
doc/manual Mark official release 2022-05-30 20:49:35 +02:00
m4 autoconf: Fix C++17 detection not working on Ubuntu 16.04. 2019-07-03 04:32:25 +02:00
maintainers Integrate push-docker.sh into the release script 2022-02-18 13:58:01 +01:00
misc nix-daemon.service: sync LimitNOFILE with the nixos service 2022-05-19 21:16:07 +03:00
mk mk/run_test.sh: Add missing backslash 2022-03-02 21:36:46 +01:00
perl Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
scripts darwin-install: fix break from bad vimrc 2022-05-04 19:26:03 -05:00
src fix(libstore/lock): support users that belong to more than 10 groups 2022-06-14 10:29:52 -04:00
tests fix sourcehut brach/tag resolving regression 2022-06-13 06:57:53 +00:00
.dir-locals.el .dir-locals.el: Set c-block-comment-prefix 2020-07-10 11:21:06 +02:00
.editorconfig Add .editorconfig 2017-06-05 22:57:28 +01:00
.gitignore Add unit tests for libexpr (#5377) 2022-05-06 18:05:27 +02:00
.version Bump version 2022-05-31 18:30:17 +02:00
boehmgc-coroutine-sp-fallback.diff Fix leaking pthread_attr_t 2021-11-03 22:54:16 +01:00
bootstrap.sh bootstrap: Simplify & make more robust. 2011-09-06 12:11:05 +00:00
configure.ac configure.ac: don't run sandbox-shell test when cross compiling 2022-05-24 17:00:27 +02:00
COPYING * Change this to LGPL to keep the government happy. 2006-04-25 16:41:06 +00:00
default.nix Remove url literals 2022-01-24 13:28:21 +01:00
docker.nix feat: include openssh in docker image 2022-04-14 13:49:47 +01:00
flake.lock flake.lock: Update 2022-04-05 16:41:40 +02:00
flake.nix Mark official release 2022-05-30 20:49:35 +02:00
local.mk Remove 'dist' target 2020-12-03 16:17:58 +01:00
Makefile Add unit tests for libexpr (#5377) 2022-05-06 18:05:27 +02:00
Makefile.config.in use LOWDOWN_LIBS variable 2022-01-30 20:59:58 +02:00
precompiled-headers.h Config: Use nlohmann/json 2020-08-20 11:02:16 +02:00
README.md throw freenode down the memory hole 2021-05-27 21:48:39 +02:00
shell.nix Remove url literals 2022-01-24 13:28:21 +01:00

Nix

Open Collective supporters Test

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. Please refer to the Nix manual for more details.

Installation

On Linux and macOS the easiest way to install Nix is to run the following shell command (as a user other than root):

$ curl -L https://nixos.org/nix/install | sh

Information on additional installation methods is available on the Nix download page.

Building And Developing

See our Hacking guide in our manual for instruction on how to build nix from source with nix-build or how to get a development environment.

Additional Resources

License

Nix is released under the LGPL v2.1.