sudo, sudoedit — εκτελέστε μια εντολή ως άλλος χρήστης
ΣΥΝΟΨΗ
sudo -h | -K | -k | -V
sudo -v [-ABkNnS] [-g ομάδα] [-h κεντρικός υπολογιστής] [-p μήνυμα] [-u χρήστης]
sudo -l [-ABkNnS] [-g ομάδα] [-h κεντρικός υπολογιστής] [-p μήνυμα] [-U χρήστης] [-u χρήστης] [εντολή [όρισμα ...]]
sudo [-ABbEHnPS] [-C αριθμός] [-D κατάλογος] [-g ομάδα] [-h κεντρικός υπολογιστής] [-p μήνυμα] [-R κατάλογος]
[-r ρόλος] [-t τύπος] [-T χρονικό όριο] [-u χρήστης] [ΜΕΤΑΒΛΗΤΗ=τιμή] [-i | -s] [εντολή [όρισμα ...]]
sudoedit [-ABkNnS] [-C αριθμός] [-D κατάλογος] [-g ομάδα] [-h κεντρικός υπολογιστής] [-p μήνυμα] [-R κατάλογος]
[-r ρόλος] [-t τύπος] [-T χρονικό όριο] [-u χρήστης] αρχείο ...
ΠΕΡΙΓΡΑΦΗ
Το sudo επιτρέπει σε έναν εξουσιοδοτημένο χρήστη να εκτελέσει μια εντολή ως ο χρήστης με υπερελεγχόμενα δικαιώματα ή ως άλλος χρήστης, όπως καθορίζεται
από την πολιτική ασφαλείας. Το πραγματικό (όχι αποτελεσματικό) αναγνωριστικό χρήστη του χρήστη που καλεί χρησιμοποιείται για τον προσδιορισμό
του ονόματος χρήστη με το οποίο θα γίνει ερώτηση στην πολιτική ασφαλείας.
Το sudo υποστηρίζει μια αρχιτεκτονική πρόσθετων για πολιτικές ασφαλείας, έλεγχο και καταγραφή εισόδου/εξόδου.
Τρίτα μέρη μπορούν να αναπτύξουν και να διανείμουν τα δικά τους πρόσθετα για να συνεργάζονται απρόσκοπτα με το
το πρόσθιο του sudo. Η προεπιλεγμένη πολιτική ασφαλείας είναι το sudoers, το οποίο διαμορφώνεται μέσω του αρχείου
/etc/sudoers ή μέσω του LDAP. Δείτε την ενότητα «Πρόσθετα» για περισσότερες πληροφορίες.
Η πολιτική ασφαλείας καθορίζει τι δικαιώματα, αν υπάρχουν, έχει ένας χρήστης για να εκτελέσει το sudo. Η πολιτική μπορεί
να απαιτεί από τους χρήστες να πιστοποιήσουν τον εαυτό τους με έναν κωδικό πρόσβασης ή έναν άλλο μηχανισμό πιστοποίησης.
Εάν απαιτείται πιστοποίηση, το sudo θα τερματιστεί εάν ο κωδικός πρόσβασης του χρήστη δεν εισαχθεί εντός ενός διαμορφώσιμου χρονικού ορίου. Αυτό το όριο είναι συγκεκριμένο για την πολιτική. το προεπιλεγμένο χρονικό όριο προτροπής κωδικού πρόσβασης για
την πολιτική ασφαλείας sudoers είναι 0 λεπτά.
Οι πολιτικές ασφαλείας μπορούν να υποστηρίξουν την προσωρινή αποθήκευση διαπιστευτηρίων, ώστε να μπορούν οι χρήστες να εκτελούν ξανά το sudo για μια χρονική περίοδο χωρίς να απαιτείται πιστοποίηση. Από προεπιλογή, η πολιτική sudoers αποθηκεύει τα διαπιστευτήρια ανά
ανά τερματικό για 15 λεπτά. Δείτε τις επιλογές timestamp_type και timestamp_timeout στο
sudoers(5) για περισσότερες πληροφορίες. Εκτελώντας το sudo με την επιλογή -v, ένας χρήστης μπορεί να ενημερώσει τα
αποθηκευμένα διαπιστευτήρια χωρίς να εκτελέσει μια εντολή.
Σε συστήματα όπου το sudo είναι η κύρια μέθοδος για την απόκτηση δικαιωμάτων χρήστη με υπερελεγχόμενα δικαιώματα, είναι επιτακτική ανάγκη
να αποφεύγονται συντακτικά σφάλματα στα αρχεία διαμόρφωσης της πολιτικής ασφαλείας. Για την προεπιλεγμένη πολιτική ασφαλείας,
το sudoers(5), οι αλλαγές στα αρχεία διαμόρφωσης θα πρέπει να γίνονται με το βοηθητικό πρόγραμμα visudo(8), το οποίο
θα διασφαλίσει ότι δεν θα εισαχθούν συντακτικά σφάλματα.
Όταν καλείται ως sudoedit, η επιλογή -e (που περιγράφεται παρακάτω) υπονοείται.
Οι πολιτικές ασφαλείας και τα πρόσθετα ελέγχου μπορούν να καταγράψουν επιτυχημένες και αποτυχημένες προσπάθειες εκτέλεσης του sudo. Εάν είναι διαμορφωμένο ένα πρόσθετο I/O, η είσοδος και η έξοδος της εντολής που εκτελείται μπορούν επίσης να καταγραφούν.
Οι επιλογές είναι οι εξής:
-A, --askpass
Κανονικά, εάν το sudo απαιτεί έναν κωδικό πρόσβασης, θα τον διαβάσει από το τερματικό του χρήστη. Εάν καθοριστεί η επιλογή -A (askpass), εκτελείται ένα (πιθανώς γραφικό) βοηθητικό πρόγραμμα για να διαβάσει τον κωδικό πρόσβασης του χρήστη και να εξάγει τον κωδικό πρόσβασης στην τυπική έξοδο. Εάν η μεταβλητή περιβάλλοντος SUDO_ASKPASS έχει οριστεί, καθορίζει τη διαδρομή προς το βοηθητικό πρόγραμμα. Διαφορετικά, εάν το sudo.conf(5) περιέχει μια γραμμή που καθορίζει το πρόγραμμα askpass, θα χρησιμοποιηθεί αυτή η τιμή. Για παράδειγμα:
# Διαδρομή προς το βοηθητικό πρόγραμμα askpass
Path askpass /usr/bin/ssh-askpass
Εάν δεν είναι διαθέσιμο πρόγραμμα askpass, το sudo θα τερματιστεί με σφάλμα.
-B, --bell
Χτυπήστε το κουδούνι ως μέρος της προτροπής κωδικού πρόσβασης όταν υπάρχει ένα τερματικό. Αυτή η επιλογή δεν έχει καμία επίδραση εάν χρησιμοποιείται ένα πρόγραμμα askpass.
-b, --background
Εκτελέστε την δεδομένη εντολή στο παρασκήνιο. Δεν είναι δυνατή η χρήση του ελέγχου εργασιών του κελύφους για τη διαχείριση των διεργασιών που εκκινούνται στο παρασκήνιο από το sudo. Οι περισσότερες διαδραστικές εντολές θα αποτύχουν να λειτουργήσουν σωστά σε λειτουργία παρασκηνίου.
-C num, --close-from=num
Κλείστε όλους τους περιγραφείς αρχείων που είναι μεγαλύτεροι ή ίσοι με το num πριν από την εκτέλεση μιας εντολής. Οι τιμές μικρότερες από το τρία δεν επιτρέπονται. Από προεπιλογή, το sudo θα κλείσει όλους τους ανοιχτούς περιγραφείς αρχείων εκτός από την τυπική είσοδο, την τυπική έξοδο και την τυπική έξοδο σφάλματος κατά την εκτέλεση μιας εντολής. Η πολιτική ασφαλείας μπορεί να περιορίσει την ικανότητα του χρήστη να χρησιμοποιήσει αυτήν την επιλογή. Η πολιτική sudoers επιτρέπει τη χρήση της επιλογής -C μόνο όταν ο διαχειριστής έχει ενεργοποιήσει την επιλογή closefrom_override.
-D directory, --chdir=directory
Εκτελέστε την εντολή στον καθορισμένο κατάλογο αντί για τον τρέχοντα κατάλογο εργασίας. Η πολιτική ασφαλείας μπορεί να επιστρέψει σφάλμα εάν ο χρήστης δεν έχει άδεια να καθορίσει τον κατάλογο εργασίας.
-E, --preserve-env
Υποδεικνύει στην πολιτική ασφαλείας ότι ο χρήστης επιθυμεί να διατηρήσει τις υπάρχουσες μεταβλητές περιβάλλοντός του. Η πολιτική ασφαλείας μπορεί να επιστρέψει σφάλμα εάν ο χρήστης δεν έχει άδεια να διατηρήσει το περιβάλλον.
--preserve-env=list
Υποδεικνύει στην πολιτική ασφαλείας ότι ο χρήστης επιθυμεί να προσθέσει τη διαχωρισμένη με κόμμα λίστα των μεταβλητών περιβάλλοντος σε αυτές που διατηρούνται από το περιβάλλον του χρήστη. Η πολιτική ασφαλείας μπορεί να επιστρέψει σφάλμα εάν ο χρήστης δεν έχει άδεια να διατηρήσει το περιβάλλον. Αυτή η επιλογή μπορεί να καθοριστεί πολλές φορές.
-e, --edit
Επεξεργαστείτε ένα ή περισσότερα αρχεία αντί να εκτελέσετε μια εντολή. Αντί για ένα όνομα διαδρομής, η συμβολοσειρά "sudoedit" χρησιμοποιείται κατά τον έλεγχο της πολιτικής ασφαλείας. Εάν ο χρήστης είναι εξουσιοδοτημένος από την πολιτική, εκτελούνται τα ακόλουθα βήματα:
Γίνονται προσωρινά αντίγραφα των αρχείων που θα επεξεργαστούν, με τον ιδιοκτήτη να ορίζεται στον χρήστη που εκτελεί την εντολή.
Το πρόγραμμα επεξεργασίας που καθορίζεται στην πολιτική εκτελείται για να επεξεργαστεί τα προσωρινά αρχεία. Η πολιτική sudoers χρησιμοποιεί τις μεταβλητές περιβάλλοντος SUDO_EDITOR, VISUAL και EDITOR (με αυτή τη σειρά). Εάν καμία από τις SUDO_EDITOR, VISUAL ή EDITOR δεν έχει οριστεί, το πρώτο πρόγραμμα που αναφέρεται στην επιλογή editor στο sudoers(5) χρησιμοποιείται.
Εάν έχουν τροποποιηθεί, τα προσωρινά αρχεία αντιγράφονται πίσω στην αρχική τους θέση και οι προσωρινές εκδόσεις διαγράφονται.
Για να αποτραπεί η επεξεργασία μη εξουσιοδοτημένων αρχείων, επιβάλλονται οι ακόλουθες περιορισμοί, εκτός εάν επιτρέπονται ρητά από την πολιτική ασφαλείας:
Οι συμβολικοί σύνδεσμοι δεν μπορούν να επεξεργαστούν (έκδοση 1.8.15 και μεταγενέστερες).
Οι συμβολικοί σύνδεσμοι στη διαδρομή που πρόκειται να επεξεργαστεί δεν ακολουθούνται όταν ο γονικός κατάλογος είναι εγγράψιμος από τον χρήστη που εκτελεί την εντολή, εκτός εάν ο χρήστης αυτός είναι ο root (έκδοση 1.8.16 και μεταγενέστερες).
Τα αρχεία που βρίσκονται σε έναν κατάλογο στον οποίο ο χρήστης που εκτελεί την εντολή έχει δικαιώματα εγγραφής δεν μπορούν να επεξεργαστούν εκτός εάν ο χρήστης αυτός είναι ο root (έκδοση 1.8.16 και μεταγενέστερες).
Οι χρήστες δεν επιτρέπεται ποτέ να επεξεργάζονται ειδικά αρχεία συσκευών.
Εάν το καθορισμένο αρχείο δεν υπάρχει, θα δημιουργηθεί. Σε αντίθεση με τις περισσότερες εντολές που εκτελούνται μέσω του sudo, ο επεξεργαστής εκτελείται με το περιβάλλον του χρήστη που εκτελεί την εντολή, χωρίς τροποποιήσεις. Εάν το προσωρινό αρχείο γίνει κενό μετά την επεξεργασία, ο χρήστης θα ειδοποιηθεί πριν εγκατασταθεί. Εάν, για κάποιο λόγο, το sudo δεν μπορεί να ενημερώσει ένα αρχείο με την επεξεργασμένη έκδοσή του, ο χρήστης θα λάβει μια προειδοποίηση και το επεξεργασμένο αντίγραφο θα παραμείνει σε ένα προσωρινό αρχείο.
-g group, --group=group
Εκτελέστε την εντολή με την κύρια ομάδα να έχει οριστεί στην ομάδα αντί για την κύρια ομάδα που καθορίζεται στην εγγραφή του κωδικού πρόσβασης του στοχευμένου χρήστη. Η ομάδα μπορεί να είναι είτε ένα όνομα ομάδας είτε ένα αριθμητικό αναγνωριστικό ομάδας (GID) που προτάσσεται με τον χαρακτήρα «#» (π.χ., «#0» για GID 0). Όταν εκτελείτε μια εντολή ως GID, πολλά shell απαιτούν να διαφύγετε το «#» με μια ανάστροφη κάθετο («\»). Εάν δεν έχει καθοριστεί η επιλογή -u, η εντολή θα εκτελεστεί ως ο χρήστης που εκτελεί την εντολή. Σε οποιαδήποτε περίπτωση, η κύρια ομάδα θα οριστεί στην ομάδα. Η πολιτική sudo επιτρέπει σε οποιαδήποτε από τις ομάδες του στοχευμένου χρήστη να καθορίζεται μέσω της επιλογής -g, εφόσον η επιλογή -P δεν χρησιμοποιείται.
-H, --set-home
Ζητήστε από την πολιτική ασφαλείας να ορίσει τη μεταβλητή περιβάλλοντος HOME στον κατάλογο αρχικής σελίδας που καθορίζεται στην εγγραφή του κωδικού πρόσβασης του στοχευμένου χρήστη. Ανάλογα με την πολιτική, αυτή μπορεί να είναι η προεπιλεγμένη συμπεριφορά.
-h, --help
Εμφανίστε ένα σύντομο μήνυμα βοήθειας στην τυπική έξοδο και τερματίστε.
-h host, --host=host
Εκτελέστε την εντολή στον καθορισμένο κεντρικό υπολογιστή, εάν το πρόσθετο πολιτικής ασφαλείας υποστηρίζει απομακρυσμένες εντολές. Το πρόσθετο sudo δεν υποστηρίζει επί του παρόντος την εκτέλεση απομακρυσμένων εντολών. Αυτό μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με την επιλογή -l για να καταγραφούν τα δικαιώματα ενός χρήστη για τον απομακρυσμένο κεντρικό υπολογιστή.
-i, --login
Εκτελέστε το shell που καθορίζεται στην εγγραφή του κωδικού πρόσβασης του στοχευμένου χρήστη ως ένα shell σύνδεσης. Αυτό σημαίνει ότι τα αρχεία πόρων ειδικά για τη σύνδεση, όπως τα .profile, .bash_profile ή .login θα διαβάζονται από το shell. Εάν καθοριστεί μια εντολή, θα περνάει στο shell ως μια απλή εντολή χρησιμοποιώντας την επιλογή -c. Η εντολή και τα ορίσματά της συνενώνονται, χωρίζονται με κενά, αφού κάθε χαρακτήρας διαφεύγει με μια ανάστροφη κάθετο («\»), εκτός από τους αλφαριθμητικούς χαρακτήρες, τις υπογραμμίσεις, τις παύλες και τα σύμβολα δολαρίου. Εάν δεν καθοριστεί καμία εντολή, εκτελείται ένα διαδραστικό shell. Το sudo προσπαθεί να αλλάξει στον κατάλογο αρχικής σελίδας του χρήστη πριν εκτελέσει το shell. Η εντολή εκτελείται σε ένα περιβάλλον παρόμοιο με αυτό που θα λάμβανε ένας χρήστης κατά τη σύνδεση. Τα περισσότερα shell συμπεριφέρονται διαφορετικά όταν καθορίζεται μια εντολή σε σύγκριση με μια διαδραστική συνεδρία. συμβουλευτείτε το εγχειρίδιο του shell για λεπτομέρειες. Η ενότητα Περιβάλλον εντολής στο εγχειρίδιο sudoers(5) τεκμηριώνει τον τρόπο με τον οποίο η επιλογή -i επηρεάζει το περιβάλλον στο οποίο εκτελείται μια εντολή όταν χρησιμοποιείται η πολιτική sudoers.
-K, --remove-timestamp
Παρόμοιο με την επιλογή -k, εκτός από το ότι αφαιρεί κάθε αποθηκευμένη διαπίστευση για τον χρήστη, ανεξάρτητα από το τερματικό ή το αναγνωριστικό της αρχικής διεργασίας. Την επόμενη φορά που θα εκτελεστεί η εντολή sudo, θα πρέπει να εισαχθεί ένας κωδικός πρόσβασης εάν η πολιτική ασφαλείας απαιτεί έλεγχο ταυτότητας. Δεν είναι δυνατό να χρησιμοποιηθεί η επιλογή -K σε συνδυασμό με μια εντολή ή άλλη επιλογή. Αυτή η επιλογή δεν απαιτεί κωδικό πρόσβασης. Δεν υποστηρίζουν όλες οι πολιτικές ασφαλείας την προσωρινή αποθήκευση διαπιστευτηρίων.
-k, --reset-timestamp
Όταν χρησιμοποιείται χωρίς εντολή, ακυρώνει τις αποθηκευμένες διαπιστεύσεις του χρήστη για την τρέχουσα συνεδρία. Την επόμενη φορά που θα εκτελεστεί η εντολή sudo στη συνεδρία, θα πρέπει να εισαχθεί ένας κωδικός πρόσβασης εάν η πολιτική ασφαλείας απαιτεί έλεγχο ταυτότητας. Από προεπιλογή, η πολιτική sudoers χρησιμοποιεί μια ξεχωριστή εγγραφή στην προσωρινή αποθήκη διαπιστευτηρίων για κάθε τερματικό (ή αναγνωριστικό αρχικής διεργασίας εάν δεν υπάρχει τερματικό). Αυτό αποτρέπει την παρεμβολή της επιλογής -k στις εντολές sudo που εκτελούνται σε μια διαφορετική συνεδρία τερματικού. Δείτε την επιλογή timestamp_type στο sudoers(5) για περισσότερες πληροφορίες. Αυτή η επιλογή δεν απαιτεί κωδικό πρόσβασης και προστέθηκε για να επιτρέπεται σε έναν χρήστη να ανακαλεί τα δικαιώματα sudo από ένα αρχείο .logout.
Όταν χρησιμοποιείται σε συνδυασμό με μια εντολή ή μια επιλογή που ενδέχεται να απαιτεί κωδικό πρόσβασης, αυτή η επιλογή θα καταστήσει την εντολή sudo να αγνοεί τις αποθηκευμένες διαπιστεύσεις του χρήστη. Ως αποτέλεσμα, η εντολή sudo θα ζητήσει έναν κωδικό πρόσβασης (εάν απαιτείται από την πολιτική ασφαλείας) και δεν θα ενημερώσει τις αποθηκευμένες διαπιστεύσεις του χρήστη.
Δεν υποστηρίζουν όλες οι πολιτικές ασφαλείας την προσωρινή αποθήκευση διαπιστευτηρίων.
-l, --list
Εάν δεν καθοριστεί καμία εντολή, καταγράφει τα δικαιώματα για τον χρήστη που καλεί (ή τον χρήστη που καθορίζεται με την επιλογή -U) στον τρέχοντα κεντρικό υπολογιστή. Χρησιμοποιείται μια μεγαλύτερη μορφή λίστας εάν αυτή η επιλογή καθοριστεί πολλές φορές και η πολιτική ασφαλείας υποστηρίζει μια αναλυτική μορφή εξόδου.
Εάν καθοριστεί μια εντολή και επιτρέπεται από την πολιτική ασφαλείας για τον χρήστη που καλεί (ή τον χρήστη που καθορίζεται από την επιλογή -U) στον τρέχοντα κεντρικό υπολογιστή, η απόλυτη διαδρομή προς την εντολή εμφανίζεται μαζί με τυχόν ορίσματα. Εάν η επιλογή -l καθοριστεί περισσότερες από μία φορές (και η πολιτική ασφαλείας την υποστηρίζει), ο κανόνας αντιστοίχισης εμφανίζεται σε αναλυτική μορφή μαζί με την εντολή. Εάν καθοριστεί μια εντολή αλλά δεν επιτρέπεται από την πολιτική, η εντολή sudo θα τερματιστεί με μια τιμή κατάστασης 1.
-N, --no-update
Μην ενημερώνετε τα αποθηκευμένα διαπιστευτήρια του χρήστη, ακόμη και αν ο χρήστης πραγματοποιήσει επιτυχημένη αυθεντικοποίηση. Σε αντίθεση με την επιλογή -k, τα υπάρχοντα αποθηκευμένα διαπιστευτήρια χρησιμοποιούνται εάν είναι έγκυρα. Για να εντοπιστεί πότε τα αποθηκευμένα διαπιστευτήρια του χρήστη είναι έγκυρα (ή πότε δεν απαιτείται αυθεντικοποίηση), μπορεί να χρησιμοποιηθεί το εξής:
sudo -Nnv
Δεν υποστηρίζουν όλες οι πολιτικές ασφαλείας την αποθήκευση διαπιστευτηρίων.
-n, --non-interactive
Αποφύγετε την προτροπή του χρήστη για οποιαδήποτε μορφή εισόδου. Εάν απαιτείται κωδικός πρόσβασης για την εκτέλεση της εντολής, το sudo θα εμφανίσει ένα μήνυμα σφάλματος και θα τερματιστεί.
-P, --preserve-groups
Διατηρήστε το αρχικό διάνυσμα ομάδων του χρήστη που εκτελεί την εντολή. Από προεπιλογή, η πολιτική sudoers θα αρχικοποιήσει το διάνυσμα ομάδων με τη λίστα των ομάδων στις οποίες ανήκει ο χρήστης-στόχος. Ωστόσο, τα πραγματικά και αποτελεσματικά αναγνωριστικά ομάδων εξακολουθούν να ορίζονται ώστε να ταιριάζουν με τον χρήστη-στόχο.
-p prompt, --prompt=prompt
Χρησιμοποιήστε μια προσαρμοσμένη προτροπή κωδικού πρόσβασης με προαιρετικές ακολουθίες διαφυγής. Οι ακόλουθες ακολουθίες διαφυγής ποσοστού (‘%’) υποστηρίζονται από την πολιτική sudoers:
%H επεκτείνεται στο όνομα κεντρικού υπολογιστή, συμπεριλαμβανομένου του ονόματος τομέα (μόνο εάν το όνομα κεντρικού υπολογιστή είναι πλήρως προσδιορισμένο ή εάν η επιλογή fqdn είναι ορισμένη στο sudoers(5))
%h επεκτείνεται στο τοπικό όνομα κεντρικού υπολογιστή χωρίς το όνομα τομέα
%p επεκτείνεται στο όνομα του χρήστη του οποίου ζητείται ο κωδικός πρόσβασης (σεβόμενο τις σημαίες rootpw, targetpw και runaspw στο sudoers(5))
%U επεκτείνεται στο όνομα σύνδεσης του χρήστη ως τον οποίο θα εκτελεστεί η εντολή (προεπιλογή root, εκτός εάν καθοριστεί επίσης η επιλογή -u)
%u επεκτείνεται στο όνομα σύνδεσης του χρήστη που εκτελεί την εντολή
%% δύο διαδοχικά σύμβολα ‘%’ συμπτύσσονται σε ένα μόνο σύμβολο ‘%’
Η προσαρμοσμένη προτροπή θα αντικαταστήσει την προεπιλεγμένη προτροπή που καθορίζεται είτε από την πολιτική ασφαλείας είτε από τη μεταβλητή περιβάλλοντος SUDO_PROMPT. Σε συστήματα που χρησιμοποιούν το PAM, η προσαρμοσμένη προτροπή θα αντικαταστήσει επίσης την προτροπή που καθορίζεται από μια μονάδα PAM, εκτός εάν η σημαία passprompt_override είναι απενεργοποιημένη στο sudoers.
-R directory, --chroot=directory
Αλλάξτε στον καθορισμένο κατάλογο ρίζας (δείτε chroot(8)) πριν εκτελέσετε την εντολή. Η πολιτική ασφαλείας μπορεί να επιστρέψει ένα σφάλμα εάν ο χρήστης δεν έχει άδεια να καθορίσει τον κατάλογο ρίζας.
Αυτή η επιλογή είναι απαρχαιωμένη και θα καταργηθεί σε μια μελλοντική έκδοση του sudo.
-r role, --role=role
Εκτελέστε την εντολή με ένα πλαίσιο ασφαλείας SELinux που περιλαμβάνει τον καθορισμένο ρόλο.
-S, --stdin
Γράψτε την προτροπή στην τυπική έξοδο σφάλματος και διαβάστε τον κωδικό πρόσβασης από την τυπική είσοδο αντί να χρησιμοποιήσετε τη συσκευή τερματικού.
-s, --shell
Εκτελέστε το κέλυφος που καθορίζεται από τη μεταβλητή περιβάλλοντος SHELL, εάν έχει οριστεί, ή το κέλυφος που καθορίζεται από την καταχώρηση κωδικού πρόσβασης του χρήστη που εκτελεί την εντολή. Εάν καθοριστεί μια εντολή, αυτή περνάει στο κέλυφος ως μια απλή εντολή χρησιμοποιώντας την επιλογή -c. Η εντολή και τυχόν ορίσματα συνενώνονται, διαχωρίζονται με κενά, αφού κάθε χαρακτήρας (συμπεριλαμβανομένου του κενού) αντικατασταθεί με μια ανάστροφη κάθετο (‘\’) εκτός από τους αλφαριθμητικούς χαρακτήρες, τις κάτω παύλες, τις δεσμευμένες και τα σύμβολα δολαρίου. Εάν δεν καθοριστεί καμία εντολή, εκτελείται ένα διαδραστικό κέλυφος. Τα περισσότερα κελύφη συμπεριφέρονται διαφορετικά όταν μια εντολή καθορίζεται σε σύγκριση με μια διαδραστική συνεδρία. ανατρέξτε στο εγχειρίδιο του κελύφους για λεπτομέρειες.
-t type, --type=type
Εκτελέστε την εντολή με ένα πλαίσιο ασφαλείας SELinux που περιλαμβάνει τον καθορισμένο τύπο. Εάν δεν καθοριστεί τύπος, ο προεπιλεγμένος τύπος προέρχεται από τον ρόλο.
-U user, --other-user=user
Χρησιμοποιείται σε συνδυασμό με την επιλογή -l για να καταγράψετε τα δικαιώματα για έναν χρήστη αντί για τον χρήστη που εκτελεί την εντολή. Η πολιτική ασφαλείας μπορεί να περιορίσει την καταγραφή δικαιωμάτων άλλων χρηστών. Όταν χρησιμοποιείτε την πολιτική sudoers, η επιλογή -U περιορίζεται στον χρήστη root και στους χρήστες που έχουν είτε το δικαίωμα «list» για τον καθορισμένο χρήστη είτε τη δυνατότητα να εκτελούν οποιαδήποτε εντολή ως root ή ως χρήστης στην τρέχουσα μηχανή.
-T timeout, --command-timeout=timeout
Χρησιμοποιείται για να οριστεί ένα χρονικό όριο για την εντολή. Εάν το χρονικό όριο λήξει πριν ολοκληρωθεί η εκτέλεση της εντολής, η εντολή θα τερματιστεί. Η πολιτική ασφαλείας μπορεί να περιορίσει την ικανότητα του χρήστη να ορίζει χρονικά όρια. Η πολιτική sudoers απαιτεί τα χρονικά όρια που καθορίζονται από τον χρήστη να είναι ρητά ενεργοποιημένα.
-u user, --user=user
Εκτελέστε την εντολή ως χρήστης διαφορετικός από τον προεπιλεγμένο χρήστη-στόχο (συνήθως root). Ο χρήστης μπορεί να είναι είτε ένα όνομα χρήστη είτε ένα αριθμητικό αναγνωριστικό χρήστη (UID) που προηγείται με τον χαρακτήρα «#» (π.χ. «#0» για UID 0). Όταν εκτελούνται εντολές ως UID, πολλά κελύφη απαιτούν να γίνει απόδραση του «#» με μια κάθετο («\»). Ορισμένες πολιτικές ασφαλείας ενδέχεται να περιορίζουν τα UID σε αυτά που αναφέρονται στη βάση δεδομένων κωδικών πρόσβασης. Η πολιτική sudoers επιτρέπει τα UID που δεν περιλαμβάνονται στη βάση δεδομένων κωδικών πρόσβασης, εφόσον η επιλογή targetpw δεν έχει οριστεί. Άλλες πολιτικές ασφαλείας ενδέχεται να μην υποστηρίζουν αυτό.
-V, --version
Εμφάνιση της συμβολοσειράς έκδοσης του sudo καθώς και της συμβολοσειράς έκδοσης τυχόν διαμορφωμένων πρόσθετων. Εάν ο χρήστης που εκτελεί την εντολή είναι ήδη root, η επιλογή -V θα εμφανίσει τις επιλογές που μεταδόθηκαν στο configure κατά τη δημιουργία του sudo. τα πρόσθετα ενδέχεται να εμφανίζουν πρόσθετες πληροφορίες, όπως τις προεπιλεγμένες επιλογές.
-v, --validate
Ενημέρωση των διαπιστευτηρίων του χρήστη που έχουν αποθηκευτεί στην προσωρινή μνήμη, με έλεγχο ταυτότητας του χρήστη, εάν είναι απαραίτητο. Για το πρόσθετο sudoers, αυτό επεκτείνει το χρονικό όριο sudo κατά 15 λεπτά από προεπιλογή, αλλά δεν εκτελεί μια εντολή. Δεν υποστηρίζουν όλες οι πολιτικές ασφαλείας τα διαπιστευτήρια που έχουν αποθηκευτεί στην προσωρινή μνήμη.
-- Το -- χρησιμοποιείται για να ορίσει το τέλος των επιλογών sudo. Οι επόμενες επιλογές μεταδίδονται στην εντολή.
Οι επιλογές που απαιτούν μια τιμή μπορούν να καθοριστούν μόνο μία φορά, εκτός εάν ορίζεται διαφορετικά στην περιγραφή. Αυτό γίνεται για να αποφευχθούν προβλήματα που προκαλούνται από ελαττωματικά σενάρια που καλούν το sudo με δεδομένα που ελέγχονται από τον χρήστη.
Οι μεταβλητές περιβάλλοντος που θα οριστούν για την εντολή μπορούν επίσης να μεταδοθούν ως επιλογές στο sudo στη μορφή VAR=value, για παράδειγμα LD_LIBRARY_PATH=/usr/local/pkg/lib. Οι μεταβλητές περιβάλλοντος ενδέχεται να υπόκεινται σε περιορισμούς που επιβάλλονται από το πρόσθετο πολιτικής ασφαλείας. Η πολιτική sudoers υπόκειται στις ίδιες περιορισμούς με τις υπάρχουσες μεταβλητές περιβάλλοντος με μία σημαντική διαφορά. Εάν η επιλογή setenv έχει οριστεί στο sudoers, η εντολή που θα εκτελεστεί έχει την ετικέτα SETENV ή η αντιστοιχισμένη εντολή είναι ΟΛΑ, ο χρήστης μπορεί να ορίσει μεταβλητές που διαφορετικά θα απαγορεύονταν. Δείτε το sudoers(5) για περισσότερες πληροφορίες.
ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΗΣ
Όταν το sudo εκτελεί μια εντολή, η πολιτική ασφαλείας καθορίζει το περιβάλλον εκτέλεσης για την εντολή. Συνήθως, τα πραγματικά και αποτελεσματικά ID χρήστη και ομάδας ορίζονται ώστε να ταιριάζουν με αυτά του στοχευόμενου χρήστη, όπως καθορίζονται στη βάση δεδομένων κωδικών πρόσβασης, και το διάνυσμα ομάδας αρχικοποιείται με βάση τη βάση δεδομένων ομάδων (εκτός εάν έχει καθοριστεί η επιλογή -P).
Οι ακόλουθοι παράμετροι μπορούν να καθοριστούν από την πολιτική ασφαλείας:
πραγματικό και αποτελεσματικό ID χρήστη
πραγματικό και αποτελεσματικό ID ομάδας
επιπλέον ID ομάδας
η λίστα περιβάλλοντος
τρέχων κατάλογος εργασίας
μάσκα δημιουργίας αρχείων (umask)
ρόλος και τύπος SELinux
προτεραιότητα προγραμματισμού (γνωστή και ως τιμή nice)
Μοντέλο διαδικασίας
Υπάρχουν δύο διακριτοί τρόποι με τους οποίους το sudo μπορεί να εκτελέσει μια εντολή.
Εάν έχει διαμορφωθεί ένα πρόσθετο καταγραφής I/O για την καταγραφή της εισόδου/εξόδου τερματικού ή εάν η πολιτική ασφαλείας το ζητά ρητά, εκχωρείται ένα νέο ψευδο-τερματικό («pty») και χρησιμοποιείται η συνάρτηση fork(2) για να δημιουργηθεί μια δεύτερη διαδικασία sudo, η οποία αναφέρεται ως ο επόπτης. Ο επόπτης δημιουργεί μια νέα συνεδρία τερματικού με τον εαυτό του ως ηγέτη και το pty ως το ελέγχον τερματικό του, καλεί ξανά τη συνάρτηση fork(2), ρυθμίζει το περιβάλλον εκτέλεσης όπως περιγράφεται παραπάνω και στη συνέχεια χρησιμοποιεί τη συνάρτηση συστήματος execve(2) για να εκτελέσει την εντολή στην θυγατρική διαδικασία. Ο επόπτης υπάρχει για να αναμεταδίδει τα σήματα ελέγχου εργασίας μεταξύ του τερματικού του χρήστη και του pty στο οποίο εκτελείται η εντολή. Αυτό καθιστά δυνατή τη διακοπή και τη συνέχιση της εντολής κανονικά. Χωρίς τον επόπτη, η εντολή θα βρισκόταν σε αυτό που το POSIX ορίζει ως μια «ορφανή ομάδα διαδικασιών» και δεν θα λάμβανε κανένα σήμα ελέγχου εργασίας από τον πυρήνα. Όταν η εντολή τερματιστεί ή διακοπεί από ένα σήμα, ο επόπτης περνά την κατάσταση εξόδου της εντολής στην κύρια διαδικασία sudo και τερματίζεται. Αφού λάβει την κατάσταση εξόδου της εντολής, η κύρια διαδικασία sudo περνά την κατάσταση εξόδου της εντολής στη συνάρτηση κλεισίματος της πολιτικής ασφαλείας, καθώς και στη συνάρτηση κλεισίματος οποιουδήποτε διαμορφωμένου προσθέτου ελέγχου, και τερματίζεται. Αυτή είναι η προεπιλεγμένη λειτουργία για τις εκδόσεις sudo 1.9.14 και νεότερες, όταν χρησιμοποιείται η πολιτική sudoers.
Εάν δεν χρησιμοποιείται pty, το sudo καλεί τη συνάρτηση fork(2), ρυθμίζει το περιβάλλον εκτέλεσης όπως περιγράφεται παραπάνω και χρησιμοποιεί τη συνάρτηση συστήματος execve(2) για να εκτελέσει την εντολή στη θυγατρική διαδικασία. Η κύρια διαδικασία sudo περιμένει μέχρι να ολοκληρωθεί η εντολή, στη συνέχεια περνά την κατάσταση εξόδου της εντολής στη συνάρτηση κλεισίματος της πολιτικής ασφαλείας, καθώς και στη συνάρτηση κλεισίματος οποιουδήποτε διαμορφωμένου προσθέτου ελέγχου, και τερματίζεται. Ως ειδική περίπτωση, εάν το πρόσθετο πολιτικής δεν ορίζει μια συνάρτηση κλεισίματος, το sudo θα εκτελέσει απευθείας την εντολή αντί να καλέσει πρώτα τη συνάρτηση fork(2). Το πρόσθετο πολιτικής sudoers θα ορίσει μια συνάρτηση κλεισίματος μόνο όταν είναι ενεργοποιημένη η καταγραφή I/O, απαιτείται ένα pty, έχει καθοριστεί ένας ρόλος SELinux, η εντολή έχει σχετική χρονική περίοδο αναμονής ή οι επιλογές pam_session ή pam_setcred είναι ενεργοποιημένες. Και οι δύο επιλογές pam_session και pam_setcred είναι ενεργοποιημένες από προεπιλογή σε συστήματα που χρησιμοποιούν το PAM. Αυτή είναι η προεπιλεγμένη λειτουργία για τις εκδόσεις sudo πριν από την 1.9.14, όταν χρησιμοποιείται η πολιτική sudoers.
Σε συστήματα που χρησιμοποιούν το PAM, η συνάρτηση κλεισίματος της πολιτικής ασφαλείας είναι υπεύθυνη για το κλείσιμο της συνεδρίας PAM. Μπορεί επίσης να καταγράψει την κατάσταση εξόδου της εντολής.
Χειρισμός σημάτων
Όταν η εντολή εκτελείται ως θυγατρική διαδικασία της διαδικασίας sudo, η sudo θα αναμεταδώσει τα σήματα που λαμβάνει στην εντολή. Τα σήματα SIGINT και SIGQUIT αναμεταδίδονται μόνο όταν η εντολή εκτελείται σε ένα νέο pty ή όταν το σήμα εστάλη από μια διαδικασία χρήστη, και όχι από τον πυρήνα. Αυτό αποτρέπει την λήψη του SIGINT δύο φορές από την εντολή κάθε φορά που ο χρήστης πατάει Ctrl+C. Ορισμένα σήματα, όπως τα SIGSTOP και SIGKILL, δεν μπορούν να συλληφθούν και επομένως δεν θα αναμεταδοθούν στην εντολή. Ως γενικός κανόνας, το SIGTSTP θα πρέπει να χρησιμοποιείται αντί για το SIGSTOP όταν θέλετε να αναστείλετε μια εντολή που εκτελείται από το sudo.
Ως ειδική περίπτωση, η sudo δεν θα αναμεταδώσει σήματα που εστάλησαν από την εντολή που εκτελεί. Αυτό αποτρέπει την εντολή από το να σκοτώσει κατά λάθος τον εαυτό της. Σε ορισμένα συστήματα, το βοηθητικό πρόγραμμα reboot(8) στέλνει το SIGTERM σε όλες τις μη συστημικές διαδικασίες εκτός από τον εαυτό του, πριν από την επανεκκίνηση του συστήματος. Αυτό αποτρέπει την sudo από την αναμετάδοση του σήματος SIGTERM που έλαβε πίσω στο reboot(8), το οποίο θα μπορούσε στη συνέχεια να τερματιστεί πριν από την πραγματική επανεκκίνηση του συστήματος, αφήνοντάς το σε μια ημι-νεκρή κατάσταση παρόμοια με τη λειτουργία ενός χρήστη. Σημειώστε, ωστόσο, ότι αυτός ο έλεγχος ισχύει μόνο για την εντολή που εκτελείται από την sudo και όχι για οποιεσδήποτε άλλες διαδικασίες που μπορεί να δημιουργήσει η εντολή. Ως αποτέλεσμα, η εκτέλεση ενός σεναρίου που καλεί το reboot(8) ή το shutdown(8) μέσω του sudo μπορεί να οδηγήσει το σύστημα σε αυτή την απροσδιόριστη κατάσταση, εκτός εάν τα reboot(8) ή shutdown(8) εκτελούνται χρησιμοποιώντας την οικογένεια συναρτήσεων exec() αντί για την system() (η οποία παρεμβάλλει ένα κέλυφος μεταξύ της εντολής και της καλούνσας διαδικασίας).
Πρόσθετα
Τα πρόσθετα μπορούν να καθοριστούν μέσω των οδηγιών Plugin στο αρχείο sudo.conf(5). Μπορούν να φορτωθούν ως δυναμικά κοινόχρηστα αντικείμενα (σε συστήματα που τα υποστηρίζουν) ή να μεταγλωττιστούν απευθείας στο δυαδικό αρχείο sudo. Εάν δεν υπάρχει αρχείο sudo.conf(5) ή εάν δεν περιέχει γραμμές Plugin, η sudo θα χρησιμοποιήσει το sudoers(5) για τα πρόσθετα πολιτικής, ελέγχου και I/O. Δείτε το εγχειρίδιο sudo.conf(5) για λεπτομέρειες σχετικά με το αρχείο /etc/sudo.conf και το εγχειρίδιο sudo_plugin(5) για περισσότερες πληροφορίες σχετικά με την αρχιτεκτονική πρόσθετων της sudo.
ΤΙΜΗ ΕΞΟΔΟΥ
Μετά την επιτυχή εκτέλεση μιας εντολής, η τιμή εξόδου από την sudo θα είναι η τιμή εξόδου του προγράμματος που εκτελέστηκε. Εάν η εντολή τερματίστηκε λόγω λήψης ενός σήματος, η sudo θα στείλει στον εαυτό της το ίδιο σήμα που τερμάτισε την εντολή.
Εάν η επιλογή -l καθοριστεί χωρίς εντολή, το sudo θα τερματιστεί με τιμή 0 εάν ο χρήστης επιτρέπεται να εκτελεί το sudo και έχει πιστοποιηθεί με επιτυχία (όπως απαιτείται από την πολιτική ασφαλείας). Εάν καθοριστεί μια εντολή με την επιλογή -l, η τιμή εξόδου θα είναι 0 μόνο εάν η εντολή επιτρέπεται από την πολιτική ασφαλείας, διαφορετικά θα είναι 1.
Εάν υπάρχει αποτυχία πιστοποίησης, πρόβλημα διαμόρφωσης/δικαιωμάτων ή εάν η δεδομένη εντολή δεν μπορεί να εκτελεστεί, το sudo τερματίζεται με τιμή 1. Στην τελευταία περίπτωση, η συμβολοσειρά σφάλματος εκτυπώνεται στην τυπική έξοδο σφαλμάτων. Εάν το sudo δεν μπορεί να stat(2) μία ή περισσότερες καταχωρήσεις στο PATH του χρήστη, εκτυπώνεται ένα σφάλμα στην τυπική έξοδο σφαλμάτων. (Εάν ο κατάλογος δεν υπάρχει ή εάν δεν είναι πραγματικά κατάλογος, η καταχώρηση αγνοείται και δεν εκτυπώνεται σφάλμα.) Αυτό δεν θα πρέπει να συμβαίνει σε κανονικές συνθήκες. Ο πιο συνηθισμένος λόγος για τον οποίο το stat(2) επιστρέφει «άδεια απορριφθείσα» είναι εάν εκτελείτε ένα αυτόματο μηχανισμό προβολής και ένας από τους καταλόγους στο PATH σας βρίσκεται σε μια μηχανή που είναι επί του παρόντος απρόσιτη.
ΣΗΜΕΙΩΣΕΙΣ ΑΣΦΑΛΕΙΑΣ
Το sudo προσπαθεί να είναι ασφαλές κατά την εκτέλεση εξωτερικών εντολών.
Για να αποτραπεί η πλαστογράφηση εντολών, το sudo ελέγχει τα "." και "" (και τα δύο υποδηλώνουν τον τρέχοντα κατάλογο) τελευταία κατά την αναζήτηση μιας εντολής στο PATH του χρήστη (εάν το ένα ή και τα δύο βρίσκονται στο PATH). Ανάλογα με την πολιτική ασφαλείας, η μεταβλητή περιβάλλοντος PATH του χρήστη μπορεί να τροποποιηθεί, να αντικατασταθεί ή να περαστεί αμετάβλητη στο πρόγραμμα που εκτελεί το sudo.
Οι χρήστες δεν πρέπει ποτέ να λαμβάνουν δικαιώματα sudo για να εκτελούν αρχεία στα οποία ο χρήστης μπορεί να έχει πρόσβαση εγγραφής ή που βρίσκονται σε έναν κατάλογο στον οποίο ο χρήστης μπορεί να έχει πρόσβαση εγγραφής. Εάν ο χρήστης μπορεί να τροποποιήσει ή να αντικαταστήσει την εντολή, δεν υπάρχει τρόπος να περιοριστεί τι επιπλέον εντολές μπορούν να εκτελέσουν.
Από προεπιλογή, το sudo θα καταγράφει μόνο την εντολή που εκτελεί ρητά. Εάν ένας χρήστης εκτελέσει μια εντολή όπως το ‘sudo su’ ή το ‘sudo sh’, οι επόμενες εντολές που εκτελούνται από αυτό το κέλυφος δεν υπόκεινται στην πολιτική ασφαλείας του sudo. Το ίδιο ισχύει και για εντολές που προσφέρουν διαφυγές κελύφους (συμπεριλαμβανομένων των περισσότερων επεξεργαστών κειμένου). Εάν είναι ενεργοποιημένη η καταγραφή I/O, οι επόμενες εντολές θα έχουν την είσοδό τους και/ή την έξοδό τους καταγεγραμμένη, αλλά δεν θα υπάρχουν παραδοσιακές καταγραφές για αυτές τις εντολές. Λόγω αυτού, πρέπει να δίνεται προσοχή κατά την παροχή πρόσβασης στους χρήστες σε εντολές μέσω του sudo για να διασφαλιστεί ότι η εντολή δεν παρέχει κατά λάθος στον χρήστη ένα αποτελεσματικό κέλυφος root. Για πληροφορίες σχετικά με τρόπους αντιμετώπισης αυτού, δείτε την ενότητα "Αποτροπή διαφυγών κελύφους" στο sudoers(5).
Για να αποτραπεί η αποκάλυψη ενδεχομένως ευαίσθητων πληροφοριών, το sudo απενεργοποιεί από προεπιλογή τις δημιουργίες πυρήνα κατά τη διάρκεια της εκτέλεσής του (ενεργοποιούνται ξανά για την εντολή που εκτελείται). Αυτή η ιστορική πρακτική χρονολογείται από την εποχή που τα περισσότερα λειτουργικά συστήματα επέτρεπαν στις διαδικασίες με ορισμένο ID χρήστη να δημιουργούν πυρήνα από προεπιλογή. Για να διευκολυνθεί ο εντοπισμός σφαλμάτων του sudo, ίσως θελήσετε να ενεργοποιήσετε ξανά τις δημιουργίες πυρήνα, ορίζοντας το "disable_coredump" σε false στο αρχείο sudo.conf(5) ως εξής:
Ορίστε disable_coredump σε false
Δείτε το εγχειρίδιο sudo.conf(5) για περισσότερες πληροφορίες.
ΠΕΡΙΒΑΛΛΟΝ
Το sudo χρησιμοποιεί τις ακόλουθες μεταβλητές περιβάλλοντος. Η πολιτική ασφαλείας ελέγχει το πραγματικό περιεχόμενο του περιβάλλοντος της εντολής.
EDITOR Επικεφαλής προεπιλεγμένου επεξεργαστή που θα χρησιμοποιηθεί στη λειτουργία -e (sudoedit) εάν δεν έχουν οριστεί ούτε οι μεταβλητές SUDO_EDITOR ούτε η μεταβλητή VISUAL.
MAIL Ορίζεται στο αρχείο spool αλληλογραφίας του στοχευμένου χρήστη όταν καθορίζεται η επιλογή -i ή όταν η επιλογή env_reset είναι ενεργοποιημένη στο sudoers (εκτός εάν η μεταβλητή MAIL υπάρχει στη λίστα env_keep).
HOME Ορίζεται στον κατάλογο αρχικής σελίδας του στοχευμένου χρήστη όταν καθορίζονται οι επιλογές -i ή -H, όταν καθορίζεται η επιλογή -s και η επιλογή set_home είναι ενεργοποιημένη στο sudoers, όταν η επιλογή always_set_home είναι ενεργοποιημένη στο sudoers ή όταν η επιλογή env_reset είναι ενεργοποιημένη στο sudoers και η μεταβλητή HOME δεν υπάρχει στη λίστα env_keep.
LOGNAME Ορίζεται στο όνομα σύνδεσης του στοχευμένου χρήστη όταν καθορίζεται η επιλογή -i, όταν η επιλογή set_logname είναι ενεργοποιημένη στο sudoers ή όταν η επιλογή env_reset είναι ενεργοποιημένη στο sudoers (εκτός εάν η μεταβλητή LOGNAME υπάρχει στη λίστα env_keep).
PATH Μπορεί να αντικατασταθεί από την πολιτική ασφαλείας.
SHELL Χρησιμοποιείται για τον προσδιορισμό του κελύφους που θα εκτελεστεί με την επιλογή -s.
SUDO_ASKPASS Καθορίζει τη διαδρομή προς ένα βοηθητικό πρόγραμμα που χρησιμοποιείται για την ανάγνωση του κωδικού πρόσβασης εάν δεν είναι διαθέσιμο τερματικό ή εάν καθορίζεται η επιλογή -A.
SUDO_COMMAND Ορίζεται στην εντολή που εκτελείται από το sudo, συμπεριλαμβανομένων όλων των ορισμάτων. Τα ορίσματα περικόπτονται στα 4096 χαρακτήρες για να αποφευχθεί ένα πιθανό σφάλμα εκτέλεσης.
SUDO_EDITOR Επικεφαλής προεπιλεγμένου επεξεργαστή που θα χρησιμοποιηθεί στη λειτουργία -e (sudoedit).
SUDO_GID Ορίζεται στο group-ID του χρήστη που εκτέλεσε το sudo.
SUDO_HOME Ορίζεται στον κατάλογο αρχικής σελίδας του χρήστη που εκτέλεσε το sudo.
SUDO_PROMPT Χρησιμοποιείται ως η προεπιλεγμένη προτροπή κωδικού πρόσβασης, εκτός εάν καθοριστεί η επιλογή -p.
SUDO_PS1 Εάν έχει οριστεί, το PS1 θα οριστεί στην τιμή του για το πρόγραμμα που εκτελείται.
SUDO_TTY Ορίζεται στη συσκευή τερματικού του χρήστη που εκτέλεσε το sudo, εάν υπάρχει.
SUDO_UID Ορίζεται στο user-ID του χρήστη που εκτέλεσε το sudo.
SUDO_USER Ορίζεται στο όνομα σύνδεσης του χρήστη που εκτέλεσε το sudo.
USER Ορίζεται στην ίδια τιμή με το LOGNAME, όπως περιγράφεται παραπάνω.
VISUAL Επικεφαλής προεπιλεγμένου επεξεργαστή που θα χρησιμοποιηθεί στη λειτουργία -e (sudoedit) εάν δεν έχει οριστεί το SUDO_EDITOR.
ΑΡΧΕΙΑ
/etc/sudo.conf διαμόρφωση της διεπαφής sudo
ΠΑΡΑΔΕΙΓΜΑΤΑ
Τα ακόλουθα παραδείγματα υποθέτουν μια σωστά διαμορφωμένη πολιτική ασφαλείας.
Για να λάβετε μια λίστα αρχείων ενός μη αναγνώσιμου καταλόγου:
$ sudo ls /usr/local/protected
Για να απαριθμήσετε τον κατάλογο αρχικής σελίδας του χρήστη yaz σε μια μηχανή όπου το σύστημα αρχείων που περιέχει το ~yaz δεν είναι εξαγόμενο ως root:
$ sudo -u yaz ls ~yaz
Για να επεξεργαστείτε το αρχείο index.html ως χρήστης www:
$ sudoedit -u www ~www/htdocs/index.html
Για να δείτε τα αρχεία καταγραφής του συστήματος, στα οποία έχουν πρόσβαση μόνο ο χρήστης root και οι χρήστες στην ομάδα adm:
$ sudo -g adm more /var/log/syslog
Για να εκτελέσετε έναν επεξεργαστή ως χρήστης jim με διαφορετική κύρια ομάδα:
$ sudoedit -u jim -g audio ~jim/sound.txt
Για να τερματίσετε μια μηχανή:
$ sudo shutdown -r +15 "quick reboot"
Για να δημιουργήσετε μια λίστα χρήσης των καταλόγων στο διαμέρισμα /home. Οι εντολές εκτελούνται σε ένα υπο-κέλυφος για να επιτρέπεται στην εντολή ‘cd’ και στην ανακατεύθυνση αρχείων να λειτουργούν.
$ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
ΔΙΑΓΝΩΣΤΙΚΑ
Τα μηνύματα σφάλματος που παράγονται από το sudo περιλαμβάνουν:
η επεξεργασία αρχείων σε έναν καταλόγο όπου ο χρήστης έχει δικαιώματα εγγραφής δεν επιτρέπεται
Από προεπιλογή, το sudoedit δεν επιτρέπει την επεξεργασία ενός αρχείου όταν οποιοσδήποτε από τους γονικούς καταλόγους είναι εγγράψιμος από τον χρήστη που εκτελεί την εντολή. Αυτό αποφεύγει μια συνθήκη αγώνα που θα μπορούσε να επιτρέψει στον χρήστη να αντικαταστήσει ένα αυθαίρετο αρχείο. Δείτε την επιλογή sudoedit_checkdir στο sudoers(5) για περισσότερες πληροφορίες.
η επεξεργασία συμβολικών συνδέσμων δεν επιτρέπεται
Από προεπιλογή, το sudoedit δεν ακολουθεί συμβολικούς συνδέσμους κατά το άνοιγμα αρχείων. Δείτε το sudoedit_follow στο sudoers(5) για περισσότερες πληροφορίες.
το αποτελεσματικό uid δεν είναι 0, είναι το sudo εγκατεστημένο με δικαιώματα setuid root;
Το sudo δεν εκτελέστηκε με δικαιώματα root. Το δυαδικό αρχείο sudo πρέπει να ανήκει στον χρήστη root και
να έχει οριστεί η σημαία set-user-ID. Επίσης, δεν πρέπει να βρίσκεται σε ένα σύστημα αρχείων που έχει τοποθετηθεί με την
επιλογή ‘nosuid’ ή σε ένα σύστημα αρχείων NFS που αντιστοιχεί το uid 0 σε ένα μη προνομιούχο uid.
το αποτελεσματικό uid δεν είναι 0, είναι το sudo σε ένα σύστημα αρχείων με την επιλογή ‘nosuid’ ή σε ένα σύστημα αρχείων NFS χωρίς δικαιώματα root;
Το sudo δεν εκτελέστηκε με δικαιώματα root. Το δυαδικό αρχείο sudo έχει τα σωστά δικαιώματα αλλά δεν εκτελέστηκε με δικαιώματα root. Ο πιο συνηθισμένος λόγος για αυτό είναι ότι
το σύστημα αρχείων στο οποίο βρίσκεται το δυαδικό αρχείο sudo έχει τοποθετηθεί με την επιλογή ‘nosuid’ ή είναι ένα σύστημα αρχείων NFS που αντιστοιχεί το uid 0 σε ένα μη προνομιούχο uid.
μοιραίο σφάλμα, αδυναμία φόρτωσης πρόσθετων
Ένα σφάλμα συνέβη κατά τη φόρτωση ή την αρχικοποίηση των πρόσθετων που καθορίζονται στο sudo.conf(5).
άκυρο όνομα μεταβλητής περιβάλλοντος
Ένα ή περισσότερα ονόματα μεταβλητών περιβάλλοντος που καθορίζονται μέσω της επιλογής -E περιείχαν ένα ίσον (‘=’). Τα ορίσματα της επιλογής -E θα πρέπει να είναι ονόματα μεταβλητών περιβάλλοντος χωρίς σχετική τιμή.
δεν παρείχεται κωδικός πρόσβασης
Όταν το sudo προσπάθησε να διαβάσει τον κωδικό πρόσβασης, δεν έλαβε κανέναν χαρακτήρα. Αυτό μπορεί να συμβεί εάν δεν είναι διαθέσιμο τερματικό (ή καθορίζεται η επιλογή -S) και η τυπική είσοδος έχει ανακατευθυνθεί από το /dev/null.
απαιτείται τερματικό για την ανάγνωση του κωδικού πρόσβασης
Το sudo χρειάζεται να διαβάσει τον κωδικό πρόσβασης, αλλά δεν υπάρχει διαθέσιμος μηχανισμός για να το κάνει. Οι απομακρυσμένες εντολές που εκτελούνται μέσω του [ssh]({filename}../../ssh)(1) δεν έχουν διαθέσιμο τερματικό από προεπιλογή. Η χρήση της επιλογής -t στο [ssh]({filename}../../ssh)(1) θα προκαλέσει την εκχώρηση ενός τερματικού, το οποίο θα πρέπει να επιτρέψει στο sudo να διαβάσει τον κωδικό πρόσβασης. Για να
επιτρέπεται στο sudo να εκτελεί τοπικές εντολές χωρίς τερματικό, μπορεί να χρησιμοποιηθεί η επιλογή -S για να διαβάσει έναν
κωδικό πρόσβασης από την τυπική είσοδο ή μπορεί να διαμορφωθεί ένα βοηθητικό πρόγραμμα askpass μέσω του αρχείου sudo.conf(5) ή με την ορισμό της μεταβλητής περιβάλλοντος SUDO_ASKPASS.
δεν βρέθηκε κανένας εγγράψιμος προσωρινός κατάλογος
το sudoedit δεν μπόρεσε να βρει έναν κατάλληλο προσωρινό κατάλογο στον οποίο θα αποθηκεύσει τα ενδιάμεσα
αρχεία του.
Η σημαία «χωρίς νέα δικαιώματα» έχει οριστεί, γεγονός που εμποδίζει το sudo να εκτελεστεί ως root.
το sudo εκτελέστηκε από μια διαδικασία που έχει οριστεί η σημαία «χωρίς νέα δικαιώματα» του Linux. Αυτό προκαλεί
την αγνόηση του bit set-user-ID κατά την εκτέλεση ενός εκτελέσιμου αρχείου, το οποίο θα εμποδίσει τη λειτουργία του sudo. Η πιθανότερη αιτία είναι η εκτέλεση του sudo μέσα σε ένα κοντέινερ που ορίζει
αυτή τη σημαία. Ελέγξτε την τεκμηρίωση για να δείτε αν είναι δυνατό να διαμορφώσετε το κοντέινερ
ώστε η σημαία να μην ορίζεται.
το sudo πρέπει να ανήκει στον uid 0 και να έχει οριστεί το bit setuid
το sudo δεν εκτελέστηκε με δικαιώματα root. Το δυαδικό αρχείο sudo δεν έχει τον σωστό ιδιοκτήτη ή δικαιώματα. Πρέπει να ανήκει στον χρήστη root και να έχει οριστεί το bit set-user-ID.
το sudoedit δεν υποστηρίζεται σε αυτήν την πλατφόρμα
Είναι δυνατό να εκτελεστεί το sudoedit μόνο σε συστήματα που υποστηρίζουν την ορισμό του αποτελεσματικού user-ID.
χρόνος αναμονής για την ανάγνωση του κωδικού πρόσβασης
Ο χρήστης δεν εισήγαγε έναν κωδικό πρόσβασης πριν λήξει ο χρόνος αναμονής για τον κωδικό πρόσβασης (5 λεπτά από προεπιλογή).
δεν υπάρχετε στη βάση δεδομένων passwd
Το user-ID σας δεν εμφανίζεται στη συστημική βάση δεδομένων passwd.
δεν μπορείτε να καθορίσετε μεταβλητές περιβάλλοντος σε λειτουργία επεξεργασίας
Είναι δυνατό να καθοριστούν μεταβλητές περιβάλλοντος μόνο κατά την εκτέλεση μιας εντολής. Όταν επεξεργάζεστε ένα
αρχείο, ο επεξεργαστής εκτελείται με το περιβάλλον του χρήστη χωρίς τροποποιήσεις.
Δείτε επίσης
su(1), stat(2), login_cap(3), passwd(5), sudo.conf(5), sudo_plugin(5), sudoers(5), sudoers_timestamp(5), sudoreplay(8), visudo(8)
ΙΣΤΟΡΙΚΟ
Δείτε το αρχείο HISTORY.md στην διανομή του sudo (https://www.sudo.ws/about/history/) για μια σύντομη ιστορία του sudo.
ΣΥΓΓΡΑΦΕΙΣ
Πολλοί άνθρωποι έχουν εργαστεί στο sudo με τα χρόνια. αυτή η έκδοση αποτελείται από κώδικα που έχει γραφτεί κυρίως από:
Todd C. Miller
Δείτε το αρχείο CONTRIBUTORS.md στην διανομή του sudo (https://www.sudo.ws/about/contributors/) για μια αναλυτική λίστα των ατόμων που έχουν συνεισφέρει στο sudo.
ΠΡΟΕΙΔΟΠΟΙΗΣΕΙΣ
Δεν υπάρχει εύκολος τρόπος για να αποτραπεί ένας χρήστης από το να αποκτήσει ένα shell root, εάν αυτός ο χρήστης επιτρέπεται να εκτελεί αυθαίρετες εντολές μέσω του sudo. Επίσης, πολλά προγράμματα (όπως οι επεξεργαστές) επιτρέπουν στον χρήστη να εκτελεί εντολές μέσω των shell escapes, παρακάμπτοντας έτσι τους ελέγχους του sudo. Ωστόσο, στα περισσότερα συστήματα είναι δυνατό να αποτραπούν τα shell escapes με τη λειτουργία noexec του plugin sudoers(5).
Δεν έχει νόημα να εκτελείτε απευθείας την εντολή «cd» μέσω του sudo, π.χ.,
$ sudo cd /usr/local/protected
καθώς όταν η εντολή ολοκληρωθεί, η κύρια διαδικασία (το shell σας) θα εξακολουθεί να είναι η ίδια. Η επιλογή -D μπορεί να χρησιμοποιηθεί για να εκτελεστεί μια εντολή σε έναν συγκεκριμένο κατάλογο.
Η εκτέλεση shell scripts μέσω του sudo μπορεί να εκθέσει τα ίδια σφάλματα πυρήνα που καθιστούν τα shell scripts με ορισμένο user-ID μη ασφαλή σε ορισμένα λειτουργικά συστήματα (εάν το λειτουργικό σας σύστημα έχει έναν κατάλογο /dev/fd/, τα shell scripts με ορισμένο user-ID είναι γενικά ασφαλή).
ΣΦΑΛΜΑΤΑ
Εάν πιστεύετε ότι έχετε βρει ένα σφάλμα στο sudo, μπορείτε είτε να υποβάλετε μια αναφορά σφάλματος στη βάση δεδομένων σφαλμάτων του sudo, https://bugzilla.sudo.ws/, είτε να ανοίξετε ένα ζήτημα στο https://github.com/sudo-project/sudo/issues. Εάν προτιμάτε να χρησιμοποιήσετε το email, μπορείτε να στείλετε μηνύματα στη λίστα αλληλογραφίας sudo-workers, https://www.sudo.ws/mailman/listinfo/sudo-workers (δημόσια) ή <_> (ιδιωτική).
Μην αναφέρετε ευπάθειες ασφαλείας μέσω δημόσιων ζητημάτων GitHub, Bugzilla ή λιστών αλληλογραφίας. Αντίθετα, αναφέρετέ τις μέσω email στο <_>. Μπορείτε να κρυπτογραφήσετε το μήνυμά σας με PGP, εάν το επιθυμείτε, χρησιμοποιώντας το κλειδί που βρίσκεται στο https://www.sudo.ws/dist/PGPKEYS.
ΥΠΟΣΤΗΡΙΞΗ
Περιορισμένη δωρεάν υποστήριξη είναι διαθέσιμη μέσω της λίστας αλληλογραφίας sudo-users, δείτε https://www.sudo.ws/mailman/listinfo/sudo-users για να εγγραφείτε ή να αναζητήσετε στα αρχεία.
ΑΠΟΠΟΙΗΣΗ ΕΥΘΥΝΩΝ
Το sudo παρέχεται «ΟΠΩΣ ΕΧΕΙ» και οποιεσδήποτε ρητές ή σιωπηρές εγγυήσεις, συμπεριλαμβανομένων, ενδεικτικά, των σιωπηρών εγγυήσεων εμπορευσιμότητας και καταλληλότητας για συγκεκριμένο σκοπό, αποποιούνται. Δείτε το αρχείο LICENSE.md που διανέμεται με το sudo ή το https://www.sudo.ws/about/license/ για πλήρεις λεπτομέρειες.