pkexec αντί gksu(gksudo/kdesudo)

ΑΥΤΗ Η ΔΗΜΟΣΙΕΥΣΗ ΕΧΕΙ ΓΙΝΕΙ ΠΑΝΩ ΑΠΟ ΕΝΑ ΧΡΟΝΟ ΠΡΙΝ!

Το gksudo (ή kdesudo για KDE) πιθανών να το γνωρίζετε και ίσως να το έχετε χρησιμοποιήσει κιόλας.

Είναι ένα front-end για την εντολή sudo, όπου μπορούμε να ανοίξουμε μια εφαρμογή με γραφικό περιβάλλον(GUI) με αυξημένα δικαιώματα και συγκεκριμένα αυτά του χρήστη root. Το χρησιμοποιούμε συνήθως έναντι της sudo για διάφορους λόγους.

Γιατί όμως gksudo αντί sudo;

Ο λόγος είναι σχετικά απλός. Αν τρέξετε μια γραφική εφαρμογή μέσω της sudo, τότε και σε κάποιες περιπτώσεις μόνο, ίσως να χαλάσουν τα δικαιώματα διαφόρων αρχείων και φακέλων και περάσουν στην ιδιοκτησία του χρήστη root. Έτσι, την επόμενη φορά που θα τρέξετε την εφαρμογή (ως απλός χρήστης πλέον), δεν θα δουλεύει σωστά, αφού θα απαιτεί δικαιώματα χρήστη root για να λειτουργήσει.
Η gksudo (ή kdesudo για KDE) αυτό που κάνουν είναι, να θέτουν την μεταβλητή HOME=/root, καθώς και να δημιουργούν/αντιγράφουν ένα προσωρινό αρχείο .Xauthority μέσα στο /tmp για να μην υπάρξει το παραπάνω πρόβλημα.
Υπάρχει σχετική παράμετρος και στην sudo για την μεταβλητή HOME και αυτή είναι η -H. (δείτε man sudo)>

Το pkexec τι είναι;

Το pkexec υπήρχε σχεδόν «από πάντα». Είναι μέρος του PolicyKit και αναπτύσσεται από το fredesktop.org. Όλα τα γραφικά περιβάλλοντα έχουν ενσωματωμένη αυτή τη λειτουργία, τουλάχιστον τα γνωστά (GNOME,KDE,XFCE,LXDE,Unity,Cinnamon…κλπ). Για την σελίδα τεκμηρίωσης, δείτε εδώ.
Για παράδειγμα, το pkexec χρησιμοποιείται για ενέργειες όπως το shutdown, το restart..κλπ. Τρέχει σε επίπεδο desktop και χρησιμοποιεί το D-bus, οπότε μπορούμε να το θεωρήσουμε ως μια πιο «φιλική» ως προς το Desktop εφαρμογή. Μην συνδέετε το pkexec με την sudo. Ενώ το gksudo είναι(ήταν) απλά ένα wrapper της sudo, το pkexec δουλεύει ανεξάρτητα από αυτήν.

Και γιατί pkexec και όχι gksu(do);

Διότι το gksudo θεωρείται ξεπερασμένο/παρωχημένο την σήμερον ημέρα. Έχει ήδη αφαιρεθεί από το Ubuntu (το οποίο το είχε ως προεγκατεστημένο και δεν υπάρχει λόγος να το εγκαταστήσετε). Διαβάστε και μια ανακοίνωση του GNOME σχετικά με το gksu.
Επίσης, το pkexec εμφανίζει το παράθυρο εισαγωγής των πιστοποιητικών, αναγράφοντας και την ενέργεια που θα γίνει:

Και πως το χρησιμοποιούμε;

Δεν υπάρχει ουσιαστική διαφορά στην χρήση, απ’ ότι κάναμε με το gksudo. Τρέξτε για παράδειγμα

pkexec gedit

αν θέλετε να ανοίξετε τον κειμενογράφο gedit με αυξημένα δικαιώματα.

Σε περίπτωση που πάρετε μήνυμα λάθους σχετικά με την μεταβλητή XDG_RUNTIME_DIR, τρέξτε την παρακάτω εντολή

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit

Διαβάζοντας την σελίδα τεκμηρίωσης, βλέπουμε ότι γράφει

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

Συνήθως το παραπάνω λάθος δεν εμφανίζεται αλλά αν επιμένει, μπορείτε να το λύσετε μια και καλή είτε θέτοντας τις μεταβλητές, είτε φτιάχνοντας ένα alias του στυλ

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

Τα αρχεία ρυθμίσεων που βρίσκονται;

Δείτε ρυθμίσεις και πειράξτε τις (αν γνωρίζετε πως) στον κατάλογο
/usr/share/polkit-1/. Εκεί θα βρείτε (συνήθως) δυο υποκαταλόγους actions & rules.d. Στον actions, θα βρείτε «κανόνες συμπεριφοράς» για διάφορες εφαρμογές. Για παράδειγμα, εκεί υπάρχει και το αρχείο του γνωστού gparted. Το gparted δεν χρειαζόταν ποτέ να το τρέξουμε με gksudo από τερματικό, σωστά; Τα αρχεία είναι σε μορφή XML και (αν ξέρετε) μπορείτε να αλλάξετε κάποιες ρυθμίσεις. Π.χ Να πρέπει ο χρήστης να είναι administrator για να ανοίξει η εφαρμογή, ή να μην ζητά κωδικό για να ανοίξει με αυξημένα δικαιώματα…κλπ.
Διαβάστε σχετικά, στο γνωστό (για την πληρότητά του) Arch Wiki.

One thought on “pkexec αντί gksu(gksudo/kdesudo)

  1. Πολύ ωραίο και ενδιαφέρον άρθρο, μπράβο σου μεγάλε. ;)
    Είναι πάρα πολύ ενδιαφέρονται τέτοιου είδους άρθρα που αφορούν εντολές

Συμβάλετε κι εσείς με ένα σχόλιο

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s