nixos-install: error out if $mountPoint has bad permissions
The nix store more-or-less requires o+rx on all parent directories. This is primarily because nix runs builders in a uid/gid mapped user-namespace, and those builders have to be able to operate on the nix store. This check is especially helpful because nix does not produce a helpful error on its own (rather, creating directories and such works, it's not until 'mount --bind' that it gets an EACCES). Helps users who run into this opaque error, such as in #67465. Possibly fixes that issue if bad permissions were the only cause.
This commit is contained in:
parent
9d0c3ffe67
commit
460c0d608f
|
@ -71,6 +71,17 @@ if ! test -e "$mountPoint"; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# Verify permissions are okay-enough
|
||||
checkPath="$(realpath "$mountPoint")"
|
||||
while [[ "$checkPath" != "/" ]]; do
|
||||
mode="$(stat -c '%a' "$checkPath")"
|
||||
if [[ "${mode: -1}" -lt "5" ]]; then
|
||||
echo "path $checkPath should have permissions 755, but had permissions $mode. Consider running 'chmod o+rx $checkPath'."
|
||||
exit 1
|
||||
fi
|
||||
checkPath="$(dirname "$checkPath")"
|
||||
done
|
||||
|
||||
# Get the path of the NixOS configuration file.
|
||||
if [[ -z $NIXOS_CONFIG ]]; then
|
||||
NIXOS_CONFIG=$mountPoint/etc/nixos/configuration.nix
|
||||
|
|
Loading…
Reference in a new issue