Unverified Commit bd0cbb43 authored by Alois Wohlschlager's avatar Alois Wohlschlager
Browse files

nixos/plasma5: remove pointless setuid wrappers

The module for Plasma 5 contained two pointless setuid wrappers:
* kscreenlocker_greet was introduced when the kscreenlocker package
  dropped kcheckpass. However, this was actually replaced by making
  proper use of PAM (which finally calls its unix_chkpwd setuid binary).
  kscreenlocker_greet itself was never intended to be setuid.
  Fortunately, this is not exploitable, because QCoreApplication
  immediately aborts if it detects setuid. The wrapper is still
  incorrect and pointless, so remove it.
* start_kdeinit can optionally use setuid root or setcap
  CAP_SYS_RESOURCE to reduce its OOM killer score. However, with systemd
  startup, start_kdeinit does not get used at all. So in this case, the
  setuid wrapper is pointless, and so is removed as well. Ideally, the
  case where systemd startup is not enabled would use a capability
  wrapper instead, but since systemd startup is the default in NixOS and
  kinit is deprecated upstream for KF6, I don't bother any more.
parent a5523118
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -172,24 +172,19 @@ in
    (mkIf (cfg.enable || cfg.mobile.enable || cfg.bigscreen.enable) {

      security.wrappers = {
        kscreenlocker_greet = {
          setuid = true;
        kwin_wayland = {
          owner = "root";
          group = "root";
          source = "${getBin libsForQt5.kscreenlocker}/libexec/kscreenlocker_greet";
          capabilities = "cap_sys_nice+ep";
          source = "${getBin plasma5.kwin}/bin/kwin_wayland";
        };
      } // mkIf (!cfg.runUsingSystemd) {
        start_kdeinit = {
          setuid = true;
          owner = "root";
          group = "root";
          source = "${getBin libsForQt5.kinit}/libexec/kf5/start_kdeinit";
        };
        kwin_wayland = {
          owner = "root";
          group = "root";
          capabilities = "cap_sys_nice+ep";
          source = "${getBin plasma5.kwin}/bin/kwin_wayland";
        };
      };

      environment.systemPackages =