Linux Professional Institute Learning Logo.
Mετάβαση στο κύριο περιεχόμενο
  • Αρχική
    • Διαθέσιμοι Πόροι
    • Μαθησιακά Υλικά LPI
    • Γίνε Συνεργάτης
    • Συνεργάτες Εκδόσεων
    • Γίνε Συνεργάτης Εκδόσεων
    • Σχετικά
    • FAQ
    • Συνεργάτες
    • Roadmap
    • Επικοινωνία
  • LPI.org
5.3 Μάθημα 1
Θέμα 1: Η κοινότητα Linux και μια καριέρα στον Ανοιχτό Κώδικα
1.1 Εξέλιξη του Linux και Δημοφιλή Λειτουργικά Συστήματα
  • 1.1 Μάθημα 1
1.2 Κύριες Εφαρμογές Ανοιχτού Κώδικα
  • 1.2 Μάθημα 1
1.3 Λογισμικό Ανοιχτού Κώδικα και Αδειοδότηση
  • 1.3 Μάθημα 1
1.4 Δεξιότητες ICT και Εργασία στο Linux
  • 1.4 Μάθημα 1
Θέμα 2: Βρίσκοντας το Δρόμο σας σε ένα Σύστημα Linux
2.1 Βασικά Στοιχεία Γραμμής Εντολών
  • 2.1 Μάθημα 1
  • 2.1 Μάθημα 2
2.2 Χρήση της Γραμμής Εντολών για Λήψη Βοήθειας
  • 2.2 Μάθημα 1
2.3 Χρήση Καταλόγων και Παράθεση Αρχείων
  • 2.3 Μάθημα 1
  • 2.3 Μάθημα 2
2.4 Δημιουργία, Μετακίνηση και Διαγραφή Αρχείων
  • 2.4 Μάθημα 1
Θέμα 3: Η Δύναμη της Γραμμής Εντολών
3.1 Αρχειοθέτηση Αρχείων στη Γραμμή Εντολών
  • 3.1 Μάθημα 1
3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία
  • 3.2 Μάθημα 1
  • 3.2 Μάθημα 2
3.3 Μετατροπή Εντολών σε Σενάριο
  • 3.3 Μάθημα 1
  • 3.3 Μάθημα 2
Θέμα 4: Το Λειτουργικό Σύστημα Linux
4.1 Επιλογή Λειτουργικού Συστήματος
  • 4.1 Μάθημα 1
4.2 Κατανόηση του Υλικού του Υπολογιστή
  • 4.2 Μάθημα 1
4.3 Πού Αποθηκεύονται τα Δεδομένα
  • 4.3 Μάθημα 1
  • 4.3 Μάθημα 2
4.4 Ο Υπολογιστής σας στο Δίκτυο
  • 4.4 Μάθημα 1
Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών
  • 5.1 Μάθημα 1
5.2 Δημιουργία Χρηστών και Ομάδων
  • 5.2 Μάθημα 1
5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων
  • 5.3 Μάθημα 1
5.4 Ειδικοί Κατάλογοι και Αρχεία
  • 5.4 Μάθημα 1
How to get certified
  1. Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
  2. 5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων
  3. 5.3 Μάθημα 1

5.3 Μάθημα 1

Πιστοποιητικό:

Linux Essentials

Έκδοση:

1.6

Θέμα:

5 Ασφάλεια και Δικαιώματα Αρχείων

Σκοπός:

5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων

Μάθημα:

1 απο 1

Εισαγωγή

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

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

Αναζήτηση Πληροφοριών σχετικά με Αρχεία και Καταλόγους

Η εντολή ls χρησιμοποιείται για τη λήψη μιας λίστας με τα περιεχόμενα οποιουδήποτε καταλόγου. Σε αυτή τη βασική μορφή, το μόνο που λαμβάνετε είναι τα ονόματα αρχείων:

$ ls
Another_Directory  picture.jpg  text.txt

Υπάρχουν όμως πολύ περισσότερες διαθέσιμες πληροφορίες για κάθε αρχείο, όπως τύπος, μέγεθος, ιδιοκτησία και άλλα. Για να δείτε αυτές τις πληροφορίες, πρέπει να ζητήσετε από το ls μια παράθεση “μακράς μορφής”, χρησιμοποιώντας την παράμετρο -l:

$ ls -l
total 536
drwxrwxr-x 2 carol carol   4096 Dec 10 15:57 Another_Directory
-rw------- 1 carol carol 539663 Dec 10 10:43 picture.jpg
-rw-rw-r-- 1 carol carol   1881 Dec 10 15:57 text.txt

Κάθε στήλη στην παραπάνω έξοδο έχει μια σημασία:

  • Η πρώτη στήλη στην παράθεση δείχνει τον τύπο αρχείου και τα δικαιώματα.

    Για παράδειγμα, στο drwxrwxr-x:

    • Ο πρώτος χαρακτήρας, d, υποδηλώνει τον τύπο αρχείου.

    • Οι επόμενοι τρεις χαρακτήρες, rwx, υποδεικνύουν τα δικαιώματα για τον κάτοχο του αρχείου, που αναφέρεται επίσης ως user ή u.

    • Οι επόμενοι τρεις χαρακτήρες, rwx, υποδεικνύουν τα δικαιώματα της ομάδας, group που κατέχει το αρχείο, που αναφέρεται επίσης ως g.

    • Οι τρεις τελευταίοι χαρακτήρες, r-x, υποδεικνύουν τα δικαιώματα για οποιονδήποτε άλλο, γνωστά και ως others ή o.

  • Η δεύτερη στήλη υποδεικνύει τον αριθμό των hard links [σκληρών συνδέσμων] που οδηγούν σε αυτό το αρχείο. Για έναν κατάλογο, αυτό σημαίνει τον αριθμό των υποκαταλόγων, συν έναν σύνδεσμο προς τον εαυτό του (.) και τον parent κατάλογο (..).

  • Η τρίτη και τέταρτη στήλη εμφανίζουν πληροφορίες ιδιοκτησίας: τον χρήστη και την ομάδα που κατέχουν το αρχείο αντίστοιχα.

  • Η πέμπτη στήλη δείχνει το μέγεθος αρχείου, σε byte.

  • Η έκτη στήλη εμφανίζει την ακριβή ημερομηνία και ώρα, ή χρονοσήμανση [timestamp], όταν το αρχείο τροποποιήθηκε τελευταία φορά.

  • Η έβδομη και η τελευταία στήλη δείχνει το όνομα του αρχείου.

Εάν θέλετε να δείτε τα μεγέθη αρχείων σε μορφή “αναγνώσιμη από τον άνθρωπο”, προσθέστε την παράμετρο -h στο ls. Τα αρχεία με μέγεθος μικρότερο από ένα kilobyte θα έχουν το μέγεθος τους να εμφανίζεται σε byte. Στα αρχεία με μέγεθος μεγαλύτερο από ένα kilobyte και λιγότερο από ένα megabyte θα προστεθεί ένα K μετά το μέγεθος, υποδεικνύοντας ότι το μέγεθος είναι σε kilobyte. Το ίδιο ισχύει για τα μεγέθη αρχείων με εύρος μεγέθους megabyte (M) και gigabyte (G):

$ ls -lh
total 1,2G
drwxrwxr-x 2 carol carol 4,0K Dec 10 17:59 Another_Directory
----r--r-- 1 carol carol    0 Dec 11 10:55 foo.bar
-rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip
-rw------- 1 carol carol 528K Dec 10 10:43 picture.jpg
---xr-xr-x 1 carol carol   33 Dec 11 10:36 test.sh
-rwxr--r-- 1 carol carol 1,9K Dec 20 18:13 text.txt
-rw-rw-r-- 1 carol carol 2,6M Dec 11 22:14 Zipped.zip

Για να εμφανίσετε πληροφορίες μόνο για ένα συγκεκριμένο σύνολο αρχείων, προσθέστε τα ονόματα αυτών των αρχείων στο ls:

$ ls -lh HugeFile.zip test.sh
total 1,2G
-rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip
---xr-xr-x 1 carol carol   33 Dec 11 10:36 test.sh

Τι Γίνεται με τους Καταλόγους;

Εάν προσπαθήσετε να αναζητήσετε πληροφορίες σχετικά με έναν κατάλογο χρησιμοποιώντας το ls -l, θα εμφανιστεί μια λίστα με τα περιεχόμενα του καταλόγου:

$ ls -l Another_Directory/
total 0
-rw-r--r-- 1 carol carol 0 Dec 10 17:59 another_file.txt

Για να το αποφύγετε αυτό και να ζητήσετε πληροφορίες σχετικά με τον ίδιο τον κατάλογο, προσθέστε την παράμετρο -d στο ls:

$ ls -l -d Another_Directory/
drwxrwxr-x 2 carol carol 4096 Dec 10 17:59 Another_Directory/

Εμφάνιση Κρυφών Αρχείων

Η λίστα καταλόγου που ανακτήσαμε χρησιμοποιώντας το ls -l πριν, είναι ελλιπής:

$ ls -l
total 544
drwxrwxr-x 2 carol carol   4096 Dec 10 17:59 Another_Directory
-rw------- 1 carol carol 539663 Dec 10 10:43 picture.jpg
-rw-rw-r-- 1 carol carol   1881 Dec 10 15:57 text.txt

Υπάρχουν άλλα τρία αρχεία σε αυτόν τον κατάλογο, αλλά είναι κρυμμένα. Στο Linux, τα αρχεία των οποίων το όνομα αρχίζει με τελεία (.) κρύβονται αυτόματα. Για να τα δούμε πρέπει να προσθέσουμε την παράμετρο -a στο ls:

$ ls -l -a
total 544
drwxrwxr-x 3 carol carol   4096 Dec 10 16:01 .
drwxrwxr-x 4 carol carol   4096 Dec 10 15:56 ..
drwxrwxr-x 2 carol carol   4096 Dec 10 17:59 Another_Directory
-rw------- 1 carol carol 539663 Dec 10 10:43 picture.jpg
-rw-rw-r-- 1 carol carol   1881 Dec 10 15:57 text.txt
-rw-r--r-- 1 carol carol      0 Dec 10 16:01 .thisIsHidden

Το αρχείο .thisIsHidden είναι κρυφό απλώς επειδή το όνομά του ξεκινά με ..

Ωστόσο, οι κατάλογοι . και .. είναι ιδιαίτεροι. Το . είναι ένας δείκτης στον τρέχοντα κατάλογο, ενώ το .. είναι ένας δείκτης στον parent κατάλογο (ο κατάλογος που περιέχει τον τρέχοντα κατάλογο). Στο Linux, κάθε κατάλογος περιέχει τουλάχιστον αυτούς τους δύο ειδικούς καταλόγους.

Tip

Μπορείτε να συνδυάσετε πολλές παραμέτρους για το ls (και πολλές άλλες εντολές Linux). Το ls -l -a μπορεί, για παράδειγμα, να γραφτεί ως ls -la.

Κατανόηση των Τύπων Αρχείων

Έχουμε ήδη αναφέρει ότι το πρώτο γράμμα σε κάθε έξοδο του ls -l περιγράφει τον τύπο του αρχείου. Οι τρεις πιο συνηθισμένοι τύποι αρχείων είναι:

- (κανονικό αρχείο)

Ένα αρχείο μπορεί να περιέχει δεδομένα οποιουδήποτε είδους. Τα αρχεία μπορούν να τροποποιηθούν, να μετακινηθούν, να αντιγραφούν και να διαγραφούν.

d (κατάλογος)

Ένας κατάλογος περιέχει άλλα αρχεία ή καταλόγους και βοηθά στην οργάνωση του συστήματος αρχείων. Τεχνικά, οι κατάλογοι είναι ένα ειδικό είδος αρχείων.

l (soft link)

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

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

b (συσκευή block)

Αυτό το αρχείο είναι μια εικονική ή φυσική συσκευή, συνήθως δίσκοι ή άλλα είδη συσκευών αποθήκευσης. Για παράδειγμα, ο πρώτος σκληρός δίσκος στο σύστημα μπορεί να αντιπροσωπεύεται ως /dev/sda.

c (συσκευή χαρακτήρων)

Αυτό το αρχείο είναι μια εικονική ή φυσική συσκευή. Τα τερματικά (όπως το κύριο τερματικό στο /dev/ttyS0) και οι σειριακές θύρες είναι κοινά παραδείγματα συσκευών χαρακτήρων.

s (socket)

Τα sockets χρησιμεύουν ως “αγωγοί” που περνούν πληροφορίες μεταξύ δύο προγραμμάτων.

Warning

Μην τροποποιείτε τα δικαιώματα σε συσκευές block, συσκευές χαρακτήρων ή sockets, εκτός εάν γνωρίζετε τι κάνετε. Αυτό μπορεί να εμποδίσει το σύστημά σας να λειτουργήσει!

Κατανοώντας τα Δικαιώματα

Στην έξοδο του ls -l τα δικαιώματα του αρχείου εμφανίζονται αμέσως μετά τον τύπο αρχείου, ως τρεις ομάδες των τριών χαρακτήρων η καθεμία, με τη σειρά r, w και x. Εδώ είναι το τι σημαίνουν. Λάβετε υπόψη ότι η παύλα - αντιπροσωπεύει την έλλειψη ενός συγκεκριμένου δικαιώματος.

Δικαιώματα Αρχείων

r

Σημαίνει ανάγνωση [read] και έχει οκταδική τιμή 4 (μην ανησυχείτε, θα συζητήσουμε για τα οκταδικά σύντομα). Αυτό σημαίνει διακαίωμα ανοίγματος ενός αρχείου και ανάγνωσης του περιεχομένου του.

w

Σημαίνει εγγραφή [write] και έχει οκταδική τιμή 2. Αυτό σημαίνει δικαίωμα για επεξεργασία ή διαγραφή ενός αρχείου.

x

Σημαίνει εκτέλεση [execute] και έχει οκταδική τιμή 1. Αυτό σημαίνει ότι το αρχείο μπορεί να τρέξει ως εκτελέσιμο ή script.

Έτσι, για παράδειγμα, ένα αρχείο με δικαιώματα rw- μπορεί να διαβαστεί και να γραφτεί, αλλά δεν μπορεί να εκτελεστεί.

Δικαιώματα Καταλόγων

r

Σημαίνει ανάγνωση [read] και έχει οκταδική τιμή 4. Αυτό σημαίνει διακαίωμα ανάγνωσης των περιεχομένων του καταλόγου, όπως ονόματα αρχείων. Αλλά δεν υπονοεί δικαίωμα ανάγνωσης των ίδιων των αρχείων που περιέχονται στον κατάλογο.

w

Σημαίνει εγγραφή [write] και έχει οκταδική τιμή 2. Αυτό σημαίνει δικαίωμα δημιουργίας ή διαγραφής αρχείων σε έναν κατάλογο ή αλλαγής των ονομάτων, των δικαιωμάτων και των κατόχων τους. Εάν ένας χρήστης έχει το δικαίωμα εγγραφής σε έναν κατάλογο, ο χρήστης μπορεί να αλλάξει τα δικαιώματα οποιουδήποτε αρχείου στον κατάλογο, ακόμα κι αν ο χρήστης δεν έχει δικαιώματα στο αρχείο ή αν το αρχείο ανήκει σε άλλο χρήστη.

x

Σημαίνει εκτέλεση [execute] και έχει οκταδική τιμή 1. Αυτό σημαίνει δικαίωμα για την είσοδο σε ένα κατάλογο, αλλά όχι για τη παράθεση των αρχείων του (για αυτό, απαιτείται το δικαίωμα r).

Το τελευταίο κομμάτι για τους καταλόγους μπορεί να ακούγεται λίγο μπερδεμένο. Ας φανταστούμε, για παράδειγμα, ότι έχετε έναν κατάλογο με το όνομα Another_Directory, με τα ακόλουθα δικαιώματα:

$ ls -ld Another_Directory/
d--xr-xr-x 2 carol carol 4,0K Dec 20 18:46 Another_Directory

Φανταστείτε επίσης ότι μέσα σε αυτόν τον κατάλογο έχετε ένα shell script που ονομάζεται hello.sh με τα ακόλουθα δικαιώματα:

-rwxr-xr-x 1 carol carol 33 Dec 20 18:46 hello.sh

Εάν είστε ο χρήστης carol και προσπαθήσετε να παραθέσετε τα περιεχόμενα του Another_Directory, θα λάβετε ένα μήνυμα σφάλματος, καθώς ο χρήστης σας δεν έχει δικαίωμα ανάγνωσης για αυτόν τον κατάλογο:

$ ls -l Another_Directory/
ls: cannot open directory 'Another_Directory/': Permission denied

Ωστόσο, ο χρήστης carol έχει δικαιώματα εκτέλεσης, πράγμα που σημαίνει ότι μπορεί να εισέλθει στον κατάλογο. Επομένως, ο χρήστης carol μπορεί να έχει πρόσβαση σε αρχεία μέσα στον κατάλογο, αρκεί να έχει τα σωστά δικαιώματα για το αντίστοιχο αρχείο. Σε αυτό το παράδειγμα, ο χρήστης έχει πλήρη δικαιώματα για το script hello.sh, επομένως μπορεί να εκτελέσει το script, ακόμα και αν δεν μπορεί να διαβάσει τα περιεχόμενα του καταλόγου που το περιέχει. Το μόνο που χρειάζεται είναι το πλήρες όνομα αρχείου.

$ sh Another_Directory/hello.sh
Hello LPI World!

Όπως είπαμε προηγουμένως, τα δικαιώματα καθορίζονται με τη σειρά: πρώτα για τον ιδιοκτήτη του αρχείου, μετά για την ομάδα ιδιοκτησίας και μετά για άλλους χρήστες. Κάθε φορά που κάποιος προσπαθεί να εκτελέσει μια ενέργεια στο αρχείο, τα δικαιώματα ελέγχονται με τον ίδιο τρόπο. Πρώτα το σύστημα ελέγχει εάν ο τρέχων χρήστης είναι κάτοχος του αρχείου και, εάν αυτό ισχύει, εφαρμόζει μόνο το πρώτο σύνολο δικαιωμάτων. Διαφορετικά, ελέγχει εάν ο τρέχων χρήστης ανήκει στην ομάδα που κατέχει το αρχείο. Σε αυτήν την περίπτωση, εφαρμόζει μόνο το δεύτερο σύνολο δικαιωμάτων. Σε κάθε άλλη περίπτωση, το σύστημα θα εφαρμόσει το τρίτο σύνολο δικαιωμάτων. Αυτό σημαίνει ότι εάν ο τρέχων χρήστης είναι ο ιδιοκτήτης του αρχείου, ισχύουν μόνο τα δικαιώματα ιδιοκτήτη, ακόμα κι αν τα δικαιώματα ομάδας ή τα άλλα δικαιώματα είναι πιο χαλαρά από τα δικαιώματα του ιδιοκτήτη.

Τροποποίηση Δικαιωμάτων Αρχείου

Η εντολή chmod χρησιμοποιείται για την τροποποίηση των δικαιωμάτων ενός αρχείου και παίρνει τουλάχιστον δύο παραμέτρους: η πρώτη περιγράφει ποια δικαιώματα πρέπει να αλλάξει και η δεύτερη δείχνει το αρχείο ή τον κατάλογο όπου θα γίνει η αλλαγή. Ωστόσο, τα δικαιώματα προς αλλαγή μπορούν να περιγραφούν με δύο διαφορετικούς τρόπους, ή “μεθόδους”.

Η πρώτη, που ονομάζεται συμβολική μέθοδος [symbolic mode] προσφέρει λεπτομερή έλεγχο, επιτρέποντάς σας να προσθέσετε ή να ανακαλέσετε ένα μόνο δικαίωμα χωρίς να τροποποιήσετε άλλα στο σύνολό τους. Η άλλη μέθοδος, που ονομάζεται αριθμητική μέθοδος [numeric mode], είναι πιο εύκολη στη μνημόνευσή της και πιο γρήγορη στη χρήση εάν θέλετε να ορίσετε όλες τις τιμές δικαιωμάτων ταυτόχρονα.

Και οι δύο τρόποι θα οδηγήσουν στο ίδιο τελικό αποτέλεσμα. Έτσι, για παράδειγμα, οι εντολές:

$ chmod ug+rw-x,o-rwx text.txt

και

$ chmod 660 text.txt

θα παράγουν ακριβώς την ίδια έξοδο, ένα αρχείο με το σύνολο δικαιωμάτων:

-rw-rw---- 1 carol carol  765 Dec 20 21:25 text.txt

Τώρα, ας δούμε πώς λειτουργεί η κάθε μέθοδος.

Συμβολική Μέθοδος

Όταν περιγράφετε ποιά δικαιώματα πρέπει να αλλάξετε στη συμβολική μέθοδο, ο(οι) πρώτος(οι) χαρακτήρας(ες) υποδεικνύει(ουν) τα δικαιώματα των οποίων θα αλλάξετε: αυτά για τον χρήστη (u), για την ομάδα (g), για άλλους (o `) ή/και και για τα τρία μαζί (`a).

Στη συνέχεια, πρέπει να πείτε στην εντολή τι να κάνει: μπορείτε να παραχωρήσετε ένα δικαίωμα (+), να ανακαλέσετε ένα δικαίωμα (-) ή να του ορίσετε μια συγκεκριμένη τιμή (=).

Τέλος, προσδιορίζετε ποιό δικαίωμα θέλετε να επηρεάσετε: ανάγνωση (r), εγγραφή (w) ή εκτέλεση (x).

Για παράδειγμα, φανταστείτε ότι έχουμε ένα αρχείο που ονομάζεται text.txt με το ακόλουθο σύνολο δικαιωμάτων:

$ ls -l text.txt
-rw-r--r-- 1 carol carol 765 Dec 20 21:25 text.txt

Εάν θέλετε να παραχωρήσετε δικαιώματα εγγραφής στα μέλη της ομάδας που κατέχει το αρχείο, θα χρησιμοποιήσετε την παράμετρο g+w. Είναι πιο εύκολο αν το σκεφτείτε ως εξής: “Για την ομάδα (g), παραχώρησε (+) δικαιώματα εγγραφής (w)”. Έτσι, η εντολή θα ήταν:

$ chmod g+w text.txt

Ας ελέγξουμε το αποτέλεσμα με την ls:

$ ls -l text.txt
-rw-rw-r-- 1 carol carol 765 Dec 20 21:25 text.txt

Εάν θέλετε να καταργήσετε τα δικαιώματα ανάγνωσης για τον ιδιοκτήτη του ίδιου αρχείου, σκεφτείτε το ως εξής: “Για τον χρήστη (u) ανακάλεσε (-), δικαιώματα ανάγνωσης (r)”. Άρα η παράμετρος είναι u-r, όπως:

$ chmod u-r text.txt
$ ls -l text.txt
--w-rw-r-- 1 carol carol 765 Dec 20 21:25 text.txt

Τι γίνεται αν θέλουμε να ορίσουμε τα δικαιώματα ακριβώς ως rw- για όλους; Στη συνέχεια, σκεφτείτε το ως: “Για όλους (a), ορίστε ακριβώς (=), ανάγνωση (r), εγγραφή (w) και όχι εκτέλεση (-)”. Ετσι:

$ chmod a=rw- text.txt
$ ls -l text.txt
-rw-rw-rw- 1 carol carol 765 Dec 20 21:25 text.txt

Φυσικά, είναι δυνατή η ταυτόχρονη τροποποίηση πολλαπλών δικαιωμάτων. Σε αυτήν την περίπτωση, διαχωρίστε τα με κόμμα (,):

$ chmod u+rwx,g-x text.txt
$ ls -lh text.txt
-rwxrw-rw- 1 carol carol 765 Dec 20 21:25 text.txt

Το παραπάνω παράδειγμα μπορεί να διαβαστεί ως εξής: “Για τον χρήστη (u), παραχώρησε (+) δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης (rwx), για την ομάδα (g) ανακάλεσε (- ), δικαιώματα εκτέλεσης (x)”.

Όταν εκτελείται σε έναν κατάλογο, η εντολή chmod τροποποιεί μόνο τα δικαιώματα του καταλόγου. Το chmod έχει μια αναδρομική λειτουργία, χρήσιμη όταν θέλετε να αλλάξετε τα δικαιώματα για “όλα τα αρχεία μέσα σε έναν κατάλογο και τους υποκαταλόγους του”. Για να τη χρησιμοποιήσετε, προσθέστε την παράμετρο -R μετά το όνομα της εντολής και πριν από τα δικαιώματα για αλλαγή, όπως:

$ chmod -R u+rwx Another_Directory/

Αυτή η εντολή μπορεί να διαβαστεί ως εξής: “Αναδρομικά (-R), για τον χρήστη (u), παραχωρήστε (+) δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης (rwx)”.

Warning

Να είστε προσεκτικοί και να σκεφτείτε δύο φορές πριν χρησιμοποιήσετε το διακόπτη -R, καθώς είναι εύκολο να αλλάξετε δικαιώματα σε αρχεία και καταλόγους που δεν θέλετε να αλλάξετε, ειδικά σε καταλόγους με μεγάλο αριθμό αρχείων και υποκαταλόγων.

Αριθμητική Μέθοδος

Στην αριθμητική μέθοδο, τα δικαιώματα καθορίζονται με διαφορετικό τρόπο: ως τριψήφια αριθμητική τιμή σε οκταδικό συμβολισμό, ένα αριθμητικό σύστημα βάσης 8.

Κάθε δικαιώμα έχει μια αντίστοιχη τιμή και καθορίζεται με την ακόλουθη σειρά: πρώτα έρχεται η ανάγνωση (r), που είναι 4, μετά η εγγραφή (w), η οποία είναι 2 και τελευταία η εκτέλεση (x), αντιπροσωπεύεται από το 1. Εάν δεν υπάρχει δικαίωμα, χρησιμοποιήστε την τιμή μηδέν (0). Άρα, ένα δικαίωμα rwx θα ήταν 7 (4+2+1) και το r-x θα ήταν 5 (4+0+1).

Το πρώτο από τα τρία ψηφία στο σύνολο δικαιωμάτων αντιπροσωπεύει τα δικαιώματα για τον χρήστη (u), το δεύτερο για την ομάδα (g) και το τρίτο για τους άλλους (o). Αν θέλαμε να ορίσουμε τα δικαιώματα για ένα αρχείο σε rw-rw----, η οκταδική τιμή θα ήταν 660:

$ chmod 660 text.txt
$ ls -l text.txt
-rw-rw---- 1 carol carol 765 Dec 20 21:25 text.txt

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

Tip

Εάν μια τιμή δικαιώματος είναι μονή, το αρχείο είναι σίγουρα εκτελέσιμο!

Ποια σύνταξη να χρησιμοποιήσω; Η αριθμητική μέθοδος συνιστάται εάν θέλετε να αλλάξετε τα δικαιώματα σε μια συγκεκριμένη τιμή, για παράδειγμα 640 (rw- r-- ---).

Η συμβολική μέθοδος είναι πιο χρήσιμη εάν θέλετε να αλλάξετε μόνο μια συγκεκριμένη τιμή, ανεξάρτητα από τα τρέχοντα δικαιώματα για το αρχείο. Για παράδειγμα, μπορώ να προσθέσω δικαιώματα εκτέλεσης για τον χρήστη χρησιμοποιώντας απλώς το chmod u+x script.sh χωρίς να λαμβάνω υπόψη ή ακόμα και να αγγίζω τα τρέχοντα δικαιώματα για την ομάδα και τους άλλους.

Τροποποίηση Ιδιοκτησίας Αρχείου

Η εντολή chown χρησιμοποιείται για την τροποποίηση της ιδιοκτησίας ενός αρχείου ή καταλόγου. Η σύνταξη είναι αρκετά απλή:

chown όνομα χρήστη:όνομα ομάδας όνομα αρχείου

Για παράδειγμα, ας ελέγξουμε ένα αρχείο που ονομάζεται text.txt:

$ ls -l text.txt
-rw-rw---- 1 carol carol 1881 Dec 10 15:57 text.txt

Ο χρήστης που κατέχει το αρχείο είναι carol και η ομάδα είναι επίσης carol. Τώρα, ας τροποποιήσουμε την ομάδα που κατέχει το αρχείο σε κάποια άλλη ομάδα, όπως students:

$ chown carol:students text.txt
$ ls -l text.txt
-rw-rw---- 1 carol students 1881 Dec 10 15:57 text.txt

Λάβετε υπόψη ότι ο χρήστης που κατέχει ένα αρχείο δεν χρειάζεται να ανήκει στην ομάδα που κατέχει ένα αρχείο. Στο παραπάνω παράδειγμα, ο χρήστης carol δεν χρειάζεται να είναι μέλος της ομάδας students. Ωστόσο, πρέπει να είναι μέλος της ομάδας για να μπορεί μεταβιβάσει την ιδιοκτησία της ομάδας του αρχείου σε αυτήν την άλλη ομάδα.

Ο χρήστης ή η ομάδα μπορεί να παραλειφθεί εάν δεν θέλετε να τα αλλάξετε. Έτσι, για να αλλάξετε μόνο την ομάδα που κατέχει ένα αρχείο, θα χρησιμοποιούσατε το chown :students text.txt. Για να αλλάξετε μόνο τον χρήστη, η εντολή θα ήταν chown carol text.txt. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την εντολή chgrp student text.txt για να αλλάξετε μόνο την ομάδα.

Αν δεν είστε ο διαχειριστής του συστήματος (root χρήστης), δεν μπορείτε να αλλάξετε την ιδιοκτησία ενός αρχείου που ανήκει σε άλλο χρήστη ή σε μια ομάδα στην οποία δεν ανήκετε. Εάν προσπαθήσετε να το κάνετε αυτό, θα λάβετε το μήνυμα σφάλματος Operation not permitted.

Ερωτήσεις Ομάδων

Πριν αλλάξετε την ιδιοκτησία ενός αρχείου, ίσως είναι χρήσιμο να γνωρίζετε ποιες ομάδες υπάρχουν στο σύστημα, ποιοι χρήστες είναι μέλη μιας ομάδας και σε ποιες ομάδες ανήκει ένας χρήστης. Αυτές οι εργασίες μπορούν να ολοκληρωθούν με δύο εντολές, groups και groupmems.

Για να δείτε σε ποιες ομάδες είστε μέλος, απλώς πληκτρολογήστε groups:

$ groups
carol students cdrom sudo dip plugdev lpadmin sambashare

Και αν θέλετε να μάθετε σε ποιες ομάδες ανήκει ένας χρήστης, προσθέστε το όνομα χρήστη ως παράμετρο:

$ groups carol
carol : carol students cdrom sudo dip plugdev lpadmin sambashare

Για να κάνετε το αντίστροφο, εμφανίζοντας ποιοι χρήστες ανήκουν σε μια ομάδα, χρησιμοποιήστε το groupmems. Η παράμετρος -g καθορίζει την ομάδα και το -l θα εμφανίσει όλα τα μέλη της:

$ sudo groupmems -g cdrom -l
carol
Tip

Το groupmems μπορεί να εκτελεστεί μόνο απο τον root χρήστη, τον διαχειριστή συστήματος. Εάν δεν είστε συνδεδεμένοι αυτήν τη στιγμή ως ο root χρήστης, προσθέστε sudo πριν από την εντολή.

Ειδικά Δικαιώματα

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

Sticky Bit

Το sticky bit, που ονομάζεται επίσης σημαία περιορισμένης διαγραφής, έχει την οκταδική τιμή 1 και συμβολικά αντιπροσωπεύεται από ένα t εντός των δικαιωμάτων για τους άλλους. Βρίσκει εφαρμογή μόνο επί καταλόγων και στο Linux εμποδίζει τους χρήστες να αφαιρέσουν ή να μετονομάσουν ένα αρχείο σε έναν κατάλογο, εκτός εάν ο χρήστης είναι ιδιοκτήτης αυτού του αρχείου ή του καταλόγου.

Οι κατάλογοι με εφαρμοσμένο το sticky bit εμφανίζουν ένα t που αντικαθιστά το x στα δικαιώματα για άλλους στην έξοδο του ls -l:

$ ls -ld Sample_Directory/
drwxr-xr-t 2 carol carol 4096 Dec 20 18:46 Sample_Directory/

Στην αριθμητική μέθοδο, τα ειδικά δικαιώματα καθορίζονται χρησιμοποιώντας ένα “συμβολισμό 4 ψηφίων”, με το πρώτο ψηφίο να αντιπροσωπεύει το ειδικό δικαίωμα προς εφαρμογή. Για παράδειγμα, για να ορίσετε το sticky bit (τιμή 1) για τον κατάλογο Another_Directory με αριθμητική μέθοδο, με δικαιώματα 755, η εντολή θα είναι:

$ chmod 1755 Another_Directory
$ ls -ld Another_Directory
drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory

Εφαρμογή GID

Η εφαρμογή του GID, γνωστή και ως SGID bit ή Set Group ID, έχει την οκταδική τιμή 2 και στη συμβολική μέθοδο αντιπροσωπεύεται από ένα s στα δικαιώματα ομάδας. Μπορεί να εφαρμοστεί σε εκτελέσιμα αρχεία ή καταλόγους. Σε εκτελέσιμα αρχεία, θα παραχωρήσει στο process που προκύπτει από την εκτέλεση του αρχείου πρόσβαση στα προνόμια της ομάδας που κατέχει το αρχείο. Όταν εφαρμόζεται σε καταλόγους, θα κάνει κάθε αρχείο ή κατάλογο που δημιουργείται κάτω από αυτόν να κληρονομήσει την ομάδα από τον parent κατάλογο.

Τα αρχεία και οι κατάλογοι με SGID bit εμφανίζουν ένα s που αντικαθιστά το x στα δικαιώματα για την ομάδα στην έξοδο του ls -l:

$ ls -l test.sh
-rwxr-sr-x 1 carol carol 33 Dec 11 10:36 test.sh

Για να προσθέσετε δικαιώματα SGID σε ένα αρχείο με συμβολική μέθοδο, η εντολή θα ήταν:

$ chmod g+s test.sh
$ ls -l test.sh
-rwxr-sr-x 1 carol root     33 Dec 11 10:36 test.sh

Το παρακάτω παράδειγμα θα σας κάνει να κατανοήσετε καλύτερα τα αποτελέσματα του SGID σε έναν κατάλογο. Ας υποθέσουμε ότι έχουμε έναν κατάλογο που ονομάζεται Sample_Directory, που ανήκει στον χρήστη carol και την ομάδα users, με την ακόλουθη δομή δικαιωμάτων:

$ ls -ldh Sample_Directory/
drwxr-xr-x 2 carol users 4,0K Jan 18 17:06 Sample_Directory/

Τώρα, ας αλλάξουμε σε αυτόν τον κατάλογο και, χρησιμοποιώντας την εντολή touch, ας δημιουργήσουμε ένα κενό αρχείο μέσα σε αυτόν. Το αποτέλεσμα θα ήταν:

$ cd Sample_Directory/
$ touch newfile
$ ls -lh newfile
-rw-r--r-- 1 carol carol 0 Jan 18 17:11 newfile

Όπως μπορούμε να δούμε, το αρχείο ανήκει στον χρήστη carol και στην ομάδα carol. Αλλά, εάν ο κατάλογος είχε το δικαιώμα SGID, το αποτέλεσμα θα ήταν διαφορετικό. Αρχικά, ας προσθέσουμε το SGID bit στο Sample_Directory και ας ελέγξουμε τα αποτελέσματα:

$ sudo chmod g+s Sample_Directory/
$ ls -ldh Sample_Directory/
drwxr-sr-x 2 carol users 4,0K Jan 18 17:17 Sample_Directory/

Το s στα δικαιώματα ομάδας υποδεικνύει ότι το SGID bit έχει οριστεί. Τώρα, ας αλλάξουμε σε αυτόν τον κατάλογο και, ξανά, δημιουργούμε ένα κενό αρχείο με την εντολή touch:

$ cd Sample_Directory/
$ touch emptyfile
$ ls -lh emptyfile
 -rw-r--r-- 1 carol users 0 Jan 18 17:20 emptyfile

Όπως μπορούμε να δούμε, η ομάδα στην οποία ανήκει το αρχείο είναι users. Αυτό συμβαίνει επειδή το SGID bit έκανε το αρχείο να κληρονομήσει τον ιδιοκτήτη ομάδας του parent καταλόγου του, ο οποίος είναι users.

Εφαρμογή UID

Το SUID, γνωστό και ως Set User ID, έχει την οκταδική τιμή 4 και αντιπροσωπεύεται από ένα s στα δικαιώματα χρήστη στη συμβολική μέθοδο. Ισχύει μόνο για αρχεία και η συμπεριφορά του είναι παρόμοια με το SGID bit, αλλά το process θα εκτελεστεί με τα προνόμια του χρήστη που κατέχει το αρχείο. Τα αρχεία με το SUID bit εμφανίζουν ένα s που αντικαθιστά το x στα δικαιώματα για τον χρήστη στην έξοδο του ls -l:

$ ls -ld test.sh
-rwsr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh

Μπορείτε να συνδυάσετε πολλά ειδικά δικαιώματα σε μία παράμετρο προσθέτοντάς τα μαζί. Έτσι, για να ορίσετε το SGID (τιμή 2) και το SUID (τιμή 4) με αριθμητική μέθοδο για το script test.sh με δικαιώματα 755, θα πληκτρολογήσετε:

$ chmod 6755 test.sh

Και το αποτέλεσμα θα ήταν:

$ ls -lh test.sh
-rwsr-sr-x 1 carol carol 66 Jan 18 17:29 test.sh
Tip

Εάν το τερματικό σας υποστηρίζει χρώματα, και σήμερα τα περισσότερα από αυτά υποστηρίζουν, μπορείτε να δείτε γρήγορα εάν αυτά τα ειδικά δικαιώματα έχουν εφαρμοστεί κοιτάζοντας την έξοδο του ls -l. Για το sticky bit, το όνομα του καταλόγου μπορεί να εμφανίζεται με μαύρη γραμματοσειρά σε μπλε φόντο. Το ίδιο ισχύει για αρχεία με SGID (κίτρινο φόντο) και SUID (κόκκινο φόντο) bit. Τα χρώματα μπορεί να διαφέρουν ανάλογα με τη διανομή Linux και τις ρυθμίσεις τερματικού που χρησιμοποιείτε.

Καθοδηγούμενες Ασκήσεις

  1. Δημιουργήστε έναν κατάλογο με το όνομα emptydir χρησιμοποιώντας την εντολή mkdir emptydir. Τώρα, χρησιμοποιώντας την ls, παραθέστε τα δικαιώματα για τον κατάλογο emptydir.

  2. Δημιουργήστε ένα κενό αρχείο με το όνομα emptyfile με την εντολή touch emptyfile. Τώρα, χρησιμοποιώντας το chmod με συμβολικό τρόπο, προσθέστε δικαιώματα εκτέλεσης για τον κάτοχο του αρχείου emptyfile και αφαιρέστε τα δικαιώματα εγγραφής και εκτέλεσης για όλους τους άλλους. Κάντε αυτό χρησιμοποιώντας μόνο μία εντολή chmod.

  3. Ποια θα είναι τα δικαιώματα για ένα αρχείο που ονομάζεται text.txt αφού χρησιμοποιήσετε την εντολή chmod 754 text.txt;

  4. Ας υποθέσουμε ότι ένα αρχείο με το όνομα test.sh είναι ένα shell script με τα ακόλουθα δικαιώματα και ιδιοκτησία:

    -rwxr-sr-x 1 carol root     33 Dec 11 10:36 test.sh
    • Ποια είναι τα δικαιώματα για τον ιδιοκτήτη του αρχείου;

    • Εάν ο χρήστης john εκτελέσει αυτό το script, κάτω από ποια δικαιώματα χρήστη θα εκτελεστεί;

    • Χρησιμοποιώντας τον αριθμητικό συμβολισμό, ποια θα πρέπει να είναι η σύνταξη του chmod για να “αποκαταστήσετε” την ειδική άδεια που έχει χορηγηθεί σε αυτό το αρχείο;

  5. Σκεφτείτε αυτό το αρχείο:

    $ ls -l /dev/sdb1
    brw-rw---- 1 root disk 8, 17 Dec 21 18:51 /dev/sdb1

    Τι είδους αρχείο είναι το sdb1; Και ποιος μπορεί να γράψει σε αυτό;

  6. Σκεφτείτε τα ακόλουθα 4 αρχεία:

    drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory
    ----r--r-- 1 carol carol    0 Dec 11 10:55 foo.bar
    -rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip
    drwxr-sr-x 2 carol users 4,0K Jan 18 17:26 Sample_Directory

    Καταγράψτε τα αντίστοιχα δικαιώματα για κάθε αρχείο και κατάλογο χρησιμοποιώντας τετραψήφιο αριθμητικό συμβολισμό.

    Another_Directory
    foo.bar
    HugeFile.zip
    Sample_Directory

Ασκήσεις Εξερεύνησης

  1. Δοκιμάστε το σε ένα τερματικό: δημιουργήστε ένα κενό αρχείο που ονομάζεται emptyfile με την εντολή touch emptyfile. Τώρα “μηδενίστε” τα δικαιώματα για το αρχείο με chmod 000 emptyfile. Τι θα συμβεί εάν αλλάξετε τα δικαιώματα για το emptyfile περνώντας μόνο μία τιμή για το chmod στην αριθμητική μέθοδο, όπως το chmod 4 emptyfile; Τι γίνεται αν χρησιμοποιήσουμε δύο, όπως chmod 44 emptyfile; Τι μπορούμε να μάθουμε για τον τρόπο που το chmod διαβάζει την αριθμητική τιμή;

  2. Μπορείτε να εκτελέσετε ένα αρχείο για το οποίο έχετε δικαίωμα εκτέλεσης, αλλά όχι δικαίωμα ανάγνωσης (--x); Γιατί ή γιατί όχι?

  3. Σκεφτείτε τα δικαιώματα για τον προσωρινό κατάλογο σε ένα σύστημα Linux, /tmp:

    $ ls -l /tmp
    drwxrwxrwt  19 root root  16K Dec 21 18:58 tmp

    Ο χρήστης, η ομάδα και οι άλλοι έχουν πλήρη δικαιώματα. Μπορεί όμως ένας κανονικός χρήστης να διαγράψει οποιαδήποτε αρχεία μέσα σε αυτόν τον κατάλογο; Γιατί συμβαίνει αυτό;

  4. Ένα αρχείο που ονομάζεται test.sh έχει τα ακόλουθα δικαιώματα: -rwsr-xr-x, που σημαίνει ότι το SUID bit έχει οριστεί. Τώρα, εκτελέστε τις ακόλουθες εντολές:

    $ chmod u-x test.sh
    $ ls -l test.sh
    -rwSr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh

    Τι κάναμε; Τι σημαίνει το κεφαλαίο S;

  5. Πώς θα δημιουργήσατε έναν κατάλογο με το όνομα Box όπου όλα τα αρχεία ανήκουν αυτόματα στην ομάδα users και μπορούν να διαγραφούν μόνο από τον χρήστη που τα δημιούργησε;

Σύνοψη

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

Σε αυτό το μάθημα μάθατε πώς να χρησιμοποιείτε το ls για να λαμβάνετε πληροφορίες σχετικά με τα δικαιώματα αρχείων, πώς να ελέγχετε ή να αλλάζετε ποιος μπορεί να δημιουργήσει, να διαγράψει ή να τροποποιήσει ένα αρχείο με το chmod, τόσο με αριθμητικό όσο και με συμβολικό τρόπο και πώς να αλλάξετε την ιδιοκτησία αρχείων με chown και chgrp.

Οι ακόλουθες εντολές συζητήθηκαν σε αυτό το μάθημα:

ls

Παραθέστε αρχεία, προαιρετικά με λεπτομέρειες όπως δικαιώματα.

chmod

Αλλάξτε τα δικαιώματα ενός αρχείου ή καταλόγου.

chown

Αλλάξτε τον ιδιοκτήτη ή/και την ομάδα ενός αρχείου ή καταλόγου.

chgrp

Αλλάξτε την ομάδα ιδιοκτησίας ενός αρχείου ή καταλόγου.

Απαντήσεις στις Καθοδηγούμενες Ασκήσεις

  1. Δημιουργήστε έναν κατάλογο με το όνομα emptydir χρησιμοποιώντας την εντολή mkdir emptydir. Τώρα, χρησιμοποιώντας την ls, παραθέστε τα δικαιώματα για τον κατάλογο emptydir.

    Προσθέστε την παράμετρο -d στο ls για να δείτε τα χαρακτηριστικά αρχείου ενός καταλόγου, αντί να παραθέσετε τα περιεχόμενά του. Επομένως η απάντηση είναι:

    ls -l -d emptydir

    Επιπλέον πόντοι εάν συγχωνεύσατε τις δύο παραμέτρους σε μία, όπως στο ls -ld emptydir.

  2. Δημιουργήστε ένα κενό αρχείο με το όνομα emptyfile με την εντολή touch emptyfile. Τώρα, χρησιμοποιώντας το chmod με συμβολικό τρόπο, προσθέστε δικαιώματα εκτέλεσης για τον κάτοχο του αρχείου emptyfile και αφαιρέστε τα δικαιώματα εγγραφής και εκτέλεσης για όλους τους άλλους. Κάντε αυτό χρησιμοποιώντας μόνο μία εντολή chmod.

    Σκεφτείτε το ως εξής:

    • “Για τον χρήστη που κατέχει το αρχείο (u) προσθέστε (+) δικαιώματα εκτέλεσης (x)”, άρα u+x.

    • “Για την ομάδα (g) και άλλους χρήστες (o), αφαιρέστε (-) τα δικαιώματα εγγραφής (w) και εκτέλεσης (x)”, άρα go-wx.

      Για να συνδυάσουμε αυτά τα δύο σύνολα δικαιωμάτων, προσθέτουμε ένα κόμμα μεταξύ τους. Το τελικό αποτέλεσμα λοιπόν είναι:

      chmod u+x,go-wx emptyfile
  3. Ποια θα είναι τα δικαιώματα για ένα αρχείο που ονομάζεται text.txt αφού χρησιμοποιήσω την εντολή chmod 754 text.txt;

    Θυμηθείτε ότι στην αριθμητική μέθοδο κάθε ψηφίο αντιπροσωπεύει ένα σύνολο τριών δικαιωμάτων, το καθένα με μια αντίστοιχη τιμή: το read είναι 4, το write είναι 2, το execute είναι 1 και το κανένα δικαίωμα είναι 0. Λαμβάνουμε την τιμή για ένα ψηφίο προσθέτοντας τις αντίστοιχες τιμές για κάθε δικαιώμα. Το 7 είναι 4+2+1 ή rwx, το 5 είναι 4+0+1, οπότε είναι r-x και το 4 είναι απλώς read ή r--. Τα δικαιώματα για το text.txt θα είναι

    rwxr-xr--
  4. Ας υποθέσουμε ότι ένα αρχείο με το όνομα test.sh είναι ένα shell script με τα ακόλουθα δικαιώματα και ιδιοκτησία:

    -rwxr-sr-x 1 carol root     33 Dec 11 10:36 test.sh
    • Ποια είναι τα δικαιώματα για τον ιδιοκτήτη του αρχείου;

      Τα δικαιώματα για τον ιδιοκτήτη (2ος έως 4ος χαρακτήρας στην έξοδο του ls -l) είναι rwx, επομένως η απάντηση είναι: “για ανάγνωση, εγγραφή και εκτέλεση του αρχείου”.

    • Εάν ο χρήστης john εκτελέσει αυτό το script, κάτω από ποια δικαιώματα χρήστη θα εκτελεστεί;

      Δώστε προσοχή στα δικαιώματα για την ομάδα. Είναι r-s, που σημαίνει ότι το SGID bit έχει οριστεί. Η ομάδα στην οποία ανήκει αυτό το αρχείο είναι root, επομένως το script, ακόμη και όταν ξεκινά από έναν κανονικό χρήστη, θα εκτελείται με τα πρόνομια της ομάδας που ανήκει το αρχείο.

    • Χρησιμοποιώντας τον αριθμητικό συμβολισμό, ποια θα πρέπει να είναι η σύνταξη του chmod για να “αποκαταστήσετε” την ειδική άδεια που έχει χορηγηθεί σε αυτό το αρχείο;

      Μπορούμε να “ακυρώσουμε” τα ειδικά δικαιώματα περνώντας ένα 4ο ψηφίο, 0, στο chmod. Τα τρέχοντα δικαιώματα είναι 755, επομένως η εντολή πρέπει να είναι chmod 0755.

  5. Σκεφτείτε αυτό το αρχείο:

    $ ls -l /dev/sdb1
    brw-rw---- 1 root disk 8, 17 Dec 21 18:51 /dev/sdb1

    Τι είδους αρχείο είναι το sdb1; Και ποιος μπορεί να γράψει σε αυτό;

    Ο πρώτος χαρακτήρας της εξόδου από το ls -l δείχνει το είδος του αρχείου. Το b είναι μια συσκευή block, συνήθως ένας δίσκος (εσωτερικός ή εξωτερικός), συνδεδεμένος στο μηχάνημα. Ο κάτοχος (root) και όλοι οι χρήστες της ομάδας disk μπορούν να γράψουν σε αυτό.

  6. Σκεφτείτε τα ακόλουθα 4 αρχεία:

    drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory
    ----r--r-- 1 carol carol    0 Dec 11 10:55 foo.bar
    -rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip
    drwxr-sr-x 2 carol users 4,0K Jan 18 17:26 Sample_Directory

    Καταγράψτε τα αντίστοιχα δικαιώματα για κάθε αρχείο και κατάλογο χρησιμοποιώντας τετραψήφιο αριθμητικό συμβολισμό.

    Τα αντίστοιχα δικαιώματα, με αριθμητικό συμβολισμό, είναι τα εξής:

    Another_Directory

    Απάντηση: 1755

    1 για το sticky bit, 755 για τα κανονικά δικαιώματα (rwx για τον χρήστη, r-x για την ομάδα και τους άλλους).

    foo.bar

    Απάντηση: 0044

    Χωρίς ειδικά δικαιώματα (επομένως το πρώτο ψηφίο είναι 0), χωρίς δικαιώματα για τον χρήστη (---) και απλά ανάγνωση (r—​r--) για την ομάδα και τους άλλους.

    HugeFile.zip

    Απάντηση: 0664

    Χωρίς ειδικά δικαιώματα, επομένως το πρώτο ψηφίο είναι 0. 6 (rw-) για τον χρήστη και την ομάδα, 4 (r--) για τους άλλους.

    Sample_Directory

    Απάντηση: 2755

    2 για το SGID bit, 7 (rwx) για τον χρήστη, 5 (r-x) για την ομάδα και τους άλλους.

Απαντήσεις στις Ασκήσεις Εξερεύνησης

  1. Δοκιμάστε το σε ένα τερματικό: δημιουργήστε ένα κενό αρχείο που ονομάζεται emptyfile με την εντολή touch emptyfile. Τώρα “μηδενίστε” τα δικαιώματα για το αρχείο με chmod 000 emptyfile. Τι θα συμβεί εάν αλλάξετε τα δικαιώματα για το emptyfile περνώντας μόνο μία τιμή για το chmod στην αριθμητική μέθοδο, όπως το chmod 4 emptyfile; Τι γίνεται αν χρησιμοποιήσουμε δύο, όπως chmod 44 emptyfile; Τι μπορούμε να μάθουμε για τον τρόπο που το chmod διαβάζει την αριθμητική τιμή;

    Θυμηθείτε ότι “μηδενίσαμε” τα δικαιώματα για το emptyfile. Άρα, η αρχική του κατάσταση θα ήταν:

    ---------- 1 carol carol    0 Dec 11 10:55 emptyfile

    Τώρα, ας δοκιμάσουμε την πρώτη εντολή, chmod 4 emptyfile:

    $ chmod 4 emptyfile
    $ ls -l emptyfile
    -------r-- 1 carol carol 0 Dec 11 10:55 emptyfile

    Τα δικαιώματα για τους άλλους άλλαξαν. Και τι γίνεται αν δοκιμάσουμε δύο ψηφία, όπως chmod 44 emptyfile;

    $ chmod 44 emptyfile
    $ ls -l emptyfile
    ----r--r-- 1 carol carol 0 Dec 11 10:55 emptyfile

    Τώρα, επηρεάστηκαν τα δικαιώματα για την ομάδα και τους άλλους. Από αυτό, μπορούμε να συμπεράνουμε ότι στον αριθμητικό συμβολισμό το chmod διαβάζει την τιμή “προς τα πίσω”, από το λιγότερο σημαντικό ψηφίο (άλλοι) έως το πιο σημαντικό (χρήστης). Εάν περάσετε ένα ψηφίο, τροποποιείτε τα δικαιώματα για τους άλλους. Με δύο ψηφία τροποποιείτε την ομάδα και τους άλλους, και με τρία τροποποιείτε τον χρήστη, την ομάδα και τους άλλους και με τέσσερα ψηφία τροποποιείτε τον χρήστη, την ομάδα, τους άλλους και τα ειδικά δικαιώματα.

  2. Μπορείτε να εκτελέσετε ένα αρχείο για το οποίο έχετε δικαίωμα εκτέλεσης, αλλά όχι δικαίωμα ανάγνωσης (--x); Γιατί ή γιατί όχι?

    Αρχικά, η απάντηση φαίνεται προφανής: εάν έχετε δικαίωμα εκτέλεσης, το αρχείο θα μπορεί να εκτελεστεί. Αυτό βρίσκει εφαρμογή σε προγράμματα σε binary μορφή που εκτελούνται απευθείας απο τον πυρήνα. Ωστόσο, υπάρχουν προγράμματα (π.χ. shell scripts) τα οποία θα πρέπει να διαβαστούν πρώτα, επομένως σε αυτές τις περιπτώσεις το δικαίωμα ανάγνωσης (r) πρέπει να οριστεί επιπροσθέτως.

  3. Σκεφτείτε τα δικαιώματα για τον προσωρινό κατάλογο σε ένα σύστημα Linux, /tmp:

    $ ls -l /tmp
    drwxrwxrwt  19 root root  16K Dec 21 18:58 tmp

    Ο χρήστης, η ομάδα και οι άλλοι έχουν πλήρη δικαιώματα. Μπορεί όμως ένας κανονικός χρήστης να διαγράψει οποιαδήποτε αρχεία μέσα σε αυτόν τον κατάλογο; Γιατί συμβαίνει αυτό;

    Το /tmp είναι αυτό που ονομάζουμε κατάλογος world writeable, που σημαίνει ότι οποιοσδήποτε χρήστης μπορεί να γράψει σε αυτόν. Αλλά δεν θέλουμε ένας χρήστης να τροποποιεί αρχεία που δημιουργούνται από άλλους, επομένως ορίζεται το sticky bit (όπως υποδεικνύεται από το t στα δικαιώματα για others). Αυτό σημαίνει ότι ένας χρήστης μπορεί να διαγράψει αρχεία στο /tmp, αλλά μόνο εάν δημιούργησε αυτό το αρχείο.

  4. Ένα αρχείο που ονομάζεται test.sh έχει τα ακόλουθα δικαιώματα: -rwsr-xr-x, που σημαίνει ότι το SUID bit έχει οριστεί. Τώρα, εκτελέστε τις ακόλουθες εντολές:

    $ chmod u-x test.sh
    $ ls -l test.sh
    -rwSr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh

    Τι κάναμε; Τι σημαίνει το κεφαλαίο S;

    Καταργήσαμε τα δικαιώματα εκτέλεσης για τον χρήστη που κατέχει το αρχείο. Το s (ή t) παίρνει τη θέση του x στην έξοδο του ls -l, επομένως το σύστημα χρειάζεται έναν τρόπο για να δείξει εάν ο χρήστης έχει δικαιώματα εκτέλεσης ή όχι. Αυτό το κάνει αλλάζοντας τον ειδικού χαρακτήρα απο πεζό σε κεφαλαίο.

    Ένα πεζό s στην πρώτη ομάδα δικαιωμάτων σημαίνει ότι ο χρήστης που κατέχει το αρχείο έχει δικαιώματα εκτέλεσης και ότι έχει οριστεί το SUID bit. Ένα κεφαλαίο S σημαίνει ότι ο χρήστης που κατέχει το αρχείο δεν διαθέτει δικαιώματα εκτέλεσης (-) και ότι έχει οριστεί το SUID bit.

    Το ίδιο μπορεί να ειπωθεί για το SGID. Ένα πεζό s στη δεύτερη ομάδα δικαιωμάτων σημαίνει ότι η ομάδα στην οποία ανήκει το αρχείο έχει δικαιώματα εκτέλεσης και ότι έχει οριστεί το SGID bit. Ένα κεφαλαίο S σημαίνει ότι η ομάδα στην οποία ανήκει το αρχείο δεν διαθέτει δικαιώματα εκτέλεσης (-) και ότι έχει οριστεί το SGID bit.

    Αυτό ισχύει επίσης για το sticky bit, που αντιπροσωπεύεται από το t στην τρίτη ομάδα δικαιωμάτων. Τα πεζό t σημαίνει ότι το sticky bit έχει οριστεί και ότι οι άλλοι έχουν δικαιώματα εκτέλεσης. Το κεφαλαίο T σημαίνει ότι το sticky bit έχει οριστεί και ότι οι άλλοι δεν έχουν δικαιώματα εκτέλεσης.

  5. Πώς θα δημιουργήσατε έναν κατάλογο με το όνομα Box όπου όλα τα αρχεία ανήκουν αυτόματα στην ομάδα users και μπορούν να διαγραφούν μόνο από τον χρήστη που τα δημιούργησε;

    Αυτή είναι μια διαδικασία πολλαπλών βημάτων. Το πρώτο βήμα είναι να δημιουργήσετε τον κατάλογο:

    $ mkdir Box

    Θέλουμε κάθε αρχείο που δημιουργείται μέσα σε αυτόν τον κατάλογο να εκχωρείται αυτόματα στην ομάδα users. Μπορούμε να το κάνουμε αυτό ορίζοντας αυτήν την ομάδα ως ιδιοκτήτη του καταλόγου και, στη συνέχεια, ορίζοντας το SGID bit σε αυτόν τον κατάλογο. Πρέπει επίσης να βεβαιωθούμε ότι οποιοδήποτε μέλος της ομάδας μπορεί να γράψει σε αυτόν τον κατάλογο.

    Δεδομένου ότι δεν μας ενδιαφέρει ποια είναι τα άλλα δικαιώματα και θέλουμε να “γυρίσουμε” μόνο τα ειδικά bits, είναι λογικό να χρησιμοποιήσουμε τη συμβολική μέθοδο:

    $ chown :users Box/
    $ chmod g+wxs Box/

    Σημειώστε ότι εάν ο τρέχων χρήστης δεν ανήκει στην ομάδα users, θα πρέπει να χρησιμοποιήσετε την εντολή sudo πριν από τις παραπάνω εντολές για να κάνετε την αλλαγή ως ο root χρήστης.

    Τώρα για το τελευταίο μέρος, βεβαιωθείτε ότι μόνο ο χρήστης που δημιούργησε ένα αρχείο επιτρέπεται να το διαγράψει. Αυτό γίνεται ορίζοντας το sticky bit (που αντιπροσωπεύεται από ένα t) στον κατάλογο. Θυμηθείτε ότι ορίζεται στα δικαιώματα για τους άλλους (o).

    $ chmod o+t Box/

    Τα δικαιώματα στον κατάλογο Box θα πρέπει να εμφανίζονται ως εξής:

    drwxrwsr-t 2 carol users  4,0K Jan 18 19:09 Box

    Φυσικά, μπορείτε να καθορίσετε το SGID και το sticky bit χρησιμοποιώντας μόνο μία εντολή chmod:

    $ chmod g+wxs,o+t Box/

    Επιπλέον πόντοι αν το σκεφτήκατε.

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Επόμενο Μάθημα

5.4 Ειδικοί Κατάλογοι και Αρχεία (5.4 Μάθημα 1)

Διάβασε το επόμενο μάθημα

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Το LPI είναι ένας μη κερδοσκοπικός οργανισμός.

© 2023 Το Linux Professional Institute (LPI) είναι το παγκόσμιο πρότυπο πιστοποίησης και οργανισμός υποστήριξης σταδιοδρομίας για επαγγελματίες ανοιχτού κώδικα. Με περισσότερους από 200.000 κατόχους πιστοποίησης, είναι ο πρώτος και μεγαλύτερος στον κόσμο ουδέτερος οργανισμός πιστοποιήσεων Linux και ανοιχτού κώδικα. Το LPI έχει πιστοποιημένους επαγγελματίες σε περισσότερες από 180 χώρες, παραδίδει εξετάσεις σε πολλές γλώσσες και έχει εκατοντάδες συνεργάτες εκπαίδευσης.

Σκοπός μας είναι να επιτρέψουμε σε όλους οικονομικές και δημιουργικές ευκαιρίες καθιστώντας καθολικά προσβάσιμη την πιστοποίηση γνώσεων και δεξιοτήτων ανοιχτού κώδικα.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Επικοινωνήστε Μαζί Μας
  • Πολιτική Απορρήτου και Πολιτική Cookie

Εντοπίσατε ένα λάθος ή θέλετε να βοηθήσετε στη βελτίωση αυτής της σελίδας; Παρακαλούμε ενημερώστε μας.

© 1999–2023 The Linux Professional Institute Inc. All rights reserved.