5 'chattr'-kommandoer for å gjøre viktige filer UMENDBARE (uforanderlige) i Linux


chattr (Change Attribute) er et kommandolinje-Linux-verktøy som brukes til å sette/avstille visse attributter til en fil i Linux-systemet for å sikre utilsiktet sletting eller endring av viktige filer og mapper, selv om du er logget inn som root-bruker.

I Linux-innfødte filsystemer, dvs. ext2, ext3, ext4, btrfs, etc. støtter alle flaggene, selv om alle flaggene ikke støtter alle ikke-native FS. Man kan ikke slette eller endre fil/mappe når attributter er satt med chattr-kommandoen, selv om man har fulle tillatelser på den.

Dette er veldig nyttig for å angi attributter i systemfiler som passwd og shadow-filer der brukerens informasjon inneholder.

Syntaks for chattr
chattr [operator] [flags] [filename]
Attributter og flagg

Følgende er listen over vanlige attributter og tilknyttede flagg som kan settes inn/av ved hjelp av chattr-kommandoen.

  1. Hvis en fil åpnes med «A»-attributtet, oppdateres ikke tidsregistreringen.
  2. Hvis en fil er endret med «S»-attributtet satt, er endringene oppdateringer synkront på disken.
  3. En fil er satt med «a»-attributt, kan bare åpnes i tilleggsmodus for skriving.
  4. En fil er satt med «i»-attributtet, kan ikke endres (uforanderlig). Betyr ingen omdøping, ingen symbolsk lenkeoppretting, ingen utførelse, ingen skrivbar, bare superbruker kan deaktivere attributtet.
  5. En fil med «j»-attributtet er satt, all informasjonen oppdateres til ext3-journalen før den oppdateres til selve filen.
  6. En fil er satt med «t»-attributtet, ingen halesammenslåing.
  7. En fil med attributtet "d", vil ikke lenger være kandidat for sikkerhetskopiering når dumpprosessen kjøres.
  8. Når en fil har «u»-attributtet slettes, lagres dataene. Dette gjør det mulig for brukeren å be om å angre slettingen.
Operatør
  1. + : Legger til attributtet til det eksisterende attributtet til filene.
  2. : Fjerner attributtet til det eksisterende attributtet til filene.
  3. = : Behold de eksisterende attributtene som filene har.

Her skal vi demonstrere noen av chattr-kommandoeksemplene for å sette/deaktivere attributter til en fil og mapper.

1. Hvordan legge til attributter på filer for å sikre mot sletting

For demonstrasjonsformål har vi brukt mappen demo og filen important_file.conf henholdsvis. Før du setter opp attributter, sørg for å verifisere at de eksisterende filene har noen attributter satt ved hjelp av 'ls -l'-kommandoen. Så du resultatene, for øyeblikket er ingen attributter angitt.

[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

For å angi attributtet bruker vi +-tegnet og for å deaktivere bruker vi -tegnet med chattr-kommandoen. Så la oss sette uforanderlig bit på filene med +i-flagg for å forhindre at noen sletter en fil, selv en root-bruker har ikke tillatelse til å slette den.

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

Merk: Den uforanderlige biten +i kan bare settes av superbruker (dvs. rot)-bruker eller en bruker med sudo-rettigheter kan angi .

Etter å ha angitt uforanderlig bit, la oss verifisere attributtet med kommandoen 'lsattr'.

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

Nå, prøvde å slette kraftig, gi nytt navn eller endre tillatelsene, men det vil ikke tillatt sier "Operasjon ikke tillatt".

[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. Hvordan deaktiverer attributt på filer

I eksemplet ovenfor har vi sett hvordan du setter attributter for å sikre og forhindre filer fra en utilsiktet sletting, her i dette eksemplet vil vi se hvordan du tilbakestiller (ikke innstilt attributt) tillatelser og lar en fil endres eller endres med -i flagg.

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

Etter å ha tilbakestilt tillatelsene, verifiser den uforanderlige statusen til filene ved å bruke «lsattr»-kommandoen.

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

Du ser i resultatene ovenfor at «-i»-flagget fjernet, det betyr at du trygt kan fjerne alle filene og mappene som ligger i tecmint-mappen.

[root@tecmint tecmint]# rm -rf *

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

3. Hvordan sikre /etc/passwd- og /etc/shadow-filer

Å sette uforanderlig attributt på filene /etc/passwd eller /etc/shadow, gjør dem sikre mot utilsiktet fjerning eller manipulering, og det vil også deaktivere opprettelse av brukerkonto.

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

Prøv nå å opprette en ny systembruker, du vil få feilmelding som sier 'kan ikke åpne /etc/passwd'.

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

På denne måten kan du angi uforanderlige tillatelser på viktige filer eller systemkonfigurasjonsfiler for å forhindre sletting.

4. Legg til data uten å endre eksisterende data på en fil

Anta at du bare vil la alle bare legge til data på en fil uten å endre eller modifisere allerede innlagte data, du kan bruke «a»-attributtet som følger.

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

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

Etter innstilling av tilleggsmodus, kan filen åpnes for å skrive data kun i tilleggsmodus. Du kan deaktivere append-attributtet som følger.

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

Prøv nå å erstatte allerede eksisterende innhold på en fil example.txt, du vil få en feilmelding som sier «Operasjon ikke tillatt».

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

Prøv nå å legge til nytt innhold på en eksisterende fil example.txt og bekreft det.

[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. Hvordan sikre kataloger

For å sikre hele katalogen og dens filer bruker vi "-R" (rekursivt) bryter med "+i"-flagget sammen med hele banen til mappen.

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

Etter å ha angitt rekursivt attributt, prøv å slette mappen og dens filer.

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

For å deaktivere tillatelsen bruker vi den samme '-R' (rekursivt) bryteren med '-i'-flagget sammen med hele banen til mappen.

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

Det er det! For å vite mer om chattr-kommandoattributter, flagg og alternativer, bruk man-sidene.