fix(rdp): run grdctl --system directly as root, remove runuser/polkit/util-linux
Root cause: gnome-remote-desktop-setup.service ran as root but dropped privileges via `runuser -u gnome-remote-desktop`. Non-root grdctl --system attempts authorisation through pkexec. The Nix-store pkexec binary is not setuid, so every system-mode credential call silently failed while the script still printed "configured successfully". GNOME Remote Desktop then started without applied credentials, causing Remmina to loop at the login dialog. Fix: - Remove `runuser -u gnome-remote-desktop --` from grdctl_system helper; the root-run oneshot service can call grdctl --system directly. - Remove pkgs.polkit and pkgs.util-linux from the setup service path as neither polkit nor runuser is needed any more. - Update tests: rename test_setup_runs_grdctl_as_gnome_remote_desktop_user to test_setup_runs_grdctl_directly_as_root and assert that runuser, pkexec, and sudo are absent; add test_privilege_escalation_packages_absent_from_setup_path. All 21 app/tests pass.
This commit is contained in:
@@ -46,9 +46,7 @@ lib.mkIf config.sovran_systemsOS.features.rdp {
|
||||
pkgs.gnome-remote-desktop
|
||||
pkgs.hostname
|
||||
pkgs.openssl
|
||||
pkgs.polkit
|
||||
pkgs.systemd
|
||||
pkgs.util-linux
|
||||
];
|
||||
script = ''
|
||||
set -euo pipefail
|
||||
@@ -64,7 +62,6 @@ lib.mkIf config.sovran_systemsOS.features.rdp {
|
||||
local rc=0
|
||||
|
||||
if timeout --kill-after=5s 10s \
|
||||
runuser -u gnome-remote-desktop -- \
|
||||
grdctl --system "$@"; then
|
||||
return 0
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user