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

Σε αυτό το θέμα

setuid και setgid

Οι μηχανισμοί setuid και setgid επιτρέπουν σε κάποιο πρόγραμμα, όταν εκτελείται, να υιοθετεί ορισμένες πτυχές μιας αρχής ασφαλείας, εκτός αυτής του χρήστη που εκτελεί το πρόγραμμα. Επιτρέπουν στο πρόγραμμα να πραγματοποιεί εναλλαγή μεταξύ των πτυχών του καλούντος χρήστη και αυτών άλλης αρχής ασφαλείας.

Τα κατάλληλα δικαιώματα είναι ξεχωριστά. Ενώ οι μηχανισμοί setuid και setgid επιτρέπουν σε μια εφαρμογή να ελέγχει την απάντηση στην ερώτηση: "Ποιος είσαι;", τα κατάλληλα δικαιώματα απαντούν στην ερώτηση: "Τι μπορείς να κάνεις;"

Υποσύστημα για εφαρμογές και ταυτότητες που βασίζονται σε UNIX

Σε τυπικά περιβάλλοντα UNIX, υπάρχει ακριβώς ένας χρήστης στον οποίο εκχωρούνται όλα τα δικαιώματα. Αυτός ο χρήστης, που συνήθως καλείται root, έχει αναγνωριστικό uid == 0. Στο υποσύστημα για εφαρμογές που βασίζονται σε UNIX, όλα τα υποστηριζόμενα δικαιώματα ενός δεδομένου συστήματος εκχωρούνται σε χρήστες που είναι μέλη είτε της ομάδας Administrators είτε της ομάδας Domain Administrators αυτού του συστήματος. Δεν χρειάζεται να συνδεθείτε ως διαχειριστής. Οποιοσδήποτε χρήστης με ιδιότητα μέλους είτε στην ομάδα Administrators ή στην ομάδα Domain Administrators έχει δικαιώματα root. Το SUA δεν διαθέτει όλα τα δικαιώματα που ορίζονται σε POSIX ή UNIX. Αυτό σημαίνει ότι υπάρχουν ορισμένα δικαιώματα που δεν εκχωρούνται σε κανένα χρήστη.

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

Σύμφωνα με το πρότυπο POSIX, ένα αρχείο έχει δικαιώματα που περιλαμβάνουν bit για ορισμό UID (setuid) και ορισμό GID (setgid). Εάν οριστεί ένα ή και τα δύο bit σε ένα αρχείο και μια διεργασία εκτελέσει αυτό το αρχείο, η διεργασία αποκτά το UID ή GID του αρχείου. Όταν χρησιμοποιείται προσεκτικά, ο μηχανισμός αυτός επιτρέπει σε χρήστες χωρίς δικαιώματα να εκτελούν προγράμματα που λειτουργούν με τα υψηλότερα δικαιώματα του κατόχου ή της ομάδας του αρχείου. Όταν, όμως, χρησιμοποιείται λανθασμένα, μπορεί να προκύψουν κίνδυνοι ασφαλείας, επιτρέποντας σε χρήστες χωρίς δικαιώματα να εκτελούν ενέργειες που θα έπρεπε να εκτελούνται μόνο από διαχειριστή. Γι' αυτόν τον λόγο, το SUA δεν υποστηρίζει αυτόν τον μηχανισμό από προεπιλογή. Αντ' αυτού, εάν προσπαθήσετε να εκτελέσετε ένα αρχείο με το σύνολο bit setuid ή setgid, το SUA δεν εκτελεί το αρχείο και επιστρέφει τον κωδικό σφάλματος ENOSETUID.

Ζητήματα εγκατάστασης για ορισμό UID σε υποσύστημα για εφαρμογές που βασίζονται σε UNIX

Εάν βασιστείτε σε μια εφαρμογή που απαιτεί τυπική συμπεριφορά POSIX, μπορείτε να ρυθμίσετε το SUA ώστε να εκτελεί αρχεία με το σύνολο bit setuid ή setgid. Αν το SUA ρυθμιστεί κατ' αυτόν τον τρόπο, όταν μια διεργασία εκτελεί ένα αρχείο με σύνολο bit setuid ή setgid, το SUA δημιουργεί τοπικά διακριτικά ασφάλειας για τη διεργασία με τα δικαιώματα που εκχωρούνται στον κάτοχο ή την ομάδα του αρχείου. Επειδή τα διακριτικά είναι τοπικά, δεν αναγνωρίζονται από άλλους υπολογιστές στο δίκτυο. Αυτό σημαίνει ότι, ακόμη κι αν το αρχείο ανήκει σε μέλος της ομάδας Domain Administrators, για παράδειγμα, η διεργασία δεν έχει αξιόπιστη πρόσβαση μέσω του δικτύου Windows® της Microsoft® σε άλλους υπολογιστές του τομέα. Αντιθέτως, τα δικαιώματα ισχύουν μόνο για τον υπολογιστή στον οποίο εκτελείται η διεργασία.

Για παράδειγμα, μια διεργασία εκτελεί ένα αρχείο προγράμματος με το σύνολο bit setuid και κάτοχος είναι ένα μέλος της ομάδας Domain Administrators. Εάν αυτό το πρόγραμμα προσπαθήσει να αλλάξει τον κωδικό πρόσβασης χρήστη του τομέα, η προσπάθεια θα αποτύχει, επειδή τα αναγνωριστικά ασφαλείας της διεργασίας είναι τοπικά και συνεπώς δεν αναγνωρίζονται από άλλα συστήματα στον τομέα. Από την άλλη πλευρά, αν το πρόγραμμα προσπαθήσει να αλλάξει τον κωδικό πρόσβασης ενός τοπικού χρήστη, η προσπάθεια θα επιτύχει επειδή ο κάτοχος του αρχείου είναι μέλος της ομάδας Domain Administrators, το οποίο συνήθως ανήκει στην ομάδα Administrators του τοπικού υπολογιστή. Για πληροφορίες σχετικά με τη ρύθμιση του SUA ώστε να εκτελεί αρχεία με το σύνολο bit setuid ή setgid, ανατρέξτε στα αρχεία Βοήθειας που διατίθενται με το πακέτο λήψης βοηθητικών προγραμμάτων και κιτ ανάπτυξης λογισμικού (SDK) για εφαρμογές που βασίζονται σε UNIX.

Για τις λειτουργίες setuid(2), setgid(2) και chroot(2), μια διεργασία πρέπει να έχει ενεργό UID που αντιστοιχίζεται στον λογαριασμό συστήματος, τον λογαριασμό διαχειριστή για τον τοπικό τομέα ή τον λογαριασμό διαχειριστή για τον κύριο τομέα. Ο λογαριασμός τοπικού διαχειριστή μπορεί να αλλάξει μόνο τα UID ή GID σε άλλο αναγνωριστικό στον ίδιο τομέα.

Για τις λειτουργίες chown(1), chmod(1) και chgrp(1), ένας λογαριασμός πρέπει να έχει τα δικαιώματα των Windows SE_BACKUP και SE_RESTORE για να εκτελεί λειτουργίες make σε αρχεία που κατέχει άλλος χρήστης ή ομάδα ή για να τροποποιεί δικαιώματα σε αρχείο που κατέχει άλλος χρήστης. Τα δικαιώματα αυτά συνήθως ανήκουν στους λογαριασμούς διαχειριστή και χειριστή αντιγράφων ασφαλείας.

Βλ. επίσης