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

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

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

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

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

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

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

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

ls -l

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ls -l new_ file.txt

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

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 ή * .page

Ας δούμε τι αποτέλεσμα είχε:

ls -l

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

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

chmod -R ή * .page

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

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

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

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

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

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

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

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

chmod 664 *. σελίδα

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

ls -l

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

Εάν διαβάσετε τη σελίδα man για chmodθα δείτε ότι υπάρχουν κάποιες σύνθετες επιλογές που σχετίζονται με τα SETUID και SETGID bits, καθώς και με την περιορισμένη διαγραφή ή το "sticky" bit.

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