5 εντολές 'chattr' για να κάνετε τα σημαντικά αρχεία αμετάβλητα (αμετάβλητα) στο Linux


Το chattr (Αλλαγή Χαρακτηριστικού) είναι ένα βοηθητικό πρόγραμμα Linux γραμμής εντολών που χρησιμοποιείται για τον ορισμό/κατάργηση ορισμένων χαρακτηριστικών σε ένα αρχείο στο σύστημα Linux για την εξασφάλιση τυχαίας διαγραφής ή τροποποίησης σημαντικών αρχείων και φακέλων, ακόμα κι αν είστε συνδεδεμένοι ως χρήστης root.

Στα εγγενή συστήματα αρχείων Linux, δηλαδή τα ext2, ext3, ext4, btrfs κ.λπ. υποστηρίζουν όλες τις σημαίες, αν και όλες οι σημαίες δεν θα υποστηρίζουν όλα τα μη εγγενή FS. Δεν μπορεί κανείς να διαγράψει ή να τροποποιήσει το αρχείο/φάκελο όταν οριστούν χαρακτηριστικά με την εντολή chattr, παρόλο που έχει πλήρη δικαιώματα σε αυτό.

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

Σύνταξη του chattr
chattr [operator] [flags] [filename]
Χαρακτηριστικά και Σημαίες

Ακολουθεί η λίστα των κοινών χαρακτηριστικών και των συσχετισμένων σημαιών που μπορούν να οριστούν/απορυθμιστούν χρησιμοποιώντας την εντολή chattr.

  1. Εάν γίνεται πρόσβαση σε ένα αρχείο με σύνολο χαρακτηριστικών "A", η εγγραφή χρόνου του δεν ενημερώνεται.
  2. Εάν ένα αρχείο τροποποιηθεί με σύνολο χαρακτηριστικών "S", οι αλλαγές ενημερώνονται συγχρονισμένα στο δίσκο.
  3. Ένα αρχείο έχει οριστεί με χαρακτηριστικό «a», μπορεί να είναι ανοιχτό μόνο σε λειτουργία προσάρτησης για εγγραφή.
  4. Ένα αρχείο έχει οριστεί με χαρακτηριστικό «i», δεν μπορεί να τροποποιηθεί (αμετάβλητο). Σημαίνει ότι δεν υπάρχει μετονομασία, δεν δημιουργείται συμβολική σύνδεση, δεν υπάρχει εκτέλεση, δεν υπάρχει δυνατότητα εγγραφής, μόνο ο υπερχρήστης μπορεί να καταργήσει τη ρύθμιση του χαρακτηριστικού.
  5. Ένα αρχείο με το χαρακτηριστικό «j» έχει οριστεί, όλες οι πληροφορίες του ενημερώνονται στο ημερολόγιο ext3 πριν ενημερωθούν στο ίδιο το αρχείο.
  6. Ένα αρχείο έχει οριστεί με χαρακτηριστικό «t», χωρίς συγχώνευση ουράς.
  7. Ένα αρχείο με το χαρακτηριστικό «d», δεν θα είναι πλέον υποψήφιο για δημιουργία αντιγράφων ασφαλείας όταν εκτελείται η διαδικασία ένδειξης σφαλμάτων.
  8. Όταν διαγράφεται ένα αρχείο με χαρακτηριστικό «u», τα δεδομένα του αποθηκεύονται. Αυτό δίνει τη δυνατότητα στον χρήστη να ζητήσει την αναίρεση της διαγραφής του.
Χειριστής
  1. + : Προσθέτει το χαρακτηριστικό στο υπάρχον χαρακτηριστικό των αρχείων.
  2. : Αφαιρεί το χαρακτηριστικό στο υπάρχον χαρακτηριστικό των αρχείων.
  3. = : Διατηρήστε τα υπάρχοντα χαρακτηριστικά που έχουν τα αρχεία.

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

1. Πώς να προσθέσετε χαρακτηριστικά σε αρχεία για προστασία από τη διαγραφή

Για λόγους επίδειξης, χρησιμοποιήσαμε το φάκελο demo και το αρχείο important_file.conf αντίστοιχα. Πριν ρυθμίσετε τα χαρακτηριστικά, βεβαιωθείτε ότι έχετε επιβεβαιώσει ότι τα υπάρχοντα αρχεία έχουν οριστεί χαρακτηριστικά χρησιμοποιώντας την εντολή 'ls -l'. Είδατε τα αποτελέσματα, προς το παρόν δεν έχει οριστεί κανένα χαρακτηριστικό.

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

Για να ορίσουμε το χαρακτηριστικό, χρησιμοποιούμε το σύμβολο + και για την κατάργηση του ορισμού χρησιμοποιούμε το σύμβολο με την εντολή chattr. Λοιπόν, ας ορίσουμε αμετάβλητο bit στα αρχεία με σημαίες +i για να εμποδίσουμε οποιονδήποτε να διαγράψει ένα αρχείο, ακόμη και ένας χρήστης root δεν έχει άδεια να το διαγράψει.

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

Σημείωση: Το αμετάβλητο bit +i μπορεί να οριστεί μόνο από χρήστη superuser (δηλαδή root) ή από χρήστη με δικαιώματα sudo μπορεί να ορίσει .

Αφού ορίσουμε το αμετάβλητο bit, ας επαληθεύσουμε το χαρακτηριστικό με την εντολή «lsattr».

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Τώρα, προσπάθησα να διαγράψετε αναγκαστικά, να μετονομάσετε ή να αλλάξετε τα δικαιώματα, αλλά δεν επιτρέπεται να λέει "Η λειτουργία δεν επιτρέπεται".

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. Πώς να καταργήσετε τον ορισμό του χαρακτηριστικού στα Αρχεία

Στο παραπάνω παράδειγμα, είδαμε πώς να ρυθμίσετε το χαρακτηριστικό ώστε να ασφαλίζει και να αποτρέπει μια τυχαία διαγραφή αρχείων, εδώ σε αυτό το παράδειγμα, θα δούμε πώς να επαναφέρετε τα δικαιώματα (μη καθορισμένο χαρακτηριστικό) και να επιτρέψετε την αλλαγή ή την αλλαγή ενός αρχείου χρησιμοποιώντας < ισχυρή>-ι σημαία.

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

Μετά την επαναφορά των δικαιωμάτων, επαληθεύστε την αμετάβλητη κατάσταση των αρχείων χρησιμοποιώντας την εντολή «lsattr».

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

Βλέπετε στα παραπάνω αποτελέσματα ότι η σημαία «-i» καταργήθηκε, αυτό σημαίνει ότι μπορείτε να αφαιρέσετε με ασφάλεια όλα τα αρχεία και οι φάκελοι που βρίσκονται στον φάκελο tecmint.

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. Πώς να ασφαλίσετε τα αρχεία /etc/passwd και /etc/shadow

Η ρύθμιση του αμετάβλητου χαρακτηριστικού στα αρχεία /etc/passwd ή /etc/shadow, τα καθιστά ασφαλή από τυχαία αφαίρεση ή παραβίαση και επίσης θα απενεργοποιήσει τη δημιουργία λογαριασμού χρήστη.

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

Τώρα προσπαθήστε να δημιουργήσετε έναν νέο χρήστη συστήματος, θα λάβετε ένα μήνυμα σφάλματος που λέει "δεν μπορεί να ανοίξει το /etc/passwd".

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

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

4. Προσθήκη δεδομένων χωρίς τροποποίηση υπαρχόντων δεδομένων σε αρχείο

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

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

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

[root@tecmint tecmint]# chattr -a example.txt

Προσπαθήστε τώρα να αντικαταστήσετε το ήδη υπάρχον περιεχόμενο σε ένα αρχείο example.txt, θα εμφανιστεί το σφάλμα που λέει "Η λειτουργία δεν επιτρέπεται".

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Τώρα προσπαθήστε να προσθέσετε νέο περιεχόμενο σε ένα υπάρχον αρχείο example.txt και επαληθεύστε το.

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Πώς να ασφαλίσετε καταλόγους

Για την ασφάλεια ολόκληρου του καταλόγου και των αρχείων του, χρησιμοποιούμε διακόπτη ‘-R’ (αναδρομικά) με σημαία ‘+i’ μαζί με την πλήρη διαδρομή του φακέλου.

[root@tecmint tecmint]# chattr -R +i myfolder

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

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

Για να καταργήσουμε το δικαίωμα, χρησιμοποιούμε τον ίδιο διακόπτη «-R» (αναδρομικά) με σημαία «-i» μαζί με την πλήρη διαδρομή του φακέλου.

[root@tecmint tecmint]# chattr -R -i myfolder

Αυτό είναι! Για να μάθετε περισσότερα σχετικά με τα χαρακτηριστικά, τις σημαίες και τις επιλογές εντολών chattr, χρησιμοποιήστε τις σελίδες man.