5 ukazov chattr, da pomembne datoteke postanejo nespremenljive (nespremenljive) v Linuxu


chattr (Spremeni atribut) je pripomoček za ukazno vrstico Linux, ki se uporablja za nastavitev/razveljavitev določenih atributov datoteke v sistemu Linux, da se zagotovi nenamerno brisanje ali spreminjanje pomembnih datotek in map, čeprav ste prijavljeni kot korenski uporabnik.

V izvornih datotečnih sistemih Linux, tj. Ext2, ext3, ext4, btrfs itd., Podpira vse zastavice, čeprav vse zastavice ne bodo podprte za vse tuje FS. Datoteke/mape ni mogoče izbrisati ali spremeniti, ko so atributi nabori z ukazom chattr, čeprav ima za to vsa dovoljenja.

To je zelo koristno za nastavitev atributov v sistemskih datotekah, kot so datoteke passwd in shadow, v katerih so informacije o uporabniku.

# chattr [operator] [flags] [filename]

Sledi seznam pogostih atributov in pripadajoče zastave lahko nastavite/izključite z ukazom chattr.

  1. Če do datoteke dostopate z naborom atributov „A“, se njen časovni zapis ne posodobi.
  2. Če je datoteka spremenjena z nastavljenim atributom ‘S’, se spremembe na disku sinhrono posodobijo.
  3. Datoteka je nastavljena z atributom ‘a’, za pisanje jo je mogoče odpreti samo v načinu dodajanja.
  4. Datoteka je nastavljena z atributom 'i', je ni mogoče spremeniti (nespremenljiva). Pomeni brez preimenovanja, brez ustvarjanja simbolnih povezav, brez izvedbe, brez pisanja, samo super uporabnik lahko odstrani atribut.
  5. Nastavljena je datoteka z atributom ‘j’, vse njene informacije pa se posodobijo v dnevnik ext3, preden se posodobijo v samo datoteko.
  6. Datoteka je nastavljena z atributom ‘t’, brez spajanja repa.
  7. Datoteka z atributom "d" ne bo več kandidat za varnostno kopijo, ko se zažene postopek izpisa.
  8. Ko se v datoteki izbriše atribut ‘u’, se njeni podatki shranijo. To uporabniku omogoča, da zahteva njegovo izbris.

  1. + : doda atribut obstoječemu atributu datotek.
  2. - : Odstrani atribut obstoječemu atributu datotek.
  3. = : obdržite obstoječe atribute, ki jih imajo datoteke.

Tukaj bomo prikazali nekaj primerov ukaza chattr za nastavitev/razveljavitev atributov v datoteki in mapah.

1. Kako dodati atribute datotekam, da jih zaščitimo pred brisanjem

Za predstavitev smo uporabili mapo demo in datoteko important_file.conf . Pred nastavitvijo atributov preverite, ali so obstoječe datoteke z ukazom ls -l nastavljene na katere koli atribute. Ali ste videli rezultate, trenutno ni nastavljen noben atribut.

 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

Za nastavitev atributa uporabimo znak +, za ukinitev pa z ukazom chattr. Torej, nastavimo nespremenljiv bit na datotekah z zastavicami + i , da preprečimo nikomur brisanje datoteke, niti korenski uporabnik nima dovoljenja za njeno brisanje.

 chattr +i demo/
 chattr +i important_file.conf

Opomba: Nespremenljivi bit + i lahko nastavi samo uporabnik superuser (tj. Root) ali uporabnik s privilegiji sudo, ki ga lahko nastavi.

Po nastavitvi nespremenljivega bita preverimo atribut z ukazom lsattr.

 lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Zdaj poskusite na silo izbrisati, preimenovati ali spremeniti dovoljenja, vendar ne bo dovoljeno, piše »Operacija ni dovoljena«.

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

2. Kako razveljaviti atribut v datotekah

V zgornjem primeru smo videli, kako nastavimo atribut za zaščito in preprečitev naključnega brisanja datotek, tukaj v tem primeru bomo videli, kako ponastaviti (razveljaviti atribut) dovoljenja in omogoča, da datoteke spremenimo ali spremenimo z uporabo - i zastavico.

 chattr -i demo/ important_file.conf

Po ponastavitvi dovoljenj z ukazom lsattr preverite nespremenljivo stanje datotek.

 lsattr
---------------- ./demo
---------------- ./important_file.conf

V zgornjih rezultatih vidite, da je bila zastavica ‘-i’ odstranjena, kar pomeni, da lahko varno odstranite vso datoteko in mapo, ki se nahajajo v mapi tecmint.

 rm -rf *

 ls -l
total 0

3. Kako zavarovati datoteke/etc/passwd in/etc/shadow

Če nastavite nespremenljiv atribut na datotekah /etc/passwd ali /etc/shadow , jih zaščitite pred nenamernim odstranjevanjem ali poseganjem in onemogočite ustvarjanje uporabniškega računa.

 chattr +i /etc/passwd
 chattr +i /etc/shadow

Zdaj poskusite ustvariti novega sistemskega uporabnika, prikazalo se bo sporočilo o napaki z besedo "ne morem odpreti/etc/passwd".

 useradd tecmint
useradd: cannot open /etc/passwd

Na ta način lahko nastavite nespremenljiva dovoljenja za pomembne datoteke ali sistemske konfiguracijske datoteke, da preprečite njihovo brisanje.

4. Dodaj podatke brez spreminjanja obstoječih podatkov v datoteki

Recimo, da želite vsem omogočiti samo dodajanje podatkov v datoteko, ne da bi spremenili ali spremenili že vnesene podatke, lahko uporabite atribut ‘a’, kot sledi.

 chattr +a example.txt

 lsattr example.txt
-----a---------- example.txt

Po nastavitvi načina dodajanja lahko datoteko odprete za zapisovanje podatkov samo v načinu dodajanja. Atribut za dodajanje lahko odstranite na naslednji način.

 chattr -a example.txt

Zdaj poskusite nadomestiti že obstoječo vsebino v datoteki example.txt, prišlo bo do napake z besedo "Operacija ni dovoljena".

 echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Zdaj poskusite dodati novo vsebino obstoječi datoteki example.txt in jo preveriti.

 echo "replace contain on file." >> example.txt
 cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Kako zavarovati imenike

Za zaščito celotnega imenika in njegovih datotek uporabljamo stikalo '-R' (rekurzivno) z zastavico '+ i' skupaj s polno potjo mape.

 chattr -R +i myfolder

Po nastavitvi rekurzivnega atributa poskusite izbrisati mapo in njene datoteke.

 rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

Za razveljavitev dovoljenja uporabimo isto stikalo '-R' (rekurzivno) z zastavico '-i' skupaj s polno potjo mape.

 chattr -R -i myfolder

To je to! Če želite izvedeti več o atributih, zastavicah in možnostih ukaza chattr, uporabite strani z navodili.