Ανάγνωση και σωστή ρύθμιση των δικαιωμάτων αρχείων στο VPS σας
Κάθε αρχείο και κάθε φάκελος στον VPS σας έχει έναν κάτοχο, μια ομάδα και δικαιώματα. Αν είναι πολύ χαλαρά, ένας παραβιασμένος ιστότοπος ή μια παραβιασμένη υπηρεσία μπορεί να γράψει παντού. Αν είναι πολύ αυστηρά, εμφανίζονται σφάλματα όπως "Permission denied" ή ένα 403 στον ιστότοπό σας. Εδώ θα δείτε πώς διαβάζετε τα δικαιώματα και πώς τα ορίζετε σωστά. Αν έχετε πακέτο hosting με DirectAdmin, ανατρέξτε στο Απαγορεύεται (403): Δεν έχετε άδεια πρόσβασης στο / σε αυτόν τον server.
Ανάγνωση δικαιωμάτων με ls -l
ls -l /var/www/example.com -rw-r--r-- 1 anna www-data 1520 index.html -rw-r----- 1 anna www-data 412 config.php drwxr-xr-x 2 anna www-data 4096 images drwxrwxr-x 2 www-data www-data 4096 uploads
Ο πρώτος χαρακτήρας δείχνει τον τύπο: - είναι αρχείο, d φάκελος, l συντόμευση. Ακολουθούν τρεις ομάδες των τριών χαρακτήρων: τι επιτρέπεται στον κάτοχο, τι επιτρέπεται στην ομάδα και τι επιτρέπεται σε όλους τους υπόλοιπους. Έπειτα εμφανίζονται ο κάτοχος (anna) και η ομάδα (www-data).
| Γράμμα | Σε αρχείο | Σε φάκελο |
|---|---|---|
r | Ανάγνωση | Προβολή των ονομάτων μέσα στον φάκελο |
w | Τροποποίηση | Δημιουργία, μετονομασία και διαγραφή αρχείων |
x | Εκτέλεση ως πρόγραμμα | Είσοδος στον φάκελο και άνοιγμα των αρχείων του |
Προσέξτε δύο πράγματα. Χωρίς x σε έναν φάκελο δεν μπορείτε να φτάσετε στα αρχεία του, ακόμη κι αν αυτά είναι αναγνώσιμα. Και όποιος έχει w σε έναν φάκελο μπορεί να διαγράψει αρχεία μέσα του, ακόμη κι αν ανήκουν σε άλλον.
Δικαιώματα ως αριθμός
Συχνά τα δικαιώματα γράφονται ως τρία ψηφία: το r μετράει 4, το w 2 και το x 1, αθροισμένα ανά ομάδα.
| Αριθμός | Δικαιώματα | Χρήση |
|---|---|---|
| 644 | rw-r--r-- | Κανονικό αρχείο, για παράδειγμα μια ιστοσελίδα ή μια εικόνα |
| 755 | rwxr-xr-x | Φάκελος ή πρόγραμμα που μπορούν να χρησιμοποιούν όλοι |
| 640 | rw-r----- | Αρχείο ρυθμίσεων με κωδικό πρόσβασης, αναγνώσιμο από τον webserver μέσω της ομάδας |
| 600 | rw------- | Απόρρητο αρχείο, όπως το authorized_keys, ένα ιδιωτικό κλειδί ή ένα αρχείο .env |
| 700 | rwx------ | Ιδιωτικός φάκελος, όπως ο ~/.ssh |
Αλλαγή δικαιωμάτων και κατόχου
chmod 640 /var/www/example.com/config.php chmod g+w /var/www/example.com/uploads sudo chown anna:www-data /var/www/example.com/config.php
Η εντολή chmod αλλάζει τα δικαιώματα, με αριθμό ή με γράμματα (u, g, o για κάτοχο, ομάδα και λοιπούς, με + ή -). Η εντολή chown κάτοχος:ομάδα αλλάζει τον κάτοχο και την ομάδα· αυτό επιτρέπεται μόνο στον root, επομένως με sudo.
Για έναν ολόκληρο φάκελο, το chmod -R 644 είναι ένα γνωστό λάθος: όλοι οι υποφάκελοι χάνουν τότε το x και γίνονται άχρηστοι. Ορίστε τους φακέλους και τα αρχεία ξεχωριστά με το find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Ο webserver μέσω της ομάδας
Στα Debian και Ubuntu, το nginx και το PHP-FPM εκτελούνται από προεπιλογή με τον χρήστη www-data. Μια σωστή διάταξη: εσείς είστε ο κάτοχος των αρχείων και η ομάδα είναι η www-data. Ο webserver μπορεί έτσι να διαβάζει μέσω της ομάδας και να γράφει μόνο στον φάκελο όπου αυτό είναι πραγματικά απαραίτητο, όπως ο uploads (chmod g+w ή κάτοχος www-data μόνο σε αυτόν τον φάκελο). Μην δίνετε στον webserver δικαίωμα εγγραφής στα αρχεία PHP σας.
777. Τότε όλοι στον server μπορούν να διαβάσουν, να τροποποιήσουν και να εκτελέσουν το αρχείο ή τον φάκελο. Αν κάποτε παραβιαστεί έστω και ένας ιστότοπος ή μία υπηρεσία, ο εισβολέας μπορεί να γράψει παντού όπου υπάρχει 777. Το πραγματικό πρόβλημα είναι σχεδόν πάντα ο κάτοχος ή η ομάδα: διορθώστε αυτό αντί να ανοίξετε τα πάντα.Δικαιώματα για SSH
Ο SSH server ελέγχει τα δικαιώματα των κλειδιών σας. Αν άλλοι μπορούν να γράψουν στον φάκελο .ssh ή στον αρχικό σας φάκελο, αγνοεί το κλειδί σας και σας ζητείται ξανά κωδικός πρόσβασης, χωρίς σαφές μήνυμα σφάλματος. Ορίστε τα ως εξής:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Αν δημιουργήσατε τον φάκελο ως root για άλλον χρήστη, διορθώστε επίσης τον κάτοχο, όπως στο Δικός σας χρήστης με sudo. Στα AlmaLinux και Rocky Linux, το SELinux μπορεί επίσης να απορρίψει ένα αρχείο που έχει τα σωστά δικαιώματα· για έναν φάκελο .ssh που δημιουργήθηκε χειροκίνητα βοηθά η εντολή restorecon -Rv ~/.ssh.
s αντί για x, όπως στο /usr/bin/passwd; Αυτό είναι το setuid bit: το πρόγραμμα εκτελείται τότε με τα δικαιώματα του κατόχου. Μερικά προγράμματα συστήματος το χρειάζονται, αλλά μην το ορίζετε ποτέ εσείς σε ένα script. Ένα απροσδόκητο αρχείο setuid μπορεί να υποδηλώνει παραβίαση, δείτε το Παραβιάστηκε; Τα πρώτα βήματα.Θέλετε να μάθετε περισσότερα; Παρακολουθήστε το δωρεάν μάθημα Διαχείριση VPS και διακομιστών Linux, ενότητα 3.1 Χρήστες, ομάδες και δικαιώματα αρχείων.
