Πώς να ελέγξετε την πρόσβαση sudo στο Linux

Η εντολή sudo σάς επιτρέπει να εκτελείτε εντολές στο Linux σαν να είστε κάποιος άλλος, όπως το root. Το sudo σάς επιτρέπει επίσης να ελέγχετε ποιος μπορεί να έχει πρόσβαση στις δυνατότητες του root, με ευαισθησία. Δώστε στους χρήστες πλήρη πρόσβαση ή αφήστε τους να χρησιμοποιήσουν ένα μικρό υποσύνολο εντολών. Σας δείχνουμε πώς.

Δικαιώματα sudo και Root

Όλοι έχουμε ακούσει (την υπεραπλούστευση) ότι τα πάντα στο Linux είναι ένα αρχείο. Στην πραγματικότητα, σχεδόν τα πάντα στο λειτουργικό σύστημα, από διεργασίες, αρχεία, καταλόγους, υποδοχές και σωλήνες μιλούν στον πυρήνα μέσω ενός περιγραφέα αρχείων. Έτσι, παρόλο που τα πάντα δεν είναι αρχείο, τα περισσότερα αντικείμενα του λειτουργικού συστήματος αντιμετωπίζονται σαν να ήταν. Όπου είναι δυνατόν, ο σχεδιασμός λειτουργικών συστημάτων Linux και Unix-όπως τηρεί αυτή την αρχή.

Η έννοια του “όλα είναι ένα αρχείο” είναι εκτεταμένη στο Linux. Είναι εύκολο να δούμε τότε, πώς οι άδειες αρχείων στο Linux έγιναν ένας από τους βασικούς άξονες των προνομίων και δικαιωμάτων των χρηστών. Εάν είστε κάτοχος ενός αρχείου ή καταλόγου (ένα ειδικό είδος αρχείου), μπορείτε να κάνετε ό,τι θέλετε με αυτό, συμπεριλαμβανομένης της επεξεργασίας, της μετονομασίας, της μετακίνησης και της διαγραφής του. Μπορείτε επίσης να ορίσετε τα δικαιώματα στο αρχείο έτσι ώστε άλλοι χρήστες ή ομάδες χρηστών να μπορούν να διαβάσουν, να τροποποιήσουν ή να εκτελέσουν το αρχείο. Όλοι διέπονται από αυτές τις άδειες.

Όλοι όσοι είναι, εκτός από τον υπερχρήστη, γνωστοί ως root. Ο λογαριασμός root είναι ένας ειδικά προνομιακός λογαριασμός. Δεν δεσμεύεται από τα δικαιώματα σε κανένα από τα αντικείμενα του λειτουργικού συστήματος. Ο χρήστης root μπορεί να κάνει οτιδήποτε και, λίγο πολύ, ανά πάσα στιγμή.

Φυσικά, όποιος έχει πρόσβαση στον κωδικό πρόσβασης του root μπορεί να κάνει το ίδιο. Θα μπορούσαν να προκαλέσουν τον όλεθρο είτε κακόβουλα είτε κατά λάθος. Στην πραγματικότητα, ο χρήστης root μπορεί να προκαλέσει τον όλεθρο κάνοντας επίσης ένα λάθος. Κανείς δεν είναι αλάνθαστος. Είναι επικίνδυνα πράγματα.

Αυτός είναι ο λόγος για τον οποίο θεωρείται πλέον η καλύτερη πρακτική να μην συνδέεστε καθόλου ως root. Συνδεθείτε με έναν κανονικό λογαριασμό χρήστη και χρησιμοποιήστε το sudo to αυξήστε τα προνόμιά σας για τη σύντομη διάρκεια τα χρειάζεσαι. Συχνά αυτό είναι μόνο για να εκδώσουμε μια μόνο εντολή.

Η λίστα των sudoers

Το sudo ήταν ήδη εγκατεστημένο στους υπολογιστές Ubuntu 18.04.3, Manjaro 18.1.0 και Fedora 31 που χρησιμοποιήθηκαν για την έρευνα αυτού του άρθρου. Αυτό δεν αποτελεί έκπληξη. Το sudo υπάρχει από τις αρχές της δεκαετίας του 1980 και έχει γίνει το τυπικό μέσο λειτουργίας superuser για όλες σχεδόν τις διανομές.

Όταν εγκαθιστάτε μια σύγχρονη διανομή, ο χρήστης που δημιουργείτε κατά την εγκατάσταση προστίθεται σε μια λίστα χρηστών που ονομάζεται sudoers. Αυτοί είναι οι χρήστες που μπορούν να χρησιμοποιήσουν την εντολή sudo. Επειδή έχετε δυνάμεις sudo, μπορείτε να τις χρησιμοποιήσετε για να προσθέσετε άλλους χρήστες στη λίστα των sudoers.

Φυσικά, είναι απερίσκεπτο να μοιράζεις το καθεστώς πλήρους υπερχρήστη ηθελημένα ή μη ή σε οποιονδήποτε έχει μόνο μερική ή συγκεκριμένη ανάγκη. Η λίστα sudoers σάς επιτρέπει να καθορίσετε με ποιες εντολές επιτρέπεται να χρησιμοποιούν το sudo οι διάφοροι χρήστες. Με αυτόν τον τρόπο, δεν τους δίνετε τα κλειδιά για το βασίλειο, αλλά μπορούν ακόμα να επιτύχουν αυτό που πρέπει να κάνουν.

  Πώς να εγκαταστήσετε το SuperTuxKart σε Linux

Εκτέλεση εντολής ως άλλος χρήστης

Αρχικά, ονομαζόταν “superuser do”, επειδή μπορούσες να κάνεις πράγματα ως υπερχρήστης. Το εύρος του έχει διευρυνθεί τώρα και μπορείτε να χρησιμοποιήσετε το sudo για να εκτελέσετε μια εντολή σαν να είστε οποιοσδήποτε χρήστης. Έχει μετονομαστεί για να αντικατοπτρίζει αυτή τη νέα λειτουργικότητα. Τώρα ονομάζεται «υποκατάστατος χρήστης».

Για να χρησιμοποιήσουμε το sudo για να εκτελέσουμε μια εντολή ως άλλος χρήστης, πρέπει να χρησιμοποιήσουμε την επιλογή -u (χρήστης). Εδώ, θα τρέξουμε το ποιός είμαι εντολή όπως ο χρήστης mary. Εάν χρησιμοποιείτε την εντολή sudo χωρίς την επιλογή -u, θα εκτελέσετε την εντολή ως root.

Και φυσικά, επειδή χρησιμοποιείτε sudo, θα σας ζητηθεί ο κωδικός πρόσβασής σας.

sudo -u mary whoami

Η απάντηση από το whoami μας λέει ότι ο λογαριασμός χρήστη που εκτελεί την εντολή είναι mary.

Μπορείτε να χρησιμοποιήσετε την εντολή sudo για να συνδεθείτε ως άλλος χρήστης χωρίς να γνωρίζετε τον κωδικό πρόσβασής του. Θα σας ζητηθεί ο δικός σας κωδικός πρόσβασης. Πρέπει να χρησιμοποιήσουμε την επιλογή -i (είσοδος).

sudo -i -u mary
pwd
whoami
ls -hl
exit

Έχετε συνδεθεί ως mary. Η επεξεργασία των αρχείων “.bashrc”, “.bash_aliases” και “.profile” για τον λογαριασμό χρήστη mary γίνεται ακριβώς σαν να είχε συνδεθεί ο ίδιος ο κάτοχος του λογαριασμού χρήστη mary.

Η γραμμή εντολών αλλάζει για να αντικατοπτρίζει αυτό είναι μια περίοδος λειτουργίας για λογαριασμό χρήστη mary.
Η εντολή pwd διαμαρτύρεται ότι είστε τώρα στο Mary’s οικιακό κατάλογο.
Η whoami μας λέει ότι χρησιμοποιείτε λογαριασμό χρήστη mary.
Τα αρχεία στον κατάλογο ανήκουν στον λογαριασμό χρήστη mary.
Η εντολή εξόδου σας επιστρέφει στο την κανονική συνεδρία του λογαριασμού χρήστη σας.

Επεξεργασία του αρχείου sudoers

Για να προσθέσετε χρήστες στη λίστα των ατόμων που μπορούν να χρησιμοποιήσουν το sudo , πρέπει να επεξεργαστείτε το αρχείο sudoers. Είναι ζωτικής σημασίας να το κάνετε μόνο χρησιμοποιώντας την εντολή visudo. Η εντολή visudo εμποδίζει πολλά άτομα να προσπαθήσουν να επεξεργαστούν το αρχείο sudoers ταυτόχρονα. Επίσης εκτελεί έλεγχο σύνταξης και ανάλυση στα περιεχόμενα του αρχείου καθώς τα αποθηκεύετε.

Εάν οι αλλαγές σας δεν περάσουν τις δοκιμές, το αρχείο δεν αποθηκεύεται στα τυφλά. Έχετε επιλογές. Μπορείτε να ακυρώσετε και να εγκαταλείψετε τις αλλαγές, να επιστρέψετε και να επεξεργαστείτε ξανά τις αλλαγές ή να αναγκάσετε να αποθηκευτούν οι εσφαλμένες αλλαγές. Η τελευταία επιλογή είναι μια πολύ κακή ιδέα. Μην μπείτε στον πειρασμό να το κάνετε αυτό. Μπορείτε να βρεθείτε σε μια κατάσταση όπου όλοι κατά λάθος αποκλείονται από τη χρήση του sudo.

Αν και ξεκινάτε τη διαδικασία επεξεργασίας χρησιμοποιώντας την εντολή visudo, το visudo δεν είναι πρόγραμμα επεξεργασίας. Καλεί έναν από τους υπάρχοντες επεξεργαστές σας για να εκτελέσει τις επεξεργασίες αρχείων. Στο Manjaro και στο Ubuntu, ξεκίνησε η εντολή visudo ο απλός επεξεργαστής νανο. Στο Fedora, το visudo κυκλοφόρησε το πιο ικανό—αλλά λιγότερο διαισθητικό-δύναμη.

Εάν προτιμάτε να χρησιμοποιήσετε το nano στο Fedora, μπορείτε να το κάνετε εύκολα. Πρώτα, εγκαταστήστε το nano:

sudo dnf εγκατάσταση nano

Και τότε έπρεπε να γίνει επίκληση του visudo με αυτήν την εντολή:

sudo EDITOR=nano visudo

Φαίνεται καλός υποψήφιος για ψευδώνυμο. Ο επεξεργαστής nano ανοίγει με το αρχείο sudoers φορτωμένο σε αυτό.

Προσθήκη χρηστών στην ομάδα sudo

Χρησιμοποιήστε το visudo για να ανοίξετε το αρχείο sudoers. Είτε χρησιμοποιήστε αυτήν την εντολή είτε αυτήν που περιγράφεται παραπάνω για να καθορίσετε τον επεξεργαστή της επιλογής σας:

sudo visudo

Κάντε κύλιση στο αρχείο sudoers μέχρι να δείτε τον ορισμό της καταχώρησης %sudo.

Το σύμβολο ποσοστού υποδεικνύει ότι πρόκειται για ορισμό ομάδας και όχι για ορισμό χρήστη. Σε ορισμένες διανομές, η γραμμή %sudo έχει έναν κατακερματισμό # στην αρχή της γραμμής. Αυτό κάνει τη γραμμή ένα σχόλιο. Εάν συμβαίνει αυτό, αφαιρέστε το hash και αποθηκεύστε το αρχείο.

  Πώς να ελέγξετε ποια GPU είναι εγκατεστημένη στο Linux

Η γραμμή %sudo αναλύεται ως εξής:

%sudo: Το όνομα της ομάδας.
ALL=: Αυτός ο κανόνας ισχύει για όλους τους κεντρικούς υπολογιστές σε αυτό το δίκτυο.
(ALL:ALL): τα μέλη αυτής της ομάδας μπορούν να εκτελούν εντολές όπως όλοι οι χρήστες και όλες οι ομάδες.
Όλα: τα μέλη αυτής της ομάδας μπορούν να εκτελέσουν όλες τις εντολές.

Για να αναδιατυπώσετε λίγο αυτό, τα μέλη αυτής της ομάδας μπορούν να εκτελέσουν οποιαδήποτε εντολή, όπως οποιοσδήποτε χρήστης ή οποιαδήποτε ομάδα, σε αυτόν τον υπολογιστή ή σε οποιονδήποτε άλλο κεντρικό υπολογιστή σε αυτό το δίκτυο. Έτσι, ένας απλός τρόπος για να δώσετε σε κάποιον δικαιώματα root και τη δυνατότητα χρήσης sudo, είναι να τον προσθέσετε στην ομάδα sudo.

Έχουμε δύο χρήστες, τον Tom και τη Mary, με λογαριασμούς χρηστών tom και mary αντίστοιχα. Θα προσθέσουμε τον λογαριασμό χρήστη tom στην ομάδα sudo με την εντολή usermod. Η επιλογή -G (ομάδες) καθορίζει την ομάδα στην οποία θα προσθέσουμε τον λογαριασμό tom. Η επιλογή -a (προσάρτηση) προσθέτει αυτήν την ομάδα στη λίστα των ομάδων στις οποίες ανήκει ήδη το λογαριασμό χρήστη. Χωρίς αυτήν την επιλογή, το tom λογαριασμού χρήστη θα τοποθετηθεί στη νέα ομάδα αλλά θα καταργηθεί από οποιεσδήποτε άλλες ομάδες.

sudo usermod -a -G sudo tom

Ας δούμε σε ποιες ομάδες ανήκει η Mary:

groups

Ο λογαριασμός χρήστη mary είναι μόνο στην ομάδα mary.

Ας το ελέγξουμε με τον Τομ:

groups

Ο λογαριασμός χρήστη tom—και επομένως ο Tom—είναι στις ομάδες tom και sudo.

Ας προσπαθήσουμε να κάνουμε τη Mary να κάνει κάτι που απαιτεί προνόμια sudo.

sudo less /etc/shadow

Η Mary δεν μπορεί να κοιτάξει μέσα στο περιορισμένο αρχείο “/etc/shadow”. Δέχεται ένα ήπιο μήνυμα επειδή προσπάθησε να χρησιμοποιήσει το sudo χωρίς άδεια. Ας δούμε πώς τα πάει ο Τομ:

sudo less /etc/shadow

Μόλις ο Tom εισάγει τον κωδικό πρόσβασής του, εμφανίζεται το αρχείο /etc/shadow.

Απλώς με την προσθήκη του στην ομάδα sudo, έχει ανυψωθεί στις τάξεις της ελίτ εκείνων που μπορούν να χρησιμοποιήσουν το sudo. Εντελώς απεριόριστη.

Παροχή περιορισμένων δικαιωμάτων sudo στους χρήστες

Ο Tom έχει λάβει πλήρη δικαιώματα sudo. Μπορεί να κάνει οτιδήποτε μπορεί να κάνει ο root —ή οποιοσδήποτε άλλος στην ομάδα sudo. Αυτό μπορεί να του δώσει περισσότερη δύναμη από αυτή που είστε στην ευχάριστη θέση να παραδώσετε. Μερικές φορές υπάρχει απαίτηση για έναν χρήστη να εκτελέσει μια λειτουργία που απαιτεί δικαιώματα root, αλλά δεν υπάρχει δικαιολογημένη περίπτωση να έχει πλήρη πρόσβαση sudo. Μπορείτε να επιτύχετε αυτήν την ισορροπία προσθέτοντάς τα στο αρχείο sudoers και αναφέροντας τις εντολές που μπορούν να χρησιμοποιήσουν.

Ας γνωρίσουμε τον Χάρι, κάτοχο του λογαριασμού χρήστη harry. Δεν ανήκει στην ομάδα sudo και δεν έχει προνόμια sudo.

groups

Είναι χρήσιμο για τον Χάρι να μπορεί να εγκαταστήσει λογισμικό, αλλά δεν θέλουμε να έχει πλήρη δικαιώματα sudo. Εντάξει κανένα πρόβλημα. ας πυροδοτήσουμε το visudo:

sudo visudo

Κάντε κύλιση προς τα κάτω στο αρχείο μέχρι να ξεπεράσετε τους ορισμούς της ομάδας. Θα προσθέσουμε μια γραμμή για τον Χάρι. Επειδή αυτός είναι ορισμός χρήστη και όχι ορισμός ομάδας, δεν χρειάζεται να ξεκινήσουμε τη γραμμή με σύμβολο ποσοστού.

Η καταχώρηση για τον λογαριασμό χρήστη harry είναι:

harry    ALL=/usr/bin/apt-get

Σημειώστε ότι υπάρχει μια καρτέλα μεταξύ του “harry” και του “ALL=”.

Αυτό σημαίνει ότι ο λογαριασμός χρήστη Harry μπορεί να χρησιμοποιήσει τις εντολές που αναφέρονται σε όλους τους κεντρικούς υπολογιστές που είναι συνδεδεμένοι σε αυτό το δίκτυο. Υπάρχει μια εντολή που παρατίθεται, η οποία είναι “/usr/bin/apt-get.” Μπορούμε να παραχωρήσουμε στον Χάρι πρόσβαση σε περισσότερες από μία εντολές προσθέτοντάς τες στη λίστα εντολών, διαχωρισμένες με κόμματα.

  Πώς να εγκαταστήσετε το Arch Linux πιο γρήγορα με το Calam Arch

Προσθέστε τη γραμμή στο αρχείο sudoers και αποθηκεύστε το αρχείο. Εάν θέλετε να ελέγξετε ξανά ότι η γραμμή είναι συντακτικά σωστή, μπορούμε να ζητήσουμε από το visudo να σαρώσει το αρχείο και να ελέγξει τη σύνταξη για εμάς, χρησιμοποιώντας την επιλογή -c (μόνο έλεγχος):

sudo visudo -c

Οι έλεγχοι γίνονται και η visudo αναφέρει ότι όλα καλά. Ο Χάρι θα πρέπει τώρα να μπορεί να χρησιμοποιεί το apt-get για εγκατάσταση λογισμικού αλλά θα πρέπει να απορριφθεί εάν προσπαθήσει να χρησιμοποιήσει οποιαδήποτε άλλη εντολή που απαιτεί sudo.

sudo apt-get install finger

Τα κατάλληλα δικαιώματα sudo έχουν παραχωρηθεί στον Χάρι και είναι σε θέση να εγκαταστήσει το λογισμικό.

Τι συμβαίνει εάν ο Χάρι προσπαθήσει να χρησιμοποιήσει μια διαφορετική εντολή που απαιτεί sudo;

sudo shutdown now

Ο Χάρι εμποδίζεται να εκτελέσει την εντολή. Του παραχωρήσαμε με επιτυχία συγκεκριμένη, περιορισμένη πρόσβαση. Μπορεί να χρησιμοποιήσει την εντολή που έχει οριστεί και τίποτα άλλο.

Χρήση ψευδωνύμων χρήστη sudoers

Αν θέλουμε να δώσουμε στη Μαίρη τα ίδια προνόμια, θα μπορούσαμε να προσθέσουμε μια γραμμή στο αρχείο sudoers για τον λογαριασμό χρήστη mary με τον ίδιο ακριβώς τρόπο που κάναμε με τον Χάρι. Ένας άλλος, πιο καθαρός, τρόπος για να πετύχετε το ίδιο πράγμα είναι να χρησιμοποιήσετε ένα User_Alias.

στο αρχείο sudoers, ένα User_Alias ​​περιέχει μια λίστα με ονόματα λογαριασμών χρήστη. Το όνομα του User_Alias ​​μπορεί στη συνέχεια να χρησιμοποιηθεί σε έναν ορισμό για να αντιπροσωπεύει όλους αυτούς τους λογαριασμούς χρηστών. Εάν θέλετε να αλλάξετε τα δικαιώματα για αυτούς τους λογαριασμούς χρηστών, έχετε μόνο μία γραμμή για επεξεργασία.

Ας δημιουργήσουμε ένα User_Alias ​​και ας το χρησιμοποιήσουμε στο αρχείο sudoers.

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.


Προσθέστε το User_Alias ​​πληκτρολογώντας:

User_Alias INSTALLERS = harry, mary

Κάθε στοιχείο χωρίζεται από ένα κενό και όχι με μια καρτέλα. Η λογική αναλύεται ως εξής:

User_Alias: Αυτό λέει στο visudo ότι πρόκειται να είναι User_Alias.
ΕΓΚΑΤΑΣΤΑΤΕΣ: Αυτό είναι ένα αυθαίρετο όνομα για αυτό το ψευδώνυμο.
= harry, mary: Η λίστα των χρηστών που πρέπει να συμπεριληφθούν σε αυτό το ψευδώνυμο.

Τώρα θα επεξεργαστούμε τη γραμμή που προσθέσαμε προηγουμένως για τον λογαριασμό χρήστη harry:

harry    ALL=/usr/bin/apt-get

Αλλάξτε το έτσι ώστε να διαβάζει:

INSTALLERS    ALL=/usr/bin/apt-get

Αυτό λέει ότι όλοι οι λογαριασμοί χρηστών που περιέχονται στον ορισμό του “ΕΓΚΑΤΑΣΤΑΤΕΣ” User_Alias ​​μπορούν να εκτελέσουν την εντολή apt-get. Μπορούμε να το δοκιμάσουμε με τη Mary, η οποία θα πρέπει τώρα να μπορεί να εγκαταστήσει λογισμικό.

sudo apt-get install colordiff

Η Mary μπορεί να εγκαταστήσει το λογισμικό επειδή βρίσκεται στο User_Alias ​​”INSTALLERS” και στο User_Alias ​​έχουν εκχωρηθεί αυτά τα δικαιώματα.

Τρία γρήγορα κόλπα sudo

Όταν ξεχάσετε να προσθέσετε sudo σε μια εντολή, πληκτρολογήστε

sudo !!

Και η τελευταία εντολή θα επαναληφθεί με το sudo να προστεθεί στην αρχή της γραμμής.

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

sudo -k

Αναρωτηθήκατε ποτέ πού μπορείτε να δείτε αποτυχημένες προσπάθειες εντολών sudo; Πηγαίνουν στο αρχείο “/var/log/auth.log”. Μπορείτε να το δείτε με:

less /var/log/auth.log

Μπορούμε να δούμε την καταχώριση για λογαριασμό χρήστη mary που ήταν συνδεδεμένη στο TTY pts/1 όταν προσπάθησε να εκτελέσει την εντολή τερματισμού λειτουργίας ως χρήστη “root”.

Με μεγάλη δύναμη…

…έρχεται η δυνατότητα ανάθεσης μερών του σε άλλους. Τώρα ξέρετε πώς να ενδυναμώνετε άλλους χρήστες επιλεκτικά.