It used to be enough to create /etc/X11/Xwrapper.config with the following in it
allowed_users = anybody needs_root_rights = no
That is no longer enough. So patch X.
Place this following in /etc/portage/patches/x11-base/xorg-server/console.diff
(version 1.20.8 tested but probably works on others ?)
If you’re not using Gentoo then you should be 😉
You’ll need to google how to patch and compile packages on your distro.
diff -Naur a/hw/xfree86/xorg-wrapper.c b/hw/xfree86/xorg-wrapper.c --- a/hw/xfree86/xorg-wrapper.c 2020-03-29 21:21:15.000000000 +0100 +++ b/hw/xfree86/xorg-wrapper.c 2020-05-22 14:23:59.825069376 +0100 @@ -206,29 +206,6 @@ parse_config(&allowed, &needs_root_rights); - /* For non root users check if they are allowed to run the X server */ - if (getuid() != 0) { - switch (allowed) { - case ROOT_ONLY: - /* Already checked above */ - fprintf(stderr, "%s: Only root is allowed to run the X server\n", argv[0]); - exit(1); - break; - case CONSOLE_ONLY: - /* Some of stdin / stdout / stderr maybe redirected to a file */ - for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) { - if (on_console(i)) - break; - } - if (i > STDERR_FILENO) { - fprintf(stderr, "%s: Only console users are allowed to run the X server\n", argv[0]); - exit(1); - } - break; - case ANYBODY: - break; - } - } #ifdef WITH_LIBDRM /* Detect if we need root rights, except when overriden by the config */