Vyhledávání na webu

5 příkazů 'chattr' pro vytvoření NEZMĚNITELNÝCH (nezměnitelných) důležitých souborů v Linuxu


chattr (Change Attribute) je linuxový nástroj příkazového řádku, který se používá k nastavení/zrušení určitých atributů souboru v systému Linux, aby bylo zajištěno náhodné smazání nebo úprava důležitých souborů a složek, i když jste přihlášeni jako uživatel root.

V nativních souborových systémech Linuxu, tj. ext2, ext3, ext4, btrfs atd. podporuje všechny příznaky, i když všechny příznaky nebudou podporovat všechny nenativní FS. Jakmile jsou atributy nastaveny příkazem chattr, nelze odstranit nebo upravit soubor/složku, i když k tomu máte plná oprávnění.

To je velmi užitečné pro nastavení atributů v systémových souborech, jako jsou soubory passwd a shadow, které obsahují informace o uživateli.

Syntaxe chattr
chattr [operator] [flags] [filename]
Atributy a příznaky

Následuje seznam běžných atributů a souvisejících příznaků, které lze nastavit/zrušit pomocí příkazu chattr.

  1. Pokud se k souboru přistupuje s nastaveným atributem „A“, jeho záznam času se neaktualizuje.
  2. Pokud je soubor upraven pomocí atributu „S“, změny se aktualizují synchronně na disku.
  3. Soubor je nastaven s atributem „a“, lze jej otevřít pouze v režimu připojení pro zápis.
  4. Soubor je nastaven s atributem „i“, nelze jej upravit (neměnný). Znamená žádné přejmenování, žádné vytváření symbolických odkazů, žádné provádění, žádný zapisovatelný, atribut může zrušit pouze superuživatel.
  5. Je nastaven soubor s atributem „j“, všechny jeho informace se aktualizují do žurnálu ext3, než se aktualizují na samotný soubor.
  6. Soubor je nastaven s atributem „t“, žádné slučování na konci.
  7. Soubor s atributem ‚d‘ již nebude možné zálohovat, když bude spuštěn proces výpisu.
  8. Když se odstraní soubor s atributem „u“, jeho data se uloží. To umožňuje uživateli požádat o jeho obnovení.
Operátor
  1. + : Přidá atribut ke stávajícímu atributu souborů.
  2. : Odebere atribut ze stávajícího atributu souborů.
  3. = : Zachovat stávající atributy, které soubory mají.

Zde si ukážeme některé příklady příkazu chattr pro nastavení/zrušení nastavení atributů souboru a složek.

1. Jak přidat atributy k souborům pro zabezpečení před smazáním

Pro demonstrační účely jsme použili složku demo a soubor important_file.conf. Před nastavením atributů se ujistěte, že existující soubory mají nějaké atributy nastavené pomocí příkazu ‚ls -l‘. Viděli jste výsledky, momentálně nejsou nastaveny žádné atributy.

[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

Pro nastavení atributu použijeme znaménko + a pro zrušení nastavení znaménko s příkazem chattr. Nastavme tedy neměnný bit u souborů s příznaky +i, abychom zabránili komukoli ve smazání souboru, dokonce i uživatel root nemá oprávnění jej smazat.

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

Poznámka: Neměnný bit +i může nastavit pouze superuživatel (tj. uživatel root) nebo uživatel s právy sudo, který může nastavit .

Po nastavení neměnného bitu ověřte atribut příkazem ‚lsattr‘.

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

Nyní jsem se pokusil násilně odstranit, přejmenovat nebo změnit oprávnění, ale nebude to povoleno, říká „Operace není povolena“.

[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. Jak zrušit nastavení atributu u souborů

Ve výše uvedeném příkladu jsme viděli, jak nastavit atribut na zabezpečení a zabránit souborům před náhodným smazáním, zde v tomto příkladu uvidíme, jak resetovat (nenastavený atribut) oprávnění a umožňuje změnit nebo upravit soubory pomocí -i příznak.

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

Po resetování oprávnění ověřte neměnný stav souborů pomocí příkazu „lsattr“.

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

Ve výše uvedených výsledcích vidíte, že příznak „-i“ byl odstraněn, což znamená, že můžete bezpečně odstranit všechny soubory a složky uložené ve složce tecmint.

[root@tecmint tecmint]# rm -rf *

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

3. Jak zabezpečit soubory /etc/passwd a /etc/shadow

Nastavení neměnného atributu u souborů /etc/passwd nebo /etc/shadow zajistí jejich zabezpečení před náhodným odstraněním nebo manipulací a také znemožní vytváření uživatelských účtů.

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

Nyní zkuste vytvořit nového uživatele systému, zobrazí se chybová zpráva „nelze otevřít /etc/passwd“.

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

Tímto způsobem můžete nastavit neměnná oprávnění pro vaše důležité soubory nebo systémové konfigurační soubory, abyste zabránili jejich smazání.

4. Připojte data bez úpravy existujících dat v souboru

Předpokládejme, že chcete všem povolit pouze připojení dat k souboru bez změny nebo úpravy již zadaných dat, můžete použít atribut „a“ následovně.

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

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

Po nastavení režimu připojení lze soubor otevřít pro zápis dat pouze v režimu připojení. Atribut append můžete zrušit následovně.

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

Nyní zkuste nahradit již existující obsah v souboru example.txt, zobrazí se chyba „Operace není povolena“.

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

Nyní zkuste připojit nový obsah ke stávajícímu souboru example.txt a ověřte jej.

[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. Jak zabezpečit adresáře

K zabezpečení celého adresáře a jeho souborů používáme přepínač „-R“ (rekurzivně) s příznakem „+i“ spolu s úplnou cestou ke složce.

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

Po nastavení atributu rekurzivně zkuste odstranit složku a její soubory.

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

Pro zrušení nastavení oprávnění používáme stejný přepínač „-R“ (rekurzivně) s příznakem „-i“ spolu s úplnou cestou ke složce.

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

A je to! Chcete-li se dozvědět více o atributech, příznacích a volbách příkazu chattr, použijte manuálové stránky.