Από Coder σε Engineer
    Linux & το Terminal

    Το Μαύρο Κουτί: Terminal & Shell

    Filesystem & Paths

    Permissions & Root

    Εισαγωγή στο DevOps
    Στοιχειώδες Networking
    HTTP επικοινωνία
    Git vs Github
    Εισαγωγή στο Cloud
    Ρόλοι στο Tech
    Πώς να τα καταφέρεις στο Interview
    Take-Home Assignments
Απορίες;

Permissions & Root

Αργά ή γρήγορα θα γράψεις μια εντολή και το terminal θα σου πετάξει στα μούτρα το διασημότερο μήνυμα του Linux:
text
Permission denied
Οι περισσότεροι αρχάριοι, μόλις το δουν, βάζουν sudo μπροστά μέχρι να "δουλέψει"... Λάθος μοιραίο. Σε αυτό το μάθημα θα καταλάβεις γιατί το Linux σου λέει όχι, καθώς και πότε το sudo είναι η σωστή απάντηση και πότε επικίνδυνη κίνηση.

1. Γιατί υπάρχουν permissions

Το Linux φτιάχτηκε από την αρχή για πολλούς χρήστες στο ίδιο μηχάνημα. Φαντάσου ένα κτίριο γραφείων: Δεν θες ο κάθε υπάλληλος να μπορεί να μπει στο γραφείο του διευθυντή ή να ανοίξει το χρηματοκιβώτιο. Ο καθένας έχει το κλειδί μόνο για τα δικά του.
Έτσι, κάθε αρχείο και φάκελος στο Linux ξέρει ποιος επιτρέπεται να το διαβάσει, να το αλλάξει ή να το τρέξει. Αυτό δεν είναι γραφειοκρατία. Είναι το πρώτο τείχος ασφάλειας ενός server.

2. Διαβάζοντας τα permissions με ls -l

Τρέξε ls -l και θα δεις κάτι σαν:
text
-rwxr-xr--  1 ioannis  staff  220  Jun 13  script.sh
Εστίασε στο πρώτο κομμάτι: -rwxr-xr--. Διαβάζεται σε τέσσερα μέρη:
text
-    rwx       r-x       r--
type  owner    group     others
  • Πρώτος χαρακτήρας (-): Ο τύπος. - = αρχείο, d = directory (φάκελος).
  • owner (rwx): Τι μπορεί να κάνει ο ιδιοκτήτης (εδώ ο ioannis).
  • group (r-x): Τι μπορεί να κάνει η ομάδα (εδώ το group staff).
  • others (r--): Τι μπορεί να κάνει οποιοσδήποτε άλλος.
Και τα τρία γράμματα σημαίνουν:
  • r = read (διάβασμα)
  • w = write (αλλαγή/σβήσιμο)
  • x = execute (τρέξιμο, για προγράμματα/scripts)
Μια παύλα - στη θέση ενός γράμματος σημαίνει "αυτό το δικαίωμα δεν υπάρχει". Άρα το r-- σημαίνει "μόνο διάβασμα, ούτε αλλαγή ούτε τρέξιμο".

3. Αλλάζοντας permissions - chmod

Το πιο κλασικό σενάριο: Έγραψες ένα script, προσπαθείς να το τρέξεις, και παίρνεις Permission denied. Γιατί; Γιατί του λείπει το x (execute).
bash
chmod +x script.sh      # δώσε δικαίωμα εκτέλεσης
./script.sh             # τώρα τρέχει
Το chmod = change mode. Η απλή μορφή που θα χρησιμοποιείς συνέχεια:
bash
chmod +x file      # πρόσθεσε execute
chmod -w file      # αφαίρεσε write (κάν' το read-only)
Θα δεις και αριθμητική μορφή, π.χ. chmod 755 file. Αυτή κωδικοποιεί τα δικαιώματα σε αριθμούς (r=4, w=2, x=1, τα προσθέτεις). Μην την αποστηθίσεις τώρα - απλά αναγνώρισέ την: 755 = "ο owner τα πάντα, οι άλλοι μόνο read+execute", το πιο κοινό setting για scripts.
Παίξε με το παρακάτω εργαλείο: Τσέκαρε δικαιώματα για owner/group/others και δες ζωντανά πώς αλλάζει η συμβολική μορφή (rwxr-xr--), ο αριθμός (754) και η εντολή chmod:
Υπολογιστής Permissions (chmod)
Read (r)
= 4
Write (w)
= 2
Execute (x)
= 1

Ιδιοκτήτης (owner)

Ομάδα (group)

Άλλοι (others)

Συμβολική μορφή

-rwxr-xr--

Αριθμητική μορφή

754

$ chmod 754 script.sh

Γρήγορα presets:

4. Αλλάζοντας ιδιοκτήτη - chown

Καμιά φορά το πρόβλημα δεν είναι τα δικαιώματα αλλά το ποιος είναι ο ιδιοκτήτης. Με το chown (change owner) το αλλάζεις:
bash
chown ioannis file.txt          # κάνε ιδιοκτήτη τον ioannis
chown ioannis:staff file.txt    # ιδιοκτήτης ioannis, group staff
Αυτό το χρειάζεσαι συχνά σε servers, όπου αρχεία φτιάχνονται από έναν χρήστη (π.χ. το root ή ένα service) αλλά πρέπει να τα διαχειρίζεσαι εσύ.

5. Ο root & το sudo

Σε κάθε Linux υπάρχει ένας υπερχρήστης(γνωστός ως root) με απόλυτη εξουσία: Ο root. Μπορεί να διαβάσει, να αλλάξει και να σβήσει οτιδήποτε, αγνοώντας όλα τα permissions. Έχει το πασπαρτού όλου του κτιρίου.
Δεν δουλεύεις ως root στην καθημερινότητα. Είναι πολύ επικίνδυνο (ένα λάθος rm και τέλος). Αντίθετα, όταν χρειάζεσαι προσωρινά δικαιώματα διαχειριστή, βάζεις μπροστά το sudo:
bash
sudo apt install nginx       # εγκατάσταση προγράμματος (θέλει δικαιώματα admin)
Το sudo σημαίνει "do this as the superuser". Δηλαδή εκτέλεσε αυτή τη μία εντολή με δικαιώματα root. Συνήθως θα σου ζητήσει τον κωδικό σου.
Ο χρυσός κανόνας του sudo: Μη το βάζεις από συνήθεια μπροστά σε ό,τι αποτυγχάνει. Το Permission denied συνήθως σου λέει κάτι χρήσιμο. Σου λέει ότι πειράζεις κάτι που δεν θα έπρεπε. Με το sudo παρακάμπτεις κάθε δικλείδα ασφαλείας. Χρησιμοποίησέ το όταν ξέρεις γιατί το χρειάζεσαι, όχι σαν καραμέλα.

Σύνοψη

  • Τα permissions υπάρχουν γιατί το Linux είναι multi-user - προστατεύουν αρχεία και server.
  • Με ls -l διαβάζεις: type | owner | group | others, όπου r=read, w=write, x=execute.
  • chmod +x → κάνε ένα script εκτελέσιμο. chmod αλλάζει δικαιώματα.
  • chown αλλάζει τον ιδιοκτήτη ενός αρχείου.
  • root = απόλυτη εξουσία. Το sudo δίνει προσωρινά δικαιώματα root - χρησιμοποίησέ το συνειδητά, όχι από συνήθεια.

Θες να συνεχίσεις;

Αυτό το μάθημα είναι δωρεάν. Κάνε σύνδεση για να κρατάς την πρόοδο και τις σημειώσεις σου, ή απόκτησε το course για να ξεκλειδώσεις τα υπόλοιπα μαθήματα, τα labs και την κοινότητα.