Saltar al contenido

Μάθετε την εντολή Linux «setfacl»

27 de mayo de 2021

Σε αυτό το άρθρο

Setfacl βοηθητικά προγράμματα Ορίστε λίστες ελέγχου πρόσβασης (ACL) αρχείων και καταλόγων. Στη γραμμή εντολών, ακολουθεί μια ακολουθία εντολών από μια ακολουθία αρχείων (η οποία με τη σειρά της μπορεί να ακολουθηθεί από μια άλλη ακολουθία εντολών κ.λπ.).

  • Οι επιλογές -Μ, και περιμένετε ένα ACL στη γραμμή εντολών. Πολλές καταχωρήσεις ACL διαχωρίζονται με χαρακτήρες κόμμα («,»). Οι επιλογές -Μ, και διαβάστε ένα ACL από ένα αρχείο ή από μια τυπική είσοδο. Η μορφή εισαγωγής ACL περιγράφεται στην Ενότητα ACL ENTRIES.
  • ο –σειρά και –set-αρχείο Οι επιλογές ορίζουν το ACL ενός αρχείου ή ενός καταλόγου. Το προηγούμενο ACL αντικαθίσταται. Οι καταχωρήσεις ACL για αυτήν τη λειτουργία πρέπει να περιλαμβάνουν δικαιώματα.
  • ο -m (- τροποποίηση) και -M (- τροποποίηση-αρχείο) Οι επιλογές τροποποιούν το ACL ενός αρχείου ή καταλόγου. Οι καταχωρήσεις ACL για αυτήν τη λειτουργία πρέπει να περιλαμβάνουν δικαιώματα.
  • ο -x (- αφαίρεση) και -X (–αφαίρεση αρχείου) επιλογές αφαιρέστε τις καταχωρήσεις ACL. Μόνο καταχωρήσεις ACL χωρίς το περμανάντ Το πεδίο γίνεται αποδεκτό ως παράμετροι εκτός εάν έχει οριστεί το POSIXLY_CORRECT.

Κατά την ανάγνωση από αρχεία χρησιμοποιώντας το -Μ, και Επιλογές, το setfacl δέχεται την έξοδο που παράγει το getfacl. Υπάρχει το πολύ μία καταχώριση ACL ανά γραμμή. Μετά από ένα σημάδι Λίρα («#»), τα πάντα μέχρι το τέλος της γραμμής αντιμετωπίζονται ως σχόλιο. Εάν το setfacl χρησιμοποιείται σε ένα σύστημα αρχείων που δεν υποστηρίζει ACL, το setfacl λειτουργεί στα bits δικαιωμάτων λειτουργίας αρχείου. Εάν το ACL δεν ταιριάζει πλήρως στα bit δικαιωμάτων, το setfacl τροποποιεί τα bit δικαιωμάτων λειτουργίας αρχείων ώστε να αντικατοπτρίζει το ACL όσο το δυνατόν πιο κοντά, γράφει ένα μήνυμα σφάλματος σε τυπικό σφάλμα και επιστρέφει με κατάσταση εξόδου μεγαλύτερη από 0.

Χρήση του Setfacl

Αρχικά, δοκιμάστε να δημιουργήσετε μια βασική λίστα για έναν φάκελο στον αρχικό σας κατάλογο. Δεδομένου ότι το δοκιμάζετε για πρώτη φορά, δημιουργήστε ένα νέο για να παίξετε. Με αυτόν τον τρόπο, δεν θα διακινδυνεύσετε να κλειδώσετε τον εαυτό σας από σημαντικά έγγραφα. mkdir ~ / acl-δοκιμή

Στη συνέχεια, χρησιμοποιήστε το setfacl για να παραχωρήσετε σε έναν άλλο χρήστη στο σύστημά σας πρόσβαση στο φάκελο. Το Setfacl χρησιμοποιεί το για να τροποποιήσετε τις λίστες ελέγχου πρόσβασης για ένα αρχείο. Αυτό συνήθως σημαίνει την προσθήκη ενός χρήστη ή μιας ομάδας. setfacl -mu: όνομα χρήστη: rwx ~ / acl-test /

ο εσύ προτού το πρώτο άνω και κάτω τελεία δείξει την εντολή για το όνομα χρήστη. ο rwx μετά το δεύτερο χορηγεί ρEad, βιεροτελεστία, και εΧάδειες ecute. Το ίδιο λειτουργεί για ομάδες καθορίζοντας σολ αντί εσύ πριν από το πρώτο παχύ έντερο. setfacl -mg: groupname: rwx ~ / acl-test /

Λειτουργεί το ίδιο με το προηγούμενο παράδειγμα, εκτός του ότι παρέχει δικαιώματα σε ολόκληρη την ομάδα. ο Η σημαία λειτουργεί το αντίθετο του . Θα ανακαλέσει την πρόσβαση στον καθορισμένο χρήστη ή ομάδα. setfacl -xu: όνομα χρήστη: w ~ / acl-test /

Η εντολή ανακαλεί την πρόσβαση εγγραφής στον κατάλογο στον χρήστη. Μπορείτε επίσης να τροποποιήσετε άμεσα τα δικαιώματα για όλους τους τρέχοντες χρήστες. Αυτό περιλαμβάνει τον κάτοχο του αρχείου και τυχόν επιπλέον χρήστες στους οποίους χορηγήθηκαν δικαιώματα. Πρόκειται για μια συντόμευση, χρησιμοποιώντας την υπάρχουσα εντολή αλλά παραλείποντας το όνομα χρήστη. setfacl -mu :: rx ~ / acl-test /

Αυτό παρέχει σε όλους τους υπάρχοντες χρήστες δικαιώματα ανάγνωσης και εκτέλεσης, αλλά καταργεί την πρόσβαση εγγραφής. Το ίδιο λειτουργεί με το επισήμανση και αφαίρεση δικαιωμάτων. setfacl -xu :: w ~ / acl-test /

Αυτό είναι ουσιαστικά το ίδιο με το προηγούμενο παράδειγμα, ανεστραμμένο. Το setfacl σας επιτρέπει επίσης να αντιγράψετε τις λίστες ελέγχου πρόσβασης από το ένα αρχείο στο άλλο. Βεβαιωθείτε ότι ο χρήστης σας έχει πλήρη πρόσβαση στον δοκιμαστικό φάκελο και δημιουργήστε δύο νέα αρχεία για να εργαστείτε. αγγίξτε ~ / acl-test / file {1,2} .txt

Τώρα, τροποποιήστε τα δικαιώματα του πρώτου αρχείου. setfacl -mu: όνομα χρήστη: rx ~ / acl-text / file1.txt

Τώρα, μπορείτε να διοχετεύσετε τα αποτελέσματα του getfacl, της εντολής για την ανάκτηση των τρεχουσών πληροφοριών ACL, στο setfacl. getfacl ~ / acl-test / file1.txt | setfacl –set-file = – ~ / acl-text / file2.txt

Το δεύτερο γέμισμα θα έχει τα ίδια δικαιώματα με το πρώτο. Τέλος, μπορείτε να καταργήσετε όλες τις εκτεταμένες καταχωρήσεις ACL που δημιουργήθηκαν από την εντολή. Αυτό θα αφήσει το αρχείο με τα δικαιώματα χρήστη και ομάδας που είχε αρχικά. Για να το κάνετε αυτό, χρησιμοποιήστε τη σημαία -b. setfacl -b ~ / acl-δοκιμή /

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

Τεχνική ανάλυση του Setfacl

setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] αρχείο …

setfacl – restore = αρχείο

Άδειες

Ο κάτοχος του αρχείου και οι διαδικασίες με δυνατότητα CAP_FOWNER έχουν το δικαίωμα να τροποποιούν ACL ενός αρχείου. Αυτό είναι ανάλογο με τα δικαιώματα που απαιτούνται για την πρόσβαση στη λειτουργία αρχείου. (Στα τρέχοντα συστήματα Linux, η root είναι ο μόνος χρήστης με δυνατότητα CAP_FOWNER.)

Επιλογές

-β, – αφαίρεση όλων

  • Καταργήστε όλες τις εκτεταμένες καταχωρήσεις ACL. Οι βασικές καταχωρίσεις ACL του κατόχου, της ομάδας και άλλων διατηρούνται.

-k, – κατάργηση-προεπιλογή

  • Καταργήστε το προεπιλεγμένο ACL. Εάν δεν υπάρχει προεπιλεγμένο ACL, δεν εκδίδονται προειδοποιήσεις.

-n, – χωρίς μάσκα

  • Μην υπολογίσετε εκ νέου την αποτελεσματική μάσκα δικαιωμάτων. Η προεπιλεγμένη συμπεριφορά του setfacl είναι ο επανυπολογισμός της καταχώρησης μάσκας ACL εκτός εάν δόθηκε ρητά μια καταχώρηση μάσκας. Η καταχώριση μάσκας έχει οριστεί στην ένωση όλων των δικαιωμάτων της ομάδας ιδιοκτησίας και σε όλες τις ονομαστικές καταχωρήσεις χρήστη και ομάδας. (Αυτές είναι ακριβώς οι καταχωρήσεις που επηρεάζονται από την καταχώρηση μάσκας).

–μάσκα

  • Επαναλάβετε τον υπολογισμό της πραγματικής μάσκας δικαιωμάτων, ακόμα κι αν μια καταχώριση μάσκας ACL δόθηκε ρητά. (Δείτε το επιλογή.)

-d, – προεπιλογή

  • Όλες οι λειτουργίες ισχύουν για το Προεπιλεγμένο ACL. Οι τακτικές καταχωρήσεις ACL στο σύνολο εισόδου προωθούνται σε προεπιλεγμένες καταχωρήσεις ACL. Οι προεπιλεγμένες καταχωρίσεις ACL στο σύνολο εισόδου απορρίπτονται. (Προειδοποιείται εκδίδεται εάν συμβεί αυτό).

– restore = αρχείο

  • Επαναφέρετε ένα αντίγραφο ασφαλείας δικαιωμάτων που δημιουργήθηκε από το «getfacl -R» ή παρόμοιο. Όλα τα δικαιώματα ενός πλήρους δευτερεύοντος καταλόγου αποκαθίστανται χρησιμοποιώντας αυτόν τον μηχανισμό. Εάν η είσοδος περιέχει σχόλια κατόχου ή σχόλια ομάδας, και το setfacl εκτελείται από root, ο κάτοχος και η ομάδα όλων των αρχείων αποκαθίστανται επίσης. Αυτή η επιλογή δεν μπορεί να συνδυαστεί με άλλες επιλογές εκτός από το «- test».

–δοκιμή

  • Λειτουργία δοκιμής. Αντί να αλλάζουν τα ACL οποιουδήποτε αρχείου, τα ACL που προκύπτουν παρατίθενται.

-R, – αναδρομική

  • Εφαρμόστε τις λειτουργίες σε όλα τα αρχεία και τους καταλόγους αναδρομικά. Αυτή η επιλογή δεν μπορεί να συνδυαστεί με το «- restore».

-L, – λογική

  • Λογική βόλτα, ακολουθήστε συμβολικούς συνδέσμους. Η προεπιλεγμένη συμπεριφορά είναι να ακολουθήσετε ορίσματα συμβολικών συνδέσμων και να παραλείψετε συμβολικούς συνδέσμους που συναντώνται σε υποκαταλόγους. Αυτή η επιλογή δεν μπορεί να αναμειχθεί με το «- restore».

-P, – φυσική

  • Φυσική βόλτα, παραλείψτε όλους τους συμβολικούς συνδέσμους. Αυτό παραλείπει επίσης τα συμβολικά ορίσματα συνδέσμων. Αυτή η επιλογή δεν μπορεί να συνδυαστεί με το «- restore».

–εκδοχή

  • Εκτυπώστε την έκδοση του setfacl και βγείτε.

–βοήθεια

  • Εκτύπωση βοήθειας που εξηγεί τις επιλογές της γραμμής εντολών.

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

Συμμετοχές ACL

Το βοηθητικό πρόγραμμα setfacl αναγνωρίζει τις ακόλουθες μορφές εισαγωγής ACL:

[d[efault]:] [u[ser]:]uid [:perms]

  • Δικαιώματα ενός ονόματος χρήστη. Δικαιώματα του κατόχου του αρχείου εάν uid είναι άδειο.

[d[efault]:]ζ[roup]:σκατά [:perms]

  • Δικαιώματα μιας ονομαστικής ομάδας. Δικαιώματα της ομάδας που κατέχει εάν σκατά είναι άδειο.

[d[efault]:]Μ[ask][:] [:perms]

  • Αποτελεσματική μάσκα δικαιωμάτων

[d[efault]:]ο[ther][:] [:perms]

  • Άδειες άλλων

Το κενό διάστημα μεταξύ χαρακτήρων οριοθέτη και χαρακτήρων που δεν οριοθετούνται. Οι σωστές καταχωρήσεις ACL συμπεριλαμβανομένων των δικαιωμάτων χρησιμοποιούνται για τροποποίηση και ρύθμιση λειτουργιών. (επιλογές , , –σειρά και –set-αρχείο). Συμμετοχές χωρίς το περμανάντ Το πεδίο χρησιμοποιείται για διαγραφή εγγραφών (επιλογές και ). Για uid και σκατά μπορείτε να καθορίσετε ένα όνομα ή έναν αριθμό. ο περμανάντ Το πεδίο είναι ένας συνδυασμός χαρακτήρων που υποδεικνύουν τα δικαιώματα: read (ρ), γράψτε (β), εκτέλεση (Χ), εκτελέστε μόνο εάν το αρχείο είναι κατάλογος ή έχει ήδη άδεια εκτέλεσης για κάποιο χρήστη(Χ). Εναλλακτικά, το περμανάντ Το πεδίο μπορεί να είναι ένα οκταδικό ψηφίο (0-7).

Δημιουργήθηκαν αυτόματα καταχωρήσεις

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

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

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

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

Παραδείγματα

  • Χορήγηση πρόσθετης πρόσβασης ανάγνωσης χρήστη
  • setfacl -mu: lisa: r αρχείο
  • Ανάκληση πρόσβασης εγγραφής από όλες τις ομάδες και όλους τους χρήστες με όνομα (χρησιμοποιώντας την αποτελεσματική μάσκα δικαιωμάτων)
  • setfacl -mm :: rx αρχείο
  • Κατάργηση μιας ονομαστικής καταχώρησης ομάδας από το αρχείο ACL
  • setfacl -xg: αρχείο προσωπικού
  • Αντιγραφή του ACL ενός αρχείου σε άλλο
  • getfacl file1 | setfacl –set-file = – αρχείο2
  • Αντιγραφή της πρόσβασης ACL στο Προεπιλεγμένο ACL
  • getfacl -a dir | setfacl -d -M- dir

Συμμόρφωση με το πρόχειρο πρότυπο Posix 1003.1e 17

Εάν έχει οριστεί η μεταβλητή περιβάλλοντος POSIXLY_CORRECT, η προεπιλεγμένη συμπεριφορά του setfacl αλλάζει ως εξής: Όλες οι μη τυπικές επιλογές είναι απενεργοποιημένες. Το πρόθεμα «προεπιλογή:» είναι απενεργοποιημένο. ο και Οι επιλογές δέχονται επίσης πεδία δικαιωμάτων (και αγνοήστε τα).