Δικαιώματα στο Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Γεια σε όλους. Αυτή είναι μια μετάφραση ενός άρθρου από το βιβλίο RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 και EX300.

Σπρώξτε: Ελπίζω ότι το άρθρο θα είναι χρήσιμο όχι μόνο για αρχάριους, αλλά θα βοηθήσει επίσης πιο έμπειρους διαχειριστές να βελτιώσουν τις γνώσεις τους.

Λοιπόν πάμε.

Δικαιώματα στο Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Για πρόσβαση σε αρχεία στο Linux, χρησιμοποιούνται δικαιώματα. Αυτά τα δικαιώματα εκχωρούνται σε τρία αντικείμενα: τον ιδιοκτήτη του αρχείου, τον ιδιοκτήτη της ομάδας και ένα άλλο αντικείμενο (δηλαδή σε όλους τους άλλους). Σε αυτό το άρθρο, θα μάθετε πώς να εφαρμόζετε δικαιώματα.

Αυτό το άρθρο ξεκινά με μια επισκόπηση των βασικών εννοιών, ακολουθούμενη από μια συζήτηση των Ειδικών δικαιωμάτων και λιστών ελέγχου πρόσβασης (ACL). Στο τέλος αυτού του άρθρου, καλύπτουμε τη ρύθμιση των προεπιλεγμένων δικαιωμάτων μέσω του umask, καθώς και τη διαχείριση εκτεταμένων χαρακτηριστικών χρήστη.

Διαχείριση ιδιοκτησίας αρχείων

Πριν συζητήσετε τα δικαιώματα, θα πρέπει να γνωρίζετε τον ρόλο του κατόχου του αρχείου και του καταλόγου. Η ιδιοκτησία αρχείων και καταλόγων είναι ζωτικής σημασίας για την αντιμετώπιση των δικαιωμάτων. Σε αυτήν την ενότητα, θα μάθετε πρώτα πώς μπορείτε να δείτε τον ιδιοκτήτη. Στη συνέχεια, θα μάθετε πώς μπορείτε να αλλάξετε τον ιδιοκτήτη και τον χρήστη της ομάδας για αρχεία και καταλόγους.

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

Στο Linux, κάθε αρχείο και κάθε κατάλογος έχει δύο κατόχους: έναν χρήστη και έναν ιδιοκτήτη ομάδας.

Αυτοί οι κάτοχοι ορίζονται όταν δημιουργείται ένα αρχείο ή ένας κατάλογος. Ο χρήστης που δημιουργεί το αρχείο γίνεται ο κάτοχος αυτού του αρχείου και η κύρια ομάδα στην οποία ανήκει ο ίδιος χρήστης γίνεται επίσης κάτοχος αυτού του αρχείου. Για να προσδιορίσει εάν εσείς, ως χρήστης, έχετε άδεια πρόσβασης σε ένα αρχείο ή κατάλογο, το κέλυφος ελέγχει για ιδιοκτησία.

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

  1. Το κέλυφος ελέγχει αν είστε ο κάτοχος του αρχείου στο οποίο θέλετε να αποκτήσετε πρόσβαση. Εάν είστε ο ιδιοκτήτης, λαμβάνετε δικαιώματα και το κέλυφος σταματά να ελέγχει.
  2. Εάν δεν είστε ο κάτοχος του αρχείου, το κέλυφος θα ελέγξει αν είστε μέλος μιας ομάδας που έχει δικαιώματα για το αρχείο. Εάν είστε μέλος αυτής της ομάδας, θα έχετε πρόσβαση στο αρχείο με τα δικαιώματα που έχει ορίσει η ομάδα και το κέλυφος θα σταματήσει να ελέγχει.
  3. Εάν δεν είστε ούτε χρήστης ούτε κάτοχος μιας ομάδας, σας δίνονται τα δικαιώματα άλλων χρηστών (Άλλος).

Για να δείτε τις τρέχουσες αναθέσεις κατόχου, μπορείτε να χρησιμοποιήσετε την εντολή ls -l. Αυτή η εντολή δείχνει τον χρήστη και τον ιδιοκτήτη της ομάδας. Παρακάτω μπορείτε να δείτε τις ρυθμίσεις κατόχου για καταλόγους στον κατάλογο /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Με την εντολή ls μπορείτε να εμφανίσετε τον κάτοχο των αρχείων σε έναν δεδομένο κατάλογο. Μερικές φορές μπορεί να είναι χρήσιμο να λαμβάνετε μια λίστα με όλα τα αρχεία στο σύστημα που έχουν έναν συγκεκριμένο χρήστη ή ομάδα ως κάτοχο. Για αυτό μπορείτε να χρησιμοποιήσετε βρίσκω. Διαφωνία εύρεση-χρήστη μπορεί να χρησιμοποιηθεί για το σκοπό αυτό. Για παράδειγμα, η ακόλουθη εντολή παραθέτει όλα τα αρχεία που ανήκουν στον χρήστη linda:

find / -user linda

Μπορείτε επίσης να χρησιμοποιήσετε βρίσκω για να αναζητήσετε αρχεία που έχουν ως κάτοχο μια συγκεκριμένη ομάδα.

Για παράδειγμα, η ακόλουθη εντολή αναζητά όλα τα αρχεία που ανήκουν στην ομάδα Χρήστες:

find / -group users

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

Για να εφαρμόσετε τα κατάλληλα δικαιώματα, το πρώτο πράγμα που πρέπει να λάβετε υπόψη είναι η ιδιοκτησία. Υπάρχει μια εντολή για αυτό chown. Η σύνταξη αυτής της εντολής είναι εύκολα κατανοητή:

chown кто что

Για παράδειγμα, η ακόλουθη εντολή αλλάζει τον κάτοχο του καταλόγου /home/account στον χρήστη linda:

chown linda /home/account

Ομάδα chown έχει πολλές επιλογές, μία από τις οποίες είναι ιδιαίτερα χρήσιμη: -R. Μπορείτε να μαντέψετε τι κάνει γιατί αυτή η επιλογή είναι διαθέσιμη και για πολλές άλλες εντολές. Αυτό σας επιτρέπει να ορίσετε αναδρομικά τον κάτοχο, ο οποίος σας επιτρέπει να ορίσετε τον κάτοχο του τρέχοντος καταλόγου και όλα τα παρακάτω. Η ακόλουθη εντολή αλλάζει την ιδιοκτησία του καταλόγου /home και ό,τι βρίσκεται κάτω από αυτόν στον χρήστη linda:

Τώρα οι ιδιοκτήτες φαίνονται ως εξής:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Ας το κάνουμε:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Τώρα η user lisa έχει γίνει κάτοχος του καταλόγου λογαριασμού:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Αλλάξτε τον ιδιοκτήτη μιας ομάδας

Υπάρχουν δύο τρόποι για να αλλάξετε την ιδιοκτησία μιας ομάδας. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας chown, αλλά υπάρχει μια ειδική εντολή με το όνομα chgrpαυτό κάνει τη δουλειά. Εάν θέλετε να χρησιμοποιήσετε την εντολή chown, χρήση . ή : μπροστά από το όνομα της ομάδας.

Η ακόλουθη εντολή αλλάζει οποιονδήποτε κάτοχο της ομάδας /home/account στην ομάδα λογαριασμών:

chown .account /home/account

μπορείς να χρησιμοποιήσεις chown για να αλλάξετε τον κάτοχο ενός χρήστη ή/και μιας ομάδας με διάφορους τρόπους. Να μερικά παραδείγματα:

  • chown lisa myfile1 ορίζει το user lisa ως κάτοχο του myfile1.
  • chown lisa.sales myfile ορίζει το user lisa ως κάτοχο του αρχείου myfile και επίσης ορίζει την ομάδα πωλήσεων ως κάτοχο του ίδιου αρχείου.
  • chown lisa:sales myfile ίδια με την προηγούμενη εντολή.
  • chown .sales myfile ορίζει την ομάδα πωλήσεων ως κάτοχο του myfile χωρίς να αλλάξει τον κάτοχο του χρήστη.
  • chown :sales myfile ίδια με την προηγούμενη εντολή.

Μπορείτε να χρησιμοποιήσετε την εντολή chgrpγια να αλλάξετε τον ιδιοκτήτη της ομάδας. Εξετάστε το ακόλουθο παράδειγμα, όπου μπορείτε να χρησιμοποιήσετε chgrp ορίστε τον κάτοχο του καταλόγου λογαριασμού στην ομάδα πωλήσεων:

chgrp .sales /home/account

Οπως και με chown, μπορείτε να χρησιμοποιήσετε την επιλογή -R с chgrp, καθώς και επαναλαμβανόμενη αλλαγή του κατόχου της ομάδας.

Κατανόηση του Προεπιλεγμένου Ιδιοκτήτη

Ίσως έχετε παρατηρήσει ότι όταν ένας χρήστης δημιουργεί ένα αρχείο, εφαρμόζεται η προεπιλεγμένη ιδιοκτησία.
Ο χρήστης που δημιουργεί το αρχείο γίνεται αυτόματα ο κάτοχος αυτού του αρχείου και η κύρια ομάδα αυτού του χρήστη γίνεται αυτόματα κάτοχος αυτού του αρχείου. Αυτή είναι συνήθως η ομάδα που παρατίθεται στο αρχείο /etc/passwd ως η κύρια ομάδα του χρήστη. Ωστόσο, εάν ο χρήστης είναι μέλος σε περισσότερες από μία ομάδες, ο χρήστης μπορεί να αλλάξει την αποτελεσματική κύρια ομάδα.

Για να εμφανιστεί η τρέχουσα αποτελεσματική κύρια ομάδα, ο χρήστης μπορεί να χρησιμοποιήσει την εντολή ομάδες:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Εάν ο τρέχων χρήστης Linda θέλει να αλλάξει την αποτελεσματική κύρια ομάδα, θα χρησιμοποιήσει την εντολή newgrpακολουθούμενο από το όνομα της ομάδας που θέλει να ορίσει ως τη νέα αποτελεσματική κύρια ομάδα. Αφού χρησιμοποιήσετε την εντολή newgrp η κύρια ομάδα θα είναι ενεργή μέχρι ο χρήστης να εισαγάγει μια εντολή έξοδος ή να μην αποσυνδεθείτε.

Το παρακάτω δείχνει πώς ο χρήστης linda χρησιμοποιεί αυτήν την εντολή, με τις πωλήσεις ως κύρια ομάδα:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Μετά την αλλαγή της αποτελεσματικής κύριας ομάδας, όλα τα νέα αρχεία που δημιουργούνται από τον χρήστη θα έχουν αυτήν την ομάδα ως κάτοχο της ομάδας. Για να επιστρέψετε στην αρχική ρύθμιση της κύριας ομάδας, χρησιμοποιήστε έξοδος.

Για να μπορείτε να χρησιμοποιήσετε την εντολή newgrp, ο χρήστης πρέπει να είναι μέλος της ομάδας που θέλει να χρησιμοποιήσει ως κύρια ομάδα. Επιπλέον, ένας κωδικός πρόσβασης ομάδας μπορεί να χρησιμοποιηθεί για μια ομάδα χρησιμοποιώντας την εντολή gpasswd. Εάν ο χρήστης χρησιμοποιεί την εντολή newgrpαλλά δεν είναι μέλος της ομάδας στόχου, το κέλυφος ζητά τον κωδικό πρόσβασης της ομάδας. Αφού εισαγάγετε τον σωστό κωδικό πρόσβασης ομάδας, θα δημιουργηθεί μια νέα αποτελεσματική κύρια ομάδα.

Διαχείριση θεμελιωδών δικαιωμάτων

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

Κατανόηση των δικαιωμάτων ανάγνωσης, εγγραφής και εκτέλεσης

Τρία βασικά δικαιώματα σάς επιτρέπουν να διαβάζετε, να γράφετε και να εκτελείτε αρχεία. Η επίδραση αυτών των δικαιωμάτων διαφέρει όταν εφαρμόζεται σε αρχεία ή καταλόγους. Για ένα αρχείο, η άδεια ανάγνωσης σάς δίνει το δικαίωμα να ανοίξετε το αρχείο για ανάγνωση. Επομένως, μπορείτε να διαβάσετε το περιεχόμενό του, αλλά αυτό σημαίνει ότι ο υπολογιστής σας μπορεί να ανοίξει το αρχείο για να κάνει κάτι με αυτό.

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

Όταν εφαρμόζεται σε έναν κατάλογο, η ανάγνωση σάς επιτρέπει να εμφανίζετε τα περιεχόμενα αυτού του καταλόγου. Θα πρέπει να γνωρίζετε ότι αυτή η άδεια δεν σας επιτρέπει να διαβάσετε τα αρχεία στον κατάλογο. Το σύστημα αδειών Linux δεν γνωρίζει κληρονομικότητα και ο μόνος τρόπος για να διαβάσετε ένα αρχείο είναι να χρησιμοποιήσετε δικαιώματα ανάγνωσης σε αυτό το αρχείο.

Όπως μπορείτε πιθανώς να μαντέψετε, η άδεια εγγραφής, εάν εφαρμόζεται σε ένα αρχείο, επιτρέπει την εγγραφή στο αρχείο. Με άλλα λόγια, σας επιτρέπει να αλλάξετε τα περιεχόμενα των υπαρχόντων αρχείων. Ωστόσο, δεν σας επιτρέπει να δημιουργήσετε ή να διαγράψετε νέα αρχεία ή να αλλάξετε δικαιώματα αρχείων. Για να το κάνετε αυτό, πρέπει να δώσετε άδεια εγγραφής στον κατάλογο όπου θέλετε να δημιουργήσετε το αρχείο. Στους καταλόγους, αυτό το δικαίωμα σάς επιτρέπει επίσης να δημιουργείτε και να διαγράφετε νέους υποκαταλόγους.

Η άδεια εκτέλεσης είναι αυτό που χρειάζεστε για να εκτελέσετε το αρχείο. Δεν θα εγκατασταθεί ποτέ από προεπιλογή, γεγονός που καθιστά το Linux σχεδόν εντελώς ανοσιακό στους ιούς. Μόνο κάποιος με δικαιώματα εγγραφής στον κατάλογο μπορεί να εφαρμόσει άδεια εκτέλεσης.

Τα ακόλουθα συνοψίζουν τη χρήση των βασικών αδειών:

Δικαιώματα στο Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Χρησιμοποιώντας chmod

Η εντολή χρησιμοποιείται για τη διαχείριση των δικαιωμάτων. chmod. Χρησιμοποιώντας chmod μπορείτε να ορίσετε δικαιώματα για τον χρήστη (χρήστη), τις ομάδες (ομάδα) και άλλους (άλλο). Μπορείτε να χρησιμοποιήσετε αυτήν την εντολή σε δύο τρόπους: σχετική και απόλυτη λειτουργία. Στην απόλυτη λειτουργία, χρησιμοποιούνται τρία ψηφία για τον ορισμό βασικών δικαιωμάτων.

Δικαιώματα στο Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Όταν ορίζετε δικαιώματα, υπολογίστε την τιμή που χρειάζεστε. Εάν θέλετε να ορίσετε ανάγνωση/εγγραφή/εκτέλεση για χρήστη, ανάγνωση/εκτέλεση για ομάδα και ανάγνωση/εκτέλεση για άλλους στο /somefile, τότε χρησιμοποιείτε την ακόλουθη εντολή chmod:

chmod 755 /somefile

Όταν χρησιμοποιείτε chmod Με αυτόν τον τρόπο, όλα τα τρέχοντα δικαιώματα αντικαθίστανται από τα δικαιώματα που έχετε ορίσει.

Εάν θέλετε να αλλάξετε τα δικαιώματα σε σχέση με τα τρέχοντα δικαιώματα, μπορείτε να χρησιμοποιήσετε chmod σε σχετική λειτουργία. Χρησιμοποιώντας chmod στη σχετική λειτουργία εργάζεστε με τρεις δείκτες για να υποδείξετε τι θέλετε να κάνετε:

  1. Πρώτα καθορίζετε για ποιον θέλετε να αλλάξετε τα δικαιώματα. Για να το κάνετε αυτό, μπορείτε να επιλέξετε μεταξύ χρήστη (u), ομάδα (g) και άλλοι (o).
  2. Στη συνέχεια, χρησιμοποιείτε μια δήλωση για να προσθέσετε ή να αφαιρέσετε δικαιώματα από την τρέχουσα λειτουργία ή να τα ορίσετε απολύτως.
  3. Στο τέλος χρησιμοποιείς r, w и xγια να καθορίσετε ποια δικαιώματα θέλετε να ορίσετε.

Όταν αλλάζετε δικαιώματα σε σχετική λειτουργία, μπορείτε να παραλείψετε το τμήμα "to" για να προσθέσετε ή να αφαιρέσετε την άδεια για όλα τα αντικείμενα. Για παράδειγμα, αυτή η εντολή προσθέτει άδεια εκτέλεσης για όλους τους χρήστες:

chmod +x somefile

Όταν εργάζεστε σε σχετική λειτουργία, μπορείτε επίσης να χρησιμοποιήσετε πιο σύνθετες εντολές. Για παράδειγμα, αυτή η εντολή προσθέτει άδεια εγγραφής σε μια ομάδα και καταργεί την άδεια ανάγνωσης για άλλους:

chmod g+w,o-r somefile

Όταν χρησιμοποιείτε το chmod -R o+rx /data ορίζετε δικαιώματα εκτέλεσης για όλους τους καταλόγους καθώς και για αρχεία στον κατάλογο /data. Για να ορίσετε άδεια εκτέλεσης μόνο για καταλόγους και όχι για αρχεία, χρησιμοποιήστε το chmod -R o+ rX /δεδομένα.

Το κεφαλαίο X διασφαλίζει ότι τα αρχεία δεν λαμβάνουν άδεια εκτέλεσης εκτός εάν το αρχείο έχει ήδη ορίσει άδεια εκτέλεσης για ορισμένα αντικείμενα. Αυτό καθιστά το X πιο έξυπνο τρόπο αντιμετώπισης των δικαιωμάτων εκτέλεσης. Αυτό θα αποφύγει τη ρύθμιση αυτής της άδειας σε αρχεία όπου δεν χρειάζεται.

Διευρυμένα δικαιώματα

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

Κατανόηση των δικαιωμάτων SUID, GUID και Sticky Bit Extended Permissions

Υπάρχουν τρία προηγμένα δικαιώματα. Το πρώτο από αυτά είναι η άδεια ορισμού ενός αναγνωριστικού χρήστη (SUID). Σε ορισμένες ειδικές περιπτώσεις, μπορείτε να εφαρμόσετε αυτό το δικαίωμα σε εκτελέσιμα αρχεία. Από προεπιλογή, ένας χρήστης που εκτελεί ένα εκτελέσιμο αρχείο εκτελεί αυτό το αρχείο με τα δικά του δικαιώματα.

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

Σκεφτείτε, για παράδειγμα, μια κατάσταση όπου ένας χρήστης πρέπει να αλλάξει τον κωδικό πρόσβασής του. Για να γίνει αυτό, ο χρήστης πρέπει να γράψει τον νέο κωδικό πρόσβασης στο αρχείο /etc/shadow. Ωστόσο, αυτό το αρχείο δεν μπορεί να εγγραφεί από χρήστες που δεν είναι root:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

Η άδεια SUID προσφέρει μια λύση σε αυτό το πρόβλημα. Το βοηθητικό πρόγραμμα /usr/bin/passwd χρησιμοποιεί αυτό το δικαίωμα από προεπιλογή. Αυτό σημαίνει ότι κατά την αλλαγή του κωδικού πρόσβασης, ο χρήστης γίνεται προσωρινά root, κάτι που του επιτρέπει να γράφει στο αρχείο /etc/shadow. Μπορείτε να δείτε την άδεια SUID με ls -l как s σε μια θέση που κανονικά θα περίμενες να δεις x για προσαρμοσμένες άδειες:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Η άδεια SUID μπορεί να φαίνεται χρήσιμη (και σε ορισμένες περιπτώσεις είναι), αλλά ταυτόχρονα είναι δυνητικά επικίνδυνη. Εάν δεν εφαρμοστεί σωστά, μπορείτε να παραχωρήσετε κατά λάθος δικαιώματα root. Επομένως, συνιστώ να το χρησιμοποιείτε μόνο με τη μέγιστη προσοχή.

Οι περισσότεροι διαχειριστές δεν θα χρειαστεί ποτέ να το χρησιμοποιήσουν. θα το δείτε μόνο σε ορισμένα αρχεία όπου το λειτουργικό σύστημα θα πρέπει να το ρυθμίσει από προεπιλογή.

Το δεύτερο ειδικό δικαίωμα είναι το αναγνωριστικό ομάδας (SGID). Αυτή η άδεια έχει δύο αποτελέσματα. Όταν εφαρμόζεται σε ένα εκτελέσιμο αρχείο, δίνει στον χρήστη που εκτελεί το αρχείο τα δικαιώματα του κατόχου της ομάδας του αρχείου. Έτσι, το SGID μπορεί να κάνει λίγο πολύ το ίδιο πράγμα με το SUID. Ωστόσο, το SGID πρακτικά δεν χρησιμοποιείται για αυτό το σκοπό.

Όπως και με την άδεια SUID, το SGID εφαρμόζεται σε ορισμένα αρχεία συστήματος ως προεπιλεγμένη ρύθμιση.

Όταν εφαρμόζεται σε έναν κατάλογο, το SGID μπορεί να είναι χρήσιμο επειδή μπορείτε να το χρησιμοποιήσετε για να ορίσετε τον προεπιλεγμένο ιδιοκτήτη ομάδας για αρχεία και υποκαταλόγους που δημιουργούνται σε αυτόν τον κατάλογο. Από προεπιλογή, όταν ένας χρήστης δημιουργεί ένα αρχείο, η αποτελεσματική κύρια ομάδα του ορίζεται ως κάτοχος ομάδας για αυτό το αρχείο.

Αυτό δεν είναι πάντα πολύ χρήσιμο, ειδικά επειδή οι χρήστες Red Hat/CentOS έχουν ορίσει την κύρια ομάδα τους σε μια ομάδα με το ίδιο όνομα με τον χρήστη και της οποίας ο χρήστης είναι το μόνο μέλος. Έτσι, από προεπιλογή, τα αρχεία που δημιουργεί ο χρήστης θα κοινοποιούνται μαζικά.

Φανταστείτε μια κατάσταση όπου οι χρήστες linda και lori εργάζονται στη λογιστική και είναι μέλη μιας ομάδας λογαριασμός. Από προεπιλογή, αυτοί οι χρήστες είναι μέλη μιας ιδιωτικής ομάδας της οποίας είναι το μόνο μέλος. Ωστόσο, και οι δύο χρήστες είναι μέλη της ομάδας λογαριασμών, αλλά και ως δευτερεύουσα παράμετρος ομάδας.

Η προεπιλεγμένη κατάσταση είναι ότι όταν οποιοσδήποτε από αυτούς τους χρήστες δημιουργεί ένα αρχείο, η κύρια ομάδα γίνεται ο κάτοχος. Επομένως, από προεπιλογή, η Linda δεν μπορεί να έχει πρόσβαση σε αρχεία που δημιουργούνται από το lori και αντίστροφα. Ωστόσο, εάν δημιουργήσετε έναν κοινόχρηστο ομαδικό κατάλογο (π. των υποκαταλόγων του , λάβετε επίσης τον λογαριασμό ομάδας ως κάτοχο της ομάδας από προεπιλογή.

Για αυτόν τον λόγο, η άδεια SGID είναι μια πολύ χρήσιμη άδεια για ορισμό σε δημόσιους καταλόγους ομάδων.

Το δικαίωμα SGID εμφανίζεται στην έξοδο ls -l как s στη θέση όπου κανονικά θα βρίσκατε άδεια για να εκτελέσετε μια ομάδα:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Το τρίτο από τα ειδικά δικαιώματα είναι το sticky bit. Αυτή η άδεια είναι χρήσιμη για την προστασία αρχείων από τυχαία διαγραφή σε περιβάλλον όπου πολλοί χρήστες έχουν πρόσβαση εγγραφής στον ίδιο κατάλογο. Εάν χρησιμοποιείται ένα sticky bit, ένας χρήστης μπορεί να διαγράψει ένα αρχείο μόνο εάν είναι ο ιδιοκτήτης χρήστη του αρχείου ή του καταλόγου που περιέχει το αρχείο. Για το λόγο αυτό, χρησιμοποιείται ως το προεπιλεγμένο δικαίωμα για τον κατάλογο /tmp και μπορεί να είναι χρήσιμο και για δημόσιους καταλόγους ομάδων.

Χωρίς το sticky bit, εάν ο χρήστης μπορεί να δημιουργήσει αρχεία σε έναν κατάλογο, μπορεί επίσης να διαγράψει αρχεία από αυτόν τον κατάλογο. Σε ένα δημόσιο περιβάλλον ομάδας, αυτό μπορεί να είναι ενοχλητικό. Φανταστείτε τους χρήστες linda και lori, οι οποίοι και οι δύο έχουν δικαιώματα εγγραφής στον κατάλογο /data/account και λαμβάνουν αυτά τα δικαιώματα όντας μέλη της ομάδας λογαριασμών. Επομένως, η Linda μπορεί να διαγράψει αρχεία που δημιουργούνται από το lori και αντίστροφα.

Όταν εφαρμόζετε το sticky bit, ο χρήστης μπορεί να διαγράψει αρχεία μόνο εάν ισχύει μία από τις ακόλουθες συνθήκες:

  • Ο χρήστης είναι ο κάτοχος του αρχείου.
  • Ο χρήστης είναι ο κάτοχος του καταλόγου όπου βρίσκεται το αρχείο.

Όταν χρησιμοποιείτε το ls -l, μπορείτε να δείτε το κολλώδες κομμάτι ως t στη θέση όπου θα βλέπατε κανονικά άδεια εκτέλεσης για άλλους:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Εφαρμογή διευρυμένων δικαιωμάτων

Για να εφαρμόσετε SUID, SGID και sticky bit μπορείτε επίσης να χρησιμοποιήσετε chmod. Το SUID έχει αριθμητική τιμή 4, το SGID έχει αριθμητική τιμή 2 και το sticky bit έχει αριθμητική τιμή 1.

Εάν θέλετε να εφαρμόσετε αυτά τα δικαιώματα, θα πρέπει να προσθέσετε ένα όρισμα τεσσάρων ψηφίων chmod, του οποίου το πρώτο ψηφίο αναφέρεται σε ειδικά δικαιώματα. Η ακόλουθη γραμμή, για παράδειγμα, θα προσθέσει δικαιώματα SGID στον κατάλογο και θα ορίσει το rwx για το χρήστη και το rx για την ομάδα και άλλα:

chmod 2755 /somedir

Αυτό είναι μάλλον ανέφικτο εάν πρέπει να δείτε τα τρέχοντα δικαιώματα που έχουν οριστεί πριν εργαστείτε chmod σε απόλυτη λειτουργία. (Διατρέχετε τον κίνδυνο να αντικαταστήσετε τα δικαιώματα, αν δεν το κάνετε.) Γι' αυτό, συνιστώ να εκτελείτε τη σχετική λειτουργία εάν χρειάζεται να εφαρμόσετε κάποια από τα ειδικά δικαιώματα:

  1. Για χρήση SUID chmod u+s.
  2. Για χρήση SGID chmod g+s.
  3. Για κολλώδη χρήση chmod +t, ακολουθούμενο από το όνομα του αρχείου ή του καταλόγου για τον οποίο θέλετε να ορίσετε δικαιώματα.

Ο πίνακας συνοψίζει όλα όσα πρέπει να γνωρίζετε σχετικά με τη διαχείριση ειδικών δικαιωμάτων.

Δικαιώματα στο Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Παράδειγμα εργασίας με ειδικά δικαιώματα

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

  1. Ανοίξτε ένα τερματικό όπου είστε ο χρήστης του Linda. Μπορείτε να δημιουργήσετε έναν χρήστη με την εντολή χρήστης προσθήκη Linda, προσθέστε κωδικό πρόσβασης passwd Linda.
  2. Δημιουργήστε τον κατάλογο /data στη ρίζα και τον υποκατάλογο /data/sales με την εντολή mkdir -p /data/sales. Εκτέλεση cd /data/salesγια να μεταβείτε στον κατάλογο πωλήσεων. Πλήρης αγγίξτε τη Linda1 и αγγίξτε τη Linda2για να δημιουργήσετε δύο κενά αρχεία που ανήκουν στη Linda.
  3. Εκτέλεση σου-λίζα για να αλλάξετε τον τρέχοντα χρήστη στον χρήστη lisa, ο οποίος είναι επίσης μέλος της ομάδας πωλήσεων.
  4. Εκτέλεση cd /data/sales και από αυτόν τον κατάλογο εκτελέστε ls -l. Θα δείτε δύο αρχεία που δημιουργήθηκαν από τον χρήστη linda και ανήκουν στην ομάδα linda. Πλήρης rm -f Linda*. Αυτό θα αφαιρέσει και τα δύο αρχεία.
  5. Εκτέλεση αγγίξτε τη lisa1 и αγγίξτε τη lisa2για να δημιουργήσετε δύο αρχεία που ανήκουν στον χρήστη lisa.
  6. Εκτέλεση su- για να ανυψώσετε τα προνόμιά σας στο root.
  7. Εκτέλεση chmod g+s,o+t /data/salesγια να ορίσετε το bit αναγνωριστικού ομάδας (GUID) καθώς και το κολλητικό bit στον κοινόχρηστο κατάλογο της ομάδας.
  8. Εκτέλεση σου-λίντα. Τότε κάνε αγγίξτε τη Linda3 и αγγίξτε τη Linda4. Θα πρέπει τώρα να δείτε ότι τα δύο αρχεία που δημιουργήσατε ανήκουν στην ομάδα πωλήσεων, η οποία είναι ο κάτοχος της ομάδας του καταλόγου /data/sales.
  9. Εκτέλεση rm -rf lisa*. Το sticky bit αποτρέπει τη διαγραφή αυτών των αρχείων για λογαριασμό του χρήστη linda, καθώς δεν είστε ο κάτοχος αυτών των αρχείων. Σημειώστε ότι εάν ο χρήστης linda είναι ο κάτοχος του καταλόγου /data/sales, μπορεί να διαγράψει αυτά τα αρχεία ούτως ή άλλως!

Διαχείριση ACL (setfacl, getfacl) σε Linux

Παρόλο που τα εκτεταμένα δικαιώματα που συζητήθηκαν παραπάνω προσθέτουν χρήσιμες λειτουργίες στον τρόπο με τον οποίο το Linux χειρίζεται τα δικαιώματα, δεν σας επιτρέπει να εκχωρήσετε δικαιώματα σε περισσότερους από έναν χρήστες ή ομάδες στο ίδιο αρχείο.

Οι λίστες ελέγχου πρόσβασης προσφέρουν αυτήν τη δυνατότητα. Επιπλέον, επιτρέπουν στους διαχειριστές να ορίζουν προεπιλεγμένα δικαιώματα με πολύπλοκο τρόπο, όπου τα δικαιώματα του συνόλου μπορεί να διαφέρουν από κατάλογο σε κατάλογο.

Κατανόηση των ACL

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

Το βοηθητικό πρόγραμμα tar δεν υποστηρίζει ACL. Για να βεβαιωθείτε ότι οι ρυθμίσεις ACL δεν θα χαθούν όταν δημιουργείτε ένα αντίγραφο ασφαλείας, χρησιμοποιήστε το αστέρι αντί για πίσσα. αστέρι λειτουργεί με τις ίδιες επιλογές με την πίσσα. Απλώς προσθέτει υποστήριξη για ρυθμίσεις ACL.

Μπορείτε επίσης να δημιουργήσετε αντίγραφα ασφαλείας ACL με getfacl, το οποίο μπορεί να αποκατασταθεί χρησιμοποιώντας την εντολή setfacl. Για να δημιουργήσετε ένα αντίγραφο ασφαλείας, χρησιμοποιήστε getfacl -R /directory > file.acls. Για να επαναφέρετε τις ρυθμίσεις από ένα αρχείο αντιγράφου ασφαλείας, χρησιμοποιήστε το setfacl --restore=file.acl.

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

Προετοιμασία του συστήματος αρχείων για ACL

Πριν ξεκινήσετε να εργάζεστε με ACL, ίσως χρειαστεί να προετοιμάσετε το σύστημα αρχείων σας για να υποστηρίζει ACL. Επειδή τα μεταδεδομένα του συστήματος αρχείων πρέπει να επεκταθούν, δεν υπάρχει πάντα προεπιλεγμένη υποστήριξη για ACL στο σύστημα αρχείων. Εάν λάβετε ένα μήνυμα "Η λειτουργία δεν υποστηρίζεται" κατά τη ρύθμιση των ACL για ένα σύστημα αρχείων, το σύστημα αρχείων σας ενδέχεται να μην υποστηρίζει ACL.

Για να διορθώσετε αυτό, πρέπει να προσθέσετε την επιλογή βάση acl στο /etc/fstab έτσι ώστε το σύστημα αρχείων να είναι προσαρτημένο με υποστήριξη ACL από προεπιλογή.

Αλλαγή και προβολή ρυθμίσεων ACL με setfacl και getfacl

Για να ορίσετε ένα ACL χρειάζεστε την εντολή setfacl. Για να δείτε τις τρέχουσες ρυθμίσεις ACL, χρειάζεστε getfacl. Ομάδα ls -l δεν εμφανίζει κανένα υπάρχον ACL. Εμφανίζει απλώς ένα + μετά τη λίστα αδειών, που υποδεικνύει ότι τα ACL ισχύουν και για το αρχείο.

Πριν ρυθμίσετε τα ACL, είναι πάντα καλή ιδέα να εμφανίζετε τις τρέχουσες ρυθμίσεις ACL με getfacl. Στο παρακάτω παράδειγμα, μπορείτε να δείτε τα τρέχοντα δικαιώματα, όπως φαίνεται με ls -l, και επίσης όπως φαίνεται με getfacl. Αν κοιτάξετε αρκετά προσεκτικά, θα δείτε ότι οι πληροφορίες που εμφανίζονται είναι ακριβώς οι ίδιες.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Ως αποτέλεσμα της εκτέλεσης της εντολής getfacl παρακάτω μπορείτε να δείτε ότι τα δικαιώματα εμφανίζονται για τρία διαφορετικά αντικείμενα: χρήστη, ομάδα και άλλα. Τώρα ας προσθέσουμε ένα ACL για να δώσουμε δικαιώματα ανάγνωσης και εκτέλεσης και στην ομάδα πωλήσεων. εντολή για αυτό setfacl -mg:sales:rx /σκην. Σε αυτή την ομάδα -m υποδεικνύει ότι οι τρέχουσες ρυθμίσεις ACL πρέπει να αλλάξουν. Μετά από αυτό g:sales:rx λέει την εντολή για να ορίσετε το ACL ανάγνωσης-εκτέλεσης (rx) για την ομάδα (g) εκπτώσεις. Παρακάτω μπορείτε να δείτε πώς φαίνεται η εντολή, καθώς και η έξοδος της εντολής getfacl μετά την αλλαγή των τρεχουσών ρυθμίσεων ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Τώρα που καταλαβαίνετε πώς να ρυθμίσετε ένα ομαδικό ACL, είναι εύκολο να κατανοήσετε τα ACL για χρήστες και άλλους χρήστες. Για παράδειγμα, η εντολή setfacl -mu:linda:rwx /data δίνει δικαιώματα στον χρήστη linda στον κατάλογο /data χωρίς να τον κάνει κάτοχο ή να αλλάξει την εκχώρηση του τρέχοντος κατόχου.

Ομάδα setfacl έχει πολλές δυνατότητες και επιλογές. Μία επιλογή είναι ιδιαίτερα σημαντική, η παράμετρος -R. Εάν χρησιμοποιείται, η επιλογή ορίζει το ACL για όλα τα αρχεία και τους υποκαταλόγους που υπάρχουν αυτήν τη στιγμή στον κατάλογο όπου ορίζετε το ACL. Συνιστάται να χρησιμοποιείτε πάντα αυτήν την επιλογή όταν αλλάζετε ACL για υπάρχοντες καταλόγους.

Εργασία με προεπιλεγμένα ACL

Ένα από τα πλεονεκτήματα της χρήσης των ACL είναι ότι μπορείτε να εκχωρήσετε δικαιώματα σε πολλούς χρήστες ή ομάδες σε έναν κατάλογο. Ένα άλλο πλεονέκτημα είναι ότι μπορείτε να ενεργοποιήσετε την κληρονομικότητα δουλεύοντας με τα προεπιλεγμένα ACL.

Ορίζοντας το προεπιλεγμένο ACL, καθορίζετε τα δικαιώματα που θα οριστούν για όλα τα νέα στοιχεία που δημιουργούνται στον κατάλογο. Λάβετε υπόψη ότι το προεπιλεγμένο ACL δεν αλλάζει τα δικαιώματα σε υπάρχοντα αρχεία και υποκαταλόγους. Για να τα αλλάξετε, πρέπει να προσθέσετε και ένα κανονικό ACL!

Αυτό είναι σημαντικό να το γνωρίζουμε. Εάν θέλετε να χρησιμοποιήσετε ένα ACL για να διαμορφώσετε πολλούς χρήστες ή ομάδες για πρόσβαση στον ίδιο κατάλογο, πρέπει να ορίσετε το ACL δύο φορές. Πρώτη χρήση setfacl -R -mγια να αλλάξετε το ACL για τα τρέχοντα αρχεία. Στη συνέχεια χρησιμοποιήστε setfacl-md:να φροντίσει για όλα τα νέα στοιχεία που θα δημιουργηθούν επίσης.

Για να ορίσετε το προεπιλεγμένο ACL, πρέπει απλώς να προσθέσετε την επιλογή d μετά την επιλογή -m (Η παραγγελία έχει σημασία!). Χρησιμοποιήστε λοιπόν setfacl -md:g:sales:rx /dataεάν θέλετε οι ομαδικές πωλήσεις να διαβάζουν και να εκτελούν οτιδήποτε έχει δημιουργηθεί στον κατάλογο /data.

Όταν χρησιμοποιείτε προεπιλεγμένα ACL, μπορεί επίσης να είναι χρήσιμο να ορίσετε ACL για άλλους. Αυτό συνήθως δεν έχει πολύ νόημα επειδή μπορείτε επίσης να αλλάξετε τα δικαιώματα για άλλους που χρησιμοποιούν chmod. Ωστόσο, με αυτό που δεν μπορείτε να κάνετε chmod, είναι να καθορίσετε τα δικαιώματα που πρέπει να παραχωρούνται σε άλλους χρήστες για κάθε νέο αρχείο που δημιουργείται ποτέ. Εάν θέλετε να αποτρέψετε άλλους από το να λάβουν δικαιώματα για οτιδήποτε έχει δημιουργηθεί στο /data, για παράδειγμα, χρησιμοποιήστε το setfacl -md:o::- /data.

Τα ACL και τα κανονικά δικαιώματα δεν είναι πάντα καλά ενσωματωμένα. Ενδέχεται να προκύψουν προβλήματα εάν εφαρμόσετε ένα προεπιλεγμένο ACL σε έναν κατάλογο, στη συνέχεια προστεθούν στοιχεία σε αυτόν τον κατάλογο και, στη συνέχεια, προσπαθήσετε να αλλάξετε τα κανονικά δικαιώματα. Οι αλλαγές που ισχύουν για τα κανονικά δικαιώματα δεν θα αντικατοπτρίζονται καλά στην επισκόπηση ACL. Για να αποφύγετε προβλήματα, ορίστε πρώτα τα κανονικά δικαιώματα και μετά ορίστε τα προεπιλεγμένα ACL (και προσπαθήστε να μην τα αλλάξετε ξανά μετά από αυτό).

Παράδειγμα Διαχείρισης Ανυψωμένων Δικαιωμάτων με χρήση ACL

Σε αυτό το παράδειγμα, θα συνεχίσετε με τους καταλόγους /data/account και /data/sales που δημιουργήσατε νωρίτερα. Στα προηγούμενα παραδείγματα, διασφαλίσατε ότι η ομάδα πωλήσεων έχει δικαιώματα στο /data/sales και η ομάδα λογαριασμών έχει δικαιώματα στο /data/account.

Αρχικά, βεβαιωθείτε ότι η ομάδα λογαριασμών έχει δικαιώματα ανάγνωσης στον κατάλογο /data/sales και η ομάδα πωλήσεων λαμβάνει δικαιώματα ανάγνωσης στον κατάλογο /data/account.

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

  1. Ανοίξτε ένα τερματικό.
  2. Εκτέλεση setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Εκτέλεση getfaclγια να βεβαιωθείτε ότι τα δικαιώματα ορίστηκαν όπως θέλετε.
  4. Εκτέλεση setfacl -md:g:account:rwx,g:sales:rx /data/salesγια να ορίσετε το προεπιλεγμένο ACL για τον κατάλογο πωλήσεων.
  5. Προσθέστε ένα προεπιλεγμένο ACL για τον κατάλογο /data/account χρησιμοποιώντας setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Βεβαιωθείτε ότι οι ρυθμίσεις ACL είναι σε ισχύ προσθέτοντας ένα νέο αρχείο στο /data/sales. Πλήρης αγγίξτε /data/sales/newfile και να εκτελέσει getfacl /data/sales/newfile για να ελέγξετε τα τρέχοντα δικαιώματα.

Ορισμός προεπιλεγμένων δικαιωμάτων με το umask

Παραπάνω, μάθατε πώς να εργάζεστε με προεπιλεγμένα ACL. Εάν δεν χρησιμοποιείτε ACL, υπάρχει μια επιλογή φλοιού που καθορίζει τα προεπιλεγμένα δικαιώματα που θα λάβετε: umask (αντίστροφη μάσκα). Σε αυτήν την ενότητα, θα μάθετε πώς να αλλάζετε τα προεπιλεγμένα δικαιώματα με umask.

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

Ωστόσο, ορισμένες εξαιρέσεις ισχύουν σε αυτόν τον κανόνα. Μπορείτε να βρείτε μια πλήρη επισκόπηση των ρυθμίσεων umask στον παρακάτω πίνακα.

Από τους αριθμούς που χρησιμοποιούνται σε umask, όπως στην περίπτωση των αριθμητικών ορισμάτων για την εντολή chmod, το πρώτο ψηφίο αναφέρεται στα δικαιώματα του χρήστη, το δεύτερο ψηφίο αναφέρεται στα δικαιώματα της ομάδας και το τελευταίο αναφέρεται στα προεπιλεγμένα δικαιώματα που έχουν οριστεί για άλλους. Εννοια umask το προεπιλεγμένο 022 δίνει 644 για όλα τα νέα αρχεία και 755 για όλους τους νέους καταλόγους που δημιουργήθηκαν στον διακομιστή σας.

Πλήρης επισκόπηση όλων των αριθμητικών τιμών umask και τα αποτελέσματά τους στον παρακάτω πίνακα.

Δικαιώματα στο Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ένας εύκολος τρόπος για να δείτε πώς λειτουργεί η ρύθμιση umask είναι ο εξής: ξεκινήστε με τα προεπιλεγμένα δικαιώματα του αρχείου που έχουν οριστεί στο 666 και αφαιρέστε το umask για να λάβετε τα αποτελεσματικά δικαιώματα. Κάντε το ίδιο για τον κατάλογο και τα προεπιλεγμένα δικαιώματα του 777.

Υπάρχουν δύο τρόποι για να αλλάξετε τη ρύθμιση umask: για όλους τους χρήστες και για μεμονωμένους χρήστες. Εάν θέλετε να ορίσετε το umask για όλους τους χρήστες, πρέπει να βεβαιωθείτε ότι η ρύθμιση umask λαμβάνεται υπόψη κατά την εκκίνηση των αρχείων περιβάλλοντος φλοιού, όπως καθορίζεται στο /etc/profile. Η σωστή προσέγγιση είναι να δημιουργήσετε ένα σενάριο φλοιού που ονομάζεται umask.sh στον κατάλογο /etc/profile.d και να καθορίσετε το umask που θέλετε να χρησιμοποιήσετε σε αυτό το σενάριο φλοιού. Εάν το umask αλλάξει σε αυτό το αρχείο, εφαρμόζεται σε όλους τους χρήστες μετά τη σύνδεση στον διακομιστή.

Μια εναλλακτική λύση για τη ρύθμιση του umask μέσω του /etc/profile και των σχετικών αρχείων, όπου ισχύει για όλους τους χρήστες που συνδέονται, είναι να αλλάξετε τις ρυθμίσεις umask σε ένα αρχείο που ονομάζεται .profile που δημιουργείται στον αρχικό κατάλογο κάθε χρήστη.

Οι ρυθμίσεις που εφαρμόζονται σε αυτό το αρχείο ισχύουν μόνο για τον μεμονωμένο χρήστη. Ως εκ τούτου, αυτή είναι μια καλή μέθοδος εάν χρειάζεστε περισσότερες λεπτομέρειες. Προσωπικά μου αρέσει αυτή η δυνατότητα να αλλάζει το προεπιλεγμένο umask για τον χρήστη root σε 027 ενώ οι κανονικοί χρήστες εκτελούνται με το προεπιλεγμένο umask του 022.

Εργασία με εκτεταμένα χαρακτηριστικά χρήστη

Αυτή είναι η τελευταία ενότητα για τα δικαιώματα Linux.

Όταν εργάζεστε με δικαιώματα, υπάρχει πάντα μια σχέση μεταξύ ενός αντικειμένου χρήστη ή ομάδας και των δικαιωμάτων που έχουν τα αντικείμενα χρήστη ή ομάδας σε ένα αρχείο ή κατάλογο. Μια εναλλακτική μέθοδος για την προστασία των αρχείων σε έναν διακομιστή Linux είναι η εργασία με χαρακτηριστικά.
Τα χαρακτηριστικά κάνουν τη δουλειά τους ανεξάρτητα από τον χρήστη που έχει πρόσβαση στο αρχείο.

Όπως και με τα ACL, τα χαρακτηριστικά αρχείου μπορεί να χρειαστεί να περιλαμβάνουν την επιλογή τοποθετήσετε.

Αυτή είναι μια επιλογή user_xattr. Εάν λάβετε ένα μήνυμα "Η λειτουργία δεν υποστηρίζεται" όταν εργάζεστε με εκτεταμένα χαρακτηριστικά χρήστη, βεβαιωθείτε ότι έχετε ορίσει την παράμετρο τοποθετήσετε στο /etc/fstab.

Πολλά χαρακτηριστικά είναι τεκμηριωμένα. Ορισμένα χαρακτηριστικά είναι διαθέσιμα αλλά δεν έχουν εφαρμοστεί ακόμα. Μην τα χρησιμοποιείτε. δεν θα σου φέρουν τίποτα.

Παρακάτω είναι τα πιο χρήσιμα χαρακτηριστικά που μπορείτε να εφαρμόσετε:

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

a Αυτό το χαρακτηριστικό σας επιτρέπει να προσθέσετε αλλά όχι να αφαιρέσετε ένα αρχείο.

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

D Αυτό το χαρακτηριστικό διασφαλίζει ότι οι αλλαγές στα αρχεία εγγράφονται αμέσως στο δίσκο αντί να αποθηκεύονται πρώτα στην προσωρινή μνήμη. Αυτό είναι ένα χρήσιμο χαρακτηριστικό σε σημαντικά αρχεία βάσης δεδομένων για να βεβαιωθείτε ότι δεν θα χαθούν μεταξύ της προσωρινής μνήμης αρχείων και του σκληρού δίσκου.

d Αυτό το χαρακτηριστικό διασφαλίζει ότι το αρχείο δεν θα αποθηκευτεί σε αντίγραφα ασφαλείας όπου χρησιμοποιείται το βοηθητικό πρόγραμμα dump.

I Αυτό το χαρακτηριστικό επιτρέπει τη δημιουργία ευρετηρίου για τον κατάλογο στον οποίο είναι ενεργοποιημένο. Αυτό παρέχει ταχύτερη πρόσβαση σε αρχεία για πρωτόγονα συστήματα αρχείων όπως το Ext3 που δεν χρησιμοποιούν τη βάση δεδομένων B-tree για γρήγορη πρόσβαση στα αρχεία.

i Αυτό το χαρακτηριστικό κάνει το αρχείο αμετάβλητο. Επομένως, δεν μπορούν να γίνουν αλλαγές στο αρχείο, κάτι που είναι χρήσιμο για αρχεία που χρειάζονται πρόσθετη προστασία.

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

s Αντικαταστήστε τα μπλοκ στα οποία αποθηκεύτηκε το αρχείο σε 0 μετά τη διαγραφή του αρχείου. Αυτό διασφαλίζει ότι δεν είναι δυνατή η επαναφορά ενός αρχείου μετά τη διαγραφή του.

u Αυτό το χαρακτηριστικό αποθηκεύει πληροφορίες σχετικά με τη διαγραφή. Αυτό σας επιτρέπει να αναπτύξετε ένα βοηθητικό πρόγραμμα που λειτουργεί με αυτές τις πληροφορίες για τη διάσωση των διαγραμμένων αρχείων.

Εάν θέλετε να εφαρμόσετε τα χαρακτηριστικά, μπορείτε να χρησιμοποιήσετε την εντολή συνομιλία. Για παράδειγμα, χρησιμοποιήστε chattr +s somefileγια να εφαρμόσετε ιδιότητες σε κάποιο αρχείο. Θέλετε να αφαιρέσετε ένα χαρακτηριστικό; Στη συνέχεια χρησιμοποιήστε chattr -s somefileκαι θα αφαιρεθεί. Για να λάβετε μια επισκόπηση όλων των χαρακτηριστικών που εφαρμόζονται αυτήν τη στιγμή, χρησιμοποιήστε την εντολή lsattr.

Περίληψη

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

Αν σας άρεσε αυτή η μετάφραση, τότε παρακαλώ γράψτε γι' αυτήν στα σχόλια. Θα υπάρχει περισσότερο κίνητρο για να κάνετε χρήσιμες μεταφράσεις.

Διορθώθηκαν ορισμένα τυπογραφικά και γραμματικά λάθη στο άρθρο. Μείωσε ορισμένες ογκώδεις παραγράφους σε μικρότερες για καλύτερη αναγνωσιμότητα.

Αντί για "Μόνο κάποιος με δικαιώματα διαχειριστή στον κατάλογο μπορεί να εφαρμόσει άδεια εκτέλεσης." διορθώθηκε στο "Μόνο κάποιος με δικαιώματα εγγραφής στον κατάλογο μπορεί να εφαρμόσει άδεια εκτέλεσης.", που θα ήταν πιο σωστό.

Ευχαριστώ για τα σχόλια berez.

Αντικαταστάθηκε:
Εάν δεν είστε ο κάτοχος του χρήστη, το κέλυφος θα ελέγξει αν είστε μέλος μιας ομάδας, γνωστής και ως ομάδα του αρχείου.

Επί:
Εάν δεν είστε ο κάτοχος του αρχείου, το κέλυφος θα ελέγξει αν είστε μέλος μιας ομάδας που έχει δικαιώματα για το αρχείο. Εάν είστε μέλος αυτής της ομάδας, θα έχετε πρόσβαση στο αρχείο με τα δικαιώματα που έχει ορίσει η ομάδα και το κέλυφος θα σταματήσει να ελέγχει.

Σας ευχαριστούμε για το σχόλιό σας CryptoPirate

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο