Android

Η εντολή Chmod στο linux (δικαιώματα αρχείου)

Linux Scripting Tutorial 3o - Εντολές ανάθεσης δικαιωμάτων σε αρχεία και φακέλους

Linux Scripting Tutorial 3o - Εντολές ανάθεσης δικαιωμάτων σε αρχεία και φακέλους

Πίνακας περιεχομένων:

Anonim

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

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

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

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

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

  • Ο ιδιοκτήτης του αρχείου. Τα μέλη της ομάδας. Άλλα (όλοι οι άλλοι).

Η ιδιοκτησία αρχείων μπορεί να αλλάξει χρησιμοποιώντας τις εντολές chown και chgrp .

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

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

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

Τα δικαιώματα αρχείων μπορούν να προβληθούν χρησιμοποιώντας την εντολή ls :

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

Ο πρώτος χαρακτήρας εμφανίζει τον τύπο αρχείου. Μπορεί να είναι κανονικό αρχείο ( - ), κατάλογος ( d ), συμβολικός σύνδεσμος ( l ) ή οποιοσδήποτε άλλος ειδικός τύπος αρχείου.

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

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

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

Επίδραση αδειών στα αρχεία

Αδεια Χαρακτήρας Σημασία στο αρχείο
Ανάγνωση - Το αρχείο δεν είναι αναγνώσιμο. Δεν μπορείτε να δείτε τα περιεχόμενα του αρχείου.
r Το αρχείο είναι ευανάγνωστο.
Γράφω - Το αρχείο δεν μπορεί να αλλάξει ή να τροποποιηθεί.
w Το αρχείο μπορεί να αλλάξει ή να τροποποιηθεί.
Εκτέλεση - Το αρχείο δεν μπορεί να εκτελεστεί.
x Το αρχείο μπορεί να εκτελεστεί.
s Αν βρεθεί στην τριπλή user , ορίζει το bit setuid . Εάν βρίσκεται στην τριπλή group , ορίζει το bit setgid . Σημαίνει επίσης ότι έχει οριστεί η σημαία x .

Όταν οι σημαίες setuid ή setgid έχουν οριστεί σε εκτελέσιμο αρχείο, το αρχείο εκτελείται με τον ιδιοκτήτη του αρχείου ή / και τα δικαιώματα ομάδας.

S Το ίδιο με το s αλλά η σημαία x δεν έχει οριστεί. Αυτή η σημαία χρησιμοποιείται σπάνια σε αρχεία.
t Αν βρεθεί στις others τριάδες, ορίζει το sticky bit.

Σημαίνει επίσης ότι έχει οριστεί η σημαία x . Αυτή η σημαία είναι άχρηστη στα αρχεία.

T Το ίδιο με το t αλλά η σημαία x δεν έχει οριστεί. Αυτή η σημαία είναι άχρηστη στα αρχεία.

Επίδραση αδειών σε καταλόγους (φάκελοι)

Στο Linux, οι Κατάλογοι είναι ειδικοί τύποι αρχείων που περιέχουν άλλα αρχεία και καταλόγους.

Αδεια Χαρακτήρας Σημασία του καταλόγου
Ανάγνωση - Δεν είναι δυνατή η εμφάνιση των περιεχομένων του καταλόγου.
r Μπορούν να εμφανιστούν τα περιεχόμενα του καταλόγου.

(π.χ. Μπορείτε να καταχωρίσετε αρχεία μέσα στον κατάλογο με ls .)

Γράφω - Τα περιεχόμενα του καταλόγου δεν μπορούν να τροποποιηθούν.
w Τα περιεχόμενα του καταλόγου μπορούν να τροποποιηθούν.

(π.χ. Δεν μπορείτε να δημιουργήσετε νέα αρχεία, να διαγράψετε αρχεία κλπ.)

Εκτέλεση - Ο κατάλογος δεν μπορεί να αλλάξει σε.
x Ο κατάλογος μπορεί να πλοηγηθεί χρησιμοποιώντας cd .
s Εάν βρίσκεται στην τριπλή user , ορίζει το bit setuid . Εάν βρίσκεται στην τριπλή group ορίζει το bit setgid . Σημαίνει επίσης ότι έχει οριστεί η σημαία x . Όταν η σημαία setgid έχει οριστεί σε έναν κατάλογο, τα νέα αρχεία που δημιουργούνται μέσα σε αυτήν κληρονομούν το αναγνωριστικό ομάδας καταλόγων (GID), αντί του πρωτεύοντος αναγνωριστικού ομάδας του χρήστη που δημιούργησε το αρχείο.

setuid δεν έχει καμία επίδραση στους καταλόγους.

S Το ίδιο με το s αλλά η σημαία x δεν έχει οριστεί. Αυτή η σημαία είναι άχρηστη στους καταλόγους.
t Αν βρεθεί στις others τριάδες, ορίζει το sticky bit.

Σημαίνει επίσης ότι έχει οριστεί η σημαία x . Όταν το κολλητικό κομμάτι έχει οριστεί σε έναν κατάλογο, μόνο ο κάτοχος του αρχείου, ο κάτοχος του καταλόγου ή ο χρήστης διαχειριστής μπορούν να διαγράψουν ή να μετονομάσουν τα αρχεία μέσα στον κατάλογο.

T Το ίδιο με το t αλλά η σημαία x δεν έχει οριστεί. Αυτή η σημαία είναι άχρηστη στους καταλόγους.

Χρησιμοποιώντας το chmod

Η εντολή chmod έχει την ακόλουθη γενική μορφή:

chmod MODE FILE…

Η εντολή chmod σάς επιτρέπει να αλλάζετε τα δικαιώματα σε ένα αρχείο χρησιμοποιώντας μια συμβολική ή αριθμητική λειτουργία ή ένα αρχείο αναφοράς. Θα σας εξηγήσουμε λεπτομερέστερα τις λειτουργίες. Η εντολή μπορεί να δεχτεί ένα ή περισσότερα αρχεία ή / και καταλόγους που χωρίζονται από το διάστημα ως επιχειρήματα.

Μόνο root, ο κάτοχος αρχείου ή ο χρήστης με δικαιώματα sudo μπορούν να αλλάξουν τα δικαιώματα ενός αρχείου. Προσέξτε ιδιαίτερα όταν χρησιμοποιείτε το chmod , ειδικά όταν αλλάζετε αναδρομικά τα δικαιώματα.

Συμβολική (Κείμενο) Μέθοδος

Η σύνταξη της εντολής chmod όταν χρησιμοποιείται η συμβολική λειτουργία έχει την ακόλουθη μορφή:

chmod perms… FILE…

Το πρώτο σύνολο σημαίας ( ), οι σημαίες των χρηστών, καθορίζει ποιοι χρήστες ταξινομούν τα δικαιώματα στο αρχείο αλλάζουν.

  • u - Ο ιδιοκτήτης του αρχείου. g - Οι χρήστες που είναι μέλη της ομάδας. o - Όλοι οι άλλοι χρήστες. a - Όλοι οι χρήστες, ίδιοι με το ugo .

Εάν παραλείπεται η σημαία των χρηστών, η προεπιλογή είναι a και τα δικαιώματα που έχουν οριστεί από το umask δεν επηρεάζονται.

Το δεύτερο σύνολο σημαίας ( ), οι σημαίες της λειτουργίας, ορίζουν αν πρέπει να καταργηθούν, να προστεθούν ή να οριστούν τα δικαιώματα:

  • - Αφαιρεί τα καθορισμένα δικαιώματα. + Προσθέτει καθορισμένα δικαιώματα. = Αλλάζει τα τρέχοντα δικαιώματα στα καθορισμένα δικαιώματα. Εάν δεν έχουν οριστεί δικαιώματα μετά το σύμβολο = , καταργούνται όλα τα δικαιώματα από την καθορισμένη κλάση χρήστη.

Τα δικαιώματα ( perms… ) μπορούν να οριστούν με μηδενικό ή ένα ή περισσότερα από τα παρακάτω γράμματα: r , w , x , X , s και t . Χρησιμοποιήστε ένα μόνο γράμμα από το σύνολο u , g και o όταν αντιγράφετε δικαιώματα από μία σε άλλη τάξη χρηστών.

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

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

  • Δώστε στα μέλη της ομάδας την άδεια να διαβάσουν το αρχείο, αλλά να μην το γράψουν και να το εκτελέσουν:

    chmod g=r filename

    Καταργήστε την άδεια εκτέλεσης για όλους τους χρήστες:

    chmod ax filename

    Αφαιρέστε ξαφνικά την άδεια εγγραφής για άλλους χρήστες:

    chmod -R ow dirname

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

    chmod og-rwx filename

    Το ίδιο πράγμα μπορεί να επιτευχθεί και με τη χρήση της ακόλουθης μορφής:

    chmod og= filename

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

    chmod u=rwx, g=r, o= filename

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

    chmod g+u filename

    Προσθέστε ένα κολλητικό κομμάτι σε έναν συγκεκριμένο κατάλογο:

    chmod o+t dirname

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

Η σύνταξη της εντολής chmod όταν χρησιμοποιείται αριθμητική μέθοδος έχει την ακόλουθη μορφή:

chmod NUMBER FILE…

Όταν χρησιμοποιείτε την αριθμητική λειτουργία, μπορείτε να ορίσετε ταυτόχρονα τις άδειες και για τις τρεις κατηγορίες χρηστών (ιδιοκτήτη, ομάδα και όλα τα υπόλοιπα).

Ο NUMBER μπορεί να είναι ένας αριθμός 3 ή 4 ψηφίων.

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

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

  • r (ανάγνωση) = 4 w (εγγραφή) = 2 x (εκτέλεση) = 1no δικαιώματα = 0

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

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

  • Ιδιοκτήτης: rwx = 4 + 2 + 1 = 7Ομάδα: rx = 4 + 0 + 1 = 5Άλλα: rx = 4 + 0 + 0 = 4

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

Για να ρυθμίσετε τις σημαίες setuid , setgid και sticky bit χρησιμοποιήστε τον αριθμό τεσσάρων ψηφίων.

Όταν χρησιμοποιείται ο αριθμός των 4 ψηφίων, το πρώτο ψηφίο έχει την ακόλουθη σημασία:

  • setuid = 4setgid = 2στικώς = 1οχι αλλαγές = 0

Τα επόμενα τρία ψηφία έχουν την ίδια σημασία με τη χρήση αριθμού 3 ψηφίων.

Εάν το πρώτο ψηφίο είναι 0, μπορεί να παραλειφθεί και η λειτουργία μπορεί να αναπαρασταθεί με 3 ψηφία. Ο αριθμητικός τρόπος λειτουργίας 0755 είναι ο ίδιος με τον 755 .

Για να υπολογίσετε την αριθμητική λειτουργία μπορείτε επίσης να χρησιμοποιήσετε μια άλλη μέθοδο (δυαδική μέθοδο), αλλά είναι λίγο πιο περίπλοκη. Η γνώση του τρόπου υπολογισμού του αριθμητικού τρόπου χρήσης με τα 4, 2 και 1 είναι επαρκής για τους περισσότερους χρήστες.

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

stat -c "%a" filename

644

Ακολουθούν μερικά παραδείγματα για τον τρόπο χρήσης της εντολής chmod σε αριθμητική λειτουργία:

  • Δώστε τα δικαιώματα ανάγνωσης και εγγραφής του ιδιοκτήτη του αρχείου και διαβάστε μόνο τα δικαιώματα των μελών της ομάδας και όλων των άλλων χρηστών:

    chmod 644 dirname

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

    chmod 750 dirname

    Δώστε δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης και ένα κολλητικό κομμάτι σε έναν συγκεκριμένο κατάλογο:

    chmod 1777 dirname

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

    chmod -R 700 dirname

Χρησιμοποιώντας ένα αρχείο αναφοράς

Η επιλογή --reference=ref_file σάς επιτρέπει να ορίσετε τα δικαιώματα του αρχείου να είναι ίδια με αυτά του καθορισμένου αρχείου αναφοράς ( ref_file ).

chmod --reference=REF_FILE FILE

Για παράδειγμα, η ακόλουθη εντολή θα εκχωρήσει τα δικαιώματα του file1 στο file2

chmod --reference=file1 file2

Ανταλλαγή αναδρομικά των δικαιωμάτων του αρχείου

Για να λειτουργήσει αναδρομικά σε όλα τα αρχεία και τους καταλόγους κάτω από τον δεδομένο κατάλογο, χρησιμοποιήστε την επιλογή -R ( --recursive ):

chmod -R MODE DIRECTORY

Για παράδειγμα, για να αλλάξετε τα δικαιώματα όλων των αρχείων και υποκαταλόγων στον κατάλογο /var/www στο 755 , θα χρησιμοποιούσατε:

chmod -R 755 /var/www

Λειτουργία σε συμβολικές συνδέσεις

Οι συμβολικές συνδέσεις έχουν πάντα 777 δικαιώματα.

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

chmod 755 symlink

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

Το σφάλμα παρουσιάζεται επειδή από προεπιλογή στις περισσότερες διανομές Linux προστατεύονται συμβολικές συνδέσεις και δεν μπορείτε να λειτουργήσετε σε αρχεία προορισμού. Αυτή η επιλογή καθορίζεται στα /proc/sys/fs/protected_symlinks . 1 σημαίνει ενεργοποιημένη και 0 απενεργοποιημένη. Συνιστάται να μην απενεργοποιείτε την προστασία συμβόλων.

Αλλαγή των αδειών αρχείων χύμα

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

Το πιο συνηθισμένο σενάριο είναι να αλλάξετε αναδρομικά τα δικαιώματα του αρχείου ιστότοπου στο 644 και τα δικαιώματα του καταλόγου σε 755 .

Χρησιμοποιώντας την αριθμητική μέθοδο:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

Χρησιμοποιώντας τη συμβολική μέθοδο:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

Η εντολή find θα αναζητήσει αρχεία και καταλόγους στο /var/www/my_website και θα περάσει κάθε αρχείο και κατάλογο που βρέθηκαν στην εντολή chmod για να ορίσετε τα δικαιώματα.

συμπέρασμα

Η εντολή chmod αλλάζει τα δικαιώματα του αρχείου. Οι άδειες μπορούν να οριστούν χρησιμοποιώντας είτε τη συμβολική είτε την αριθμητική λειτουργία.

Για να μάθετε περισσότερα σχετικά με το chmod επισκεφτείτε τη σελίδα man chmod.

τερματικό chmod