Cum să utilizați comanda chattr pe Linux
Publicat: 2022-06-28Alături de permisiunile obișnuite de citire, scriere și executare a fișierelor, fișierele Linux au un alt set de atribute care controlează alte caracteristici ale fișierului. Iată cum să le vezi și să le schimbi.
Permisiuni și atribute
În Linux, cine poate accesa un fișier și ce poate face cu acesta este controlat de un set de permisiuni centrat pe utilizator . Indiferent dacă puteți citi conținutul unui fișier, puteți scrie date noi în fișier sau puteți executa un fișier dacă este un script sau un program, totul este guvernat de acel set de permisiuni. Permisiunile sunt aplicate fișierului, dar definesc restricțiile și capabilitățile pentru diferite categorii de utilizatori.
Există permisiuni pentru proprietarul fișierului, pentru grupul fișierului și pentru alții , adică utilizatori care nu se află în primele două categorii. Puteți folosi comanda ls
cu opțiunea -l
(lista lungă) pentru a vedea permisiunile pentru un fișier sau director.
Pentru a schimba permisiunile, utilizați comanda chmod
. Cel puțin, puteți dacă aveți permisiuni de scriere pentru fișier sau dacă sunteți utilizatorul root.
Putem vedea că permisiunile pentru fișiere sunt centrate pe utilizator, deoarece acordă sau elimină permisiuni la nivel de utilizator. În schimb, atributele unui fișier sunt centrate pe sistemul de fișiere. La fel ca permisiunile, acestea sunt setate pe fișier sau director. Dar odată ce sunt setate, sunt aceleași pentru toți utilizatorii.
Atributele sunt o colecție separată de setări de permisiuni. Atributele controlează caracteristicile, cum ar fi imuabilitatea și alte comportamente la nivel de sistem de fișiere. Pentru a vedea atributele unui fișier sau director folosim comanda lsattr
. Pentru a seta atributele folosim comanda chattr
.
Permisiunile și atributele sunt stocate în inoduri . Un inode este o structură de sistem de fișiere care deține informații despre obiectele sistemului de fișiere, cum ar fi fișierele și directoarele. Locația unui fișier pe hard disk, data creării, permisiunile și atributele sale sunt toate stocate în inodul său.
Deoarece sistemele de fișiere diferite au structuri și capacități subiacente diferite, atributele se pot comporta diferit – sau pot fi complet ignorate – de unele sisteme de fișiere. În acest articol, folosim ext4
, care este sistemul de fișiere implicit pentru multe distribuții Linux.
Privind atributele unui fișier
Comenzile chattr
și lsattr
vor fi deja prezente pe computerul dvs., așa că nu este nevoie să instalați nimic.
Pentru a verifica atributele fișierelor din directorul curent, utilizați lsattr
:
lsattr
Liniile întrerupte sunt substituenți pentru atributele care nu sunt setate. Singurul atribut care este setat este atributul e
(extents). Aceasta arată că inodul sistemului de fișiere utilizează – sau va folosi dacă este necesar – extensii pentru a indica toate porțiunile fișierului de pe hard disk.
Dacă fișierul este păstrat într-o secvență adiacentă de blocuri de hard disk, inodul său trebuie să înregistreze doar primul și ultimul bloc folosit pentru a stoca fișierul. Dacă fișierul este fragmentat, inodul trebuie să înregistreze numărul primului și ultimului bloc din fiecare bucată a fișierului. Aceste perechi de numere de blocuri de hard disk se numesc extensii.
Aceasta este lista celor mai frecvent utilizate atribute.
- a : Adăugați numai. Un fișier cu acest atribut poate fi adăugat numai la. Se poate scrie în continuare, dar numai la sfârșitul fișierului. Nu este posibil să suprascrieți niciuna dintre datele existente în fișier.
- c : Comprimat. Fișierul este comprimat automat pe hard disk și decomprimat atunci când este citit. Datele scrise pe fișiere sunt comprimate înainte de a fi scrise pe hard disk.
- R :
atime
actualizări la timp.atime
este o valoare dintr-un inod care înregistrează ultima dată când a fost accesat un fișier. - C : Fără copiere la scriere. Dacă două procese solicită acces la un fișier, li se pot da indicații către același fișier. Li se oferă propria lor copie unică a fișierului doar dacă încearcă să scrie în fișier, făcându-l unic pentru acel proces.
- d : Fără gunoi. Comanda Linux
dump
este folosită pentru a scrie copii ale întregului sistem de fișiere pe mediul de rezervă. Acest atribut face cadump
să ignore fișierul. Este exclus din backup. - D : Actualizări sincrone de directoare. Când acest atribut este activat pentru un director, toate modificările aduse acel director sunt scrise sincron, adică imediat, pe hard disk. Operațiunile de date pot fi stocate în tampon.
- e : Format de extindere. Atributul
e
indică faptul că sistemul de fișiere folosește extensii pentru a mapa locația fișierului pe hard disk. Nu puteți schimba acest lucru cuchattr
. Este o funcție a funcționării sistemului de fișiere. - i : Imuabil. Un fișier imuabil nu poate fi modificat, inclusiv redenumirea și ștergerea. Utilizatorul root este singura persoană care poate seta sau dezactiva acest atribut.
- s : Ștergere sigură. Când un fișier cu acest set de atribute este șters, blocurile de hard disk care conțineau datele fișierului sunt suprascrise cu octeți care conțin zerouri. Rețineți că acest lucru nu este onorat de sistemul de fișiere
ext4
. - S : Actualizări sincrone. Modificările aduse unui fișier cu atributele
S
setate sunt scrise în fișier în mod sincron. - u : Ștergerea unui fișier care are atributul
u
setat determină realizarea unei copii a fișierului. Acest lucru poate fi benefic pentru recuperarea fișierului dacă fișierul a fost eliminat din greșeală.
Modificarea atributelor unui fișier
Comanda chattr
ne permite să schimbăm atributele unui fișier sau director. Putem folosi operatorii +
(set) și -
(unset) pentru a aplica sau elimina un atribut, similar cu comanda și permisiunile chmod
.
Comanda chattr
are, de asemenea, un operator =
(numai set). Aceasta setează atributele unui fișier sau director numai la atributele care sunt specificate în comandă. Adică, toate atributele care nu sunt listate pe linia de comandă sunt nesetate .
Setarea atributului Numai adăugare
Să setăm atributul de numai adăugare pe un fișier text și să vedem cum afectează ceea ce putem face cu fișierul.
sudo chattr +a text-file.txt
Putem verifica pentru a vedea dacă bitul de numai adăugare a fost setat utilizând lsattr
:
lsattr text-file.txt
Litera „ a
” indică faptul că atributul a fost setat. Să încercăm să suprascriem fișierul. Redirecționarea ieșirii către un fișier cu o singură paranteză unghiulară „ >
” înlocuiește tot conținutul din fișier cu ieșirea redirecționată.
Am preîncărcat fișierul text cu un text de substituent lorem ipsum .
cat text-file.txt
Vom redirecționa rezultatul de la ls
în fișier:
ls -l > text-file.txt
sudo ls -l > text-file.txt
Operația nu este permisă, chiar dacă folosim comanda sudo
.
Dacă folosim două paranteze unghiulare „ >>
” pentru a redirecționa ieșirea, aceasta este atașată la datele existente în fișier. Acest lucru ar trebui să fie acceptabil pentru fișierul nostru text numai pentru atașare.
sudo ls -l >> text-file.txt
Ne întoarcem la promptul de comandă fără mesaje de eroare. Să aruncăm o privire în interiorul fișierului pentru a vedea ce s-a întâmplat.
cat text-file.txt
Ieșirea redirecționată de la ls
a fost adăugată la sfârșitul fișierului.
Deși putem adăuga date la fișier, aceasta este singura modificare pe care o putem face. Nu îl putem șterge și nici root.
rm text-file.txt
sudo rm text-file.txt
Setarea atributului imuabil
Dacă doriți să protejați un fișier care nu va avea niciodată date noi adăugate, puteți seta atributul imuabil. Acest lucru previne toate modificările la fișier, inclusiv adăugarea datelor.
sudo chattr +i second-file.txt
lsattr al doilea fișier.txt
Putem vedea „ i
” care indică faptul că atributul imuabil a fost setat. După ce a făcut fișierul nostru imuabil, nici măcar utilizatorul root nu îl poate redenumi ( mv
), îl poate șterge ( rm
) sau îi poate adăuga date.
sudo mv second-file.txt new-name.txt
sudo rm second-file.txt
sudo ls -l >> second-file.txt
Nu vă bazați pe ștergerea securizată pe ext4
După cum am subliniat, unele sisteme de operare nu acceptă toate atributele. Atributul de ștergere securizată nu este onorat de familia ext
de sisteme de fișiere, inclusiv ext4
. Nu vă bazați pe acest lucru pentru ștergerea în siguranță a fișierelor.
Este ușor de observat că acest lucru nu funcționează în ext4
. Vom seta atributul s
(ștergere securizată) pe un fișier text.
sudo chattr +s al treilea fișier.txt
Ceea ce vom face este să aflăm inodul care deține metadatele despre acest fișier. Inodul deține primul bloc de hard disk ocupat de fișier. Fișierul conține un text de substituent lorem ipsum .
Vom citi acel bloc direct de pe hard disk pentru a verifica că citim locația corectă a hard diskului. Vom șterge fișierul și apoi vom citi din nou același bloc greu de scufundare. Dacă atributul de ștergere sigură este respectat, ar trebui să citim octeți zero.
Putem găsi inodul fișierului utilizând comanda hdparm
cu opțiunea --fibmap
(file block map).
sudo hdparm --fibmap third-file.txt
Primul bloc de hard disk este 18100656. Vom folosi comanda dd
pentru a-l citi.
Opțiunile sunt:
- if=/dev/sda : Citiți de pe primul hard disk de pe acest computer.
- bs=512 : Folosiți o dimensiune de bloc de hard disk de 512 octeți.
- skip=18100656 : Omiteți toate blocurile înainte de blocul 18100656. Cu alte cuvinte, începeți să citiți la blocul 18100656.
- count=1 : Citiți un bloc de date.
sudo dd if=/dev/sda bs=512 skip=18100656 count=1
După cum era de așteptat, vedem textul substituent lorem ipsum . Citim blocul corect de pe hard disk.
Acum vom șterge fișierul.
rm al treilea fișier.txt
Dacă citim același bloc de hard disk, putem vedea în continuare datele.
sudo dd if=/dev/sda bs=512 skip=18100656 count=1
Din nou, nu depindeți de asta pentru ștergerea securizată pe ext4
. Există metode mai bune disponibile pentru a șterge fișierele, astfel încât acestea să nu poată fi recuperate.
LEGATE: Cum să ștergeți în siguranță fișiere pe Linux
Util, dar folositi cu prudenta
Setarea atributelor fișierelor le poate face impermeabile la dezastre accidentale. Dacă nu puteți șterge sau suprascrie un fișier, este destul de sigur.
S-ar putea să credeți că ați dori să le aplicați fișierelor de sistem și să faceți instalarea dvs. Linux mai sigură. Dar fișierele de sistem trebuie înlocuite periodic pe măsură ce se emit actualizări sau se aplică actualizări. Din acest motiv, cel mai sigur este să utilizați aceste atribute numai pe fișierele create de dvs.
LEGATE: Cum să vă securizați serverul Linux cu fail2ban