Jak zabránit přepsání souboru

1085__130x130_linux-terminalBě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.

Štítky , , , , .Záložka pro permanentní odkaz.

4 reakce na Jak zabránit přepsání souboru

  1. kamowski říká:

    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

    • Allconius říká:

      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

      • Allconius říká:

        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

        🙂

        • kamowski říká:

          vďaka za doplnenie, takto som si to predstavoval, super 🙂