5 'chattr' naredbi koje važne datoteke čine NEPROMJENJIVIMA (nepromjenjivima) u Linuxu


chattr (Change Attribute) je Linux uslužni program naredbenog retka koji se koristi za postavljanje/poništavanje određenih atributa datoteke u Linux sustavu kako bi se osiguralo slučajno brisanje ili izmjena važnih datoteka i mapa, čak iako ste prijavljeni kao root korisnik.

U Linuxu izvorni datotečni sustavi, tj. ext2, ext3, ext4, btrfs, itd. podržavaju sve oznake, iako sve oznake neće podržavati sve FS-ove koji nisu izvorni. Ne možete izbrisati ili izmijeniti datoteku/mapu nakon što su atributi postavljeni naredbom chattr, iako imate puna dopuštenja za to.

Ovo je vrlo korisno za postavljanje atributa u sistemskim datotekama kao što su passwd i shadow datoteke u kojima se nalaze korisničke informacije.

Sintaksa chattr
chattr [operator] [flags] [filename]
Atributi i zastave

Slijedi popis uobičajenih atributa i povezanih zastavica koje se mogu postaviti/poništiti pomoću naredbe chattr.

  1. Ako se datoteci pristupi s postavljenim atributom 'A', njezin se vremenski zapis ne ažurira.
  2. Ako je datoteka izmijenjena s postavljenim atributom 'S', promjene se ažuriraju sinkrono na disku.
  3. Datoteka je postavljena s atributom 'a', može se otvoriti samo u načinu dodavanja za pisanje.
  4. Datoteka je postavljena s atributom 'i', ne može se mijenjati (nepromjenjiva). Znači da nema preimenovanja, nema stvaranja simboličke veze, nema izvršenja, nema mogućnosti pisanja, samo superkorisnik može poništiti atribut.
  5. Datoteka s atributom 'j' je postavljena, a sve njezine informacije ažurirane su u ext3 dnevnik prije ažuriranja u samu datoteku.
  6. Datoteka je postavljena s atributom 't', bez spajanja repa.
  7. Datoteka s atributom 'd' više neće biti kandidat za sigurnosno kopiranje kada se pokrene proces dumpa.
  8. Kada se datoteka s atributom 'u' izbriše, podaci se spremaju. Ovo omogućuje korisniku da zatraži njegovo poništavanje.
Operater
  1. + : Dodaje atribut postojećem atributu datoteka.
  2. : Uklanja atribut postojećem atributu datoteka.
  3. = : Zadrži postojeće atribute koje datoteke imaju.

Ovdje ćemo demonstrirati neke od primjera naredbi chattr za postavljanje/poništavanje atributa datoteke i mapa.

1. Kako dodati atribute datotekama da biste ih zaštitili od brisanja

U svrhu demonstracije upotrijebili smo mapu demo i datoteku important_file.conf. Prije postavljanja atributa provjerite imaju li postojeće datoteke atribute postavljene pomoću naredbe 'ls -l'. Jeste li vidjeli rezultate, trenutno nema postavljenih atributa.

[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

Za postavljanje atributa koristimo znak +, a za poništavanje koristimo znak s naredbom chattr. Dakle, postavimo nepromjenjivi bit na datoteke sa zastavicama +i kako bismo spriječili bilo koga da izbriše datoteku, čak ni root korisnik nema dozvolu za brisanje.

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

Napomena: nepromjenjivi bit +i može postaviti samo superkorisnik (tj. root) korisnik ili korisnik sa sudo privilegijama može postaviti .

Nakon postavljanja nepromjenjivog bita, provjerimo atribut naredbom ‘lsattr’.

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

Sada sam pokušao nasilno izbrisati, preimenovati ili promijeniti dopuštenja, ali nije dopušteno, piše "Operacija nije dopuštena".

[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. Kako poništiti atribut na datotekama

U gornjem primjeru vidjeli smo kako postaviti atribut za zaštitu i spriječiti slučajno brisanje datoteka, ovdje u ovom primjeru vidjet ćemo kako poništiti (poništiti atribut) dopuštenja i omogućiti da datoteke budu promjenjive ili izmjenjive pomoću < jak>-izastava.

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

Nakon resetiranja dopuštenja, provjerite nepromjenjivi status datoteka pomoću naredbe ‘lsattr’.

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

U gornjim rezultatima vidite da je oznaka '-i' uklonjena, što znači da možete sigurno ukloniti sve datoteke i mape koje se nalaze u mapi tecmint.

[root@tecmint tecmint]# rm -rf *

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

3. Kako zaštititi /etc/passwd i /etc/shadow datoteke

Postavljanje nepromjenjivog atributa na datoteke /etc/passwd ili /etc/shadow, čini ih sigurnima od slučajnog uklanjanja ili diranja, a također će onemogućiti stvaranje korisničkog računa.

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

Sada pokušajte stvoriti novog korisnika sustava, dobit ćete poruku o pogrešci koja kaže 'ne mogu otvoriti /etc/passwd'.

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

Na ovaj način možete postaviti nepromjenjive dozvole za vaše važne datoteke ili konfiguracijske datoteke sustava kako biste spriječili brisanje.

4. Dodajte podatke bez izmjene postojećih podataka u datoteci

Pretpostavimo da samo želite dopustiti svima da samo dodaju podatke u datoteku bez mijenjanja ili modificiranja već unesenih podataka, možete koristiti atribut 'a' na sljedeći način.

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

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

Nakon postavljanja načina dodavanja, datoteka se može otvoriti za pisanje podataka samo u načinu dodavanja. Atribut dodavanja možete poništiti na sljedeći način.

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

Sada pokušajte zamijeniti već postojeći sadržaj u datoteci example.txt, dobit ćete poruku o pogrešci "Operacija nije dopuštena".

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

Sada pokušajte dodati novi sadržaj na postojeću datoteku example.txt i potvrdite je.

[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. Kako osigurati imenike

Kako bismo osigurali cijeli direktorij i njegove datoteke, koristimo '-R' (rekurzivno) prekidač s '+i' zastavicom zajedno s punim putem do mape.

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

Nakon postavljanja rekurzivnog atributa, pokušajte izbrisati mapu i njezine datoteke.

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

Za poništavanje dopuštenja koristimo isti '-R' (rekurzivno) prekidač s '-i' zastavom zajedno s punim putem mape.

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

To je to! Kako biste saznali više o atributima naredbe chattr, zastavicama i opcijama, koristite stranice priručnika.