Mnohokrát je počítač se systémem Linux používán různými uživateli. Existuje tedy šance, že tito uživatelé přistupují ke společné sadě souborů. To otevírá dveře problémům, jako je náhodné smazání nebo úprava důležitých souborů, což byste jako správce rozhodně nechtěli.
Naštěstí existuje příkaz – nazvaný chattr - který byl vyvinut, aby vám pomohl konkrétně v těchto typech scénářů. V tomto tutoriálu budeme diskutovat o tomto nástroji pomocí několika snadno srozumitelných příkladů. Ale než to uděláme, stojí za zmínku, že všechny příklady zde byly testovány na Ubuntu 18.04 LTS a Debianu 10.
Příkaz chattr pro Linux
V zásadě se příkaz chattr používá ke změně atributů souborů v systému souborů Linux. Následuje jeho syntaxe:
chattr [ -RVf ] [ -v version ] [ mode ] files...
A zde je to, co o tom říká manuálová stránka:
chattr changes the file attributes on a Linux file system.
The format of a symbolic mode is +-=[aAcCdDeijsStTu].
The operator '+' causes the selected attributes to be added to the
existing attributes of the files; '-' causes them to be removed; and
'=' causes them to be the only attributes that the files have.
The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write
(C), no dump (d), synchronous directory updates (D), extent format (e),
immutable (i), data journalling (j), secure deletion (s), synchronous
updates (S), no tail-merging (t), top of directory hierarchy (T), and
undeletable (u).
The following attributes are read-only, and may be listed by lsattr(1)
but not modified by chattr: compression error (E), huge file (h),
indexed directory (I), inline data (N), compression raw access (X), and
compressed dirty file (Z).
Not all flags are supported or utilized by all filesystems; refer to
filesystem-specific man pages such as btrfs(5), ext4(5), and xfs(5) for
more filesystem-specific details.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout dobrou představu o tom, jak příkaz chattr funguje.
O1. Jak používat příkaz chattr?
Předpokládejme, že chcete vytvořit soubor pouze pro čtení. Takže vše, co musíte udělat, je spustit příkaz chattr s volbou +i a názvem souboru jako vstupem.
Například:
chattr +i test.txt
Následující snímek obrazovky ukazuje, že žádná další operace se souborem nebyla úspěšná, jakmile se stal pomocí chattr pouze pro čtení.
Poznámka :Jak jste si již všimli, k použití příkazu chattr musíte mít oprávnění root.
O2. Jak odstranit omezení pouze pro čtení uložené chattr?
To je jednoduché - vše, co musíte udělat, je použít volbu -i místo +i. Například:
chattr -i test.txt
Takže můžete vidět, že faktor pouze pro čtení byl odstraněn pomocí volby -i.
O3. Jak udělit oprávnění pouze k připojení k souboru?
Někdy možná nebudete chtít úplné omezení souboru. Chci tím říct, že možná budete chtít uživatelům poskytnout přístup k souboru pouze s připojením, aby bylo možné přidávat nové informace, ale stávající informace nelze smazat ani upravit. To je také možné pomocí chattr přes volbu +a.
chattr +a test.txt
Takže můžete vidět, že jsme mohli připojit k souboru nyní, ale nemohli upravit existující informace v souboru, stejně jako odstranit soubor. Chcete-li toto chování zvrátit, použijte volbu -a.
chattr -a test.txt
Q4. Jak použít omezení pomocí chattr na všechny soubory v adresáři?
To lze provést pomocí parametru -R, který umožňuje rekurzivně měnit atributy adresářů a jejich obsah. Pokud například chcete vytvořit všechny soubory v test-dir adresář pouze pro čtení, použijte příkaz chattr následujícím způsobem:
chattr -R +i ./test-dir/
Následující snímek obrazovky ukazuje, že omezení pouze pro čtení bylo úspěšně aplikováno na všechny soubory v adresáři.
O5. Jak zkontrolovat atributy chattr použité u souborů?
Až dosud jsme zkoušeli provádět operace, jako je úprava souboru nebo jeho odstranění, abychom zkontrolovali, zda byl atribut chattr úspěšně použit. Existuje však samostatný příkaz, který vám umožní snadno zjistit, zda byly atributy použity nebo ne. Dotyčný příkaz je lsattr .
lsattr [FILENAME]
Například následující snímek obrazovky ukazuje výstup lsattr, který jasně naznačuje, že atribut 'i' byl použit na všechny soubory v adresáři.
Jen pro opětovné potvrzení, zde je výstup po použití volby -i.
Takže na výše uvedeném snímku obrazovky můžete vidět, že atribut pouze pro čtení byl ze všech souborů odstraněn.
Závěr
Pravděpodobně budete souhlasit s tím, že chattr je nezbytný nástroj příkazového řádku, pokud jste správce systému nebo obecně spravujete uživatele na počítači se systémem Linux. Efektivní používání příkazu vám může ušetřit spoustu potíží. Tento článek by vám měl stačit, abyste s příkazem začali. Až si procvičíte příklady, o kterých jsme zde diskutovali, přejděte na manuálovou stránku nástroje, kde se o něm dozvíte více.