Running GUI application as another (non-root) user
su vs. su -
When becoming another user you generally want to use su - user2
. The dash will force user2's .bash_profile
to get sourced.
xhost
Additionally you'll need to grant users access to your display. This is governed by X. You can use the command xhost +
to allow other users permission to display GUI's to user1's desktop.
NOTE: When running xhost +
you'll want to run this while still in a shell that belongs to user1.
$DISPLAY
When you become user2 you may need to set the environment variable $DISPLAY
.
$ export DISPLAY=:0.0
You could use X11 forwarding:
ssh -XY otheruser@localhost your-gui-program-name-here
You need to share the authentication token from the user1 (assuming ~
is home of user1):
cat ~/.Xauthority | sudo -u user2 -i tee .Xauthority > /dev/null