diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index b5c46f2fb16a..22058134ecb2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1296,7 +1296,7 @@ in systemd-initrd-luks-unl0kr = handleTest ./systemd-initrd-luks-unl0kr.nix { }; systemd-initrd-modprobe = handleTest ./systemd-initrd-modprobe.nix { }; systemd-initrd-shutdown = handleTest ./systemd-shutdown.nix { systemdStage1 = true; }; - systemd-initrd-simple = handleTest ./systemd-initrd-simple.nix { }; + systemd-initrd-simple = runTest ./systemd-initrd-simple.nix; systemd-initrd-swraid = handleTest ./systemd-initrd-swraid.nix { }; systemd-initrd-vconsole = handleTest ./systemd-initrd-vconsole.nix { }; systemd-initrd-networkd = handleTest ./systemd-initrd-networkd.nix { }; diff --git a/nixos/tests/systemd-initrd-simple.nix b/nixos/tests/systemd-initrd-simple.nix index 7a379404bbc2..191a23abb2e4 100644 --- a/nixos/tests/systemd-initrd-simple.nix +++ b/nixos/tests/systemd-initrd-simple.nix @@ -1,17 +1,17 @@ -import ./make-test-python.nix ( - { lib, pkgs, ... }: - { - name = "systemd-initrd-simple"; +{ + name = "systemd-initrd-simple"; - nodes.machine = - { pkgs, ... }: - { - testing.initrdBackdoor = true; - boot.initrd.systemd.enable = true; - virtualisation.fileSystems."/".autoResize = true; - }; + nodes.machine = + { pkgs, ... }: + { + testing.initrdBackdoor = true; + boot.initrd.systemd.enable = true; + virtualisation.fileSystems."/".autoResize = true; + }; - testScript = '' + testScript = + # python + '' import subprocess with subtest("testing initrd backdoor"): @@ -50,6 +50,8 @@ import ./make-test-python.nix ( newAvail = machine.succeed("df --output=avail / | sed 1d") assert int(oldAvail) < int(newAvail), "File system did not grow" + + with subtest("no warnings from systemd about write permissions"): + machine.fail("journalctl -b 0 | grep 'is marked world-writable, which is a security risk as it is executed with privileges'") ''; - } -) +} diff --git a/pkgs/build-support/kernel/make-initrd-ng/src/main.rs b/pkgs/build-support/kernel/make-initrd-ng/src/main.rs index 64c114f2d9fa..149c5393e35a 100644 --- a/pkgs/build-support/kernel/make-initrd-ng/src/main.rs +++ b/pkgs/build-support/kernel/make-initrd-ng/src/main.rs @@ -212,7 +212,7 @@ fn copy_file< } // Remove writable permissions - permissions.set_mode(permissions.mode() ^ 0o222); + permissions.set_mode(permissions.mode() & 0o555); fs::set_permissions(&target, permissions) .wrap_err_with(|| format!("failed to remove writable permissions for {:?}", target))?; };