Εργαστήριο 5

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

ΤΕΙ Μεσολογγίου

Σχολή Διοίκησης και Οικονομίας


Τμήμα Εφαρμογών Πληροφορικής στη Διοίκηση και Οικονομία .

Λειτουργικά Συστήματα (Εργαστήριο)

Διδάσκων: 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

Switch User (su)


Η εντολή su χρησιμοποιείται για την αλλαγή του λογαριασμού χρήστη που χρησιμοποιείται.

Σύνταξη:

su username
username: Το όνομα του χρήστη με το οποίο επιχειρείται η σύνδεση στο σύστημα. Αν δεν δοθεί
κανένα username η εντολή θεωρεί ότι ο χρήστης προσπαθεί να συνδεθεί στο σύστημα με τον
λογαριασμό root. Αμέσως μετά την εκτέλεση της εντολής ζητείται από τον χρήστη να δώσει τον
κωδικό πρόσβασης για τον συγκεκριμένο χρήστη. Αν όνομα χρήστη και κωδικός πρόσβασης
ταιριάζουν τότε επιτυγχάνεται η σύνδεση στο σύστημα με τον συγκεκριμένο λογαριασμό χρήστη.

Με την εντολή exit ο χρήστης αποσυνδέεται από τον λογαριασμό χρήστη που χρησιμοποιεί (logout).

Super User DO (sudo)


Το Λ.Σ. UBUNTU ακολουθεί μία διαφορετική φιλοσοφία όσο αφορά της εργασίες διαχείρισης, αυτές
δηλαδή που απαιτούν τον ειδικό λογαριασμό root. Αντί να υποχρεώνει τους χρήστες να κάνουν login
σαν root με την εντολή su, να εκτελούν τις διαχειριστικές εντολές και κατόπιν να κάνουν logout για
να επιστρέψουν στον δικό τους λογαριασμό, δημιούργησε μία εντολή που απλοποιεί τη διαδικασία
επιτρέποντάς τους να λειτουργούν για λίγο ως superusers (root).

Σύνταξη:

sudo commands
commands: Λίστα εντολών συστήματος χωρισμένες μεταξύ τους με τον χαρακτήρα ; Για να εκτελέσει
κάποιος χρήστης την εντολή sudo θα πρέπει να ανήκει στο group admin. Αμέσως μετά την εκτέλεση
της εντολής ζητείται από τον χρήστη να δώσει τον κωδικό πρόσβασής του, ώστε αφενός να γίνει
επιβεβαίωση, ότι είναι ο χρήστης που προσπαθεί να εκτελέσει την εντολή, κι όχι κάποιος που βρήκε
ανοικτή τη γραμμή εντολών, και αφετέρου να κάνει προφανές στον χρήστη ότι πρόκειται να εκτελέσει
μία διαχειριστική εντολή ώστε αυτός να δώσει την πρέπουσα προσοχή και σημασία.

Το μοντέλο ασφαλείας του Unix/Linux


Κάθε αρχείο ανήκει σε ένα χρήστη και κάθε χρήστης βλέπει τα δικά του αρχεία. Μόνο αν ο ιδιοκτήτης
ενός αρχείου δώσει άδεια σε άλλους χρήστες μπορούν αυτοί να δουν τα αρχεία του. Η ταυτότητα του
χρήστη προσδιορίζεται κατά τη διαδικασία του login. Κάθε αρχείο είναι συσχετισμένο με μία ομάδα.
Κάθε διεργασία (εφαρμογή που εκτελείται) έχει ένα ιδιοκτήτη (χρήστη) και μία συσχετισμένη ομάδα,
μπορεί δε να προσπελάσει μόνο τους πόρους του συστήματος που μπορεί να προσπελάσει ο ιδιοκτήτης
της και η ομάδα αυτή.

Ασφάλεια αρχείων
Το UNIX καθορίζει την ασφάλεια των αρχείων χρησιμοποιώντας ένα μοντέλο στο οποίο για κάθε
αρχείο διατηρούνται ξεχωριστά δικαιώματα. Υπάρχουν συγκεκριμένες κατηγορίες χρηστών και για
κάθε κατηγορία καθορίζονται διαφορετικά δικαιώματα. Κάθε φορά που υπάρχει πρόσβαση σε ένα
αρχείο από κάποιον χρήστη, γίνεται έλεγχος της κατηγορίας στην οποία ανήκει ο χρήστης και κατόπιν
έλεγχος των δικαιωμάτων της συγκεκριμένης κατηγορίας για να επιτραπεί ή όχι η ενέργεια που
επιχειρεί ο χρήστης πάνω στο αρχείο.

Κατηγορίες χρηστών
Υπάρχουν τρεις κατηγορίες χρηστών:
• Χρήστης ή ιδιοκτήτης ή κύριος (user, owner, συμβολίζεται με u)
• Χρήστες που ανήκουν στην ίδια ομάδα (group, συμβολίζεται με g)
• Όλοι οι υπόλοιποι χρήστες(others, συμβολίζεται με o).
Διαδικασία ελέγχου δικαιωμάτων
Όταν μία διεργασία ζητά πρόσβαση σε ένα αρχείο, ο χρήστης και η ομάδα της διεργασίας συγκρίνονται
με το χρήστη και την ομάδα του αρχείου:
1. Αν ο χρήστης ταυτίζεται, εφαρμόζονται τα δικαιώματα πρόσβασης του χρήστη και δεν
εξετάζονται τα δικαιώματα της ομάδας και των υπολοίπων χρηστών
2. Αλλιώς, αν ταυτίζεται η ομάδα, εφαρμόζονται τα δικαιώματα πρόσβασης της ομάδας και δεν
εξετάζονται τα δικαιώματα των υπολοίπων χρηστών
3. Αλλιώς, εφαρμόζονται τα δικαιώματα για τους υπόλοιπους χρήστες

Τύποι δικαιωμάτων αρχείων


Το UNIX αναγνωρίζει τρία δικαιώματα:
• Ανάγνωσης (Read)
• Εγγραφής (Write)
• Εκτέλεσης (Execute)
Τα δικαιώματα για αρχεία, για οποιαδήποτε από τις τρεις κατηγορίες χρηστών, έχουν ως εξής:
1. Δικαίωμα ανάγνωσης (read) σημαίνει ότι τα περιεχόμενα του αρχείου μπορούν να διαβαστούν
(πχ να εμφανιστούν με μία εντολή όπως η cat ή η less).
2. Δικαίωμα εγγραφής (write) σημαίνει ότι το αρχείο μπορεί να υποστεί επεξεργασία και να
αποθηκευτεί το περιεχόμενό του.
3. Δικαίωμα εκτέλεσης (execute) σημαίνει ότι ο φλοιός θα προσπαθήσει να εκτελέσει το αρχείο,
όταν το όνομα του αρχείου δοθεί ως εντολή. Αυτό το δικαίωμα έχει νόημα μόνο για binary
αρχεία (αρχεία που έχουν προκύψει από την μεταγλώττιση (compile) αρχείων κειμένου που
περιέχουν εντολές γραμμένες σε γλώσσα C ή C++) ή αρχεία script (αρχεία κειμένου που
περιέχουν εντολές συστήματος) και όχι για απλά αρχεία δεδομένων.
Εξειδικεύοντας τα δικαιώματα για αρχεία καταλόγων (σε παλαιότερο εργαστήριο έχει αναφερθεί ότι
κατάλογος είναι ένα αρχείο, που περιέχει μία λίστα με εγγραφές της μορφής όνομα αρχείου – αριθμός
inode, για όλα τα αρχεία που περιέχονται στο κατάλογο), για οποιαδήποτε από τις τρεις κατηγορίες
χρηστών, γίνεται αντιληπτό ότι:
1. Δικαίωμα ανάγνωσης σημαίνει ότι εμφανίζονται τα περιεχόμενα του καταλόγου (με χρήση της
εντολής ls)
2. Δικαίωμα εγγραφής σημαίνει ότι μπορούν να δημιουργηθούν νέα αρχεία μέσα σε αυτόν τον
κατάλογο, να διαγραφούν αρχεία από τον κατάλογο αυτό αλλά και να μετονομαστούν.
3. Δικαίωμα εκτέλεσης σημαίνει ότι ο χρήστης μπορεί να μπει στον κατάλογο αυτό (με χρήση της
εντολής cd) και μπορεί να εκτελέσει την εντολή ls –l.
Ένα αρχείο μπορεί να διαγραφεί από οποιοδήποτε χρήστη έχει δικαίωμα εγγραφής (write) στον
κατάλογο που βρίσκεται το αρχείο, ανεξάρτητα από τα δικαιώματα που υπάρχουν για το ίδιο το
αρχείο.

Αναπαράσταση δικαιωμάτων
Χρησιμοποιούνται τέσσερα σύμβολα για την απεικόνιση των δικαιωμάτων:
• r για το δικαίωμα της ανάγνωσης (read)
• w για το δικαίωμα της εγγραφής (write)
• x για το δικαίωμα της εκτέλεσης (execute)
• – που δηλώνει την απουσία δικαιώματος
Για κάθε κατηγορία χρηστών (owner, group, others) καθορίζεται η τριάδα των δικαιωμάτων στη
μορφή:

rwx
Η σειρά είναι πάντα αυτή, δηλαδή πρώτα η ανάγνωση, μετά η γραφή και στο τέλος η εκτέλεση ενώ αν
δεν υπάρχει κάποιο από τα δικαιώματα αυτά τότε ο συγκεκριμένος χαρακτήρας αντικαθίσταται με τον
χαρακτήρα -
Παράδειγμα 1:

r-x
Υπάρχει το δικαίωμα της ανάγνωσης, δεν υπάρχει το δικαίωμα της εγγραφής και υπάρχει το δικαίωμα
της εκτέλεσης.

Παράδειγμα 2:

r--
Υπάρχει το δικαίωμα της ανάγνωσης, δεν υπάρχει το δικαίωμα της εγγραφής και δεν υπάρχει το
δικαίωμα της εκτέλεσης.

Παράδειγμα 3:

-w-
Δεν υπάρχει το δικαίωμα της ανάγνωσης, υπάρχει το δικαίωμα της εγγραφής και δεν υπάρχει το
δικαίωμα της εκτέλεσης.

Επισκόπηση δικαιωμάτων αρχείων μέσω inode metadata


Έχει αναφερθεί ότι στα metadata που φυλάσσονται στη δομή inode για κάθε αρχείο αποθηκεύονται
και τα δικαιώματα πρόσβασης σε αυτό. Ορισμένα από τα metadata του αρχείου εμφανίζονται με τη
χρήση της εντολής ls -l filename.
Ο τύπος του αρχείου και τα δικαιώματα του αρχείου συμβολίζονται με μία συμβολοσειρά 10
χαρακτήρων που εμφανίζεται στην πρώτη στήλη. Ο πρώτος χαρακτήρας αντιπροσωπεύει τον τύπο του
αρχείου (- για απλό αρχείο, d για αρχείο καταλόγου, l για αρχείο συνδέσμου) και οι υπόλοιποι εννέα
τα δικαιώματα του αρχείου.
Στη δεύτερη στήλη εμφανίζεται ο αριθμός των ονομάτων που δείχνουν στην ίδια εγγραφή inode.
Στην τρίτη στήλη εμφανίζεται το όνομα χρήστη που είναι κύριος (owner) του αρχείου.
Στην τρίτη στήλη εμφανίζεται ο όνομα της ομάδας στην οποία ανήκει το αρχείο.
Στην τέταρτη στήλη εμφανίζεται το μέγεθος του αρχείου σε bytes.
Στην πέμπτη στήλη εμφανίζεται η ημερομηνία τελευταίας τροποποίησης του αρχείου.
Στην έκτη στήλη το όνομα του αρχείου

Δικαιώματα χρήστη (ιδιοκτήτη), ομάδας και υπολοίπων χρηστών


Στα αποτελέσματα της εντολής ls –l για την πρώτη στήλη:
• οι χαρακτήρες 2,3 και 4 αντιπροσωπεύουν τα δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης για
τον ιδιοκτήτη του αρχείου
• οι χαρακτήρες 5,6 και 7 αντιπροσωπεύουν τα δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης για
τους χρήστες που ανήκουν στην ίδια ομάδα με τον ιδιοκτήτη του αρχείου
• οι χαρακτήρες 8,9 και 10 αντιπροσωπεύουν τα δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης για
τους υπόλοιπους χρήστες.

Αλλαγή δικαιωμάτων
Η αλλαγή των δικαιωμάτων ενός αρχείου γίνεται με την εντολή chmod. Η εντολή chmod δέχεται ως
ορίσματα μία ακολουθία δικαιωμάτων και μία λίστα αρχείων στα οποία θα εφαρμοστούν αυτά τα
δικαιώματα. Η chmod μπορεί να χρησιμοποιηθεί είτε για να μεταβάλλουμε τα ήδη υπάρχοντα
δικαιώματα είτε για να θέσουμε νέα δικαιώματα. Η chmod μπορεί να χρησιμοποιηθεί με δύο τρόπους,
τον συμβολικό και τον αριθμητικό. Χρήσιμος διακόπτης της εντολής chmod είναι ο –R (recursive), ο
οποίος επιτρέπει την επεξεργασία των δικαιωμάτων ενός καταλόγου και όλων των αρχείων που
περιέχονται σε αυτόν.

Σύνταξη:

chmod options files


options: επιλογές που καθορίζουν τα δικαιώματα για κάθε κατηγορία χρηστών

files: Λίστα ονομάτων αρχείων χωρισμένα μεταξύ τους με κενό ή path με χρήση ειδικών χαρακτήρων
όπως *, ? για την αντιστοίχιση σε περισσότερα από ένα ονόματα αρχείων.

Αλλαγή δικαιωμάτων με χρήση συμβόλων


Στη συμβολική μέθοδο, η συμβολοσειρά που περιγράφει τα δικαιώματα του αρχείου αποτελείται από
τρία μέρη: (α) ποιος, (β) τελεστής και (γ) δικαιώματα.
Ποιος: u (user/ιδιοκτήτης), g (group/ομάδα), ο (others/υπόλοιποι χρήστες) και a (all/όλοι οι
προηγούμενοι).
Τελεστής: + (προσθήκη δικαιώματος), - (αφαίρεση δικαιώματος), = (ορισμός δικαιώματος).
Δικαιώματα: r (read/ανάγνωση), w (write/εγγραφή), x (execute/εκτέλεση) καθώς επίσης και τα s και
t.

chmod g+w .bashrc


Προσθέτει στα υπάρχοντα δικαιώματα, το δικαίωμα εγγραφής για την ομάδα στο αρχείο .bashrc.

chmod go-rw /tmp/test


Αφαιρεί από τα υπάρχοντα δικαιώματα, τα δικαιώματα ανάγνωσης και εγγραφής για την ομάδα και
τους υπόλοιπους χρήστες στο αρχείο test που βρίσκεται κάτω από τον κατάλογο tmp του root.

chmod u=rw,a+x .bashrc


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

Αλλαγή δικαιωμάτων με χρήση αριθμών


Στην αριθμητική μέθοδο χρησιμοποιούμε ένα τριψήφιο αριθμό για να θέσουμε τα δικαιώματα ενός
αρχείου. Ο πρώτος αριθμός αντιπροσωπεύει τα δικαιώματα του χρήστη, ο δεύτερος της ομάδας και ο
τρίτος των υπολοίπων χρηστών. Ο κάθε αριθμός προκύπτει προσθέτοντας τους αριθμούς που
αντιπροσωπεύουν τα δικαιώματα ανάγνωσης (4), εγγραφής (2) και εκτέλεσης (1). Χρησιμοποιείται
μόνο για να ορίσουμε εκ νέου όλα τα δικαιώματα, όχι για να αλλάξουμε κάποια από αυτά.

chmod 664 file


Ανάγνωση και εγγραφή για το χρήστη και την ομάδα, ανάγνωση για τους υπόλοιπους

chmod 660 file


Ανάγνωση και εγγραφή για το χρήστη και την ομάδα, κανένα δικαίωμα για τους υπόλοιπους

chmod 600 file


Ανάγνωση και εγγραφή για το χρήστη, κανένα δικαίωμα για την ομάδα και τους υπόλοιπους χρήστες

chmod 444 file


Ανάγνωση μόνο για όλους τους χρήστες

Για καταλόγους, συνήθως δίνουμε μαζί με το δικαίωμα ανάγνωσης και το δικαίωμα εκτέλεσης (για να
μπορούμε να εκτελέσουμε την εντολή cd).

chmod 755 directory


Πλήρη δικαιώματα για τον ιδιοκτήτη, ανάγνωση για την ομάδα και τους υπόλοιπους χρήστες

chmod 770 directory


Πλήρη δικαιώματα για τον ιδιοκτήτη και την ομάδα, κανένα δικαίωμα για τους υπόλοιπους χρήστες

chmod 700 directory


Πλήρη δικαιώματα για τον ιδιοκτήτη, κανένα δικαίωμα για για την ομάδα και τους υπόλοιπους χρήστες

chmod 555 directory


Ανάγνωση και εκτέλεση για όλους τους χρήστες

Η εντολή 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 με την
επιθυμητή τιμή της.

Ειδικά δικαιώματα αρχείων


Εκτός από τα δικαιώματα για τον ιδιοκτήτη, την ομάδα και τους υπόλοιπους χρήστες, υπάρχουν
κάποια δικαιώματα ακόμα, τα οποία ονομάζονται ειδικά δικαιώματα (special permissions). Τα ειδικά
αυτά δικαιώματα ονομάζονται set user ID (ή SUID), set group ID (ή SGID) και sticky bit. Τα ειδικά
δικαιώματα χρησιμοποιούνται σπάνια, και στην πραγματικότητα εφαρμόζονται στις ακόλουθες
περιπτώσεις μόνο:
• SUID σε εκτελέσιμο αρχείο
• SGID σε εκτελέσιμο αρχείο
• sticky bit σε κατάλογο
• SGID σε κατάλογο
Για να θέσετε τα ειδικά δικαιώματα, χρησιμοποιήσετε την εντολή chmod, προσθέτοντας ένα ακόμα
ψηφίο μπροστά από τα τρία ψηφία που αντιπροσωπεύουν τα δικαιώματα του ιδιοκτήτη, της ομάδας
και των υπόλοιπων χρηστών. Για τον υπολογισμό αυτού του ψηφίου χρησιμοποιούμε, το 4 για το
SUID, 2 για το SGID και 1 για το sticky bit. Έτσι η εντολή chmod 3775 groupdir, θα θέσει το SGID και
το sticky bit για τον κατάλογο groupdir.

Ειδικά δικαιώματα για εκτελέσιμα αρχεία


Όταν έχει τεθεί το SUID για ένα εκτελέσιμο αρχείο, αυτό σημαίνει ότι η εντολή θα εκτελεστεί με τα
δικαιώματα του ιδιοκτήτη του αρχείου και όχι με τα δικαιώματα του χρήστη που εκτελεί την εντολή.
Παράδειγμα αυτής της λειτουργίας είναι η εντολή passwd. Η εντολή passwd αλλάζει το συνθηματικό
ενός χρήστη και το αποθηκεύει στο αρχείο /etc/shadow. Όμως, στο αρχείο /etc/shadow, οι χρήστες
δεν έχουν δικαίωμα εγγραφής. Πως αποθηκεύεται λοιπόν το συνθηματικό κάθε χρήστη, αφού ο
χρήστης δεν έχει δικαίωμα εγγραφής στο αρχείο;
Αφού το αρχείο /usr/bin/passwd (η εντολή passwd, δηλαδή) έχει το SUID, τότε κάθε χρήστης που
τρέχει την εντολή passwd, έχει τα ίδια δικαιώματα που έχει ο ιδιοκτήτης του αρχείου (εν προκειμένω,
ο root). Έτσι οι χρήστες αποκτούν δικαίωμα εγγραφής στο αρχείο /etc/shadow (μόνο, όμως, για όση
ώρα εκτελούν την εντολή passwd), και έτσι μπορούν να αλλάζουν το συνθηματικό τους. Στα
αποτελέσματα της εντολής ls –l, το SUID εμφανίζεται ως s στη θέση όπου εμφανίζεται το δικαίωμα
εκτέλεσης του ιδιοκτήτη. Αν στο αρχείο έχει δοθεί το SUID, αλλά ο ιδιοκτήτης δεν έχει δικαίωμα
εκτέλεσης, τότε εμφανίζεται ως S. Παρόμοια, εντολές με το SGID, εκτελούνται με τα δικαιώματα της
ομάδας με την οποία είναι συσχετισμένο το αρχείο. Σε αυτή την περίπτωση το SGID εμφανίζεται στη
θέση όπου εμφανίζεται το δικαίωμα εκτέλεσης της ομάδας. Παράδειγμα χρήσης του SGID, είναι το
αρχείο same-gnome.

Ειδικά δικαιώματα για καταλόγους


Το sticky bit ορίζει ότι τα αρχεία που περιέχονται σε ένα κατάλογο, μπορούν να σβηστούν μόνο από
τον ιδιοκτήτη τους ή τον χρήστη root, ανεξάρτητα από τα δικαιώματα εγγραφής που έχουν οριστεί
στον κατάλογο αυτό. To sticky bit, εμφανίζεται ως t, στη θέση που κανονικά εμφανίζονται τα
δικαιώματα εκτέλεσης για τους υπόλοιπους χρήστες. Αν οι υπόλοιποι χρήστες δεν έχουν το δικαίωμα
εκτέλεσης, τότε το sticky bit, εμφανίζεται ως Τ. Παράδειγμα χρήσης του sticky bit, αποτελεί ο
κατάλογος /tmp.
Το SGID για ένα κατάλογο, σημαίνει ότι τα αρχεία που δημιουργούνται μέσα σε αυτόν τον κατάλογο,
θα συσχετίζονται με την ομάδα με την οποία είναι συσχετισμένος ο κατάλογος και όχι με την ομάδα
του χρήστη.

Ερωτήσεις

Εκτελέστε την εξής σειρά εντολών:


cd ~
touch Script5
chmod +x Script5
gedit Script5 &
Στον επεξεργαστή κειμένου που θα ανοίξει αντιγράψτε τις παρακάτω εντολές:
#!/bin/bash
cd ~
if test -d LAB5
then
rm -R LAB5
fi
mkdir -p LAB5/FOL1 LAB5/FOL2/FOL3
echo You should be able to see this > LAB5/FOL1/Can
echo You shouldn\'t be able to see this > LAB5/FOL1/Cannot
echo File to be removed > LAB5/FOL2/Lose
chmod 600 LAB5/FOL1/Cannot
chmod 604 LAB5/FOL1/Can
chmod 775 LAB5/FOL2/FOL3
chmod 666 LAB5/FOL2/Lose
echo a> LAB5/pass
echo a>> LAB5/pass
if ! id anna
then
sudo addgroup labgroup
sudo adduser anna --ingroup labgroup --no-create-home --gecos "" < LAB5/pass
sudo adduser maria --ingroup labgroup --no-create-home --gecos "" < LAB5/pass
fi
sudo chown maria LAB5/FOL1/Cannot
sudo chgrp labgroup LAB5/FOL2/FOL3
Αποθηκεύστε τις αλλαγές που έχετε κάνει στο αρχείο και κλείστε την εφαρμογή gedit.
Εκτελέστε την εντολή:
./Script5
Αυτόματα δημιουργείται η παρακάτω δομή φακέλων και αρχείων. Μπορείτε να γυρίζετε στον αρχικό
φάκελο χρήστη και να εκτελείτε την εντολή ./Script5 κάθε φορά που θέλετε να δημιουργήσετε από
την αρχή την δομή αυτή. Δημιουργούνται επίσης οι χρήστες anna και maria με primary group το
labgroup και password a. Από τον αρχικό φάκελο χρήστη και χωρίς να μετακινηθείτε σε άλλο φάκελο:
/

home

ubuntu

LAB5

FOL1 FOL2

Can Cannot FOL3 Lose

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; Εξηγείστε την απάντησή σας.

You might also like