5 chattr-kommandoer til at gøre vigtige filer IMMUTABLE (kan ikke ændres) i Linux


chattr (Change Attribute) er et Linux-kommandolinjeprogram, der bruges til at indstille/frakoble visse attributter til en fil i Linux-systemet for at sikre utilsigtet sletning eller ændring af vigtige filer og mapper, selvom du er logget ind som root-bruger.

I Linux understøtter native filsystemer dvs. ext2, ext3, ext4, btrfs osv. Alle flagene, selvom alle flagene ikke understøtter alle ikke-native FS. Man kan ikke slette eller ændre fil/mappe, når attributter er sæt med chattr-kommando, selvom man har fuld tilladelse til det.

Dette er meget nyttigt at indstille attributter i systemfiler som passwd og skyggefiler, hvor brugerens info er indeholder.

# chattr [operator] [flags] [filename]

Følgende er listen over almindelige attributter og tilknyttede flag kan indstilles/frakobles ved hjælp af chattr-kommandoen.

  1. Hvis der er adgang til en fil med attributtsættet 'A', opdateres dets tidsregistrering ikke.
  2. Hvis en fil ændres med attributtsættet 'S', opdateres ændringerne synkront på disken.
  3. En fil er angivet med 'a' -attributten, kan kun være åben i tilføjelsestilstand til skrivning.
  4. En fil er angivet med attributten 'i', kan ikke ændres (uforanderlig). Betyder ingen omdøbning, ingen oprettelse af et symbolsk link, ingen udførelse, ingen skrivbar, kun superbruger kan frakoble attributten.
  5. En fil med attributten ‘j’ er indstillet, og alle dens oplysninger opdateres til ext3-journal, før de opdateres til selve filen.
  6. En fil er indstillet med 't' -attributten, ingen hale-fletning.
  7. En fil med attributten ‘d’ vil ikke længere være kandidat til backup, når dump-processen køres.
  8. Når en fil med 'u' -attribut slettes, gemmes dens data. Dette gør det muligt for brugeren at bede om, hvordan det slettes.

  1. + : Føjer attributten til den eksisterende attribut for filerne.
  2. - : Fjerner attributten til den eksisterende attribut for filerne.
  3. = : Behold de eksisterende attributter, som filerne har.

Her skal vi demonstrere nogle af chattr-kommandoeksemplerne for at indstille/frakoble attributter til en fil og mapper.

1. Sådan tilføjes attributter til filer for at sikre mod sletning

Til demonstrationsformål har vi brugt henholdsvis mappen demo og filen important_file.conf . Inden du opretter attributter, skal du sørge for at kontrollere, at de eksisterende filer har indstillet attributter ved hjælp af kommandoen 'ls -l'. Så du resultaterne, der er i øjeblikket ingen attribut indstillet.

 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

For at indstille attribut bruger vi + -tegnet, og for at fjerne indstillingen bruger vi tegnet - med chattr-kommandoen. Så lad os indstille uforanderlig bit på filerne med + i flag for at forhindre nogen i at slette en fil, selv en rodbruger har ikke tilladelse til at slette den.

 chattr +i demo/
 chattr +i important_file.conf

Bemærk: Den uforanderlige bit + i kan kun indstilles af superbruger (dvs. root) -bruger eller en bruger med sudo-privilegier, der kan sætte.

Efter at have indstillet uforanderlig bit, lad os kontrollere attributten med kommandoen 'lsattr'.

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

Forsøgte nu at slette kraftigt, omdøbe eller ændre tilladelserne, men det tillades ikke, siger "Operation ikke tilladt".

 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. Sådan frakobles attribut på filer

I ovenstående eksempel har vi set, hvordan man indstiller attribut for at sikre og forhindre filer fra en utilsigtet sletning, her i dette eksempel vil vi se, hvordan man nulstiller (unset attribut) tilladelser og gør det muligt at gøre filer ændrede eller ændrede ved hjælp af - jeg flag.

 chattr -i demo/ important_file.conf

Efter nulstilling af tilladelser skal du kontrollere den uforanderlige status for filer ved hjælp af kommandoen 'lsattr'.

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

Du ser i ovenstående resultater, at '-i' -flaget er fjernet, det betyder, at du sikkert kan fjerne al den fil og mappe, der er i tecmint-mappen.

 rm -rf *

 ls -l
total 0

3. Sådan sikres/etc/passwd og/etc/shadow filer

Indstilling af uforanderlig attribut på filer /etc/passwd eller /etc/shadow gør dem sikre mod utilsigtet fjernelse eller manipulation, og det vil også deaktivere oprettelse af brugerkonti.

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

Prøv nu at oprette en ny systembruger, du får en fejlmeddelelse, der siger 'kan ikke åbne/etc/passwd'.

 useradd tecmint
useradd: cannot open /etc/passwd

På denne måde kan du indstille uforanderlige tilladelser til dine vigtige filer eller systemkonfigurationsfiler for at forhindre sletning.

4. Tilføj data uden at ændre eksisterende data i en fil

Antag, at du kun vil tillade alle at bare tilføje data til en fil uden at ændre eller ændre allerede indtastede data, du kan bruge attributten 'a' som følger.

 chattr +a example.txt

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

Efter indstilling af append-tilstand kan filen kun åbnes til at skrive data i append-mode. Du kan afmarkere tilføjelsesattributten som følger.

 chattr -a example.txt

Prøv nu at erstatte allerede eksisterende indhold på et fileksempel.txt, du får fejlen med at sige 'Drift ikke tilladt'.

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

Prøv nu at tilføje nyt indhold til en eksisterende fileksempel.txt og bekræfte det.

 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. Sådan sikres mapper

For at sikre hele biblioteket og dets filer bruger vi '-R' (rekursivt) switch med '+ i' flag sammen med den fulde sti til mappen.

 chattr -R +i myfolder

Efter at have indstillet rekursiv attribut, skal du prøve at slette mappen og dens filer.

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

For at fjerne tilladelsen bruger vi den samme '-R' (rekursivt) switch med '-i' flag sammen med den fulde sti til mappen.

 chattr -R -i myfolder

Det er det! Hvis du vil vide mere om chattr-kommandoattributter, bruger flag og indstillinger man-siderne.