diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2018-09-05T00·32-0500 |
---|---|---|
committer | Matthew Bauer <mjbauer95@gmail.com> | 2018-09-05T00·32-0500 |
commit | 74f6d8767de13980b0e83a249633ee4a7e6fc547 (patch) | |
tree | cd8947808b49c9f6d3140ffaaa21b3e2798dbd05 /src/libutil/util.cc | |
parent | 5e0a7206f59df575582f42415fc3df59b0d640cb (diff) |
Get effective user in Nix commands
‘geteuid’ gives us the user that the command is being run as, including in setuid modes. By using geteuid to determind id, we can avoid the ‘sudo -i’ hack when upgrading Nix. So now, upgrading Nix on macOS is as simple as: $ sudo nix-channel --update $ sudo nix-env -u $ sudo launchctl stop org.nixos.nix-daemon $ sudo launchctl start org.nixos.nix-daemon or $ sudo systemctl restart nix-daemon
Diffstat (limited to 'src/libutil/util.cc')
-rw-r--r-- | src/libutil/util.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 6bc64ae75a42..04c98dc80bf2 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -468,7 +468,7 @@ static Lazy<Path> getHome2([]() { std::vector<char> buf(16384); struct passwd pwbuf; struct passwd * pw; - if (getpwuid_r(getuid(), &pwbuf, buf.data(), buf.size(), &pw) != 0 + if (getpwuid_r(geteuid(), &pwbuf, buf.data(), buf.size(), &pw) != 0 || !pw || !pw->pw_dir || !pw->pw_dir[0]) throw Error("cannot determine user's home directory"); homeDir = pw->pw_dir; |