In 2021
In short:
To run a command as another user you can use this commands:
runuser -u user<user> -- command
can be used only by root to run commands as another user.
do not require authentication.
do not create log messages.
has permission limitations and issues.
su - user<user> -c command
can be used by any user.
require authentication as target user.
create message in /var/log/auth.log or /var/log/secure.
sudo -u user<user> command
can be used by the user with root privileges or the user from the sudoers file.
require authentication as current user (you).
create message in /var/log/auth.log or /var/log/secure.
pkexec --user user<user> command
can be used by any user.
require authentication as target user.
create message in /var/log/auth.log or /var/log/secure.
replacement for GUI tools such as gksu or gksudo.
More info:
Linux Run Command As Another User
Run a GUI application as another user:
If you want to run a GUI application as another user, you need first allow to the target user connecting to your display:
xhost +si:localuser:user<user>
then use runuser/su/sudo/pkexec to run the application,
and then use xhost to prevent the subsequent connections:
xhost -si:localuser:user<user>