5 ordres de chattr per fer que els fitxers importants siguin IMMUTABLES (incanviables) a Linux


chattr (Canvi d'atribut) és una utilitat de línia d'ordres de Linux que s'utilitza per establir/desactivar determinats atributs a un fitxer del sistema Linux per assegurar la supressió o la modificació accidental de fitxers i carpetes importants, encara que esteu registrat. com a usuari root.

Als sistemes de fitxers nadius de Linux, és a dir, ext2, ext3, ext4, btrfs, etc. admet tots els indicadors, tot i que tots els indicadors no són compatibles amb tots els FS no natius. No es pot suprimir ni modificar el fitxer/carpeta una vegada que els atributs s'han establert amb l'ordre chattr, encara que es tinguin tots els permisos.

Això és molt útil per establir atributs als fitxers del sistema com els fitxers passwd i shadow on conté la informació de l'usuari.

# chattr [operator] [flags] [filename]

A continuació es mostra la llista d'atributs comuns i els indicadors associats que es poden configurar/desactivar mitjançant l'ordre chattr.

  1. Si s'accedeix a un fitxer amb l'atribut A establert, el seu registre d'hora no s'actualitza.
  2. Si un fitxer es modifica amb l'atribut S establert, els canvis s'actualitzen de manera sincrònica al disc.
  3. Un fitxer s'estableix amb l'atribut a, només es pot obrir en mode d'afegit per escriure.
  4. Un fitxer s'estableix amb l'atribut i, no es pot modificar (immutable). Significa que no hi ha canvi de nom, no es crea un enllaç simbòlic, no s'executa, no es pot escriure, només el superusuari pot desactivar l'atribut.
  5. S'estableix un fitxer amb l'atribut 'j', tota la seva informació s'actualitza al diari ext3 abans d'actualitzar-se al fitxer mateix.
  6. Un fitxer s'estableix amb l'atribut 't', sense fusió de cua.
  7. Un fitxer amb l'atribut d no serà més candidat a la còpia de seguretat quan s'executi el procés d'abocament.
  8. Quan s'elimina un fitxer amb l'atribut u, se'n desen les dades. Això permet que l'usuari sol·liciti la seva recuperació.

  1. + : afegeix l'atribut a l'atribut existent dels fitxers.
  2. : elimina l'atribut de l'atribut existent dels fitxers.
  3. = : conserva els atributs existents que tenen els fitxers.

Aquí, mostrarem alguns dels exemples d'ordres de chattr per establir/desactivar atributs a un fitxer i carpetes.

1. Com afegir atributs als fitxers per protegir-los de la supressió

Amb finalitats de demostració, hem utilitzat la carpeta demo i el fitxer important_file.conf respectivament. Abans de configurar els atributs, assegureu-vos de verificar que els fitxers existents tinguin qualsevol atribut establert mitjançant l'ordre 'ls -l'. Heu vist els resultats, actualment no hi ha cap atribut definit.

 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

Per establir l'atribut, fem servir el signe + i per desactivar el signe amb l'ordre chattr. Per tant, establim bits immutables als fitxers amb senyals +i per evitar que ningú esborri un fitxer, fins i tot un usuari root no té permís per suprimir-lo.

 chattr +i demo/
 chattr +i important_file.conf

Nota: el bit immutable +i només el pot establir un usuari superusuari (és a dir, root) o un usuari amb privilegis sudo.

Després de configurar el bit immutable, verifiquem l'atribut amb l'ordre lsattr.

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

Ara, s'ha intentat suprimir amb força, canviar el nom o canviar els permisos, però no es permetrà diu Operació no permesa.

 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. Com desactivar l'atribut dels fitxers

A l'exemple anterior, hem vist com configurar l'atribut per protegir i evitar que els fitxers s'eliminin accidentalment, aquí en aquest exemple, veurem com restablir els permisos (desactivar l'atribut) i permetre que els fitxers es puguin canviar o alterar mitjançant - jo bandera.

 chattr -i demo/ important_file.conf

Després de restablir els permisos, verifiqueu l'estat immutable dels fitxers mitjançant l'ordre lsattr.

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

Veieu als resultats anteriors que la bandera -i s'ha eliminat, això vol dir que podeu eliminar amb seguretat tots els fitxers i les carpetes que es troben a la carpeta tecmint.

 rm -rf *

 ls -l
total 0

3. Com protegir els fitxers /etc/passwd i /etc/shadow

Establir un atribut immutable als fitxers /etc/passwd o /etc/shadow els protegeix d'una eliminació o manipulació accidental i també desactivarà la creació de comptes d'usuari.

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

Ara proveu de crear un nou usuari del sistema, obtindreu un missatge d'error que diu no es pot obrir /etc/passwd.

 useradd tecmint
useradd: cannot open /etc/passwd

D'aquesta manera, podeu establir permisos immutables als vostres fitxers importants o fitxers de configuració del sistema per evitar que se suprimeixin.

4. Afegiu dades sense modificar les dades existents en un fitxer

Suposem que només voleu permetre que tothom només afegiu dades a un fitxer sense canviar ni modificar les dades ja introduïdes, podeu utilitzar l'atribut a de la següent manera.

 chattr +a example.txt

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

Després de configurar el mode d'adjuntar, el fitxer es pot obrir per escriure dades només en el mode d'afegir. Podeu desactivar l'atribut append de la següent manera.

 chattr -a example.txt

Ara proveu de substituir el contingut ja existent en un fitxer example.txt, obtindreu un error dient Operació no permesa.

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

Ara proveu d'afegir contingut nou a un fitxer example.txt existent i verificar-lo.

 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. Com protegir els directoris

Per protegir el directori sencer i els seus fitxers, utilitzem el commutador -R (recursivament) amb el senyalador +i juntament amb el camí complet de la carpeta.

 chattr -R +i myfolder

Després d'establir l'atribut recursivament, intenteu suprimir la carpeta i els seus fitxers.

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

Per desactivar el permís, utilitzem el mateix interruptor -R (recursivament) amb el senyalador -i juntament amb el camí complet de la carpeta.

 chattr -R -i myfolder

Això és! Per obtenir més informació sobre els atributs de l'ordre de chattr, els indicadors i les opcions, utilitzeu les pàgines man.