Během vaší práce se vám i v Linux Mintu může stát, že budete potřebovat ochránit pro vás důležité soubory před jejich přepsáním, odstraněním nebo pozměněním. Nebo budete chtít zabránit automatickému přepsání určitých konfiguračních souborů daným programem. Po změně vlastnictví nebo oprávnění k souborům pomocí příkazů chown nebo chmod už existuje v Linuxu jen jediný způsob, jak se s touto situací vypořádat. Není to ideální řešení, neboť nelze zabránit změně souborů pomocí oprávnění root. Tento druhý způsob má název příkaz chattr.
Linuxový příkaz chattr umožňuje i zrušení standardních atributů u oprávnění k souboru (čtení, zápis, spouštění). Související příkaz je lsattr, který zobrazuje nastavené atributy u souboru. Atributy souborů chattr a lsattr byly původně podporovány pouze souborovými systémy EXT (EXT2/3/4), nyní už jsou k dispozici i v mnoha dalších nativních linuxových souborových systémech, jako je např. XFS, Btrfs, ReiserFS atd..
V dnešním malém tutoriálu si ukážeme, jak správně používat příkaz chattr tak, aby nebylo možné daný soubor v Linux Mintu jakkoliv měnit.
Příkazy chattr a lsattr jsou součástí balíčku e2fsprogs, který je již nainstalován ve všech moderních linuxových distribucích, tedy i v Linux Mintu.
Základní syntaxe příkazu chattr je následující:
Příkaz terminálu: |
---|
chattr [-RVf] [operátor][atribut(y)] soubory… |
Operátorem může být „+“ (přidá zvolené atributy do seznamu atributů), „-“ (vymaže atributy ze seznamu atributů), nebo „=“ (vynutí pouze vybrané atributy).
Dostupné atributy jsou následující:
- a: Pouze přidat.
- A: Neaktualizovat atime (soubor s přístupem k času).
- c: Automatická komprese při zápisu na disk.
- C: Vypne kopírování při zápisu.
- i: Nezměnitelný – imutable
- S: Synchronní aktualizace
- s: Bezpečné smazání
- D: Synchronní aktualizace adresáře
- d: Bez skladování – koš
- j: Žurnálování dat
- u: Nesmazatelný
Poznámka: Uživatel root nemůže změnit či zapisovat do souboru označeného atributem „i“, ale může tento atribut nastavit i odebrat.
Atribut Nezměnitelný
Má-li být vámi vybraný soubor nezměnitelný, musíte přidat k souboru atribut „Nezměnitelný“. Chcete-li například ochránit proti zápisu soubor /etc/passwd, zadejte v terminálu následující příkaz:
Příkaz terminálu: |
---|
sudo chattr +i /etc/passwd |
Všimněte si, že musíte použít oprávnění root k nastavení nebo odstranění atributu „Nezměnitelný“. Nyní si ověřte, zda byl atribut „Nezměnitelný“ úspěšně přidán do souboru.
Příkaz terminálu: |
---|
lsattr /etc/passwd |
Jakmile je soubor nastaven jako nezměnitelný, tak jej nemůže změnit žádný uživatel. Dokonce ani uživatel s oprávněním root nemůže upravovat, odstranit, přepsat, přesunout nebo přejmenovat tento soubor. Pokud chcete opět se souborem manipulovat, budete muset zrušit atribut Nezměnitelný, a to pomocí následujícího příkazu v terminálu:
Příkaz terminálu: |
---|
sudo chattr -i /etc/passwd |
Atribut Pouze přidat
Další užitečnou vlastností je atribut „Pouze přidat“, který dovoluje souboru jen přidávat data. Nelze jej přepsat ani smazat. Tento atribut může být užitečný, pokud chcete, aby se zabránilo náhodnému vymazání dat ze souboru.
Podobně jako u atributu Nezměnitelný, můžete zadat u souboru atribut „Pouze přidat“ takto:
Příkaz terminálu: |
---|
sudo chattr +a /var/log/syslog |
Všimněte si, že při kopírování souborů s atributy Nezměnitelný nebo Pouze přidat do jiného souboru nezůstanou tyto atributy zachovány u nově vytvořeného souboru.
Závěrem
V dnešním článku jsme si opět dokázali, jakou sílu má příkazový řádek. Pomocí příkazů chattr a lsattr si nyní můžete přidávat či odebírat další atributy u souborů tak, aby se zabránilo (náhodné či jiné) manipulaci s nimi. Jen vás chci upozornit, že nelze plně spoléhat na příkaz chattr jako na bezpečnostní prvek, právě kvůli snadné změně atributu nezměnitelnosti. Jednou z možností, jak toto řešit je omezení dostupnosti samotného příkazu chattr nebo omezení vlastnosti kernelu CAP_LINUX_IMMUTABLE.
Více informací o příkazu chattr a jeho atributů naleznete např. na Wikipedii.
príkaz: sudo chattr +a mi akosi nefunguje 🙁
touch ~/documents/textfile.txt
sudo chattr +a ~/documents/textfile.txt
geany ~/documents/textfile.txt
do súboru síce viem zapísať ale pri Ctrl+S my hlási chybu:
Errror saving file
Chyba pri otváraní súboru ….. Operácia nie je povolená
The file on disk may now be truncated
inak tento príkaz by bodol, napr. ak mám zoznam sw, ktorý inštalujem po inšt. os a nechcem oň prísť ale zároveň chcem mať možnosť doň pridávať ďalšie položky
teda ak som dobre pochopil funkciu tohoto príkazu
Ahoj, protože na to běžné editory nefungují, musíš přes příkazovou řádku:
touch textfile.txt
sudo chattr +a textfile.txt
cat >> textfile.txt
tento text se ulozi v souboru (a uložit přes ctrl+d)
cat textfile.txt (zobrazí obsah souboru)
tento text se ulozi v souboru
další řádky přidáváš přes ten cat:
jouda@jouda-VirtualBox ~ $ cat >> knedlik
Výzva na knedlík kolik knedlíku knedlí o knedlících
jouda@jouda-VirtualBox ~ $ cat >> knedlik
Další knedlící knedlí na knedlích
a zobrazení:
jouda@jouda-VirtualBox ~ $ cat knedlik
Výzva na knedlík kolik knedlíku knedlí o knedlících
Další knedlící knedlí na knedlích
🙂
vďaka za doplnenie, takto som si to predstavoval, super 🙂