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ý vlivd
- 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 souboryT
- 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.