Κυριακή, 16 Οκτωβρίου 2016

Linux: Τα δικαιώματα των αρχείων



Σε αυτό το post αποφάσισα να κάνω ένα μικρό tutorial σχετικά με τις εντολές και τα file permissions στο Linux. Πάμε λοιπόν από την θεωρία και μετά θα δούμε και τις εντολές με παραδείγματα.

Αν κάποιος κάνει ένα απλό ls -l στη γραμμή εντολών του Linux του θα δει ένα περίεργο αποτέλεσμα που δεν θα το καταλάβει αν δεν του το εξηγήσει κάποιος. Κάτι σαν το παρακάτω:

-rw-rw-r-- 1 me   me   1097374 Sep 26 18:48 some_file


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

Το -rw-rw-r-- αφορά τα δικαιώματα του αρχείου. Η πρώτη παύλα σηματοδοτεί αν το αρχείο είναι...αρχείο ή directory. Αν το αρχείο αυτό αναφέρεται σε directory τότε θα είχε την ιδιότητα d και θα διαμορφωνόταν ως drw-rw-r--. Στην περίπτωση μας που είναι αρχείο έχει απλά μια παύλα.

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

Το πρώτο ψηφίο από την κάθε τριάδα αφορά δικαιώματα read (το διακριτικό γράμμα r). Το επόμενο αφορά δικαιώματα write, αν δηλαδή μπορείς να τροποποιήσεις το αρχείο και τέλος έχουμε το x από το execute όπου είναι το δικαίωμα να τρέξεις το αρχείο. Αν για παράδειγμα το αρχείο αυτό ήταν κάποιο bash script και δεν είχες δικαίωμα να το τρέξεις τότε δεν θα σε άφηνε το σύστημα.

Για να αλλάξεις δικαιώματα σε ένα αρχείο χρησιμοποιείς την εντολή chmod. Η σύνταξη της εντολής είναι κάπως έτσι:

chmod δικαιώματα owner, δικαιώματα group, δικαιώματα other όνομα_αρχείο

Ένα πιο ρεαλιστικό παράδειγμα είναι η εντολή chmod 777 file. Και επειδή βλέπω την απορία σχετικά με το 777 θα πω πως είναι η δεκαδική εκδοχή για την κάθε binary τριάδα. Δηλαδή κάτι όπως φαίνεται παρακάτω:

rwx = 111 in binary = 7
rw- = 110 in binary = 6
r-x = 101 in binary = 5
r-- = 100 in binary = 4

Έτσι αν θέλουμε να δώσουμε στον owner δικαίωμα rwx, στο group δικαίωμα rw και σε όλους τους άλλους δικαίωμα μόνο r δίνουμε την εντολή chmod 764 file. Είναι αρκετά απλό όμως θέλει μια σχετική εξοικείωση και πειραματισμό για κάποιον beginner.

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

chown user2 file

Παρόμοια αν θέλουμε να αλλάξουμε και το group τότε η εντολή είναι chgrp και συντάσεται ακριβώς με τον ίδιο τρόπο όπως παραπάνω. 

Σε γενικές γραμμές τα δικαιώματα των αρχείων στο Linux δεν είναι κάτι δύσκολο. Προσωπικά το βρίσκω πολύ ευκολότερο από την μέθοδο σε Windows που κάθε φορά πρέπει να ανοίξω διάφορα παράθυρα για να κάνω μια απλή αλλαγή στις ιδιότητες των αρχείων. Βέβαια η ιδιότητα του x δεν υπάρχει στα Windows αφού για να είναι executable ένα αρχεία αρκεί να έχει την κατάληξη exe. Σε κάθε περίπτωση αν κάποιος περνάει από Windows σε Linux θα πρέπει να πειραματιστεί λίγο για να αποκτήσει μια εξοικείωση.



1 σχόλιο: