pkexec για σωστή χρήση root GUI

σε Ubuntu 20.04 LTS

Πρόσφατα χρειάστηκε να τρέξω μια γραφική εφαρμογή ως root και βρέθηκα μπροστά σε ένα ερώτημα. Πως;

Αν και δεν συνίσταται να τρέχουμε γραφικές εφαμογές ως root, μερικές φορές αυτό το απαιτεί η ίδια η εφαρμογή. πχ. gparted.
Ο τρόπος με τον οποίο παλιότερα, αν θυμάμαι καλά μέχρι και τη 16.04 αν και δεν έχει σημασία, τρέχαμε τέτοιες εφαρμογές ήταν μέσω της εντολής gksu η οποία διαχειριζόταν τις μεταβλητές περιβάλλοντος με τέτοιο τρόπο ώστε να μη δημιουργηθεί κάποιο πρόβλημα στην εφαρμογή.
Γενικά αποφεύγουμε να τρέχουμε γραφικές εφαρμογές ως root και αν αυτό πρέπει να γίνει, ας γίνει με το σωστό τρόπο.

Ο σωστός τρόπος δεν είναι

sudo εφαρμογή

Ακόμη και η

sudo -H εφαρμογή

κάποιες φορές δε λειτουργεί σωστά.

Η gksu έχει αντικατασταθεί πλέον από την pkexec. Ωστόσο τρέχοντας

pkexec εφαρμογή

βρίσκομαι αντιμέτωπος με ένα μήνυμα λάθους. Ανοίγει ναι μεν το παράθυρο για να εισάγω τον κωδικό, αλλά η εφαρμογή δεν τρέχει.

DISPLAY is not set, unable to open the VMware Workstation user interface.

Ναι, στη δική μου περίπτωση ήταν το VMware γιατί ήθελα να αλλάξω κάποιες ρυθμίσεις στη μνήμη και αυτές μπορείς να τις πειράξεις μόνο αν τρέχεις το VMware ως Administrator, όπως χαρακτηριστικά αναφέρει.

Λύση

Ένα alias, έτσι για να θυμηθούμε και τα παλιά, στο ~/.bashrc έδωσε τη λύση.

alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'

Άλλωστε, είναι η συμπεριφορά της pkexec τέτοια. Το γράφουν οι άνθρωποι, αλλά ποιος τα διαβάζει αυτά.

man pkexec

[...] pkexec will not allow you to run X11 applications
       as another user since the $DISPLAY and $XAUTHORITY environment
       variables are not set.[...]

Until next time ... "Keep Your Mind in a Constant State of Openness"