Πώς να χρησιμοποιήσετε την εντολή chmod στο Linux

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

chmod Τροποποιεί τα δικαιώματα αρχείου

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

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

Χρησιμοποιείτε την εντολή chmod για να ορίστε καθένα από αυτά τα δικαιώματα. Προς το δείτε ποια δικαιώματα έχουν οριστεί σε ένα αρχείο ή κατάλογο, μπορούμε να χρησιμοποιήσουμε ls.

Προβολή και κατανόηση των δικαιωμάτων αρχείων

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

ls -l

Σε κάθε γραμμή, ο πρώτος χαρακτήρας προσδιορίζει τον τύπο της καταχώρισης που παρατίθεται. Αν είναι παύλα (-) είναι αρχείο. Αν είναι το γράμμα d είναι κατάλογος.

Οι επόμενοι εννέα χαρακτήρες αντιπροσωπεύουν τις ρυθμίσεις για τα τρία σύνολα δικαιωμάτων.

Οι τρεις πρώτοι χαρακτήρες δείχνουν τα δικαιώματα για τον χρήστη που κατέχει το αρχείο (δικαιώματα χρήστη).
Οι τρεις μεσαίοι χαρακτήρες δείχνουν τα δικαιώματα για τα μέλη της ομάδας του αρχείου (δικαιώματα ομάδας).
Οι τρεις τελευταίοι χαρακτήρες δείχνουν τα δικαιώματα για οποιονδήποτε δεν ανήκει στις δύο πρώτες κατηγορίες (άλλα δικαιώματα).

Υπάρχουν τρεις χαρακτήρες σε κάθε σύνολο δικαιωμάτων. Οι χαρακτήρες είναι ενδείξεις για την παρουσία ή την απουσία ενός από τα δικαιώματα. Είναι είτε παύλα (-) είτε γράμμα. Εάν ο χαρακτήρας είναι παύλα, σημαίνει ότι δεν χορηγείται άδεια. Εάν ο χαρακτήρας είναι r, w ή x, αυτό το δικαίωμα έχει παραχωρηθεί.

Τα γράμματα αντιπροσωπεύουν:

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

  Πώς να διαχειριστείτε το Encfs Stashes στο Linux

Για παράδειγμα:

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

Στο στιγμιότυπο οθόνης μας, η πρώτη γραμμή ξεκινά με ένα d. Αυτή η γραμμή αναφέρεται σε έναν κατάλογο που ονομάζεται “αρχείο”. Ο κάτοχος του καταλόγου είναι “dave” και το όνομα της ομάδας στην οποία ανήκει ο κατάλογος ονομάζεται επίσης “dave”.

Οι επόμενοι τρεις χαρακτήρες είναι τα δικαιώματα χρήστη για αυτόν τον κατάλογο. Αυτά δείχνουν ότι ο ιδιοκτήτης έχει πλήρη δικαιώματα. Οι χαρακτήρες r, w και x είναι όλοι παρόντες. Αυτό σημαίνει ότι ο χρήστης dave έχει δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης για αυτόν τον κατάλογο.

Το δεύτερο σύνολο τριών χαρακτήρων είναι τα δικαιώματα ομάδας, αυτά είναι rx. Αυτά δείχνουν ότι τα μέλη της ομάδας dave έχουν δικαιώματα ανάγνωσης και εκτέλεσης για αυτόν τον κατάλογο. Αυτό σημαίνει ότι μπορούν να απαριθμήσουν τα αρχεία και τα περιεχόμενά τους στον κατάλογο και μπορούν να cd (εκτελούν) σε αυτόν τον κατάλογο. Δεν έχουν δικαιώματα εγγραφής, επομένως δεν μπορούν να δημιουργήσουν, να επεξεργαστούν ή να διαγράψουν αρχεία.

Το τελικό σύνολο των τριών χαρακτήρων είναι επίσης rx. Αυτά τα δικαιώματα ισχύουν για άτομα που δεν διέπονται από τα δύο πρώτα σύνολα αδειών. Αυτά τα άτομα (που ονομάζονται “άλλοι”) έχουν δικαιώματα ανάγνωσης και εκτέλεσης σε αυτόν τον κατάλογο.

Έτσι, για να συνοψίσουμε, τα μέλη της ομάδας και άλλοι έχουν διαβάσει και εκτελέσει δικαιώματα. Ο ιδιοκτήτης, ένας χρήστης που ονομάζεται dave, έχει επίσης δικαιώματα εγγραφής.

Για όλα τα άλλα αρχεία (εκτός από το αρχείο σεναρίου mh.sh) το dave και τα μέλη της ομάδας dave έχουν ιδιότητες ανάγνωσης και εγγραφής στα αρχεία και τα άλλα έχουν μόνο δικαιώματα ανάγνωσης.

Για την ειδική περίπτωση του αρχείου σεναρίου mh.sh, ο κάτοχος dave και τα μέλη της ομάδας έχουν δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης και οι άλλοι έχουν μόνο δικαιώματα ανάγνωσης και εκτέλεσης.

Κατανόηση της σύνταξης άδειας

Για να χρησιμοποιήσουμε το chmod για να ορίσουμε δικαιώματα, πρέπει να το πούμε:

Ποιος: Για ποιους ορίζουμε δικαιώματα.
Τι: Τι αλλαγή κάνουμε; Προσθέτουμε ή αφαιρούμε την άδεια;
Ποιο: Ποια από τα δικαιώματα ορίζουμε;

Χρησιμοποιούμε δείκτες για να αναπαραστήσουμε αυτές τις τιμές και σχηματίζουμε σύντομες “δηλώσεις αδειών”, όπως u+x, όπου “u” σημαίνει “χρήστης” (ποιος), “+” σημαίνει προσθήκη (τι) και “x” σημαίνει το δικαίωμα εκτέλεσης (οι οποίες).

  Πώς να ρυθμίσετε το Seafile σε Linux

Οι τιμές “who” που μπορούμε να χρησιμοποιήσουμε είναι:

u: Χρήστης, δηλαδή ο κάτοχος του αρχείου.
ζ: Ομάδα, που σημαίνει μέλη της ομάδας στην οποία ανήκει το αρχείο.
o: Άλλα, δηλαδή άτομα που δεν διέπονται από τα δικαιώματα u και g.
α: Όλα, δηλαδή όλα τα παραπάνω.

Εάν δεν χρησιμοποιείται κανένα από αυτά, το chmod συμπεριφέρεται σαν να είχε χρησιμοποιηθεί το “a”.

Οι τιμές «τι» που μπορούμε να χρησιμοποιήσουμε είναι:

–: Σήμα μείον. Καταργεί την άδεια.
+: Σήμα συν. Χορηγεί την άδεια. Η άδεια προστίθεται στα υπάρχοντα δικαιώματα. Εάν θέλετε να έχετε αυτό το δικαίωμα και μόνο αυτό το σύνολο δικαιωμάτων, χρησιμοποιήστε την επιλογή =, που περιγράφεται παρακάτω.
=: Σήμα ίσον. Ορίστε μια άδεια και αφαιρέστε άλλα.

Οι τιμές “which” που μπορούμε να χρησιμοποιήσουμε είναι:

r: Η άδεια ανάγνωσης.
w: Η άδεια εγγραφής.
x: Η άδεια εκτέλεσης.

Ρύθμιση και τροποποίηση δικαιωμάτων

Ας υποθέσουμε ότι έχουμε ένα αρχείο όπου όλοι έχουν πλήρη δικαιώματα σε αυτό.

ls -l new_ file.txt

Θέλουμε ο χρήστης dave να έχει δικαιώματα ανάγνωσης και εγγραφής και η ομάδα και άλλοι χρήστες να έχουν μόνο δικαιώματα ανάγνωσης. Μπορούμε να κάνουμε χρησιμοποιώντας την παρακάτω εντολή:

chmod u=rw,og=r new_file.txt

Η χρήση του τελεστή “=” σημαίνει ότι διαγράφουμε τυχόν υπάρχοντα δικαιώματα και στη συνέχεια ορίζουμε τα καθορισμένα.

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

ls -l new_file.txt

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

Τι θα λέγατε να προσθέσετε μια άδεια χωρίς να καταργήσετε τις υπάρχουσες ρυθμίσεις δικαιωμάτων; Μπορούμε να το κάνουμε και αυτό εύκολα.

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

ls -l new_script.sh

Μπορούμε να προσθέσουμε το δικαίωμα εκτέλεσης για όλους με την ακόλουθη εντολή:

chmod a+x new_script.sh

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

ls -l new_script.sh

Θα μπορούσαμε να πετύχουμε το ίδιο πράγμα χωρίς το “a” στην πρόταση “a+x”. Η ακόλουθη εντολή θα λειτουργούσε εξίσου καλά.

chmod +x new_script.sh

Ρύθμιση δικαιωμάτων για πολλά αρχεία

Μπορούμε να εφαρμόσουμε δικαιώματα σε πολλά αρχεία ταυτόχρονα.

Αυτά είναι τα αρχεία στον τρέχοντα κατάλογο:

ls -l

Ας υποθέσουμε ότι θέλουμε να καταργήσουμε τα δικαιώματα εγγραφής για τους “άλλους” χρήστες από αρχεία που έχουν επέκταση “.page”. Μπορούμε να το κάνουμε αυτό με την ακόλουθη εντολή:

chmod o-r *.page

Ας ελέγξουμε τι αποτέλεσμα είχε αυτό:

ls -l

Όπως μπορούμε να δούμε, η άδεια ανάγνωσης έχει αφαιρεθεί από τα αρχεία “.page” για την κατηγορία “άλλες” χρήστες. Δεν έχουν επηρεαστεί άλλα αρχεία.

  Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux

Αν θέλαμε να συμπεριλάβουμε αρχεία σε υποκαταλόγους, θα μπορούσαμε να χρησιμοποιήσουμε την επιλογή -R (αναδρομική).

chmod -R o-r *.page

Αριθμητική συντομογραφία

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

Τα ψηφία που μπορείτε να χρησιμοποιήσετε και τι αντιπροσωπεύουν παρατίθενται εδώ:

0: (000) Χωρίς άδεια.
1: (001) Εκτέλεση άδειας.
2: (010) Άδεια εγγραφής.
3: (011) Δικαιώματα εγγραφής και εκτέλεσης.
4: (100) Άδεια ανάγνωσης.
5: (101) Δικαιώματα ανάγνωσης και εκτέλεσης.
6: (110) Δικαιώματα ανάγνωσης και εγγραφής.
7: (111) Ανάγνωση, εγγραφή και εκτέλεση δικαιωμάτων.

Κάθε ένα από τα τρία δικαιώματα αντιπροσωπεύεται από ένα από τα bit στο δυαδικό ισοδύναμο του δεκαδικού αριθμού. Άρα το 5, που είναι 101 σε δυαδικό, σημαίνει ανάγνωση και εκτέλεση. 2, που είναι 010 σε δυαδικό, θα σήμαινε την άδεια εγγραφής.

Χρησιμοποιώντας αυτήν τη μέθοδο, ορίζετε τα δικαιώματα που θέλετε να έχετε. δεν προσθέτετε αυτά τα δικαιώματα στα υπάρχοντα δικαιώματα. Επομένως, εάν υπήρχαν ήδη δικαιώματα ανάγνωσης και εγγραφής, θα έπρεπε να χρησιμοποιήσετε το 7 (111) για να προσθέσετε δικαιώματα εκτέλεσης. Η χρήση του 1 (001) θα καταργούσε τα δικαιώματα ανάγνωσης και εγγραφής και θα προσθέσει το δικαίωμα εκτέλεσης.

Ας προσθέσουμε ξανά την άδεια ανάγνωσης στα αρχεία “.page” για την υπόλοιπη κατηγορία χρηστών. Πρέπει επίσης να ορίσουμε τα δικαιώματα χρήστη και ομάδας, επομένως πρέπει να τα ορίσουμε σε αυτό που είναι ήδη. Αυτοί οι χρήστες έχουν ήδη δικαιώματα ανάγνωσης και εγγραφής, δηλαδή 6 (110). Θέλουμε οι “άλλοι” να έχουν δικαιώματα ανάγνωσης και δικαιώματα, επομένως πρέπει να οριστούν σε 4 (100).

Η ακόλουθη εντολή θα το πετύχει:

chmod 664 *.page

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

ls -l

Προχωρημένες επιλογές

Αν εσύ διαβάστε τη σελίδα του ανθρώπου για το chmod θα δείτε ότι υπάρχουν ορισμένες προηγμένες επιλογές που σχετίζονται με τα bit SETUID και SETGID και με το περιορισμένο bit διαγραφής ή “κολλώδες”.

Για το 99% των περιπτώσεων για τις οποίες θα χρειαστείτε chmod, οι επιλογές που περιγράφονται εδώ θα σας καλύψουν.