GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Chattr v Linuxu (Set Immutable Bit)

Chattr (Change Attribute) je linuxový nástroj příkazového řádku, který se používá ke změně atributů souboru. Může nastavit a zrušit nastavení 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.

Takže pomocí příkazu chattr uděláte soubor neměnným. Jinými slovy to znamená, že se používá k zastavení náhodného mazání souborů a adresářů. Nemůžete smazat soubory zabezpečené pomocí atributu chattr, i když máte k souborům plné oprávnění.

To je velmi užitečné v systémových souborech, jako jsou soubory shadow a passwd, které obsahují všechny uživatelské informace a hesla. Tyto atributy lze nastavit pouze pro soubory a adresáře umístěné v souborovém systému ext2, ext3 nebo ext4.

Syntaxe příkazu chattr a použití

Níže je syntaxe příkazu chattr:

       chattr [ -RVf ] [ -v version ] [ mode ] files...

Atributy souboru, které můžeme použít s příkazem chattr:

  • a - soubor lze otevřít pouze v režimu připojení pro zápis.
  • A - záznam času souboru se nezmění. Tím se vyhnete určitému množství diskových I/O u přenosných systémů.
  • c - soubor je automaticky komprimován na disk jádrem. Čtení z tohoto souboru vrátí nekomprimovaná data. Zápis do tohoto souboru zkomprimuje data před jejich uložením na disk.
  • C - soubor nebude podléhat aktualizacím typu copy-on-write. Tento příznak je podporován pouze na souborových systémech, které provádějí kopírování při zápisu. Pokud je v adresáři nastaven příznak 'C', nebude to mít na adresář žádný vliv
  • d - soubor není kandidátem na zálohování, když je spuštěn program dump.
  • D - při změně adresáře se změny zapisují synchronně na disk; toto je ekvivalentní možnosti připojení 'dirsync' aplikované na podmnožinu souborů.
  • i - soubor nelze upravovat, mazat ani přejmenovávat, nelze na tento soubor vytvořit odkaz a do souboru nelze zapisovat žádná data. Tento atribut může nastavit nebo vymazat pouze superuživatel.
  • j - soubor má všechna svá data zapsána do žurnálu ext3 nebo ext4 předtím, než jsou zapsána do samotného souboru,
  • s - pokud je soubor smazán, jeho bloky jsou vynulovány a zapsány zpět na disk.
  • S - pokud je soubor upraven, změny se zapisují synchronně na disk; toto je ekvivalentní možnosti připojení 'synchronizace' použité na podmnožinu souborů.
  • t - soubor nebude mít částečný fragment bloku na konci souboru sloučeného s jinými soubory
  • T - adresář bude považován za vrchol hierarchie adresářů pro účely alokátoru bloků Orlov.
  • u - zajišťuje, že pokud je soubor smazán, jeho obsah se uloží. To umožňuje uživateli požádat o jeho obnovení

1) Jak nastavit atribut souboru (Nastavit neměnný bit)

K nastavení atributu souboru použijeme příkaz chattr s + operátor následovaný názvem atributu.

Podívejte se na příklady, jak nastavit neměnný atribut souboru. Pouze root nebo uživatel s oprávněním sudo může nastavit a odstranit neměnný příznak v souboru.

Soubor s neměnným atributem:

  • Nelze upravit, smazat, přejmenovat
  • Žádný měkký ani pevný odkaz nemůže vytvořit nikdo, včetně uživatele root.
  • Do souboru nelze zapisovat žádná data

Vytvořme prázdný soubor pomocí dotykového příkazu následovně:

$ touch file1

Nyní se podívejme, jak vypsat atributy souboru pomocí lsattr příkaz:

$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
-------------e-- ./file1

Přidejte do souboru nějaký obsah pomocí příkazu echo:

$ echo "Test of i attribute" > file1 
$ cat file1 
Test of i attribute

Nyní můžeme nastavit neměnný atribut pomocí +i na souboru (file1).

$ sudo chattr +i file1
$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
----i--------e-- ./file1

V následujících příkazech se pokusíme připojit, odstranit pomocí normálního uživatele a uživatele sudo (root):

$ echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ sudo echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ rm -f file1 
rm: cannot remove 'file1': Operation not permitted
$ sudo rm -f file1 
rm: cannot remove 'file1': Operation not permitted

Můžeme pozorovat, že především operace nejsou povoleny.

Poznámka: Důležité soubory můžete chránit jako /etc/passwd nebo /etc/shadow , zajistí je před náhodným odstraněním nebo manipulací a také znemožní vytváření uživatelských účtů. Ale když se pokusíte vytvořit nového uživatele systému, zobrazí se chybová zpráva 'nelze otevřít /etc/passwd'. Pokud se pokusíte změnit heslo, budete vyzváni k zadání nového hesla, ale když se budete příště přihlašovat, nové heslo se nebude jevit jako platné, budete muset pro přihlášení použít staré heslo.

2) Jak odstranit atribut (nenastavený) u souborů

K odstranění jakéhokoli atributu ze souboru musíme použít - operátor následovaný názvem atributu.

V následujícím příkladu zrušme nastavení atributu immutable ze souboru (file1).

$ sudo chattr -i file1 
$ lsattr file1
-------------e-- ./file1

Nyní byste měli být schopni provádět všechny běžné operace se souborem.

3) Jak zabezpečit adresáře pomocí atributu 'i'

Pro zabezpečení adresáře musíme nastavit atribut rekurzivně (-R) pomocí + operátor.

Následující příkaz nastaví neměnný bit v adresáři ('linoxide') rekurzivně:

$ sudo chattr -R +i linoxide/ 
$ lsattr -d linoxide
----i--------e-- linoxide/

Chcete-li zrušit nastavení, musíte použít - operátor následovaný i atribut.

$ sudo chattr -R -i linoxide/

4) Připojit data k souboru beze změny existujících dat

Je možné povolit každému, aby pouze připojil data k souboru bez změny nebo úpravy již zadaných dat pomocí a atribut.

To znamená, že můžete přidávat obsah pouze do aktuálního souboru, aniž byste upravovali již existující data.

Následující příklady set přidávají atribut k souboru (file2).

$ sudo chattr +a file2

6) Jak vypsat atributy souborů

Pro výpis aktuálních atributů souborů nebo adresářů musíme použít příkaz lsattr. Následující příkaz vypíše atributy souborů pro všechny soubory a složky v aktuálním adresáři:

$ lsattr 
-------------e-- ./coreutils-8.22-18.el7.x86_64.rpm
-------------e-- ./pac
-------------e-- ./utils
-------------e-- ./linox

Atribut souboru single můžete zkontrolovat pomocí následujícího příkazu:

$ lsattr coreutils-8.22-18.el7.x86_64.rpm 
-------------e-- coreutils-8.22-18.el7.x86_64.rpm

Ke kontrole atributů adresáře použijte -d možnost

$ lsattr -d test
-------------e-- test/

Závěr

Nyní víme, jak můžeme chránit naše soubory a složky pomocí příkazu chattr v linuxu. Doufám, že se vám čtení tohoto návodu líbilo a zanechte prosím své návrhy v sekci komentářů níže. Pro více informací se prosím obraťte na man chattr.


Linux
  1. příkaz chattr v Linuxu s příklady

  2. Příkaz wc pro Linux

  3. Linuxový příkaz grep

  1. 8 Příklady příkazů hlavy v Linuxu

  2. V příkladech příkazů v Linuxu

  3. soubor Příklady příkazů v Linuxu

  1. 8 Příklady příkazů Stat v Linuxu

  2. Linux Tail Command

  3. Linux Touch Command