chmod

Από The Stelios Files
Αναθεώρηση ως προς 04:03, 10 Απριλίου 2022 από τον Admin (συζήτηση | συνεισφορές)
(διαφορά) ← Παλαιότερη αναθεώρηση | Τελευταία αναθεώρηση (διαφορά) | Νεότερη αναθεώρηση → (διαφορά)

1 Σκοπός

Αλλάζει τις λειτουργίες αρχείων.

2 Σύνταξη

Για να αλλάξετε τις λειτουργίες αρχείων συμβολικά

chmod [ -R ][ -h ][ -f ][ [ u ][ g ][ o ] | [ a ] ] { { - | + | = } [ r ][ w ][ x ][ X ][ s ][ t ] } { Αρχείο ... | Ευρετήριο ... }

Για να αλλάξετε τις λειτουργίες αρχείων αριθμητικά

chmod [ -R ][ -h ][ -f ] PermissionCode { Αρχείο ... | Ευρετήριο ... }

3 Περιγραφή

Η εντολή chmod τροποποιεί τα bit λειτουργίας και τις εκτεταμένες λίστες ελέγχου πρόσβασης (extended access control lists ACL) των καθορισμένων αρχείων ή καταλόγων. Η λειτουργία μπορεί να οριστεί συμβολικά ή αριθμητικά (απόλυτη λειτουργία).

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

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

4 Σημαίες

Είδος Περιγραφή
-f Καταργεί όλες τις αναφορές σφαλμάτων εκτός από τα μη έγκυρα δικαιώματα και τις δηλώσεις χρήσης.
-h
Αναστέλλει μια αλλαγή τρόπου λειτουργίας για το αρχείο ή τον κατάλογο που δείχνει ο συμβολικός σύνδεσμος που συναντήθηκε.
Σημείωση: Αυτή η συμπεριφορά είναι ελαφρώς διαφορετική από τη συμπεριφορά της σημαίας -h στις εντολές chgrp και chown, επειδή τα bit λειτουργίας δεν μπορούν να οριστούν σε συμβολικούς συνδέσμους.
-R
Παραθέτει μόνο τους καταλόγους αναδρομικά, όπως καθορίζεται από το μοτίβο Αρχείο...|Κατάλογος... Η σημαία -R αλλάζει τα bit λειτουργίας αρχείου κάθε καταλόγου και όλων των αρχείων που ταιριάζουν με το καθορισμένο μοτίβο. Δείτε το Παράδειγμα 6.
Όταν συναντάται ένας συμβολικός σύνδεσμος και ο σύνδεσμος οδηγεί σε έναν κατάλογο, τα bits λειτουργίας αρχείου αυτού του καταλόγου αλλάζουν αλλά ο κατάλογος δεν διασχίζεται παρακάτω.


Συμβολική λειτουργία

Για να καθορίσετε μια λειτουργία σε συμβολική μορφή, πρέπει να καθορίσετε τρία σύνολα σημαιών.

Σημείωση: Μην διαχωρίζετε τις σημαίες με κενά.

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


Είδος Περιγραφή
u Κάτοχος αρχείου.
g Ομάδες και εκτεταμένες καταχωρήσεις ACL που σχετίζονται με την ομάδα του αρχείου.
o Όλοι οι άλλοι.
a Χρήστης, ομάδα και όλοι οι άλλοι. Η σημαία a έχει το ίδιο αποτέλεσμα με τον καθορισμό των σημαιών ugo μαζί. Εάν δεν έχει καθοριστεί καμία από αυτές τις σημαίες, η προεπιλογή είναι η σημαία a και εφαρμόζεται η μάσκα δημιουργίας αρχείου (umask).


Το δεύτερο σύνολο σημαιών καθορίζει εάν τα δικαιώματα πρέπει να αφαιρεθούν, να εφαρμοστούν ή να οριστούν:


Είδος Περιγραφή
r Άδεια ανάγνωσης.
w Άδεια εγγραφής.
x Άδεια εκτέλεσης για αρχεία. Άδεια αναζήτησης για καταλόγους.
X
Άδεια εκτέλεσης για αρχεία εάν τα τρέχοντα (μη τροποποιημένα) bit τρόπου λειτουργίας έχουν τουλάχιστον ένα σύνολο από τα bit του χρήστη, της ομάδας ή άλλων εκτελεστών. Η σημαία X αγνοείται εάν έχει καθοριστεί η παράμετρος Αρχείο και κανένα από τα bit εκτέλεσης δεν έχει οριστεί στα bit τρέχουσας λειτουργίας.
Άδεια αναζήτησης για καταλόγους.
s Ρύθμιση δικαιωμάτων χρήστη-αναγνωριστικό κατά την εκτέλεση, εάν η σημαία u καθορίζεται ή υπονοείται. Άδεια εκτέλεσης Set-group-ID-on-execution εάν η σημαία g καθορίζεται ή υπονοείται.
t Για καταλόγους, υποδεικνύει ότι μόνο οι κάτοχοι αρχείων μπορούν να συνδέσουν ή να αποσυνδέσουν αρχεία στον καθορισμένο κατάλογο. Για αρχεία, ορίζει το χαρακτηριστικό save-text.


Αριθμητική ή Απόλυτη λειτουργία

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


Item Description
4000 Ορίζει το αναγνωριστικό χρήστη κατά την εκτέλεση.
2000 Ορίζει το αναγνωριστικό ομάδας κατά την εκτέλεση.
1000 Ορίζει το δικαίωμα σύνδεσης σε καταλόγους ή ορίζει το χαρακτηριστικό αποθήκευσης κειμένου για αρχεία.
0400 Επιτρέπει την ανάγνωση από τον ιδιοκτήτη.
0200 Επιτρέπει την εγγραφή από τον ιδιοκτήτη.
0100 Επιτρέπει την εκτέλεση ή αναζήτηση από τον ιδιοκτήτη.
0040 Επιτρέπει την ανάγνωση από ομάδα.
0020 Επιτρέπει την εγγραφή από ομάδα.
0010 Επιτρέπει την εκτέλεση ή αναζήτηση από ομάδα.
0004 Επιτρέπει την ανάγνωση από άλλους.
0002 Επιτρέπει την εγγραφή από άλλους.
0001 Επιτρέπει την εκτέλεση ή αναζήτηση από άλλους.


5 Παραδείγματα

1 Για να προσθέσετε έναν τύπο άδειας σε πολλά αρχεία:

chmod  g+w  chap1  chap2

Αυτό προσθέτει άδεια εγγραφής για μέλη της ομάδας στα αρχεία chap1 και chap2.

2 Για να κάνετε πολλές αλλαγές αδειών ταυτόχρονα:

chmod  go-w+x  mydir

Αυτό αναιρεί στα μέλη της ομάδας και σε άλλους την άδεια να δημιουργήσουν ή να διαγράψουν αρχεία στο mydir (go-w) και επιτρέπει στα μέλη της ομάδας και σε άλλους να αναζητήσουν το mydir ή να το χρησιμοποιήσουν σε ένα όνομα διαδρομής (go+x). Αυτό είναι ισοδύναμο με την ακολουθία εντολών:

chmod  g-w  mydir
chmod  o-w  mydir
chmod  g+x  mydir
chmod  o+x  mydir

3 Για να επιτρέπεται μόνο στον κάτοχο να χρησιμοποιεί μια διαδικασία φλοιού ως εντολή:

chmod  u=rwx,go= cmd

Αυτό δίνει άδεια ανάγνωσης, εγγραφής και εκτέλεσης στο χρήστη που κατέχει το αρχείο (u=rwx). Επίσης, αρνείται στην ομάδα και σε άλλους την άδεια πρόσβασης στο cmd με οποιονδήποτε τρόπο (go=). Εάν έχετε άδεια να εκτελέσετε το αρχείο εντολής κελύφους cmd, τότε μπορείτε να το εκτελέσετε εισάγοντας:

cmd

Σημείωση: Ανάλογα με τη μεταβλητή του κελύφους PATH, μπορεί να χρειαστεί να καθορίσετε την πλήρη διαδρομή προς το αρχείο cmd.

4 Για να χρησιμοποιήσετε τις λειτουργίες Set-ID:

chmod  ug+s  cmd

Όταν εκτελείται η εντολή cmd, τα αποτελεσματικά αναγνωριστικά χρήστη και ομάδας ορίζονται σε αυτά που κατέχουν το αρχείο cmd. Μόνο τα ενεργά αναγνωριστικά που σχετίζονται με τη θυγατρική διαδικασία που εκτελεί την εντολή cmd αλλάζουν. Τα ενεργά αναγνωριστικά της περιόδου λειτουργίας φλοιού παραμένουν αμετάβλητα. Αυτή η δυνατότητα σάς επιτρέπει να επιτρέψετε την πρόσβαση σε περιορισμένα αρχεία. Ας υποθέσουμε ότι το πρόγραμμα cmd έχει ενεργοποιημένη τη λειτουργία Set-User-ID και ανήκει σε έναν χρήστη που ονομάζεται dbms. Το dbms χρήστη δεν είναι στην πραγματικότητα άτομο, αλλά μπορεί να σχετίζεται με ένα σύστημα διαχείρισης βάσης δεδομένων. Ο χρήστης betty δεν έχει άδεια πρόσβασης σε κανένα από τα αρχεία δεδομένων του dbms. Ωστόσο, έχει άδεια να εκτελέσει την εντολή cmd. Όταν το κάνει αυτό, το πραγματικό αναγνωριστικό χρήστη της αλλάζει προσωρινά σε dbms, έτσι ώστε το πρόγραμμα cmd να έχει πρόσβαση στα αρχεία δεδομένων που ανήκουν στον χρήστη dbms. Με αυτόν τον τρόπο η χρήστης betty μπορεί να χρησιμοποιήσει την εντολή cmd για να αποκτήσει πρόσβαση στα αρχεία δεδομένων, αλλά δεν μπορεί να τα καταστρέψει κατά λάθος με τις τυπικές εντολές φλοιού.

5 Για να χρησιμοποιήσετε τη μορφή απόλυτης λειτουργίας της εντολής chmod:

chmod  644  text

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

6 Για να κατεβάσετε αναδρομικά τους καταλόγους και να αλλάξετε τα δικαιώματα αρχείων και καταλόγων δεδομένης της δομής δέντρου:


./dir1/dir2/file1
./dir1/dir2/file2
./dir1/file1

εισάγετε αυτήν τη σειρά εντολών:

chmod -R 777 f*

που θα αλλάξει τα δικαιώματα στο./dir1/file1.

Δεδομένης όμως της δομής του δέντρου:

./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3

η σειρά εντολών:


chmod -R 777 f*

θα αλλάξει τα δικαιώματα σε::

./dir1/fdir2
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3


6 Πηγή