Chattr: Κάντε ένα αρχείο αθάνατο

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

Πρώτα μερικές διευκρινήσεις. Κάθε αρχείο στο Linux έχει κάποιες ιδιότητες σαν αυτές που βλέπουμε στην εντολή ls σαν -rw-r--r-- και μπορούμε να τις αλλάξουμε με την εντολή chmod. Αυτά θα τα θεωρήσουμε γνωστά, μιας και θα τα βρούμε σε κάθε εισαγωγικό βιβλίο για το UNIX :stuck_out_tongue:. Έχουμε επίσης τις εκτεταμένες ιδιότητες που μπορούμε να τις θέσουμε με την εντολή setfattr, αυτές θα αποτελέσουν ίσως θέμα κάποιου άλλου άρθρου :stuck_out_tongue:. Σε αυτό το άρθρο θα δούμε αυτές τις ιδιότητες που είναι γνωστές σαν inode flags και που έχουν νόημα μόνο σε εγγενή συστήματα αρχείων (όπως extX, reiserfs, xfs, jfs, btrfs, αν και δεν υποστηρίζουν τα πάντα όλλα). Οι ιδιότητες αυτές είναι ιδιοταγείς και δεν θα τις βρούμε σε άλλα συστήματα UNIX :rainbow:.

Ένα αρχείο έχει πολλές ιδιότητες, και τα παραπάνω τα αγνοεί ο περισσότερος κόσμος, ειδικά οι παλιοί. Αυτό λοιπόν είναι ένα προχωρημένο άρθρο, αλλά όχι δύσκολο. Η “απλή” chmod είναι ποιο δύσκολη στην χρήση (αν και υπάρχει γραφικός τρόπος) και την κατανόηση.

Προστατεύοντας ένα αρχείο από διαγραφή

Ας ανοίξουμε ένα τερματικό

touch important_file.txt
echo "Αρνάκι άσπρο και παχύ" > important_file.txt
lsattr important_file.txt
sudo chattr +i  important_file.txt
lsattr important_file.txt

Και αυτό ήταν. Δοκιμάστε τώρα να το σβήσετε. Αλήθεια δοκιμάστε. Περιμένω. Είδαμε δύο εντολές την chattr για να θέσουμε μια εκτεταμένη (inode) ιδιότητα και την εντολή lsattr για να δούμε τι ιδιότητες έχει το αρχείο. Η πρώτη θέλει αυξημένα δικαιώματα ή την χρήση της εντολής ‘sudo’.

Πως μπορούμε να το σβήσουμε; Ευκολάκι :innocent: θα πρέπει πρώτα να αφαιρέσουμε αυτή την ιδιότητα

sudo chattr -i important_file.txt

Αλλά πριν το σβήσεις (πλέον είναι τόσο εύκολο να χαθεί για πάντα από την ανθρωπότητα η ποίηση μας) ας δούμε κάτι άλλο

 sudo chattr +a important_file.txt
 lsattr -l important_file.txt
 echo "Της μάνας του καμάρι" >> important_file.txt
 rm important_file.txt

Τι έχουμε εδώ; Το αρχείο δεν μπορεί να σβηστεί, ούτε να αλλάξει, αλλά μπορούμε να προσθέσουμε (append) πληροφορίες στο τέλος του αρχείου.

Αν θέλουμε να προστατεύσουμε όλο τον φάκελο με τις ποιήσεις μας θα δώσουμε την εντολή σαν

  sudo chattr -R +i my_poetry_folder

Ερώτηση κατανόησης: Ποια η διαφορά ανάμεσα στις εντολές 'chown -w' και 'chattr +i' ;

Άλλες ιδιότητες

Υπάρχουν και κάποιες άλλες ιδιότητες που μπορούν να τεθούν, αλλά είναι αρκετά εξεζητημένες.

| Κωδικός | Ιδιότητα |
|–|–|–|
|c| Αποθήκευση στο δίσκο σε συμπιεσμένη μορφή|
|C| Copy on write, btrfs σε κενό αρχείο |
|d| Μην το κάνεις backup με την dump |
|e| Δεν μπορείς να το αφαιρέσεις, πάμε παρακάτω |
|j| Πάντα χρήση του journal |
|s| Κάνει secure delete |
|S| Πάντα σύγχρονες εγραφές|
|u| Επιτρέπει undelete |

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

Για περισσότερα

Δες τα man pages. lsttar και chattr.

Ερωτήσεις και απαντήσεις

Τι κάνει το [-p project];

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

Κλείνοντας

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

Και ο θάνατος δεν θα έχει ποια καμία εξουσία – Dylan Tomas

7 «Μου αρέσει»