Τι είναι το umask

Κατανοώντας το umask

Όταν ένα πρόγραμμα φτιάξει ένα αρχείο αυτό θα έχει κάποιες δυνατότητες πρόσβασης. Το umask είναι μια τιμή που περιγραφεί ποιες θα είναι αυτές. Μπορούμε να δούμε ή να αλλάξουμε αυτή την τιμή με την εντολή umask(1p).

Τεχνικά η umask είναι μια ενσωματωμένη εντολή του κελύφους.
Για να δούμε την βοήθεια στο τερματικό ένα έχουμε Bash δίνουμε: help umask

Ας δούμε κατ αρχήν ποια τιμή έχει στο σύστημα μας :

umask
002

Δεν μας λέει και πολλά πράγματα. Ας το δούμε καλύτερα σε συμβολική μορφή

umask -S
u=rwx,g=rwx,o=rx

Κάπως καλύτερα :innocent:. Αν φτιαχτεί ένα αρχείο ο χρήστης u θα μπορεί να το διαβάζει (r) να το αλλάξει (x) και να το “τρέξει” (αν είναι κατάλογος να μπορεί να πει μέσα). Τα ίδια και για την κύρια ομάδα που ανήκει ο χρήστης (g). Όλοι οι άλλοι θα μπορούν να το διαβάσουν και να το “εκτελέσουν”. Αλλά λέω ψέματα. Οι φρικτές λεπτομέρειες ακολουθούν. Ας το δούμε όμως πρώτα στην πράξη:

Ας φτιάξουμε ένα αρχείο και ας δούμε τα δικαιώματα του.

touch newfile.txt
ls -la newfile.txt
-rw-rw-r-- 1 talos talos 0 Αυγ  18 23:31 newfile.txt

Aς φτιάξουμε ένα κατάλογο και ας δούμε τα δικαιώματα του.

mkdir newdir
ls -lad newdir
drwxrwxr-x 2 talos talos 4096 Αυγ  18 23:34 newdir

Είδαμε πως η ιδιότητα “εκτελέσιμο” μπήκε μόνο στον κατάλογο και όχι στο αρχείο.

Οι αριθμητικές τιμές του umask

Ένας κομπιουτεράς θα μιλήσει για “οκταδικό σύστημα αρίθμησης”, αλλά μακρυά από εμάς. Αρκεί να ξέρουμε ότι ανάγνωση(r) είναι 4, εγγραφή(w) είναι 2 και “εκτέλεση” (x) είναι 1. Και προσθέτουμε. Έχουμε έτσι το παρακάτω πίνακα:

Τιμή Δικαιώματα Τιμή Δικαιώματα
0 --- 4 r--
1 --x 5 r-x
2 -w- 6 rw-
3 -wx 7 rwx

Πίνακας 1: Αντιστοίχηση δικαιωμάτων με τιμές

Μισό λεπτό ο πίνακας είναι λάθος.
Πώς είναι δυνατόν το 002 να συμβολίζει τα ‘rwx rwx r-x’ και όχι τα ‘--- --- -w-

Όπως λέει και το όνομα της εντολής αυτή ορίζει μια μάσκα για την τιμή. Δηλαδή αντί να προσδιορίζει τι δικαιώματα θα έχει, προσδιορίζει τι δικαιώματα ΔΕΝ θα έχει. Η έξοδος όμως με την εντολή umask -S θα δείξει τα δικαιώματα σε μια άλλη μορφή. Ξέρω είναι λίγο μπερδευτικό στην αρχή :slight_smile:.

Τιμή Δικαιώματα Μάσκα Τιμή Δικαιώματα Μάσκα
0 --- rwx 4 r-- -wx
1 --x rw- 5 r-x -w-
2 -w- r-x 6 rw- --x
3 -wx r-- 7 rwx ---

Πίνακας 2: Αντιστοίχηση δικαιωμάτων με τιμές και μάσκες

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

Το πρόγραμμα ζητάει rw- rw- ---
Η umask είναι --- -wz -wx
To αρχείο θα έχει rw- r-- ---

Πίνακας 3: Πως λειτουργεί η umask σαν … mask

Αλλάζοντας την τιμή του umask

Για να αλλάζουμε την τιμή της `umask δίνουμε:

umask 022
umask -S 
u=rwx,g=rx,o=rx

Η τιμή του umask επίσης μπορεί να αλλάξει συμβολικά με μια εντολή σαν την παρακάτω

umask u-x,g=r,o+w

αλλά είναι ευκολότερη η αριθμητική αναπαράσταση. Απλά συμβουλευτείτε τον πίνακα.

Δοκιμάστε να αλλάξετε την τιμή του umask και να φτιάξετε μόνοι σας μερικά αρχεία και καταλόγους.

Ερώτηση :
Αν όμως έχω ήδη το αρχείο, πως αλλάζω τα δικαιώματα του; Η απάντηση είναι στην εντολή chmod(1) (και σε κάθε εισαγωγικό κείμενο για το UNIX). Η εντολή chmod χρησιμοποιεί το ίδιο σύστημα συμβολικών ή αριθμητικών τιμών.

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

Αλλάζοντας την προκαθορισμένη τιμή

Την αρχική τιμή της την παίρνει από την πατρική διεργασία, και κάπου σε αυτή την αλυσίδα είναι ένα κέλυφος. Στα αρχεία εκκίνησης του κάπου θα δούμε να παίρνει μια τιμή, συνήθως στο /etc/profile. Για να την αλλάξουμε τοπικά θα προσθέσουμε την σχετική εντολή στο αρχείο ~/.bashrc.

Έχει νόημα να την αλλάξω;
Όχι καλό είναι να μην την πειράξεις. Έχει τον λόγο που έχει αυτή την τιμή, αν και δεν συμφωνούν όλλες οι διανομές στο ποια θα είναι. Η εξ ορισμού τιμή πρέπει να ισορροπήσει ανάμεσα στην ασφάλεια και την ευκολία. Συνήθως έχει την τιμή 002 για τους χρήστες και 022 για τον υπερχρήστη. To gentoo προτιμά την 027.

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

2 Likes