Ας τα πάρουμε από την αρχή. Το Gnu/Linux σε όλες σχεδόν τις διανομές και εδώ και αρκετά χρόνια έχει ένα λίγο έως πολύ συγκεκριμένο τρόπο διαχείρησης του συστήματος, των permissions κλπ.
Υπάρχει ο λεγόμενος root, διαχειριστής του συστήματος, αρχηγός όλων, παντοδύναμος και ανυπέρβλητος. Μπορεί να σβήνει και να κάνει edit ότι θέλει, μπορεί να πειράζει τις ρυθμίσεις σε ότι θέλει, να εγκαθιστά και να απεγκαθιστά προγράμματα, να αλλάζει κωδικούς για τον εαυτό του αλλά και τους άλλους. Όταν είμαστε root στην κονσόλα βλέπουμε κάτι τέτοιο:
PCname:~#με έμφαση στο
:~# που είναι διαφορετικό απότι όταν είμαστε οποιοσδήποτε άλλος χρήστης.
Εκτός λοιπόν από τον root υπάρχουν και άλλοι χρήστες οι οποίοι παραδοσιακά είχαν διακαίωμα να χρησιμοποιούν τα προγράμματα (όχι όμως να εγκαθιστούν ή να απεγκαθιστούν) και να σβήνουν και να γράφουν μόνο εντός του home folder τους (στο /home/username) ή και όπου αλλού τους είχε δώσει την άδεια (αλλάζοντας τα permissions) o root. Όταν είμαστε σε κονσόλα ως απλός χρήστης βλέπουμε κάτι τέτοιο:
username@PCname:~$Παραδοσιακά λοιπόν, την διαχείρηση του συστήματος τι έκανε ο root και οι απλοί χρήστες (που μπορούσαν να ανήκουν σε κάποια groups με συγκεκριμένα permissions όλα δοσμένα από τον root ή από τους owners των αρχείων) μπορούσαν να επιρεάζουν μόνο το δικό τους περιβάλλον πχ με configuration files τα οποία βρίσκονται στο home folder τους ως κρυφά αρχεία (αυτά που το όνομα ξεκινά με "." πχ: .bashrc ή .bash_aliases).
suΗ εντολή
su (switch user) έδινε την δυνατότητα στον χρήστη να αλλάξει το "ποιος" είναι χωρίς να κάνει logout και login εκ νέου.
Γράφει στην κονσόλα
su username και του ζητείται το password του χρήστη username , αφού το πληκτρολογήσει σωστά πλέον από την κονσόλα αντιμετωπίζεται ως ο username (έχει δηλαδή τα αντίσοιχα permissions, home folder κλπ).
Επιδή πιο συχνά η χρήση της εντολής αυτής γίνεται για να αποκτήσει κάποιος δικαιώματα διαχειρηστή και να προβεί σε σημαντικές αλλαγές εκτός των δικαιωμάτων του ως χρήστη, από προεπιλογή το
su σημαίνει
su root και πατώντας απλά su και enter μας ζητείται το password του root. Αυτός είναι και ο λόγος που το su συχνά παρερμηνεύται ως συντομογραφία του super user. Η εντολή
exit αρκεί για να "βγούμε" από τον λογαριασμό στον οποίο έχουμε μεταβεί με την εντολή su και να επιστρέψουμε στον αρχικό με τον οποίο ανοίξαμε την κονσόλα. Φυσικά μπορούμε να χρησιμοποιήσουμε εκ νέου και το su.
sudoΤο sudo είναι ένα πρόγραμμα. Το πρόγραμμα αυτό επιτρέπει στον administrator του συστήματος (παραδοσιακά στον root) να δίνει σε διάφορους χρήστες το δικαίωμα να κάνουν πράγματα που κανονικά μπορεί μόνο ο root ή κάποιος άλλος χρήστης. Μπορεί να τους το επιτρέπει με την χρήση του κωδικού τους, του κωδικού του root ή και χωρίς την χρήση κωδικού. Το τι επιτρέπεται και σε ποιόν ορίζεται στο αρχείο sudoers ( /etc/sudoers ) το οποίο αρχικά μόνο ο root επιτρέπεται να αλλάξει (μετά βέβαια μπορεί να δώσει και σε άλλους αυτό το δικαίωμα).
Για παράδειγμα στο δικό μου αρχείο sudoers έχουμε τα εξής:
# Cmnd alias specification
Cmnd_Alias SHUT = /sbin/shutdown
Cmnd_Alias PRINT = /etc/init.d/cupsys
Cmnd_Alias HP = /etc/init.d/hplip
# User privilege specification
root ALL=(ALL) ALL
myusername ALL = NOPASSWD: SHUT, HP, PRINT
Το πρώτο τμήμα δημιουργεί συντομογραφίες για κάποιες εντολές και το δεύτερο ορίζει ποιός μπορεί να κάνει το κάθε τι.
Όπως βλέπουμε ο root προφανώς μπορεί να κάνει τα πάντα ενώ ο χρήστης (πάντα κάνω login ως χρήστης) έχει πρόσβαση σε δύο εντολές σχετικές με τις εκτυπώσεις και στην εντολή shutdown ώστε με
shutdown -h now να κλείνω τον υπολογιστή μου χωρίς να χρειάζεται να γίνω root και με
shutdown -r now να τον επανεκκινώ. (ω, ναι! κανονικά ο απλός χρήστης δεν έχει δικαίωμα να κλείσει το pc! άλλωστε μπορεί να είναι server ή ο root να τρέχει κάποιες δικές του διεργασίες που δεν θέλει να σταματήσουν).
Αυτά είναι όλα τα δικαιώματα που παρέχω στον εαυτό μου ως απλό χρήστη που επιρρεάζουν ολόκληρο το σύστημα. Κατά τα άλλα περιορίζομαι στο home folder μου και σε έναν δεύτερο σκληρό που μου έχω δώσει permissions καθώς και στο customization των προγραμμάτων που χρησιμοποιώ και του δικού μου desktop environment.
To Ubuntu τι κάνει?Πολλοί χρήστες για να κάνουν κάτι που απαιτούσε δικαιώματα που δεν είχαν (πχ να εγκαταστήσουν ένα πρόγραμμα) έκαναν su, γινόντουσαν root και μετά το ξέχναγαν με κίνδυνο να κάνουν ανεπανόρθωτη ζημιά στο σύστημα τους. (ένα rm -r / αρκεί για να τα καταστέψεις όλα).
Οι developers του Ubuntu παρατηρώντας αυτό, αποφάσισαν να ενθαρύνουν την χρήση του sudo για όλες αυτές τις διαδικασίες έτσι ώστε κάθε φορά να κάνεις ένα μόνο πράγμα (βάζοντας sudo μπροστά) και μετά πάλι να βρίσκεσαι χωρίς καταστροφικά δικαιώματα.
Η λογική αυτή δεν είναι κακή. Αυτά που κατά την γνώμη μου είναι προβληματικά είναι τα εξής σημεία:
1ον απενεργοποίησαν το su προς root και έτσι πρέπει να πατάω sudo κάθε φορά σε περίπτωση που θέλω να κάνω πολλά πράγματα ή να μυρίσω τα νύχια μου ότι με sudo su root θα γίνω "κάτι σαν root"
2ον το sudo δεν ζητά password άλλο από το απλό του χρήστη κάτι το οποίο είναι λιγότερο ασφαλές από ότι παραδοσιακά. Εγώ έχω ένα σχετικά απλό pass για το user account μου αλλά το root pass είναι πολύ δυνατό (αριθμοί, κεφαλαία, μικρά και σύμβολα). Αντίλογος: για τους περισσότερους πιο σημαντικά είναι τα αρχεία μας τα οποία ούτως η άλλος μπορούμε να σβήσουμε ως απλοί χρήστες παρά το αν θα καταστρέψει κάποιος το installation το οποιο μπορούμε να διορθώσουμε (εγώ όμως τα σημαντικά αρχεία μου τα κάνω backup σε σκληρο στον οποίο μόνο ο root έχει permissions διαγραφής)
3ο και σημαντικότερο. Ο μέσος χρήστης δεν έχει καταλάβει τι κάνει! δεν ξέρει ότι το sudo είναι πρόγραμμα, δεν ξέρει τι είναι το αρχείο sudoers, ποιός έχει διακαίωμα σε τι κλπ κλπ
έτσι οι παράγοντες "ασφάλεια" και "έλεγχος" που είναι σημεία για τα οποία περηφανεύεται το gnu/linux υπονομεύονται στον βωμό της "ευκολίας χρήσης" και της προστασίας του "n00b" από τον ίδιο του τον εαυτό.
Ενεργοποίηση*Για να ενεργοποιήσουμε το root account password (το account υπάρχει!) δίνουμε:
Κώδικας:
sudo passwd root
ενώ για να το απενεργοποιήσουμε εκ νέου:
Κώδικας:
sudo passwd -l root
Παρατηρήσεις:1ον Δεν είναι απαραίτητο να ενεργοποιήσετε το root account password για να κάνετε πολλά πράγματα με δικαιώματα root χωρίς να χρειάζεται το
sudo μπροστά από όλα. Αρκεί το εξής:
Κώδικας:
sudo su
ή Κώδικας:
sudo su root
2ον *Δεν έχει δοκιμαστεί η ενεργοποίηση από εμένα τον ίδιο! Ας το επιβεβαιώσουν και άλλοι με ubuntu*Linux Mint Το linux
Mint αφήνει στον χρήστη την επιλογή ενεργοποίησης του root account και του παρέχει και κάποιες πληροφορίες για το
sudo κλπ. Αυτή κατά την γνώμη μου είναι πολύ καλύτερη προσέγγιση.