openssh: Use the default privilege separation dir (/var/empty)
(This is a rewritten version of the reverted commit
a927709a35, that disables the creation of
/var/empty during build so that sandboxed builds also works. For more
context, see https://github.com/NixOS/nixpkgs/pull/16966)
If running NixOS inside a container where the host's root-owned files
and directories have been mapped to some other uid (like nobody), the
ssh daemon fails to start, producing this error message:
fatal: /nix/store/...-openssh-7.2p2/empty must be owned by root and not group or world-writable.
The reason for this is that when openssh is built, we explicitly set
`--with-privsep-path=$out/empty`. This commit removes that flag which
causes the default directory /var/empty to be used instead. Since NixOS'
activation script correctly sets up that directory, the ssh daemon now
also works within containers that have a non-root-owned nix store.
This commit is contained in:
@@ -45,6 +45,9 @@ stdenv.mkDerivation rec {
|
||||
./locale_archive.patch
|
||||
./fix-host-key-algorithms-plus.patch
|
||||
./CVE-2015-8325.patch
|
||||
|
||||
# See discussion in https://github.com/NixOS/nixpkgs/pull/16966
|
||||
./dont_create_privsep_path.patch
|
||||
]
|
||||
++ optional withGssapiPatches gssapiSrc;
|
||||
|
||||
@@ -66,11 +69,6 @@ stdenv.mkDerivation rec {
|
||||
++ optional stdenv.isDarwin "--disable-libutil"
|
||||
++ optional (!linkOpenssl) "--without-openssl";
|
||||
|
||||
preConfigure = ''
|
||||
configureFlagsArray+=("--with-privsep-path=$out/empty")
|
||||
mkdir -p $out/empty
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
postInstall = ''
|
||||
|
||||
Reference in New Issue
Block a user