Τι σημαίνει το sudo στο Linux. Χρήση sudo στο Ubuntu για αρχάριους. Είσοδος ως root

Μερικές φορές, χρειάζεται απλώς να εκτελέσετε μια εντολή από άλλο χρήστη. Και υπάρχουν διάφοροι τρόποι για να γίνει αυτό. Θα μιλήσω για αυτά στο άρθρο μου «Εκτέλεση εντολής ως άλλος χρήστης στο Unix/Linux».

Εκτελέστε μια εντολή ως άλλος χρήστης στο Unix/Linux - μέθοδος 1

Και έτσι, μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα SUDO. Ας δούμε ένα παράδειγμα:

$ sudo -H -u Your_another_user -c "ping site"

Επεξηγήσεις:

  • -H YOUR_HOME: Ορίζει το HOME (μεταβλητή περιβάλλοντος για το σπίτι ενός συγκεκριμένου χρήστη) και από προεπιλογή είναι root.
  • -u YOUR_USER: Καθορίστε τον χρήστη από τον οποίο θα εκτελεστεί η εντολή.
  • -c YOUR_COMMAND: Χρησιμεύει ως επιλογή για την εισαγωγή μιας εντολής.

Κάτι σαν αυτό.

Εκτελέστε μια εντολή ως άλλος χρήστης στο Unix/Linux - μέθοδος 2

Μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα SU. Και τώρα θα δώσω μερικά παραδείγματα.

Συνδεθείτε ως χρήστης root

Για να αποκτήσετε root, τρέξτε:

$su -ρίζα

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

Εδώ είναι ένα παράδειγμα εντολής:

# su - root -c "YOUR_COMMAND_HERE"

Su - -c "YOUR_COMMAND_HERE arg1"

Εκτελέστε μια εντολή από άλλο χρήστη χρησιμοποιώντας su

Λοιπόν, ορίστε ένα παράδειγμα:

# su -c "/opt/solr/bin/solr create -c test_solr_core -n solrconfig.xml" -s /bin/sh solr Δημιουργήθηκε νέος πυρήνας "test_solr_core"

Ας δούμε ένα άλλο παράδειγμα:

$ su Another_user -c "site ping"

$su -YOUR_USER -c "YOUR_COMMAND_HERE"

  • — — Θα προσομοιώσει τη σύνδεση του καθορισμένου χρήστη.
  • -c - Χρησιμοποιείται για τον καθορισμό της εντολής που θα εκτελεστεί (για τον καθορισμένο χρήστη).

Κάτι σαν αυτό.

Εκτελέστε μια εντολή ως άλλος χρήστης στο Unix/Linux - μέθοδος 3

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

# runuser -l YOUR_USER -c "YOUR_COMMAND_HERE"

Ως παράδειγμα, θα δείξω την ακόλουθη γραμμή:

# runuser -l nginx -c "service nginx start"

ΥΓ: Η εντολή runuser δεν απαιτεί κωδικό πρόσβασης και πρέπει να εκτελείται μόνο από τον χρήστη root.

Βασικές επιλογές:

  • -l: Δημιουργήστε ένα κέλυφος σύνδεσης χρησιμοποιώντας το αρχείο PAM runuser-l αντί του προεπιλεγμένου.
  • -ζ: Δείχνει στην κύρια ομάδα.
  • -G: Υποδεικνύει μια επιπλέον ομάδα.
  • -c: Στην πραγματικότητα, χρησιμοποιείται για τον καθορισμό μιας εντολής.
  • –session-command=COMMAND: Περάστε μια μεμονωμένη εντολή στο κέλυφος με την επιλογή “-c” και δεν δημιουργείτε νέα συνεδρία.
  • -m: Μην επαναφέρετε τις μεταβλητές περιβάλλοντος (ENV).

Αυτό ήταν, το θέμα "Εκτέλεση εντολής ως άλλος χρήστης στο Unix/Linux" ολοκληρώθηκε.

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

Πώς λειτουργεί το sudo;

Πριν προχωρήσουμε στη ρύθμιση της πρόσβασης στο βοηθητικό πρόγραμμα sudo, ας δούμε πώς λειτουργεί. Υπάρχουν δύο τρόποι για να αποκτήσετε δικαιώματα διαχειριστή στο Linux. Μπορείτε να μεταβείτε στον χρήστη root χρησιμοποιώντας την εντολή su ή μπορείτε να περάσετε την επιθυμητή εντολή ως παράμετρο στο βοηθητικό πρόγραμμα sudo, το οποίο θα την εκτελέσει με δικαιώματα διαχειριστή. Επιπλέον, η δεύτερη μέθοδος είναι προτιμότερη, γιατί δεν θα ξεχνάτε ότι χρησιμοποιείτε δικαιώματα root και δεν θα κάνετε τίποτα περιττό.
Το όνομα της ομάδας σημαίνει υποκατάστατο χρήστη κάνειή σούπερ χρήστης.Το βοηθητικό πρόγραμμα σάς επιτρέπει να εκτελείτε προγράμματα ως άλλος χρήστης, αλλά πιο συχνά ως χρήστης root. Το βοηθητικό πρόγραμμα αναπτύχθηκε το 1980 από τους Bob Cogshell και Cliff Spencer. Κατά τη διάρκεια αυτής της περιόδου, πολλοί προγραμματιστές έχουν αλλάξει και έχουν προστεθεί πολλές δυνατότητες.
Το sudo λειτουργεί χάρη στη σημαία πρόσβασης SUID. Εάν αυτή η σημαία έχει οριστεί για ένα πρόγραμμα, τότε εκτελείται όχι για λογαριασμό του χρήστη που το εκκίνησε, αλλά για λογαριασμό του κατόχου, δεδομένου ότι το αρχείο ανήκει στο sudo, τότε το βοηθητικό πρόγραμμα εκτελείται ως root. Στη συνέχεια διαβάζει τις ρυθμίσεις του, ζητά τον κωδικό πρόσβασης του χρήστη και αποφασίζει εάν μπορεί να επιτραπεί στον χρήστη να εκτελεί εντολές ως διαχειριστής. Εάν ναι, τότε εκτελείται η εντολή που δόθηκε στην παράμετρο.
Τώρα που ξέρετε τη θεωρία, ας δούμε πώς να ρυθμίσετε το sudo στο Linux.

Ρύθμιση του sudo σε Linux

Όλες οι ρυθμίσεις sudo βρίσκονται στο αρχείο /etc/sudores. Εδώ μπορείτε να διαμορφώσετε πολλές παραμέτρους, ξεκινώντας από το ποιος θα επιτρέπεται να εκτελεί εντολές για λογαριασμό του υπερχρήστη και τελειώνει με τον περιορισμό του συνόλου των διαθέσιμων εντολών.
Για να ανοίξετε ένα αρχείο για επεξεργασία, πληκτρολογήστε την ακόλουθη εντολή ως υπερχρήστης:

Μπορείτε επίσης να καθορίσετε το πρόγραμμα επεξεργασίας κειμένου στο οποίο θέλετε να επεξεργαστείτε το αρχείο διαμόρφωσης:

# EDITOR=nano visudo

Στη συνέχεια θα δούμε τις πιο ενδιαφέρουσες ρυθμίσεις που μπορείτε να ορίσετε σε αυτό το αρχείο. Αλλά πρώτα, ας δούμε τη βασική σύνταξη αρχείων. Αποτελείται από δύο τύπους συμβολοσειρών, αυτά είναι ψευδώνυμα που σας επιτρέπουν να δημιουργήσετε λίστες χρηστών και σημαίες, καθώς και τους ίδιους τους κανόνες, οι οποίοι καθορίζουν πώς θα συμπεριφέρεται η εντολή sudo. Η σύνταξη του ψευδώνυμου μοιάζει με αυτό:
πληκτρολογήστε alias_name = στοιχείο1, στοιχείο2, στοιχείο3
Ο τύπος καθορίζει ποιος τύπος Alice πρέπει να δημιουργηθεί, το όνομα είναι το όνομα που θα χρησιμοποιηθεί και η λίστα στοιχείων καθορίζει τα στοιχεία που θα υπονοούνται όταν γίνεται αναφορά σε αυτό το όνομα.
Η περιγραφή των δικαιωμάτων χρήστη έχει μια ελαφρώς διαφορετική σύνταξη:
οικοδεσπότης χρήστη = (other_user:group)της ομάδας
Ο χρήστης καθορίζει τον χρήστη ή την ομάδα για την οποία δημιουργούμε τον κανόνα, ο κεντρικός υπολογιστής είναι ο υπολογιστής για τον οποίο θα ισχύει αυτός ο κανόνας. Ένας άλλος χρήστης - κάτω από το πρόσχημα του χρήστη ο πρώτος μπορεί να εκτελέσει εντολές και ο τελευταίος μπορεί να εκτελέσει επιτρεπόμενες εντολές. Ένα ψευδώνυμο μπορεί να χρησιμοποιηθεί αντί για οποιαδήποτε από τις παραμέτρους. Και τώρα ρυθμίζοντας το sudo στο Debian και σε άλλες διανομές.

Βασικές ρυθμίσεις

Το ψευδώνυμο Προεπιλογές σάς επιτρέπει να ορίσετε τυπικές παραμέτρους για τη λειτουργία του βοηθητικού προγράμματος, τις οποίες θα εξετάσουμε σε αυτήν την ενότητα. Ένα τέτοιο ψευδώνυμο ξεκινά με τη λέξη Defaults, ακολουθούμενη από το όνομα της σημαίας. Εάν υπάρχει σύμβολο ! μπροστά από το όνομα, αυτό σημαίνει ότι η σημαία πρέπει να είναι ενεργοποιημένη, διαφορετικά, απενεργοποιήστε την:
Απενεργοποιήστε την εισαγωγή την πρώτη φορά που τη χρησιμοποιείτε:

Προεπιλογές! διάλεξη


Ο υπερχρήστης δεν μπορεί να κάνει sudo:

Προεπιλογές !root_sudo



Τώρα αν προσπαθήσετε να εκτελέσετε sudo sudo τίποτα δεν θα λειτουργήσει:


Αλλάξτε τον αρχικό κατάλογο για τον χρήστη-στόχο, αφήνοντας τον φάκελο του τρέχοντος χρήστη ως τον αρχικό κατάλογο από προεπιλογή:

Προεπιλογές set_home



Αποθηκεύστε τη λίστα των ομάδων του τρέχοντος χρήστη:

Προεπιλογές !preserve_groups



Ζητήστε κωδικό πρόσβασης υπερχρήστη αντί για κωδικό πρόσβασης χρήστη:



Στη συνέχεια, ας δούμε τις μεταβλητές που μπορείτε να ορίσετε τιμές για να ορίσετε τις επιθυμητές ρυθμίσεις:
Ορίστε τον αριθμό των προσπαθειών κωδικού πρόσβασης πριν από την έξοδο του sudo, η προεπιλογή είναι 3:

Προεπιλογές passwd_tries=5





Ο αριθμός των λεπτών που θα περάσουν πριν το sudo ζητήσει ξανά κωδικό πρόσβασης είναι 5 από προεπιλογή. Εάν ορίσετε την τιμή στο 0, θα ζητά πάντα κωδικό πρόσβασης, ανεξάρτητα από το πόσο καιρό πριν χρησιμοποιήσατε το βοηθητικό πρόγραμμα:

Προεπιλογές timestamp_timeout=10



Η ακόλουθη παράμετρος καθορίζει τον αριθμό των λεπτών που το sudo θα περιμένει να πληκτρολογηθεί ξανά ένας κωδικός πρόσβασης εάν εισαχθεί λανθασμένα:

Προεπιλογές passwd_timeout=10



Μπορείτε να αλλάξετε το μήνυμα που εμφανίζεται όταν σας ζητηθεί κωδικός πρόσβασης:

Defaults passprompt="Ο κωδικός πρόσβασής σας:"


Μπορείτε να καθορίσετε έναν άλλο χρήστη, όχι root, από τον οποίο θα εκτελούνται όλες οι εντολές, για αυτήν τη χρήση:

Προεπιλογές runas_default="user"

Μπορείτε να καταγράψετε όλες τις προσπάθειες σύνδεσης στο sudo:

Προεπιλογή logfile=/var/log/sudo



Στη συνέχεια προσπαθούμε να ελέγξουμε τη λειτουργία του αρχείου καταγραφής:

$ sudo cat /var/log/sudo



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

Ρύθμιση χρηστών sudo

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

ΟΛΟΙ ΟΛΟΙ = (ΟΛΟΙ) ΟΛΟΙ



Μια τέτοια ομάδα είναι πολύ ανασφαλής, επιτρέπει σε όλους και τα πάντα. Το πρώτο ALL είναι να επιτρέψει σε όλους τους χρήστες, το δεύτερο ALL είναι για όλους τους κεντρικούς υπολογιστές, το τρίτο ALL είναι να επιτραπεί η σύνδεση ως οποιοσδήποτε χρήστης και το τέταρτο είναι να επιτραπεί η εκτέλεση οποιασδήποτε εντολής. Αλλά μια άλλη κατασκευή χρησιμοποιείται πολύ πιο συχνά:

%wheel ALL = (ALL) ALL


Σημαίνει το ίδιο με το προηγούμενο, μόνο που εδώ δεν επιτρέπουμε σε όλους τους χρήστες να χρησιμοποιούν sudo, αλλά μόνο σε όσους είναι μέλη της ομάδας τροχών.

%wheel ALL = (root) ALL

Εδώ έχουμε ήδη περιορίσει την πιθανή επιλογή των χρηστών μόνο στον χρήστη root. Μπορείτε επίσης να καθορίσετε την ομάδα χρηστών για λογαριασμό της οποίας μπορεί να εκτελεί εντολές:

%wheel ALL = (root:admins) ALL



Αυτό σημαίνει ότι μπορείτε να εκτελέσετε την εντολή ως root ή άλλος χρήστης από την ομάδα διαχειριστών. Μπορούμε επίσης να καθορίσουμε εντολές που μπορεί να εκτελέσει ο χρήστης. Για παράδειγμα:
  • Runas_Alias- ψευδώνυμα χρηστών για λογαριασμό των οποίων θα εκτελούνται οι εντολές.
  • Host_Alias- ψευδώνυμο υποδοχής
  • Cmnd_Alias- ψευδώνυμο εντολής.
  • Για παράδειγμα, ας δημιουργήσουμε τέσσερα ψευδώνυμα και ας τα χρησιμοποιήσουμε στον κανόνα μας:

    User_Alias​Users = user1,user2,user3
    Runas_Alias Admins = root,admin
    Host_Alias ​​· Hosts = host1,host2
    Cmd_Alias Cmds = /bin/mount,/bin/umount

    Users Hosts = (Διαχειριστές) Cmds

    Αυτό σημαίνει ότι οι χρήστες από τη λίστα χρηστών θα μπορούν να εκτελούν εντολές Cmds για λογαριασμό των χρηστών Amdins στους κεντρικούς υπολογιστές Hosts.
    Λίγα λόγια μένουν ακόμα να πούμε για τις σημαίες. Η σημαία NOPASSWD σάς λέει να μην ζητάτε κωδικό πρόσβασης κατά την εκτέλεση αυτού του κανόνα. Για παράδειγμα, για να επιτρέψετε σε όλους τους χρήστες να εκτελέσουν την εντολή mount με sudo χωρίς κωδικό πρόσβασης:

    ALL ALL = (root) NOPASSWD: /bin/mount

    Μπορείτε επίσης να αποτρέψετε την εκτέλεση αυτής της συγκεκριμένης εντολής χρησιμοποιώντας τη σημαία NOEXEC:

    ALL ALL = (root) NOEXEC /bin/mount

    Μπορείτε να ελέγξετε αν το αρχείο /etc/sudores έχει ρυθμιστεί σωστά και να δείτε όλους τους κανόνες που δημιουργήθηκαν χρησιμοποιώντας την εντολή:


    Εδώ εμφανίζονται όλες οι εγκατεστημένες σημαίες και ρυθμίσεις, καθώς και τα δικαιώματα αυτού του χρήστη.

    συμπεράσματα

    Σε αυτό το άρθρο εξετάσαμε πώς να ρυθμίσετε το sudo στο Linux. Όπως μπορείτε να δείτε, παρά το γεγονός ότι πρόκειται για ένα πολύ απλό βοηθητικό πρόγραμμα, κρύβει πολλές χρήσιμες ρυθμίσεις που μπορείτε να χρησιμοποιήσετε στο σύστημά σας. Εάν έχετε οποιεσδήποτε ερωτήσεις, ρωτήστε στα σχόλια!

    Από την αρχαιότητα, πολλοί έχουν μπερδευτεί από την ποικιλία των επιλογών ασφαλείας κατά την εκτέλεση εργασιών με μέγιστα προνόμια. Για παράδειγμα, στην επίσημη τεκμηρίωση του Ubuntu συνιστάται να χρησιμοποιείτε κάτι σαν το sudo nano ως εντολή επεξεργασίας και σε πολλά ερασιτεχνικά εγχειρίδια (στο στυλ "5 κόλπα γραμμής εντολών που θα εκπλήξουν τη γιαγιά σας") για να αποκτήσετε ένα ριζικό κέλυφος προτείνεται να γράψω sudo su - Θα προσπαθήσω να εξηγήσω γιατί αυτή η κατάσταση πραγμάτων μου φαίνεται λάθος.

    Ιστορικά, ο μόνος καθολικός τρόπος για να εκτελέσετε μια εντολή ως άλλος χρήστης στο Unix ήταν με το πρόγραμμα su. Ξεκίνησε χωρίς παραμέτρους, ζήτησε τον κωδικό πρόσβασης υπερχρήστη και, εάν ήταν επιτυχής, απλώς αντικατέστησε το τρέχον όνομα χρήστη με root, αφήνοντας σχεδόν όλες τις μεταβλητές περιβάλλοντος από τον παλιό χρήστη (εκτός από PATH, USER και μερικές ακόμη, δείτε το man su από τη διανομή σας ). Θα ήταν πιο σωστό να το τρέξετε ως su - οπότε το κέλυφος θα λάβει επίσης το σωστό περιβάλλον. Με την επιλογή -c θα μπορούσατε να εκτελέσετε την εντολή: su -c "vim /etc/fstab" .

    Σε αυτήν την περίπτωση, οι έμπιστοι χρήστες έπρεπε να θυμούνται τον κωδικό πρόσβασης root και όλοι οι χρήστες που αναφέρονται στην ομάδα "wheel" (δηλαδή, στην ομάδα της οποίας τα μέλη μπορούσαν να εκτελέσουν την εντολή su και να γίνουν υπερχρήστης) είχαν την ίδια απεριόριστη πρόσβαση σε ολόκληρο το σύστημα, το οποίο αποτελούσε σοβαρό πρόβλημα ασφάλειας.

    Στη συνέχεια ήρθε η εντολή sudo και ήταν μια σημαντική ανακάλυψη. Τώρα ο διαχειριστής θα μπορούσε να καθορίσει μια λίστα με επιτρεπόμενες εντολές για κάθε χρήστη (ή ομάδα χρηστών), αρχεία διαθέσιμα για επεξεργασία, ειδικές μεταβλητές περιβάλλοντος και πολλά άλλα (όλη αυτή η ομορφιά ελέγχεται από το /etc/sudoers, δείτε man sudoers από τη διανομή σας) . Κατά την εκκίνηση, το sudo ζητά από τον χρήστη τον δικό του κωδικό πρόσβασης, όχι τον κωδικό πρόσβασης root. Ένα πλήρες κέλυφος μπορεί να ληφθεί χρησιμοποιώντας "sudo -i"

    Ιδιαίτερη προσοχή είναι η ειδική εντολή sudoedit, η οποία εκκινεί με ασφάλεια τον επεξεργαστή που καθορίζεται στη μεταβλητή περιβάλλοντος $EDITOR. Με ένα πιο παραδοσιακό σχήμα, η επεξεργασία αρχείων έγινε κάπως έτσι:
    sudo vi /etc/fstab

    Ξεκινώντας με αυτόν τον τρόπο, ο vi κληρονόμησε το κέλυφος με απεριόριστα δικαιώματα και μέσω:! ο χρήστης μπορούσε να εκτελέσει οποιαδήποτε εντολή (εκτός φυσικά εάν ο διαχειριστής φρόντισε για αυτό εκ των προτέρων) και να ανοίξει οποιοδήποτε αρχείο.

    Το Sudoedit ελέγχει εάν αυτός ο χρήστης μπορεί να τροποποιήσει ένα δεδομένο αρχείο, στη συνέχεια αντιγράφει το καθορισμένο αρχείο σε έναν προσωρινό κατάλογο, το ανοίγει σε ένα πρόγραμμα επεξεργασίας (που κληρονομεί τα δικαιώματα του χρήστη, όχι root) και μετά την επεξεργασία, εάν το αρχείο έχει τροποποιηθεί, το αντιγράφει με ειδικές προφυλάξεις πίσω.

    Στις διανομές που βασίζονται στο Debian, ο χρήστης root δεν έχει κωδικό πρόσβασης· αντίθετα, όλες οι διαχειριστικές ενέργειες πρέπει να εκτελούνται μέσω του sudo ή του γραφικού του ισοδύναμου gksudo. Ως πλήρης αντικατάσταση του su , το sudo θα πρέπει να είναι η μόνη εντολή για εναλλαγή μεταξύ χρηστών, ωστόσο, όπως ειπώθηκε στην αρχή, αυτή τη στιγμή δεν συμβαίνει αυτό και για κάποιο λόγο όλοι εφευρίσκουν άγριες ακολουθίες sudo, su, vi. και παύλες.

    Επομένως, προτείνω σε όλους να θυμούνται μια για πάντα:

    Μετά την πρώτη δημοσίευση αυτού του σημειώματος, μου έκαναν πολλές ερωτήσεις. Από τις απαντήσεις καταφέραμε να κάνουμε ένα μίνι-FAQ.

    Ε: Πώς μπορώ να χρησιμοποιήσω το sudo για να κάνω su -c "echo 1 > /etc/privileged_file" ; Το sudo echo 1 /etc/privileged_file παραπονιέται για "άρνηση άδειας"
    Α: Αυτό συμβαίνει επειδή μόνο η εντολή echo εκτελείται με αυξημένα δικαιώματα και το αποτέλεσμα ανακατευθύνεται στο αρχείο με τα δικαιώματα ενός κανονικού χρήστη. Για να προσθέσετε κάτι στο privileged_file, πρέπει να εκτελέσετε την ακόλουθη εντολή:
    $ ηχώ 1| sudo tee -a privileged_file >/dev/null
    Ή να γίνει προσωρινά ρίζα:
    $ sudo -i # echo 1 > privileged_file # exit $
    Ε: Το sudo -i είναι μεγαλύτερο από το su -, αλλά φαίνεται να μην υπάρχει διαφορά μεταξύ τους, γιατί να εκτυπώσετε περισσότερα;
    Α: Το sudo έχει πολλά πλεονεκτήματα που αξίζει τον κόπο να πληκτρολογήσετε μερικούς επιπλέον χαρακτήρες:

    • από προεπιλογή, το sudo καταγράφει όλη τη δραστηριότητα του χρήστη στο κανάλι authpriv syslog (κατά κανόνα, το αποτέλεσμα τοποθετείται στο αρχείο /var/log/auth.log) και σε su ένα παρόμοιο χαρακτηριστικό πρέπει να ενεργοποιηθεί ορίζοντας μια ειδική παράμετρο στο το αρχείο ρυθμίσεων, το οποίο διαφέρει από διανομή σε διανομή (SULOG_FILE στο /etc/login.defs στο Ubuntu Linux, /etc/login.conf και /etc/pam.d/su στο FreeBSD, κ.λπ.)
    • στην περίπτωση του su, ο διαχειριστής του συστήματος δεν μπορεί να περιορίσει τις εντολές που εκτελούνται από τους χρήστες, αλλά στο sudo μπορεί
    • Εάν ο χρήστης πρέπει να στερηθεί των δικαιωμάτων διαχείρισης, στην περίπτωση του su, αφού τον αφαιρέσει από την ομάδα τροχών, πρέπει να ξεχάσει τον κωδικό πρόσβασης root· εάν χρησιμοποιείται sudo, αρκεί να τον αφαιρέσετε από την αντίστοιχη ομάδα (π.χ. τροχός ή διαχειριστής) ή/και το αρχείο sudoers, εάν ήταν περαιτέρω προσαρμοσμένο.
    Ε: Είμαι ο μόνος χρήστης στο σύστημά μου και έχω συνηθίσει το su, γιατί χρειάζομαι το sudo;
    Α: Θα απαντήσω στην ερώτηση με μια ερώτηση: εάν υπάρχει σωστό sudo, γιατί να χρησιμοποιήσετε το ξεπερασμένο su;

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

    $sudo su

    Και αυτό είναι ακόμη και στο Ubuntu, όπου δεν υπάρχει λογαριασμός root. πιο συγκεκριμένα, δεν υπάρχει προεπιλεγμένος κωδικός πρόσβασης. Αλλά η χρήση του sudo το καθιστά περιττό ακόμη και για την εντολή su. Αλλά δεν απαγορεύεται να ορίσετε έναν κωδικό πρόσβασης υπερχρήστη - τελικά, για να γίνει αυτό αρκεί να δώσετε την εντολή

    $sudo passwd

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

    Ωστόσο, και εδώ η εντολή sudo παρέχει μια «ιδεολογικά σωστή» μέθοδο, και όχι μόνο μία. Αυτές είναι οι επιλογές -s και -i, οι οποίες παρατείνουν, αν και με ελαφρώς διαφορετικούς τρόπους, τη δράση της εντολής sudo για αόριστο χρονικό διάστημα, έως ότου η «δευτερεύουσα συνεδρία» τερματιστεί με την εντολή εξόδου.

    Η επιλογή -s, όταν ανοίγει μια δευτερεύουσα ρίζα, διατηρεί όλες τις μεταβλητές περιβάλλοντος του αρχικού χρήστη. Ωστόσο, εάν προσθέσετε την επιλογή -H σε αυτήν, τότε αυτές οι μεταβλητές θα διαβαστούν ξανά από τα αρχεία προφίλ του οικιακού καταλόγου του διαχειριστή, δηλαδή το /root, όπως κατά την εκκίνηση μιας διαδραστικής παρουσίας φλοιού. Ωστόσο, ο κατάλογος που ήταν ενημερωμένος τη στιγμή που εισήχθη η εντολή δεν θα αλλάξει, ούτε θα αλλάξει η εμφάνιση της γραμμής εντολών.

    Η επιλογή -i αναπαράγει πλήρως το ριζικό περιβάλλον, εκκινώντας το κέλυφος εντολών του ως κέλυφος σύνδεσης. Φυσικά, σε αυτήν την περίπτωση, ο τρέχων κατάλογος αλλάζει σε /root και η γραμμή εντολών παίρνει τη μορφή που περιγράφεται στην αντίστοιχη μεταβλητή στο αρχείο προφίλ του κελύφους διαχειριστή (στο bash - PS1).

    Στην πράξη, η διαφορά μεταξύ των δύο μορφών απόκτησης μόνιμων δικαιωμάτων διαχειριστή δεν είναι μεγάλη, ειδικά στο bash. Αλλά στο zsh, με τις κατάλληλες ρυθμίσεις των αρχείων προφίλ, αν θέλετε, μπορείτε να επιτύχετε ένα σημαντικά διαφορετικό περιβάλλον σε κάθε μία από αυτές τις περιπτώσεις. Είναι αλήθεια ότι το πόσο χρειάζεται ο χρήστης είναι μεγάλο ερώτημα. Αλλά το γεγονός ότι όταν χρησιμοποιείτε τις επιλογές -H, το να είστε σε μόνιμη λειτουργία διαχείρισης δεν εμφανίζεται εξωτερικά με κανέναν τρόπο είναι γεμάτο με σφάλματα. Και κάνει τη χρήση της επιλογής -i προτιμότερη στις περισσότερες περιπτώσεις.

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

    Παρεμπιπτόντως, η εντολή sudo μπορεί να εκτελεστεί έτσι ώστε να ζητά τον κωδικό πρόσβασης του χρήστη με το όνομα του οποίου θα εκτελεστεί η εντολή (για παράδειγμα, ένας διαχειριστής) και όχι αυτός που απαιτεί την εξουσιοδότηση του. Υπάρχει μια επιλογή -targetpw για αυτό. Και για να γίνει μόνιμη η απαίτηση κωδικού πρόσβασης root, αρκεί να ορίσετε, για παράδειγμα, ένα ψευδώνυμο like

    Ψευδώνυμο sudo -targetpw

    Η απαίτηση εισαγωγής κωδικού πρόσβασης root κατά την εκτέλεση του sudo είναι η προεπιλεγμένη συμπεριφορά σε ορισμένες διανομές, για παράδειγμα, όπως λένε, στο Suse.

    Η εντολή sudo έχει πολλές περισσότερες επιλογές - ανέφερα παραπάνω μόνο αυτές που έπρεπε να χρησιμοποιήσω. Τα υπόλοιπα είναι εύκολο να αναζητηθούν στο man sudo. Από αυτά που δεν αναφέρονται, θα αναφέρω επίσης την επιλογή -b, η οποία δίνει εντολή να εκτελεστεί η εντολή "supervisory" στο παρασκήνιο. Μπορεί να είναι χρήσιμο κατά την εκτέλεση μακροπρόθεσμων ενεργειών, για παράδειγμα, κατά την αντιγραφή εικόνων USB σε μονάδα flash με την εντολή dd.

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

    • εάν κάποιος χρήστης μπορεί να αποκτήσει δικαιώματα διαχειριστή μέσω της εντολής sudo και
    • μπορεί να εκτελέσει όλες τις διοικητικές ενέργειες χρησιμοποιώντας το;

    Αν μιλάμε για την οικογένεια του Ubuntu, στην οποία αυτός ο μηχανισμός χρησιμοποιήθηκε για πρώτη φορά "out of the box", τότε "out of the box" η απάντηση στην πρώτη ερώτηση θα είναι αρνητική, στη δεύτερη - θετική. Γενικά, αυτό εξαρτάται από τις ρυθμίσεις του προγράμματος sudo, οι οποίες περιγράφονται στο αρχείο /etc/sudoers. Και σε αυτό μπορείτε να ορίσετε κανόνες που επιτρέπουν μόνο σε συγκεκριμένους χρήστες να εκτελούν συγκεκριμένες εντολές. Συνοπτικά μοιάζει με αυτό:

    Όνομα χρήστη host = εντολή

    Εδώ, όπως μπορείτε να μαντέψετε, username είναι το όνομα του χρήστη για τον οποίο έχει οριστεί αυτός ο κανόνας, host είναι το όνομα του μηχανήματος από το οποίο μπορεί να καταφύγει σε αυτόν τον κανόνα, εντολή είναι μια συγκεκριμένη εντολή, η χρήση της οποίας είναι αυτός ο χρήστης επιτρέπεται από αυτό το μηχάνημα. Η εντολή πρέπει να δοθεί με πλήρη απόλυτη διαδρομή (δηλαδή /sbin/fdisk, όχι fdisk). Το πεδίο περιγραφής εντολής μπορεί να περιλαμβάνει πολλαπλές τιμές διαχωρισμένες με κόμμα, για παράδειγμα:

    Όνομα χρήστη ALL = /sbin/fdisk,/bin/mount

    Στο Ubuntu, οι προεπιλεγμένοι κανόνες για την πρόσβαση χρήστη στα δικαιώματα διαχειριστή περιγράφονται ως εξής:

    # Προδιαγραφή δικαιωμάτων χρήστη root ALL=(ALL) ALL # Τα μέλη της ομάδας διαχειριστή ενδέχεται να αποκτήσουν δικαιώματα root %admin ALL=(ALL) ALL

    Δηλαδή, ο χρήστης root, όπως αναμένεται, μπορεί να εκτελέσει οποιεσδήποτε εντολές από οποιονδήποτε υπολογιστή. Αλλά μόνο οι χρήστες που είναι μέλη της ομάδας διαχειριστή (ανάλογα με την ομάδα τροχών, η οποία συζητήθηκε στο) μπορούν να αποκτήσουν τα δικαιώματά της. Ένας χρήστης που δημιουργήθηκε κατά τη διάρκεια μιας κανονικής εγκατάστασης γίνεται αυτόματα μέλος αυτής της ομάδας - και επομένως έχει πλήρη δικαιώματα διαχειριστή στη διάθεσή του χωρίς περαιτέρω ρυθμίσεις. Ωστόσο, άλλοι χρήστες των οποίων οι λογαριασμοί θα δημιουργηθούν στη συνέχεια στερούνται αυτό το προνόμιο. Εκτός, φυσικά, αν συμπεριλήφθηκαν συγκεκριμένα στην ομάδα διαχειριστών.

    Σε άλλες διανομές που δεν χρησιμοποιούν το sudo out of the box, θα χρειαστεί να επεξεργαστείτε το αρχείο διαμόρφωσής του - το ίδιο /etc/sudoers που αναφέρθηκε παραπάνω.

    Το αρχείο /etc/sudoers είναι ένα κανονικό αρχείο κειμένου και, κατά συνέπεια, μπορεί να επεξεργαστεί σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου (ή, ας πούμε, χρησιμοποιώντας ed ή sed). Ωστόσο, υπάρχει ένας ορισμένος κίνδυνος να χαλάσετε κάτι (λόγω συνηθισμένων τυπογραφικών σφαλμάτων), ακόμη και σε σημείο να αποκλείσετε εντελώς την πρόσβασή σας στα προνόμια υπερχρήστη. Φυσικά, αυτές οι καταστάσεις μπορούν να διορθωθούν - για παράδειγμα, με επανεκκίνηση σε λειτουργία ενός χρήστη. Ωστόσο, καλύτερα να μην τα χτυπήσετε. Και επομένως, ένα πιο αξιόπιστο μέσο για την τροποποίηση του /etc/sudoers θα ήταν η χρήση ενός βοηθητικού προγράμματος ειδικά σχεδιασμένου για αυτόν τον σκοπό - το visudo.

    Το βοηθητικό πρόγραμμα visudo δεν κάνει τίποτα υπερφυσικό - απλά ανοίγει το /etc/sudoers σε ένα πρόγραμμα επεξεργασίας κειμένου που περιγράφεται από τη μεταβλητή EDITOR superuser (αν δεν έχει οριστεί κάποια, θα είναι και πάλι κλασικό - εξ ου και το όνομα) και σας επιτρέπει να το επεξεργαστείτε με τον συνηθισμένο τρόπο και μετά βγείτε από το πρόγραμμα επεξεργασίας αποθηκεύοντας τα αποτελέσματα χρησιμοποιώντας τα τυπικά μέσα του. Ωστόσο, πριν από αυτό, το αποτέλεσμα επεξεργασίας ελέγχεται για ορθότητα. Και αν εντοπιστεί παραβίαση της σύνταξης που είναι αποδεκτή για το /etc/sudoers, εκδίδεται μια αντίστοιχη προειδοποίηση. Μετά από αυτό μπορείτε να επιστρέψετε στην επεξεργασία, να αρνηθείτε τις αλλαγές που έγιναν ή να τις αποδεχτείτε (φυσικά, με προσωπική ευθύνη).

    Το βοηθητικό πρόγραμμα visudo δεν εγγυάται 100% επιτυχία επεξεργασίας. Δεδομένου ότι ελέγχει μόνο τη συνέπεια της σύνταξης, αλλά όχι την «ορθότητα των ίδιων των κανόνων». Δηλαδή, εάν γίνει ένα σφάλμα στον καθορισμό της διαδρομής προς την εντολή που απαιτείται για έναν δεδομένο κανόνα, αυτή η εντολή μέσω sudo δεν θα λειτουργήσει.

    Ωστόσο, στην πραγματικότητα συνήθως φαίνεται πολύ πιο απλό και καθόλου τρομακτικό. Έτσι, στο Fedora 11, στο δείγμα config /etc/sudoers έπρεπε μόνο να αποσχολιάσω τη γραμμή

    %wheel ALL=(ALL) ALL

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

    # %wheel ALL=(ALL) NOPASSWD: ALL

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

    Προεπιλογές timestamp_timeout=10

    όπου η τιμή χρονικού ορίου καθορίζεται σε λεπτά. Παρεμπιπτόντως, αν το αλλάξετε σε μηδέν -

    Προεπιλογές timestamp_timeout=0

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

    Μπορείτε, αντίθετα, να απενεργοποιήσετε το χρονικό όριο για την ενέργεια sudo εισάγοντας μια αρνητική τιμή για αυτήν:

    Προεπιλογές timestamp_timeout=-1

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

    Μια πιο προσεκτική ματιά στο αρχείο /etc/sudoers θα αποκαλύψει εύκολα ευκαιρίες για να παραχωρήσετε σε συγκεκριμένους χρήστες ή ομάδες μόνο ένα περιορισμένο σύνολο δικαιωμάτων. Ωστόσο, εδώ αρχίζουν οι λεπτότητες της πραγματικής διοίκησης. Απλώς στέρησα από τον διπλό πειραματιστή μου πρόσβαση σε οποιεσδήποτε διοικητικές ενέργειες για να σταματήσω όλες τις προσπάθειές του σε αυτόν τον τομέα. Ωστόσο, ακόμη και αυτό δεν μου επιτρέπει πάντα να ανταπεξέλθω μαζί του - όπως ο Τιμούρ Σάοφ δεν μπορεί να τα βγάλει πέρα ​​με τον λυρικό του ήρωα.

    Ως διαχειριστής Linux, χρησιμοποιούσα πάντα και sudo, Και su. Και ως διαχειριστής συστήματος, είναι πολύ σημαντικό να γνωρίζετε τη διαφορά μεταξύ τους. Για όσους δεν έχουν γενική ιδέα για τη διαφορά μεταξύ των δύο ή τα μπερδεύουν πάντα - εδώ είναι μια λίστα με 12 Q&A (ερωτήσεις και απαντήσεις) που σκοπό έχουν να σας βοηθήσουν να κατανοήσετε τις περιπλοκές του sudo και του su.

    ΣΗΜΕΙΩΣΗ- Αυτό το άρθρο αφορά μόνο το Ubuntu. Αν και ορισμένες πληροφορίες ενδέχεται να ισχύουν για τις πιο δημοφιλείς διανομές.

    Σούντο εναντίον Σου

    Αυτή η σειρά ερωτήσεων και απαντήσεων θα πρέπει να διευκρινίσει ορισμένα από τα χαρακτηριστικά του sudo vs su για πολλούς χρήστες του Ubuntu.

    Q1. Πώς χρησιμοποιούνται το sudo και το su; Ποια είναι η διαφορά μεταξύ τους;

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

    Εδώ είναι ένα παράδειγμα:

    $ apt-get εγκατάσταση skype E: Δεν ήταν δυνατό το άνοιγμα του αρχείου κλειδώματος /var/lib/dpkg/lock - άνοιγμα (13: Δεν επιτρέπεται η άδεια) E: Δεν είναι δυνατό να κλειδωθεί ο κατάλογος διαχείρισης (/var/lib/dpkg/), είστε root ? $ sudo apt-get εγκατάσταση κωδικού πρόσβασης skype για mylinuxbook: Ανάγνωση λιστών πακέτων... Ολοκληρώθηκε Δημιουργία δέντρου εξάρτησης Ανάγνωση πληροφοριών κατάστασης... Ολοκληρώθηκε ... ...

    Όπως μπορείτε να δείτε, πρώτα προσπάθησα να εγκαταστήσω το Skype χρησιμοποιώντας την εντολή apt-getαλλά πήρα σφάλμα άρνησης άδειας. Στη συνέχεια χρησιμοποίησα το sudo μαζί με το ίδιο σύστημα εντολών και σύστημα κωδικών πρόσβασης για τον χρήστη mylinuxbook. Μετά την εισαγωγή του σωστού κωδικού πρόσβασης, η εντολή ολοκληρώνεται με επιτυχία.

    Από την άλλη πλευρά, το su χρησιμοποιείται για την εναλλαγή οποιουδήποτε χρήστη. Ο διαμορφωμένος κωδικός πρόσβασης για τον αντίστοιχο χρήστη είναι ενεργοποιημένος. Εάν το su χρησιμοποιείται χωρίς επιλογές, πέφτει στον λογαριασμό χρήστη root. Σε αυτήν την περίπτωση, το σύστημα ζητά τον κωδικό πρόσβασης υπερχρήστη.

    Εδώ είναι ένα παράδειγμα:

    $ su mylinuxbook Κωδικός πρόσβασης: mylinuxbook@mylinuxbook-Inspiron-1525:~$

    Στο παραπάνω παράδειγμα, χρησιμοποίησα suγια να μεταβείτε στον λογαριασμό χρήστη mylinuxbook και μετά την εισαγωγή του κωδικού πρόσβασης για το mylinuxbook, μπόρεσα να το κάνω αυτό.

    Εδώ είναι ένα άλλο παράδειγμα:

    $ su Κωδικός πρόσβασης: su: Αποτυχία ελέγχου ταυτότητας

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

    Ε2. Τι θα συμβεί αν δεν θέλω να διαμορφώσω έναν κωδικό πρόσβασης διαχειριστή στο Ubuntu μου, αλλά εξακολουθώ να θέλω να μεταβώ σε υπερχρήστη;

    Απάντηση. Σε αυτήν την περίπτωση, μπορείτε να δοκιμάσετε την εντολή " sudo suΕδώ είναι ένα παράδειγμα:

    $ sudo su κωδικός πρόσβασης για mylinuxbook: root@mylinuxbook-Inspiron-1525:/home/mylinuxbook#

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

    Ε3. Τι γίνεται αν θέλω να χρησιμοποιήσω το su για πλοήγηση σε άλλους λογαριασμούς χρηστών, αλλά δεν θέλω να θυμάμαι τον κωδικό πρόσβασης κάθε χρήστη;

    Απάντηση. Λοιπόν, σε αυτήν την περίπτωση, απλώς χρησιμοποιήστε την εντολή su, πληκτρολογήστε τον κωδικό πρόσβασης διαχειριστή και μεταβείτε στον λογαριασμό. Από εδώ, χρησιμοποιώντας το su, μπορείτε να μεταβείτε σε οποιονδήποτε λογαριασμό χρήστη χωρίς να χρησιμοποιήσετε κωδικούς πρόσβασης.

    Q4. Εάν το sudo χρησιμοποιείται για να κάνει κάτι με δικαιώματα root, τότε γιατί χρειάζεται ο κωδικός πρόσβασης του τρέχοντος χρήστη και όχι ο κωδικός πρόσβασης root;

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

    Τώρα τίθεται το ερώτημα για τα sudoers. Πώς να γίνετε χρήστης sudoer? Ένας χρήστης μπορεί να γίνει sudoer εάν προστεθεί στην ομάδα sudo. Εδώ είναι ένα παράδειγμα:

    $ αθροιστής sudo sudo

    Απλώς αντικαταστήστε το με το πραγματικό όνομα χρήστη για τον λογαριασμό. Λάβετε υπόψη ότι προηγουμένως (πριν από το Ubuntu 12.04) η ομάδα έπρεπε να κληθεί διαχειριστής, αλλά τώρα αυτό δεν είναι απαραίτητο.

    Μπορείτε να χρησιμοποιήσετε την εντολή " ομάδα" για να ελέγξετε όλες τις ομάδες στις οποίες ανήκει αυτός ο χρήστης. Ακολουθεί ένα παράδειγμα:

    $ group mylinuxbook mylinuxbook: mylinuxbook adm cdrom sudo dip plugdev lpadmin sambasshare

    Βλέπετε λοιπόν ότι ο χρήστης " mylinuxbook" είναι μέρος όλων αυτών των ομάδων, συμπεριλαμβανομένων των ομάδων sudo, και επομένως sudoer.

    Q5. Παρατήρησα ότι μόλις χρησιμοποίησα το sudo, τα δικαιώματα root παρέμειναν για μεγάλο χρονικό διάστημα, αν και μετά από λίγο όλα επανήλθαν στο κανονικό. Τι είναι αυτό?

    Απάντηση. Το Ubuntu θυμάται τον κωδικό πρόσβασης για το sudo για περίπου 15 λεπτά. Αυτό σημαίνει ότι αφού έχετε χρησιμοποιήσει το sudo για να εκτελέσετε μια εντολή, το σύστημα δεν θα σας ζητήσει κωδικό πρόσβασης εάν εκτελείτε άλλες εντολές που απαιτούν δικαιώματα root για να εκτελεστούν. Αν και θα πρέπει να χρησιμοποιήσετε " sudo«Μπροστά από κάθε ομάδα.

    Ε6. Ποια είναι τα πλεονεκτήματα του sudo έναντι του su;

    Απάντηση.Το Sudo έχει πολλά πλεονεκτήματα έναντι του su.

    Εδώ είναι η λίστα:

  • Το Sudo διασφαλίζει ότι υπάρχουν προνόμια για μια συγκεκριμένη εντολή (ή για μια συγκεκριμένη χρονική περίοδο) και όχι για μια ολόκληρη περίοδο λειτουργίας, καθώς αυτό μπορεί να οδηγήσει σε τυχαία κατάχρηση των δικαιωμάτων υπερχρήστη.
  • Μπορείτε να χρησιμοποιήσετε το sudo για να περιορίσετε τα δικαιώματα χρήστη. Αυτό είναι χρήσιμο όταν δεν θέλετε ο χρήστης να έχει τον έλεγχο όλων των δικαιωμάτων υπερχρήστη όταν εργάζεται με το suda.
  • Υπάρχει ένα αρχείο καταγραφής (auth.log) που διατηρείται για κάθε sudoer. Αυτό το αρχείο περιέχει πληροφορίες σχετικά με τις εντολές που εκτελέστηκαν χρησιμοποιώντας το sudo και την ώρα που εκτελέστηκαν. Αυτό βοηθά τον διαχειριστή να παρακολουθεί ακόμη και έμπιστους χρήστες (sudoers).
  • Το μεγαλύτερο πλεονέκτημα είναι ότι η suda απαιτεί τον κωδικό πρόσβασης του χρήστη για να συνδεθεί, αντί για τον κωδικό πρόσβασης root. Αυτό βοηθά στη διατήρηση του κωδικού πρόσβασης root και δεν χρειάζεται να τον αλλάξετε ακόμα και όταν ο χρήστης (sudoer) αποχωρεί.
  • Ε7. Μπορεί οποιοσδήποτε χρήστης να εκτελέσει λειτουργίες sudo;

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

    Ε8. Ενδιαφέρομαι για το su. Πώς μπορώ να ρυθμίσω τη χρήση του su με τρόπο που να επιτυγχάνει λειτουργικότητα παρόμοια με το suda;

    Απάντηση. Εάν χρησιμοποιείτε su, αυτό σημαίνει ότι έχετε ήδη διαμορφώσει έναν κωδικό πρόσβασης υπερχρήστη. Για να επιτύχετε λειτουργικότητα παρόμοια με το sudo, π.χ. για να εκτελέσετε μόνο μία εντολή με δικαιώματα root χρησιμοποιώντας su, το μόνο που χρειάζεται να κάνετε είναι να χρησιμοποιήσετε την επιλογή -ντοαπό την ομάδα su.

    Εδώ είναι ένα παράδειγμα:

    $ su -c "apt-get install skype" Κωδικός πρόσβασης:

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

    Ε9. Δουλεύω με sudo. Πώς μπορώ να προσαρμόσω τη χρήση του sudo με τρόπο που να επιτυγχάνει παρόμοια λειτουργικότητα με το su;

    Απάντηση.Για να επιτύχετε τη λειτουργικότητα su μέσω του sudo, δοκιμάστε την επιλογή -Εγώεντολές sudo.

    Εδώ είναι ένα παράδειγμα:

    $ sudo -i κωδικός πρόσβασης για mylinuxbook: root@mylinuxbook-Inspiron-1525:~#

    Το βλέπεις με το " sudo -i", ο λογαριασμός root άλλαξε αν και ο κωδικός πρόσβασης που εισήχθη ήταν για τον τρέχοντα χρήστη (mylinuxbook σε αυτήν την περίπτωση).

    Q10. Ο κωδικός πρόσβασης root του λογαριασμού μου δεν έχει ενεργοποιηθεί ακόμη. Μπορώ να χρησιμοποιήσω το sudo για να ενεργοποιήσω τον κωδικό πρόσβασης υπερχρήστη;

    Απάντηση.Για να ενεργοποιήσετε τον κωδικό πρόσβασης υπερχρήστη, μπορείτε να χρησιμοποιήσετε την εντολή passwdμε τον εξής τρόπο:

    $ sudo passwd root

    Αυτή η εντολή απαιτεί δικαιώματα root, επομένως θα πρέπει να χρησιμοποιήσετε sudo.

    Ε12. Μπορώ να χρησιμοποιήσω το sudo για να παραχωρήσω ειδικά δικαιώματα στους χρήστες;

    Απάντηση.Αρχείο ρυθμίσεων για sudo - /etc/sudoers. Δεν είναι δυνατή η χειροκίνητη επεξεργασία του χρησιμοποιώντας πρόγραμμα επεξεργασίας. Για το σκοπό αυτό συνιστάται η χρήση της εντολής visudo.

    Εδώ είναι η ακριβής εντολή:

    $sudo visudo

    και αυτό είναι που παίρνετε:

    Αυτή η εντολή θα ανοίξει ένα προσωρινό αρχείο /etc/sudoers.tmp σε nano editor για επεξεργασία. Το Visudo διασφαλίζει ότι δεν υπάρχει διένεξη όταν επεξεργάζονται πολλά αντίγραφα του ίδιου αρχείου.

    Για να κατανοήσετε πώς να εκχωρήσετε περιορισμένα δικαιώματα, κατανοήστε τη σχεδίαση αυτού του αρχείου διαμόρφωσης, .