euid, ruid, suid
Μεταβλητές Αναγνώρισης Χρήστη
ruid
: Το πραγματικό ID χρήστη υποδεικνύει τον χρήστη που ξεκίνησε τη διεργασία.euid
: Επίσης γνωστό ως αποτελεσματικό ID χρήστη, αντιπροσωπεύει την ταυτότητα του χρήστη που χρησιμοποιείται από το σύστημα για να καθορίσει τα δικαιώματα της διεργασίας. Γενικά, τοeuid
αντικατοπτρίζει τοruid
, εκτός από περιπτώσεις όπως η εκτέλεση ενός δυαδικού αρχείου SetUID, όπου τοeuid
παίρνει την ταυτότητα του ιδιοκτήτη του αρχείου, παρέχοντας έτσι συγκεκριμένα δικαιώματα λειτουργίας.suid
: Αυτό το αποθηκευμένο ID χρήστη είναι κρίσιμο όταν μια διεργασία υψηλών προνομίων (συνήθως εκτελούμενη ως root) χρειάζεται να αποδώσει προσωρινά τα προνόμιά της για να εκτελέσει ορισμένες εργασίες, μόνο για να ανακτήσει αργότερα την αρχική της αυξημένη κατάσταση.
Σημαντική Σημείωση
Μια διεργασία που δεν λειτουργεί ως root μπορεί να τροποποιήσει μόνο το euid
της για να ταιριάζει με το τρέχον ruid
, euid
ή suid
.
Κατανόηση των Συναρτήσεων set*uid
setuid
: Αντίθετα με τις αρχικές υποθέσεις, τοsetuid
τροποποιεί κυρίως τοeuid
αντί τουruid
. Συγκεκριμένα, για διεργασίες με προνόμια, ευθυγραμμίζει ταruid
,euid
καιsuid
με τον καθορισμένο χρήστη, συνήθως το root, ενισχύοντας αποτελεσματικά αυτά τα αναγνωριστικά λόγω του αντικαθιστώντοςsuid
. Λεπτομερείς πληροφορίες μπορούν να βρεθούν στη σελίδα του εγχειριδίου του setuid.setreuid
καιsetresuid
: Αυτές οι συναρτήσεις επιτρέπουν τη λεπτομερή προσαρμογή τωνruid
,euid
καιsuid
. Ωστόσο, οι δυνατότητές τους εξαρτώνται από το επίπεδο προνομίων της διεργασίας. Για μη-ριζικές διεργασίες, οι τροποποιήσεις περιορίζονται στις τρέχουσες τιμές τωνruid
,euid
καιsuid
. Αντίθετα, οι διεργασίες root ή αυτές με δυνατότηταCAP_SETUID
μπορούν να αναθέσουν αυθαίρετες τιμές σε αυτά τα αναγνωριστικά. Περισσότερες πληροφορίες μπορούν να αντληθούν από τη σελίδα του εγχειριδίου του setresuid και τη σελίδα του εγχειριδίου του setreuid.
Αυτές οι λειτουργίες σχ
Συλλογή και Δικαιώματα:
Όταν μιλάμε για συλλογή και δικαιώματα στο Linux, αναφερόμαστε στη διαδικασία της ανάθεσης δικαιωμάτων σε αρχεία και φακέλους. Τα δικαιώματα καθορίζουν ποιος έχει πρόσβαση σε ένα αρχείο ή φάκελο και ποιες ενέργειες μπορεί να εκτελέσει.
Στο Linux, κάθε αρχείο και φάκελος έχει τρία βασικά δικαιώματα: ανάγνωση (r), εγγραφή (w) και εκτέλεση (x). Αυτά τα δικαιώματα μπορούν να ανατεθούν σε τρεις διαφορετικές ομάδες: τον ιδιοκτήτη του αρχείου, την ομάδα του αρχείου και τους υπόλοιπους χρήστες.
Οι διαδικασίες που εκτελούνται στο Linux έχουν έναν πραγματικό αριθμό χρήστη (RUID) και έναν αριθμό χρήστη αποτελέσματος (EUID). Ο RUID αντιπροσωπεύει τον πραγματικό χρήστη που εκτελεί τη διεργασία, ενώ ο EUID αντιπροσωπεύει τον χρήστη που χρησιμοποιείται για την εκτέλεση της διεργασίας.
Οι διαδικασίες μπορούν να αλλάξουν τον EUID τους σε έναν άλλο χρήστη, αρκεί να έχουν τα ανάλογα δικαιώματα. Αυτή η δυνατότητα μπορεί να χρησιμοποιηθεί για την απόκτηση προνομίων και την ανόρθωση της διαδικασίας.
Επιπλέον, οι αρχειοθέτες στο Linux μπορούν να ανατεθούν με το δικαίωμα SUID (Set User ID), το οποίο επιτρέπει σε ένα αρχείο να εκτελείται με τα δικαιώματα του ιδιοκτήτη του αρχείου, ανεξάρτητα από τον χρήστη που το εκτελεί.
Κατά την ανάπτυξη μιας εφαρμογής ή την ρύθμιση ενός συστήματος Linux, είναι σημαντικό να λαμβάνονται υπόψη οι σωστές διαδικασίες συλλογής και τα δικαιώματα των αρχείων και των φακέλων, καθώς αυτά μπορούν να επηρεάσουν την ασφάλεια του συστήματος.
Ανάλυση:
Οι
ruid
καιeuid
ξεκινούν ως 99 (nobody) και 1000 (frank) αντίστοιχα.Η
setuid
ευθυγραμμίζει και τους δύο στο 1000.Η
system
εκτελεί την εντολή/bin/bash -c id
λόγω του symlink από το sh στο bash.Το
bash
, χωρίς την επιλογή-p
, προσαρμόζει τοeuid
για να ταιριάζει με τοruid
, με αποτέλεσμα και οι δύο να είναι 99 (nobody).
Περίπτωση 2: Χρήση της setreuid με την system
Κώδικας C:
Συλλογή και Δικαιώματα:
Όταν μιλάμε για συλλογή και δικαιώματα στο Linux, αναφερόμαστε στη διαδικασία της ανάθεσης δικαιωμάτων σε αρχεία και φακέλους. Τα δικαιώματα καθορίζουν ποιος έχει πρόσβαση σε ένα αρχείο ή φάκελο και ποιες ενέργειες μπορεί να εκτελέσει.
Στο Linux, κάθε αρχείο και φάκελος έχει τρία βασικά δικαιώματα: ανάγνωση (read), εγγραφή (write) και εκτέλεση (execute). Αυτά τα δικαιώματα μπορούν να ανατεθούν σε τρεις κατηγορίες χρηστών: τον ιδιοκτήτη του αρχείου, την ομάδα του αρχείου και τους υπόλοιπους χρήστες.
Οι διαχειριστές συστήματος μπορούν να αλλάξουν τα δικαιώματα ενός αρχείου ή φακέλου χρησιμοποιώντας την εντολή chmod
. Επιπλέον, μπορούν να αλλάξουν τον ιδιοκτήτη ενός αρχείου ή φακέλου χρησιμοποιώντας την εντολή chown
.
Η σωστή διαχείριση των δικαιωμάτων είναι σημαντική για την ασφάλεια του συστήματος, καθώς μπορεί να περιορίσει την πρόσβαση των χρηστών σε ευαίσθητα αρχεία και να αποτρέψει την ανεξουσιότητα.
Εκτέλεση και Αποτέλεσμα:
To εκτελέσεις και τα αποτελέσματα:
Ανάλυση:
Το
setreuid
ορίζει τόσο το ruid όσο και το euid σε 1000.Το
system
καλεί το bash, το οποίο διατηρεί τα αναγνωριστικά χρήστη λόγω της ισότητάς τους, λειτουργώντας αποτελεσματικά ως frank.
Περίπτωση 3: Χρήση του setuid με το execve
Στόχος: Εξερεύνηση της αλληλεπίδρασης μεταξύ του setuid και του execve.
Εκτέλεση και Αποτέλεσμα:
To εκτελέσεις και τα αποτελέσματα:
Ανάλυση:
Το
ruid
παραμένει 99, αλλά τοeuid
ορίζεται σε 1000, σύμφωνα με το αποτέλεσμα τουsetuid
.
Παράδειγμα Κώδικα C 2 (Κλήση του Bash):
Εκτέλεση και Αποτέλεσμα:
To εκτελέσεις και τα αποτελέσματα:
Ανάλυση:
Παρόλο που το
euid
ορίζεται σε 1000 από τοsetuid
, τοbash
επαναφέρει τοeuid
στοruid
(99) λόγω της απουσίας της επιλογής-p
.
Παράδειγμα Κώδικα C 3 (Χρήση του bash -p):
Εκτέλεση και Αποτέλεσμα:
To εκτελέσεις και τα αποτελέσματα:
Αναφορές
Last updated