Σειρά RHCSA: Χρήση ACL (Λίστες Ελέγχου Πρόσβασης) και Προσάρτηση Μεριδίων Samba/NFS - Μέρος 7


Στο τελευταίο άρθρο (Μέρος 6 της σειράς RHCSA) ξεκινήσαμε να εξηγούμε πώς να ρυθμίσετε και να ρυθμίσετε τις παραμέτρους της τοπικής αποθήκευσης συστήματος χρησιμοποιώντας τα parted και ssm.

Συζητήσαμε επίσης πώς να δημιουργήσετε και να προσαρτήσετε κρυπτογραφημένους τόμους με κωδικό πρόσβασης κατά την εκκίνηση του συστήματος. Επιπλέον, σας προειδοποιήσαμε να αποφύγετε την εκτέλεση κρίσιμων λειτουργιών διαχείρισης αποθήκευσης σε προσαρτημένα συστήματα αρχείων. Έχοντας αυτό υπόψη, θα εξετάσουμε τώρα τις πιο χρησιμοποιούμενες μορφές συστήματος αρχείων στο Red Hat Enterprise Linux 7 και, στη συνέχεια, θα προχωρήσουμε στην κάλυψη των θεμάτων της τοποθέτησης, της χρήσης και της αποπροσάρτησης και των δύο χειροκίνητα και αυτόματα συστήματα αρχείων δικτύου (CIFS και NFS), μαζί με την υλοποίηση λιστών ελέγχου πρόσβασης για το σύστημά σας.

Προαπαιτούμενα

Πριν προχωρήσετε περαιτέρω, βεβαιωθείτε ότι έχετε διαθέσιμο διακομιστή Samba και διακομιστή NFS (λάβετε υπόψη ότι το NFSv2 δεν υποστηρίζεται πλέον στο RHEL 7).

Κατά τη διάρκεια αυτού του οδηγού θα χρησιμοποιήσουμε ένα μηχάνημα με IP 192.168.0.10 με τις δύο υπηρεσίες να εκτελούνται σε αυτό ως διακομιστή και ένα πλαίσιο RHEL 7 ως πελάτη με διεύθυνση IP 192.168 .0.18. Αργότερα στο άρθρο θα σας πούμε ποια πακέτα πρέπει να εγκαταστήσετε στον πελάτη.

Μορφές συστημάτων αρχείων σε RHEL 7

Ξεκινώντας με το RHEL 7, το XFS έχει εισαχθεί ως το προεπιλεγμένο σύστημα αρχείων για όλες τις αρχιτεκτονικές λόγω της υψηλής απόδοσης και της επεκτασιμότητας του. Προς το παρόν υποστηρίζει μέγιστο μέγεθος συστήματος αρχείων 500 TB σύμφωνα με τις πιο πρόσφατες δοκιμές που πραγματοποιήθηκαν από την Red Hat και τους συνεργάτες της για βασικό υλικό.

Επίσης, το XFS ενεργοποιεί τις user_xattr (εκτεταμένα χαρακτηριστικά χρήστη) και το acl (λίστες ελέγχου πρόσβασης POSIX) ως προεπιλεγμένες επιλογές προσάρτησης, σε αντίθεση με το ext3 ή το ext4 (ext2 θεωρείται καταργημένο από το RHEL 7), πράγμα που σημαίνει ότι δεν χρειάζεται να καθορίσετε ρητά αυτές τις επιλογές είτε στη γραμμή εντολών είτε στο /etc/fstab κατά την προσάρτηση ενός συστήματος αρχείων XFS (αν θέλετε να απενεργοποιήστε τέτοιες επιλογές σε αυτήν την τελευταία περίπτωση, πρέπει να χρησιμοποιήσετε ρητά τα no_acl και τα no_user_xattr).

Λάβετε υπόψη ότι τα εκτεταμένα χαρακτηριστικά χρήστη μπορούν να εκχωρηθούν σε αρχεία και καταλόγους για την αποθήκευση αυθαίρετων πρόσθετων πληροφοριών, όπως ο τύπος mime, το σύνολο χαρακτήρων ή η κωδικοποίηση ενός αρχείου, ενώ τα δικαιώματα πρόσβασης για τα χαρακτηριστικά χρήστη ορίζονται από τα bit δικαιωμάτων κανονικού αρχείου.

Λίστες ελέγχου πρόσβασης

Καθώς κάθε διαχειριστής συστήματος, είτε αρχάριος είτε ειδικός, γνωρίζει καλά τα τακτικά δικαιώματα πρόσβασης σε αρχεία και καταλόγους, τα οποία καθορίζουν ορισμένα δικαιώματα (ανάγνωση, εγγραφή και εκτέλεση ) για τον ιδιοκτήτη, την ομάδα και τον «κόσμο» (όλα τα άλλα). Ωστόσο, μη διστάσετε να ανατρέξετε στο Μέρος 3 της σειράς RHCSA εάν θέλετε να ανανεώσετε λίγο τη μνήμη σας.

Ωστόσο, δεδομένου ότι το τυπικό σύνολο ugo/rwx δεν επιτρέπει τη διαμόρφωση διαφορετικών δικαιωμάτων για διαφορετικούς χρήστες, εισήχθησαν ACL προκειμένου να οριστούν πιο λεπτομερή δικαιώματα πρόσβασης για αρχεία και καταλόγους από αυτά που καθορίζονται από τακτικές άδειες.

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

1. Υπάρχουν δύο τύποι ACL: πρόσβαση σε ACL, τα οποία μπορούν να εφαρμοστούν είτε σε ένα συγκεκριμένο αρχείο είτε σε έναν κατάλογο) και προεπιλεγμένα ACL, τα οποία μπορούν να εφαρμοστούν μόνο σε έναν κατάλογο. Εάν τα αρχεία που περιέχονται σε αυτά δεν έχουν σύνολο ACL, κληρονομούν το προεπιλεγμένο ACL του γονικού καταλόγου τους.

2. Αρχικά, τα ACL μπορούν να διαμορφωθούν ανά χρήστη, ανά ομάδα ή ανά χρήστη που δεν ανήκει στην ομάδα κατοχής ενός αρχείου.

3. ACL ορίζονται (και καταργούνται) χρησιμοποιώντας το setfacl, είτε με το -m είτε με το - xεπιλογές, αντίστοιχα.

Για παράδειγμα, ας δημιουργήσουμε μια ομάδα με το όνομα tecmint και προσθέστε τους χρήστες johndoe και davenull σε αυτήν:

groupadd tecmint
useradd johndoe
useradd davenull
usermod -a -G tecmint johndoe
usermod -a -G tecmint davenull

Και ας επαληθεύσουμε ότι και οι δύο χρήστες ανήκουν στη συμπληρωματική ομάδα tecmint:

id johndoe
id davenull

Ας δημιουργήσουμε τώρα έναν κατάλογο που ονομάζεται playground μέσα στο /mnt και ένα αρχείο με το όνομα testfile.txt μέσα. Θα ορίσουμε τον ιδιοκτήτη της ομάδας σε tecmint και θα αλλάξουμε τα προεπιλεγμένα δικαιώματα ugo/rwx σε 770 (άδειες ανάγνωσης, εγγραφής και εκτέλεσης που έχουν παραχωρηθεί και στα δύο ο κάτοχος και ο κάτοχος της ομάδας του αρχείου):

mkdir /mnt/playground
touch /mnt/playground/testfile.txt
chmod 770 /mnt/playground/testfile.txt

Στη συνέχεια, αλλάξτε χρήστη σε johndoe και davenull, με αυτή τη σειρά, και γράψτε στο αρχείο:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

Μέχρι εδώ καλά. Τώρα ας βάλουμε τον χρήστη gacanepa να γράψει στο αρχείο – και η λειτουργία εγγραφής θα αποτύχει, κάτι που ήταν αναμενόμενο.

Τι γίνεται όμως αν χρειαζόμαστε πραγματικά τον χρήστη gacanepa (που δεν είναι μέλος της ομάδας tecmint) να έχει δικαιώματα εγγραφής στο /mnt/playground/testfile.txt;< Το πρώτο πράγμα που μπορεί να σας έρθει στο μυαλό είναι να προσθέσετε αυτόν τον λογαριασμό χρήστη στην ομάδα tecmint. Αλλά αυτό θα του δώσει δικαιώματα εγγραφής σε ΟΛΑ αρχεία όπου το bit εγγραφής έχει οριστεί για την ομάδα και δεν το θέλουμε αυτό. Θέλουμε μόνο να μπορεί να γράφει στο /mnt/playground/testfile.txt.

touch /mnt/playground/testfile.txt
chown :tecmint /mnt/playground/testfile.txt
chmod 777 /mnt/playground/testfile.txt
su johndoe
echo "My name is John Doe" > /mnt/playground/testfile.txt
su davenull
echo "My name is Dave Null" >> /mnt/playground/testfile.txt
su gacanepa
echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Ας δώσουμε στον χρήστη gacanepa πρόσβαση ανάγνωσης και εγγραφής στο /mnt/playground/testfile.txt.

Εκτέλεση ως root,

setfacl -R -m u:gacanepa:rwx /mnt/playground

και θα έχετε προσθέσει με επιτυχία ένα ACL που επιτρέπει στο gacanepa να γράφει στο αρχείο δοκιμής. Στη συνέχεια, μεταβείτε στο χρήστη gacanepa και προσπαθήστε να γράψετε ξανά στο αρχείο:

echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Για να προβάλετε τα ACL για ένα συγκεκριμένο αρχείο ή κατάλογο, χρησιμοποιήστε το getfacl:

getfacl /mnt/playground/testfile.txt

Για να ορίσετε ένα προεπιλεγμένο ACL σε έναν κατάλογο (τον οποίο τα περιεχόμενά του θα κληρονομήσουν εκτός εάν αντικατασταθεί διαφορετικά), προσθέστε το d: πριν από τον κανόνα και καθορίστε έναν κατάλογο αντί για όνομα αρχείου:

setfacl -m d:o:r /mnt/playground

Το παραπάνω ACL θα επιτρέπει στους χρήστες που δεν ανήκουν στην ομάδα κατόχων να έχουν πρόσβαση ανάγνωσης στο μελλοντικό περιεχόμενο του καταλόγου /mnt/playground. Σημειώστε τη διαφορά στην έξοδο του getfacl /mnt/playground πριν και μετά την αλλαγή:

Το Κεφάλαιο 20 στον επίσημο Οδηγό διαχείρισης αποθήκευσης RHEL 7 παρέχει περισσότερα παραδείγματα ACL και σας συνιστώ να το ρίξετε μια ματιά και να το έχετε στη διάθεσή σας ως αναφορά.