Professional Documents
Culture Documents
Εργαστήριο 5
Εργαστήριο 5
Εργαστήριο 5
Διδάσκων: I. Μουμτζίδης
5ο Εργαστήριο.
Θεωρία
Χρήστες
Το Λ.Σ. του UNIX επιτρέπει την ύπαρξη αλλά και την ταυτόχρονη χρήση του συστήματος σε πάνω από
ένα χρήστες. Κάθε χρήστης έχει ένα μοναδικό αριθμό, που τον χαρακτηρίζει (user ID - UID – User
Identification), ο οποίος αντιστοιχεί στο όνομα χρήστη. Όλα τα ονόματα χρηστών και τα UID
αποθηκεύονται στο αρχείο /etc/passwd. Οι κωδικοί πρόσβασης για κάθε χρήστη είναι αποθηκευμένοι
στο αρχείο /etc/shadow κωδικοποιημένοι έτσι ώστε να μην είναι εφικτή η ανάγνωση των κωδικών
άλλων χρηστών ακόμα και σε χρήστες που έχουν πρόσβαση στο αρχείο και μπορούν να το διαβάσουν.
Όπως έχει ήδη αναφερθεί, σε προηγούμενα εργαστήρια, σε κάθε χρήστη αντιστοιχεί ένα home
directory (αρχικός φάκελος χρήστη). Ο φάκελος αυτός βρίσκεται κάτω από τον φάκελο /home, έχει
όνομα το username του χρήστη και κάτω από αυτόν αποθηκεύονται τα προσωπικά αρχεία κάθε
χρήστη. Κάθε χρήστης μπορεί να δει μόνο τα δικά του αρχεία (ανάγνωση, εγγραφή, εκτέλεση), εκτός
αν του δώσουν δικαιώματα οι άλλοι χρήστες.
Όταν ένας χρήστης δημιουργήσει ένα αρχείο, τότε ο χρήστης αυτός είναι owner (κύριος) του αρχείου
αυτού και μπορεί να διαχειριστεί τα δικαιώματα πρόσβασης των υπολοίπων χρηστών σε αυτό. Το UID
του owner κάθε αρχείου αποθηκεύεται στα metadata που φυλάσσονται στο inode.
Ομάδες
Κάθε χρήστης ανήκει σε μία ή περισσότερες ομάδες χρηστών. Η κάθε ομάδα έχει ένα μοναδικό αριθμό
που την χαρακτηρίζει (group ID - GID – Group Identification), ο οποίος αντιστοιχεί στο όνομα ομάδας
(groupname). Για κάθε χρήστη επιλέγεται μία ομάδα η οποία θεωρείται πρωτεύουσα ή κύρια ομάδα
(primary group). Η πρωτεύουσα ομάδα ορίζεται στο αρχείο /etc/passwd ενώ οι δευτερεύουσες ομάδες
ορίζονται στο αρχείο /etc/group.
Οι χρήστες μίας ομάδας μοιράζονται τα αρχεία που ανήκουν στην ομάδα. Όταν ένας χρήστης
δημιουργήσει ένα αρχείο, τότε η πρωτεύουσα ομάδα του είναι αυτή στην οποία ανήκει ένα νέο αρχείο.
Η πληροφορία αυτή, δηλαδή το GID της ομάδας στην οποία ανήκει το αρχείο, αποθηκεύεται στα
metadata που φυλάσσονται στο inode.
Ο χρήστης root
Ο root είναι ειδικός λογαριασμός χρήστη με δικαιώματα διαχείρισης του συστήματος. Αυτός ο
λογαριασμός χρήστη έχει απεριόριστη πρόσβαση σε όλο το σύστημα (αρχεία, συσκευές, εφαρμογές)
και είναι ο owner των περισσότερων αρχείων που υπάρχουν στο σύστημα και δεν ανήκουν σε κάποιον
από τους κανονικούς χρήστες. Μερικές φορές αναφερόμαστε σε αυτόν ως superuser.
Ο διαχειριστής πρέπει να χρησιμοποιεί ένα συνηθισμένο λογαριασμό χρήστη και χρησιμοποιεί τον root
μόνο όταν είναι απολύτως απαραίτητο. Οι συνηθισμένοι χρήστες ενός συστήματος δε μπορούν να
κάνουν μεγάλη ζημιά σε ένα σύστημα. Ένα απλό λάθος στη δακτυλογράφηση μίας εντολής, από το
χρήστη root, μπορεί να καταστρέψει το σύστημα.
su και sudo
Σύνταξη:
su username
username: Το όνομα του χρήστη με το οποίο επιχειρείται η σύνδεση στο σύστημα. Αν δεν δοθεί
κανένα username η εντολή θεωρεί ότι ο χρήστης προσπαθεί να συνδεθεί στο σύστημα με τον
λογαριασμό root. Αμέσως μετά την εκτέλεση της εντολής ζητείται από τον χρήστη να δώσει τον
κωδικό πρόσβασης για τον συγκεκριμένο χρήστη. Αν όνομα χρήστη και κωδικός πρόσβασης
ταιριάζουν τότε επιτυγχάνεται η σύνδεση στο σύστημα με τον συγκεκριμένο λογαριασμό χρήστη.
Με την εντολή exit ο χρήστης αποσυνδέεται από τον λογαριασμό χρήστη που χρησιμοποιεί (logout).
Σύνταξη:
sudo commands
commands: Λίστα εντολών συστήματος χωρισμένες μεταξύ τους με τον χαρακτήρα ; Για να εκτελέσει
κάποιος χρήστης την εντολή sudo θα πρέπει να ανήκει στο group admin. Αμέσως μετά την εκτέλεση
της εντολής ζητείται από τον χρήστη να δώσει τον κωδικό πρόσβασής του, ώστε αφενός να γίνει
επιβεβαίωση, ότι είναι ο χρήστης που προσπαθεί να εκτελέσει την εντολή, κι όχι κάποιος που βρήκε
ανοικτή τη γραμμή εντολών, και αφετέρου να κάνει προφανές στον χρήστη ότι πρόκειται να εκτελέσει
μία διαχειριστική εντολή ώστε αυτός να δώσει την πρέπουσα προσοχή και σημασία.
Ασφάλεια αρχείων
Το UNIX καθορίζει την ασφάλεια των αρχείων χρησιμοποιώντας ένα μοντέλο στο οποίο για κάθε
αρχείο διατηρούνται ξεχωριστά δικαιώματα. Υπάρχουν συγκεκριμένες κατηγορίες χρηστών και για
κάθε κατηγορία καθορίζονται διαφορετικά δικαιώματα. Κάθε φορά που υπάρχει πρόσβαση σε ένα
αρχείο από κάποιον χρήστη, γίνεται έλεγχος της κατηγορίας στην οποία ανήκει ο χρήστης και κατόπιν
έλεγχος των δικαιωμάτων της συγκεκριμένης κατηγορίας για να επιτραπεί ή όχι η ενέργεια που
επιχειρεί ο χρήστης πάνω στο αρχείο.
Κατηγορίες χρηστών
Υπάρχουν τρεις κατηγορίες χρηστών:
• Χρήστης ή ιδιοκτήτης ή κύριος (user, owner, συμβολίζεται με u)
• Χρήστες που ανήκουν στην ίδια ομάδα (group, συμβολίζεται με g)
• Όλοι οι υπόλοιποι χρήστες(others, συμβολίζεται με o).
Διαδικασία ελέγχου δικαιωμάτων
Όταν μία διεργασία ζητά πρόσβαση σε ένα αρχείο, ο χρήστης και η ομάδα της διεργασίας συγκρίνονται
με το χρήστη και την ομάδα του αρχείου:
1. Αν ο χρήστης ταυτίζεται, εφαρμόζονται τα δικαιώματα πρόσβασης του χρήστη και δεν
εξετάζονται τα δικαιώματα της ομάδας και των υπολοίπων χρηστών
2. Αλλιώς, αν ταυτίζεται η ομάδα, εφαρμόζονται τα δικαιώματα πρόσβασης της ομάδας και δεν
εξετάζονται τα δικαιώματα των υπολοίπων χρηστών
3. Αλλιώς, εφαρμόζονται τα δικαιώματα για τους υπόλοιπους χρήστες
Αναπαράσταση δικαιωμάτων
Χρησιμοποιούνται τέσσερα σύμβολα για την απεικόνιση των δικαιωμάτων:
• r για το δικαίωμα της ανάγνωσης (read)
• w για το δικαίωμα της εγγραφής (write)
• x για το δικαίωμα της εκτέλεσης (execute)
• – που δηλώνει την απουσία δικαιώματος
Για κάθε κατηγορία χρηστών (owner, group, others) καθορίζεται η τριάδα των δικαιωμάτων στη
μορφή:
rwx
Η σειρά είναι πάντα αυτή, δηλαδή πρώτα η ανάγνωση, μετά η γραφή και στο τέλος η εκτέλεση ενώ αν
δεν υπάρχει κάποιο από τα δικαιώματα αυτά τότε ο συγκεκριμένος χαρακτήρας αντικαθίσταται με τον
χαρακτήρα -
Παράδειγμα 1:
r-x
Υπάρχει το δικαίωμα της ανάγνωσης, δεν υπάρχει το δικαίωμα της εγγραφής και υπάρχει το δικαίωμα
της εκτέλεσης.
Παράδειγμα 2:
r--
Υπάρχει το δικαίωμα της ανάγνωσης, δεν υπάρχει το δικαίωμα της εγγραφής και δεν υπάρχει το
δικαίωμα της εκτέλεσης.
Παράδειγμα 3:
-w-
Δεν υπάρχει το δικαίωμα της ανάγνωσης, υπάρχει το δικαίωμα της εγγραφής και δεν υπάρχει το
δικαίωμα της εκτέλεσης.
Αλλαγή δικαιωμάτων
Η αλλαγή των δικαιωμάτων ενός αρχείου γίνεται με την εντολή chmod. Η εντολή chmod δέχεται ως
ορίσματα μία ακολουθία δικαιωμάτων και μία λίστα αρχείων στα οποία θα εφαρμοστούν αυτά τα
δικαιώματα. Η chmod μπορεί να χρησιμοποιηθεί είτε για να μεταβάλλουμε τα ήδη υπάρχοντα
δικαιώματα είτε για να θέσουμε νέα δικαιώματα. Η chmod μπορεί να χρησιμοποιηθεί με δύο τρόπους,
τον συμβολικό και τον αριθμητικό. Χρήσιμος διακόπτης της εντολής chmod είναι ο –R (recursive), ο
οποίος επιτρέπει την επεξεργασία των δικαιωμάτων ενός καταλόγου και όλων των αρχείων που
περιέχονται σε αυτόν.
Σύνταξη:
files: Λίστα ονομάτων αρχείων χωρισμένα μεταξύ τους με κενό ή path με χρήση ειδικών χαρακτήρων
όπως *, ? για την αντιστοίχιση σε περισσότερα από ένα ονόματα αρχείων.
Για καταλόγους, συνήθως δίνουμε μαζί με το δικαίωμα ανάγνωσης και το δικαίωμα εκτέλεσης (για να
μπορούμε να εκτελέσουμε την εντολή cd).
Η εντολή umask
Εξ ορισμού, χωρίς τη χρήση της umask, σε κάθε νέο αρχείο, όλοι οι χρήστες θα είχαν δικαιώματα
ανάγνωσης και εγγραφής (rw-rw-rw- ή 666) ενώ σε κάθε κατάλογο, όλοι οι χρήστες θα είχαν
δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης (rwxrwxrwx ή 777). Προκειμένου να περιορίσουμε
τα προκαθορισμένα δικαιώματα, χρησιμοποιούμε την εντολή umask.
H τιμή της umask δείχνει ποια δικαιώματα θέλουμε να μην δίνουμε στα νέα αρχεία. Έτσι, όταν
δημιουργούμε αρχεία με umask 0002, τα αρχεία δημιουργούνται με δικαιώματα 664 και οι κατάλογοι
775. Σημειώστε ότι το δικαίωμα εκτέλεσης ενός αρχείου δε δίνεται ποτέ σε ένα νέο αρχείο,
ανεξάρτητα από την τιμή της umask. Το δικαίωμα εκτέλεσης ενός αρχείου πρέπει να δίνεται σε
συγκεκριμένο αρχείο μόνο. Από την άλλη μεριά, το δικαίωμα εκτέλεσης δίνεται πάντα σε ένα
κατάλογο κατά τη δημιουργία του, εκτός αν το αρνείται η umask. Για τους απλούς χρήστες η umask
έχει την τιμή 0002, ενώ για τον root είναι 0022. Η τιμή της umask ορίζεται σε script. Συνεπώς αν
θέλετε να αλλάξετε μόνιμα τη umask σας, προσθέστε στο ~/.bashrc την εντολή umask με την
επιθυμητή τιμή της.
Ερωτήσεις
home
ubuntu
LAB5
FOL1 FOL2
1. Μπορεί κάποιος από τους χρήστες anna και maria να δει τα περιεχόμενα του αρχείου Can;
Εξηγείστε την απάντησή σας.
2. Μπορεί κάποιος από τους χρήστες anna και maria να δει τα περιεχόμενα του αρχείου Cannot;
Εξηγείστε την απάντησή σας.
3. Μπορεί κάποιος από τους χρήστες anna και maria να προσθέσει μία γραμμή στο αρχείο Cannot;
Εξηγείστε την απάντησή σας.
4. Μπορεί κάποιος από τους χρήστες anna και maria να αλλάξει τα περιεχόμενα του αρχείου Lose;
Εξηγείστε την απάντησή σας.
5. Μπορεί κάποιος από τους χρήστες anna και maria να μετονομάσει το αρχείο Can; Εξηγείστε την
απάντησή σας.
6. Μπορεί κάποιος από τους χρήστες anna και maria να μετονομάσει το αρχείο Lose; Εξηγείστε
την απάντησή σας.
7. Μπορεί κάποιος από τους χρήστες anna και maria να διαγράψει τον φάκελο FOL1; Εξηγείστε
την απάντησή σας.
8. Μπορεί κάποιος από τους χρήστες anna και maria να δημιουργήσει αρχείο μέσα στον φάκελο
FOL3; Εξηγείστε την απάντησή σας.