su - εκτέλεση μιας εντολής με εναλλακτικό αναγνωριστικό χρήστη και ομάδας
ΣΥΝΤΑΞΗ
su [επιλογές] [-] [χρήστης [όρισμα...]]
ΠΕΡΙΓΡΑΦΗ
Το su επιτρέπει την εκτέλεση εντολών με εναλλακτικό αναγνωριστικό χρήστη και ομάδας.
Όταν καλείται χωρίς να καθοριστεί χρήστης, το su προεπιλέγει την εκτέλεση ενός διαδραστικού κελύφους ως root. Όταν καθορίζεται ένας χρήστης, μπορούν να δοθούν επιπλέον ορίσματα, οπότε αυτά περνούν στο κύλφος.
Για λόγους συμβατότητας, το su προεπιλέγει να μην αλλάζει τον τρέχοντα κατάλογο και να ορίζει μόνο τις μεταβλητές περιβάλλοντος HOME και SHELL (συν τις USER και LOGNAME, εάν ο στοχευμένος χρήστης δεν είναι root). Συνιστάται να χρησιμοποιείτε πάντα την επιλογή --login (αντί για τη συντομογραφία της, -) για να αποφύγετε τις ανεπιθύμητες ενέργειες που προκαλούνται από την ανάμειξη περιβαλλόντων.
Αυτή η έκδοση του su χρησιμοποιεί το PAM για τον έλεγχο ταυτότητας, τη διαχείριση λογαριασμών και συνεδριών. Ορισμένες επιλογές διαμόρφωσης που βρίσκονται σε άλλες υλοποιήσεις του su, όπως η υποστήριξη για μια ομάδα "wheel", πρέπει να διαμορφωθούν μέσω του PAM.
Το su προορίζεται κυρίως για μη προνομιούχους χρήστες, η συνιστώμενη λύση για προνομιούχους χρήστες
(π.χ., σενάρια που εκτελούνται από το root) είναι η χρήση της μη-αλλαγής-αναγνωριστικού-χρήστη εντολής runuser(1), η οποία δεν
απαιτεί έλεγχο ταυτότητας και παρέχει ξεχωριστή διαμόρφωση PAM. Εάν δεν απαιτείται καθόλου η συνεδρία PAM, τότε η συνιστώμενη λύση είναι η χρήση της εντολής setpriv(1).
Σημειώστε ότι το su σε όλες τις περιπτώσεις χρησιμοποιεί το PAM (pam_getenvlist(3)) για να πραγματοποιήσει την τελική τροποποίηση του περιβάλλοντος. Οι επιλογές γραμμής εντολών, όπως οι --login και --preserve-environment, επηρεάζουν το περιβάλλον πριν τροποποιηθεί από το PAM.
Από την έκδοση 2.38, το su επαναφέρει τα όρια πόρων διεργασιών RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE,
RLIMIT_AS και RLIMIT_NOFILE.
ΕΠΙΛΟΓΕΣ
-c, --command εντολή
Διέδωσε την εντολή στο κέλυφος με την επιλογή -c.
-f, --fast
Διέδωσε το -f στο κέλυφος, το οποίο μπορεί ή όχι να είναι χρήσιμο, ανάλογα με το κέλυφος.
-g, --group ομάδα
Καθορίστε την κύρια ομάδα. Αυτή η επιλογή είναι διαθέσιμη μόνο στον χρήστη root.
-G, --supp-group ομάδα
Καθορίστε μια δευτερεύουσα ομάδα. Αυτή η επιλογή είναι διαθέσιμη μόνο στον χρήστη root. Η πρώτη
καθορισμένη δευτερεύουσα ομάδα χρησιμοποιείται επίσης ως κύρια ομάδα εάν η επιλογή --group δεν
καθορίζεται.
-, -l, --login
Ξεκινήστε το κέλυφος ως κέλυφος σύνδεσης με ένα περιβάλλον παρόμοιο με μια πραγματική σύνδεση.
Σημειώστε ότι στα συστήματα που βασίζονται στο systemd, μια νέα συνεδρία μπορεί να οριστεί ως πραγματικό σημείο εισόδου στο σύστημα. Ωστόσο, το su δεν δημιουργεί μια πραγματική συνεδρία (από την άποψη του PAM) από αυτή την άποψη. Πρέπει να χρησιμοποιήσετε εργαλεία όπως το systemd-run ή το machinectl για να ξεκινήσετε μια πλήρη, πραγματική συνεδρία.
Το su κάνει τα εξής:
καθαρίζει όλες τις μεταβλητές περιβάλλοντος εκτός από το TERM και τις μεταβλητές που καθορίζονται από το
--whitelist-environment
αρχικοποιεί τις μεταβλητές περιβάλλοντος HOME, SHELL, USER, LOGNAME και PATH
αλλαγές στον κατάλογο του χρήστη-στόχου
ορίζει το argv[0] του κελύφους σε '-' για να κάνει το κέλυφος ένα κέλυφος σύνδεσης
-m, -p, --preserve-environment
Διατηρεί ολόκληρο το περιβάλλον, δηλαδή, δεν ορίζει τις μεταβλητές HOME, SHELL, USER ή LOGNAME. Αυτή η επιλογή αγνοείται εάν έχει καθοριστεί η επιλογή --login.
-P, --pty
Δημιουργεί ένα ψευδο-τερματικό για την συνεδρία. Το ανεξάρτητο τερματικό παρέχει καλύτερη ασφάλεια, καθώς ο χρήστης δεν μοιράζεται τερματικό με την αρχική συνεδρία. Αυτό μπορεί να χρησιμοποιηθεί για την αποφυγή επιθέσεων εισαγωγής κώδικα μέσω του ioctl TIOCSTI και άλλων επιθέσεων ασφαλείας έναντι των περιγραφέων αρχείων τερματικού. Ολόκληρη η συνεδρία μπορεί επίσης να μεταφερθεί στο παρασκήνιο (π.χ., su --pty - user -c application &). Εάν είναι ενεργοποιημένο το ψευδο-τερματικό, τότε το su λειτουργεί ως ενδιάμεσος μεταξύ των συνεδριών (συγχρονίζει την είσοδο και την έξοδο).
Αυτή η δυνατότητα έχει σχεδιαστεί κυρίως για διαδραστικές συνεδρίες. Εάν η τυπική είσοδος δεν είναι τερματικό, αλλά για παράδειγμα μια σωλήνα (π.χ., echo "date" | su --pty), τότε η σημαία ECHO για το ψευδο-τερματικό απενεργοποιείται για να αποφευχθεί ακατάστατη έξοδος.
-s, --shell shell
Εκτελεί το καθορισμένο κέλυφος αντί για το προεπιλεγμένο. Εάν ο χρήστης-στόχος έχει ένα περιορισμένο κέλυφος (δηλαδή, δεν αναφέρεται στο /etc/shells), η επιλογή --shell και η μεταβλητή περιβάλλοντος SHELL αγνοούνται, εκτός εάν ο χρήστης που καλεί είναι ο root.
Το κέλυφος που θα εκτελεστεί επιλέγεται σύμφωνα με τους ακόλουθους κανόνες, με τη σειρά:
το κέλυφος που καθορίζεται με το --shell
το κέλυφος που καθορίζεται στη μεταβλητή περιβάλλοντος SHELL, εάν χρησιμοποιηθεί η επιλογή --preserve-environment
το κέλυφος που αναφέρεται στην καταχώρηση passwd του χρήστη-στόχου
/bin/sh
--session-command=command
Το ίδιο με το -c, αλλά δεν δημιουργεί μια νέα συνεδρία. (Δεν συνιστάται.)
-T, --no-pty
Μην δημιουργήσετε ένα ψευδο-τερματικό, αντίθετο με το --pty και το -P. Σημειώστε ότι η εκτέλεση χωρίς ψευδο-τερματικό ανοίγει τον κίνδυνο αύξησης προνομίων μέσω της εισαγωγής εντολών ioctl TIOCSTI/TIOCLINUX.
-w, --whitelist-environment list
Μην επαναφέρετε τις μεταβλητές περιβάλλοντος που καθορίζονται στην κατάλογο που διαχωρίζεται με κόμματα κατά την εκκαθάριση του περιβάλλοντος για το --login. Η λευκή λίστα αγνοείται για τις μεταβλητές περιβάλλοντος HOME, SHELL, USER, LOGNAME και PATH.
-h, --help
Εμφανίζει το κείμενο βοήθειας και εξέρχεται.
-V, --version
Εμφανίζει την έκδοση και εξέρχεται.
ΣΗΜΑΤΑ
Όταν το su λαμβάνει είτε το SIGINT, SIGQUIT ή SIGTERM, τερματίζει το παιδί του και στη συνέχεια τερματίζει τον εαυτό του με το σήμα που έλαβε. Το παιδί τερματίζεται με το SIGTERM, μετά από μια ανεπιτυχή προσπάθεια και μια καθυστέρηση 2 δευτερολέπτων, το παιδί σκοτώνεται με το SIGKILL.
ΑΡΧΕΙΑ ΔΙΑΜΟΡΦΩΣΗΣ
Το su διαβάζει τα αρχεία διαμόρφωσης /etc/default/su και /etc/login.defs. Τα ακόλουθα στοιχεία διαμόρφωσης είναι σχετικά για το su:
FAIL_DELAY (αριθμός)
Καθυστέρηση σε δευτερόλεπτα σε περίπτωση αποτυχίας ελέγχου ταυτότητας. Ο αριθμός πρέπει να είναι ένας μη αρνητικός ακέραιος.
ENV_PATH (συμβολοσειρά)
Ορίζει τη μεταβλητή περιβάλλοντος PATH για έναν κανονικό χρήστη. Η προεπιλεγμένη τιμή είναι /usr/local/bin:/bin:/usr/bin.
ENV_ROOTPATH (συμβολοσειρά), ENV_SUPATH (συμβολοσειρά)
Ορίζει τη μεταβλητή περιβάλλοντος PATH για τον root. Το ENV_SUPATH έχει προτεραιότητα. Η προεπιλεγμένη τιμή είναι /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.
ALWAYS_SET_PATH (boolean)
Εάν οριστεί σε yes και δεν έχουν καθοριστεί οι επιλογές --login και --preserve-environment, το su αρχικοποιεί το PATH.
Η μεταβλητή περιβάλλοντος PATH μπορεί να είναι διαφορετική σε συστήματα όπου τα /bin και /sbin έχουν συγχωνευθεί στο /usr· αυτή η μεταβλητή επηρεάζεται επίσης από την επιλογή γραμμής εντολών --login και τη ρύθμιση του συστήματος PAM (π.χ., pam_env(8)).
ΚΑΤΑΣΤΑΣΗ ΕΞΟΔΟΥ
Το su συνήθως επιστρέφει την κατάσταση εξόδου της εντολής που εκτέλεσε. Εάν η εντολή τερματίστηκε από ένα σήμα, το su επιστρέφει τον αριθμό του σήματος συν 128.
Κατάσταση εξόδου που δημιουργείται από το ίδιο το su:
1 Γενικό σφάλμα πριν από την εκτέλεση της ζητούμενης εντολής
126 Η ζητούμενη εντολή δεν μπορούσε να εκτελεστεί
127 Η ζητούμενη εντολή δεν βρέθηκε
ΑΡΧΕΙΑ
/etc/pam.d/su
προεπιλεγμένο αρχείο διαμόρφωσης PAM
/etc/pam.d/su-l
αρχείο διαμόρφωσης PAM εάν καθοριστεί η επιλογή --login
/etc/default/su
αρχείο διαμόρφωσης logindef ειδικό για εντολές
/etc/login.defs
παγκόσμιο αρχείο διαμόρφωσης logindef
ΣΗΜΕΙΩΣΕΙΣ
Για λόγους ασφαλείας, το su καταγράφει πάντα τις αποτυχημένες προσπάθειες σύνδεσης στο αρχείο btmp, αλλά δεν γράφει καθόλου στο αρχείο lastlog. Αυτή η λύση μπορεί να χρησιμοποιηθεί για τον έλεγχο της συμπεριφοράς του su μέσω της διαμόρφωσης PAM. Εάν θέλετε να χρησιμοποιήσετε τη μονάδα pam_lastlog(8) για να εκτυπώσετε ένα μήνυμα προειδοποίησης σχετικά με τις αποτυχημένες προσπάθειες σύνδεσης, τότε η μονάδα pam_lastlog(8) πρέπει να διαμορφωθεί ώστε να ενημερώνει επίσης το αρχείο lastlog. Για παράδειγμα, με:
session required pam_lastlog.so nowtmp
ΙΣΤΟΡΙΚΟ
Η εντολή su προήλθε από το su του coreutils, το οποίο βασιζόταν σε μια υλοποίηση του David MacKenzie. Η έκδοση util-linux έχει επαναδιαμορφωθεί από τον Karel Zak.
ΔΕΙΤΕ ΕΠΙΣΗΣ
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
ΑΝΑΦΟΡΑ ΣΦΑΛΜΑΤΩΝ
Για αναφορές σφαλμάτων, χρησιμοποιήστε το σύστημα παρακολούθησης προβλημάτων [https://github.com/util-linux/util-linux/issues].
ΔΙΑΘΕΣΙΜΟΤΗΤΑ
Η εντολή su είναι μέρος του πακέτου util-linux, το οποίο μπορεί να ληφθεί από το Linux Kernel Archive [https://www.kernel.org/pub/linux/utils/util-linux/].