approach for sudo to have X windows working
authorChris Koeritz <cak0l@virginia.edu>
Thu, 30 Apr 2020 19:36:17 +0000 (15:36 -0400)
committerChris Koeritz <cak0l@virginia.edu>
Thu, 30 Apr 2020 19:36:17 +0000 (15:36 -0400)
this should enable root or other users to start X windows on the user's display, assuming that the DISPLAY variable is passed in and that the new xauth imported info is also available.

scripts/core/functions.sh
scripts/core/launch_feisty_meow.sh

index 19e4306c63e890259b94e2a18ca8187e8a91f9bc..865aa251e03b79f3ce3681d7c4f8e4ee2888a6ee 100644 (file)
@@ -451,6 +451,9 @@ if [ -z "$skip_all" ]; then
   # label if they're doing an su with the sudo.
   function sudo() {
     save_terminal_title
+    # hoist our X authorization info in case environment is passed along;
+    # this can allow root to use our display to show Xorg windows.
+    export IMPORTED_XAUTH="$(xauth list $DISPLAY)"
     /usr/bin/sudo "$@"
     retval=$?
     restore_terminal_title
index 0d7d54beb9d4ed27a880d33b229d29314a573dd5..4a6184e687571f4a8c8404eaa09dd0e334eaa2b1 100644 (file)
@@ -92,6 +92,13 @@ if [ "$NO_REPAIRS_NEEDED" == "true" ]; then
   if [ -z "$USER" -a ! -z "$CRONUSER" ]; then
     export USER="$CRONUSER"
   fi
+
+  # use the xauth info if we were given one in the environment.
+  # this allows root or other su'd identities to create windows with same
+  # display variable.
+  if [ ! -z "$DISPLAY" -a ! -z "$IMPORTED_XAUTH" ]; then
+    xauth add "$IMPORTED_XAUTH"
+  fi
   
   ##############