Άρθρα/Δικαιώματα αρχείων: chmod & chown

Linux · Άρθρο

Δικαιώματα αρχείων: chmod & chown

Από το VaultNull14.10.20266 προβολές#bash#security
Fig. 1 — Δικαιώματα αρχείων: chmod & chown

Τρέξε ls -la σε οποιονδήποτε φάκελο Linux και θα δεις κάτι σαν -rwxr-xr-x μπροστά από κάθε αρχείο. Μοιάζει με κρυπτογράφημα, αλλά είναι απλώς η απάντηση σε ένα ερώτημα: ποιος επιτρέπεται να κάνει τι σε αυτό το αρχείο.

Τρεις κατηγορίες χρηστών

Κάθε αρχείο στο Linux έχει τρεις ομάδες δικαιωμάτων: τον ιδιοκτήτη (owner), την ομάδα (group) και όλους τους υπόλοιπους (others). Το -rwxr-xr-x χωρίζεται ακριβώς σε αυτές τις τρεις: rwx για τον ιδιοκτήτη, r-x για την ομάδα, r-x για όλους τους άλλους.

Τρεις τύποι δικαιωμάτων

  • r (read) — μπορείς να διαβάσεις το περιεχόμενο
  • w (write) — μπορείς να το τροποποιήσεις ή να το διαγράψεις
  • x (execute) — μπορείς να το τρέξεις (αρχείο) ή να μπεις μέσα του (φάκελος)

Ένα - στη θέση ενός γράμματος σημαίνει ότι εκείνο το δικαίωμα απουσιάζει.

Τα νούμερα: chmod 755

Κάθε δικαίωμα αντιστοιχεί σε μια δύναμη του 2: r=4, w=2, x=1. Προσθέτεις αυτά που θέλεις ενεργά και παίρνεις ένα ψηφίο ανά κατηγορία χρηστών. Το rwx είναι 4+2+1=7, το r-x είναι 4+0+1=5. Άρα -rwxr-xr-x γίνεται 755 — αυτό που βλέπεις συνέχεια σε scripts και εκτελέσιμα.

Για να το αλλάξεις: chmod 755 script.sh. Πιο συχνό ακόμα: chmod +x script.sh, που απλώς προσθέτει το δικαίωμα εκτέλεσης χωρίς να αγγίξει τα υπόλοιπα.

Αλλαγή ιδιοκτήτη: chown

Το chmod αλλάζει τι επιτρέπεται· το chown αλλάζει σε ποιον ανήκει το αρχείο. chown mao archive.zip κάνει τον χρήστη mao ιδιοκτήτη. Αν θες να αλλάξεις και την ομάδα μαζί: chown mao:developers archive.zip.

Γιατί αξίζει να το προσέχεις

Οι περισσότερες «περίεργες» αποτυχίες σε scripts και servers είναι δικαιώματα, όχι bugs: ένα Permission denied επειδή ξέχασες το chmod +x, ή μια υπηρεσία που δεν μπορεί να γράψει σε log επειδή ο owner είναι λάθος χρήστης. Πριν ψάξεις βαθύτερα, κοίτα πρώτα το ls -la.

Με λίγα λόγια

  • Τρεις κατηγορίες: owner, group, others — τρία δικαιώματα η καθεμία: r, w, x.
  • Τα νούμερα (π.χ. 755) είναι το άθροισμα r=4, w=2, x=1 ανά κατηγορία.
  • chmod αλλάζει τι επιτρέπεται, chown αλλάζει σε ποιον ανήκει.
  • Permission denied είναι συχνά η πρώτη υποψία, όχι η τελευταία.

Σχόλια · 0