summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-10-09 18:01:21 +0200
committerEelco Dolstra <edolstra@gmail.com>2019-10-09 23:34:48 +0200
commit5a303093dcae1e5ce9212616ef18f2ca51020b0d (patch)
tree091df92662ac2fdfe8c5ce4b9eb1f75bc81b5675 /scripts
parent4331eeb13d241dfe2d2e6a01c53915c556cac94f (diff)
Remove world-writability from per-user directories
'nix-daemon' now creates subdirectories for users when they first connect. Fixes #509 (CVE-2019-17365). Should also fix #3127.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/install-multi-user.sh9
-rw-r--r--scripts/nix-profile-daemon.sh.in13
-rw-r--r--scripts/nix-profile.sh.in14
3 files changed, 4 insertions, 32 deletions
diff --git a/scripts/install-multi-user.sh b/scripts/install-multi-user.sh
index fd0f54184..258469a0b 100644
--- a/scripts/install-multi-user.sh
+++ b/scripts/install-multi-user.sh
@@ -437,16 +437,15 @@ create_build_users() {
}
create_directories() {
+ # FIXME: remove all of this because it duplicates LocalStore::LocalStore().
+
_sudo "to make the basic directory structure of Nix (part 1)" \
- mkdir -pv -m 0755 /nix /nix/var /nix/var/log /nix/var/log/nix /nix/var/log/nix/drvs /nix/var/nix{,/db,/gcroots,/profiles,/temproots,/userpool}
+ mkdir -pv -m 0755 /nix /nix/var /nix/var/log /nix/var/log/nix /nix/var/log/nix/drvs /nix/var/nix{,/db,/gcroots,/profiles,/temproots,/userpool} /nix/var/nix/{gcroots,profiles}/per-user
_sudo "to make the basic directory structure of Nix (part 2)" \
- mkdir -pv -m 1777 /nix/var/nix/{gcroots,profiles}/per-user
-
- _sudo "to make the basic directory structure of Nix (part 3)" \
mkdir -pv -m 1775 /nix/store
- _sudo "to make the basic directory structure of Nix (part 4)" \
+ _sudo "to make the basic directory structure of Nix (part 3)" \
chgrp "$NIX_BUILD_GROUP_NAME" /nix/store
_sudo "to set up the root user's profile (part 1)" \
diff --git a/scripts/nix-profile-daemon.sh.in b/scripts/nix-profile-daemon.sh.in
index 23da5e855..3e138ac42 100644
--- a/scripts/nix-profile-daemon.sh.in
+++ b/scripts/nix-profile-daemon.sh.in
@@ -5,12 +5,6 @@ __ETC_PROFILE_NIX_SOURCED=1
export NIX_USER_PROFILE_DIR="@localstatedir@/nix/profiles/per-user/$USER"
export NIX_PROFILES="@localstatedir@/nix/profiles/default $HOME/.nix-profile"
-# Set up the per-user profile.
-mkdir -m 0755 -p $NIX_USER_PROFILE_DIR
-if ! test -O "$NIX_USER_PROFILE_DIR"; then
- echo "WARNING: bad ownership on $NIX_USER_PROFILE_DIR" >&2
-fi
-
if test -w $HOME; then
if ! test -L $HOME/.nix-profile; then
if test "$USER" != root; then
@@ -26,13 +20,6 @@ if test -w $HOME; then
echo "https://nixos.org/channels/nixpkgs-unstable nixpkgs" > $HOME/.nix-channels
fi
- # Create the per-user garbage collector roots directory.
- NIX_USER_GCROOTS_DIR=@localstatedir@/nix/gcroots/per-user/$USER
- mkdir -m 0755 -p $NIX_USER_GCROOTS_DIR
- if ! test -O "$NIX_USER_GCROOTS_DIR"; then
- echo "WARNING: bad ownership on $NIX_USER_GCROOTS_DIR" >&2
- fi
-
# Set up a default Nix expression from which to install stuff.
if [ ! -e $HOME/.nix-defexpr -o -L $HOME/.nix-defexpr ]; then
rm -f $HOME/.nix-defexpr
diff --git a/scripts/nix-profile.sh.in b/scripts/nix-profile.sh.in
index 85f1d6e5d..7f9b5877a 100644
--- a/scripts/nix-profile.sh.in
+++ b/scripts/nix-profile.sh.in
@@ -9,12 +9,6 @@ if [ -n "$HOME" ] && [ -n "$USER" ]; then
NIX_USER_PROFILE_DIR=@localstatedir@/nix/profiles/per-user/$USER
- mkdir -m 0755 -p "$NIX_USER_PROFILE_DIR"
-
- if [ "$(stat --printf '%u' "$NIX_USER_PROFILE_DIR")" != "$(id -u)" ]; then
- echo "Nix: WARNING: bad ownership on "$NIX_USER_PROFILE_DIR", should be $(id -u)" >&2
- fi
-
if [ -w "$HOME" ]; then
if ! [ -L "$NIX_LINK" ]; then
echo "Nix: creating $NIX_LINK" >&2
@@ -33,14 +27,6 @@ if [ -n "$HOME" ] && [ -n "$USER" ]; then
echo "https://nixos.org/channels/nixpkgs-unstable nixpkgs" > "$HOME/.nix-channels"
fi
- # Create the per-user garbage collector roots directory.
- __user_gcroots=@localstatedir@/nix/gcroots/per-user/"$USER"
- mkdir -m 0755 -p "$__user_gcroots"
- if [ "$(stat --printf '%u' "$__user_gcroots")" != "$(id -u)" ]; then
- echo "Nix: WARNING: bad ownership on $__user_gcroots, should be $(id -u)" >&2
- fi
- unset __user_gcroots
-
# Set up a default Nix expression from which to install stuff.
__nix_defexpr="$HOME"/.nix-defexpr
[ -L "$__nix_defexpr" ] && rm -f "$__nix_defexpr"