Κατανόηση των δικαιωμάτων Linux και της χρήσης chmod

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

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

Δικαιώματα & Επίπεδα Linux

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

Υπάρχουν τρία επίπεδα αδειών στο Linux : κάτοχος, ομάδα και άλλα. Ο κάτοχος είναι ο χρήστης που κατέχει το αρχείο/φάκελο, η ομάδα περιλαμβάνει άλλους χρήστες στην ομάδα του αρχείου και άλλος απλώς αντιπροσωπεύει όλους τους άλλους χρήστες που δεν είναι ο κάτοχος ή στην ομάδα.

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

Τα δικαιώματα γράφονται ως εξής: το πρώτο bit είναι είτε παύλα είτε το γράμμα d. Το Dash(Dash) σημαίνει ότι είναι αρχείο και το d σημαίνει κατάλογος. Σημειώστε ότι το πρώτο bit μπορεί επίσης να είναι l εάν το όνομα του αρχείου είναι σύνδεσμος. Στη συνέχεια, υπάρχουν τρεις ομάδες των τριών bit. Το πρώτο bit σε κάθε ομάδα είναι για ανάγνωση, το δεύτερο bit είναι για εγγραφή και το τρίτο bit είναι για εκτέλεση. Τα πρώτα τρία bit είναι για τον ιδιοκτήτη, τα δεύτερα τρία bit είναι για την ομάδα και τα τρίτα τρία bit είναι για άλλα. Εδώ είναι μια πιο οπτική εξήγηση.

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

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

-rw-rw-rw-

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

drwxr--r--

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

Αναπαράσταση οκταδικού αριθμού

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

Πώς λοιπόν το Linux αντιπροσωπεύει την ανάγνωση, την εγγραφή και την εκτέλεση χρησιμοποιώντας οκταδικούς αριθμούς; Βασικά, απλώς εκχωρεί έναν αριθμό σε κάθε άδεια όπως φαίνεται παρακάτω.

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

-rwxrwxrwx

Ο ιδιοκτήτης έχει rwx, οπότε θα προσθέσουμε 4 + 2 + 1 για να πάρουμε μια τιμή 7. Κάνουμε το ίδιο πράγμα για την ομάδα και το ίδιο πράγμα για άλλες. Η τελική οκταδική τιμή είναι 777. Ας ρίξουμε μια ματιά στο παράδειγμα όπου δώσαμε μόνο δικαιώματα ανάγνωσης/εγγραφής:

-rw-rw-rw-

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

Ας το δοκιμάσουμε λοιπόν τώρα με τον άλλο τρόπο. Ας πούμε ότι θέλουμε να μάθουμε τι αντιπροσωπεύει το 755 ; Λοιπόν, είναι πολύ εύκολο να καταλάβεις αν το αναλύεις με μεμονωμένους αριθμούς. Ο πρώτος αριθμός είναι το 7, τον οποίο μπορούμε να πάρουμε μόνο προσθέτοντας 4 + 2 + 1, που σημαίνει ότι ο κάτοχος έχει δικαίωμα ανάγνωσης/εγγραφής/εκτέλεσης. Πέντε μπορούν να ληφθούν μόνο με την προσθήκη 4 + 1, που σημαίνει ότι η ομάδα και οι άλλοι χρήστες έχουν δικαιώματα ανάγνωσης και εκτέλεσης.

Ας ελπίσουμε(Hopefully) ότι αυτή είναι μια καλή εξήγηση για το πώς να αναπαραστήσετε τα δικαιώματα στο Linux χρησιμοποιώντας οκταδικούς αριθμούς. Είναι αρκετά απλό γενικά.

Χρήση chmod για Τροποποίηση Δικαιωμάτων

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

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

-rw-rw-rw-

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

Η ακριβής εντολή είναι

chmod a+x filename

Η σύνταξη είναι η εξής: το γράμμα ή τα γράμματα που αντιπροσωπεύουν τον κάτοχο ( u ), την ομάδα ( g ), το άλλο ( o ) ή όλο ( a ) ακολουθούμενο από ένα + για την προσθήκη αδειών ή ένα - για την αφαίρεση αδειών και μετά το γράμμα για την άδεια ( r για ανάγνωση, w για εγγραφή και x για εκτέλεση).

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

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

chmod go-wx filename

Εφόσον θέλω να αλλάξω τα δικαιώματα για ομάδα και άλλα, χρησιμοποιώ το γράμμα g και το γράμμα o . Θέλω να αφαιρέσω τα δικαιώματα, γι' αυτό χρησιμοποιώ το σύμβολο – . Τέλος, θέλω να αφαιρέσω τα δικαιώματα εγγραφής και εκτέλεσης, οπότε χρησιμοποιώ τα w και x . Εδώ είναι ένα εύχρηστο μικρό τραπέζι για χρήση συμβόλων:

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

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

-rw-rw-rw-

Παραπάνω(Above) , μπορείτε να δείτε ότι χρησιμοποίησα την ακόλουθη εντολή:

chmod 744 filename

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

Τώρα χρησιμοποίησα την ακόλουθη εντολή, πάλι πολύ απλή:

chmod 640 filename

Εδώ έχουμε δώσει στον κάτοχο δικαιώματα ανάγνωσης/εγγραφής, στην ομάδα μόνο άδεια ανάγνωσης και στην άλλη ομάδα όχι δικαιώματα. Χρησιμοποιείτε ένα μηδέν για να δηλώσετε ότι δεν υπάρχουν δικαιώματα. Πολύ απλό, ε;

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



About the author

Είμαι προγραμματιστής λογισμικού με πάνω από 10 χρόνια εμπειρία. Ειδικεύομαι στον προγραμματισμό Mac και έχω γράψει πολλές χιλιάδες γραμμές κώδικα για διάφορες εφαρμογές Mac, συμπεριλαμβανομένων, ενδεικτικά, των: TextEdit, GarageBand, iMovie και Inkscape. Έχω επίσης εμπειρία με ανάπτυξη Linux και Windows. Οι δεξιότητές μου ως προγραμματιστής μου επιτρέπουν να γράφω υψηλής ποιότητας, ολοκληρωμένα σεμινάρια για διάφορες πλατφόρμες ανάπτυξης λογισμικού - από macOS έως Linux - καθιστώντας τα σεμινάρια μου την τέλεια επιλογή για όσους θέλουν να μάθουν περισσότερα για τα εργαλεία που χρησιμοποιούν.



Related posts