CLI - fájlvédelem

Egy véletlen fájltörlés az egyik legbosszantóbb eset, hiszen ha nincs mentésünk, akkor örökre elveszett. Bár a modernebb „felhasználóbarát” grafikus terjesztések használnak „lomtárat”, de ez csak egy ideiglenes megoldás.

Az sem túl kellemes, ha van egy jól beállított config fájlod és egy frissítés, vagy öntevékeny program azt felülírja.

Az is bosszantó, ha egy sablont használsz és elfelejted a szerkesztett változatot más névvel menteni és a kedvenc sablonodból törölgetheted ki a szerkesztéseket.

Ha ezek bosszantanak, vagy zavarnak, akkor olvass tovább!

Több megoldás is létezik, én az alapparancsokat használó parancssoros megoldást mutatom be.

Ez a

chattr

parancs. Ez nem tesz mást, mint valamilyen tulajdonságot rendel a fájlhoz. Sok ilyen lehetőség van, amiről a man oldalakon tájékozódhatsz. Tedd is meg!

Fontos, hogy csak olyant változtass meg, vagy állítsd át, amiről konkrétan tudod, hogy mit fog csinálni!

Mi most csak egy attribútummal foglalkozunk, ami megfelel a célunknak.

A leírás azt mondja, hogy:

Az 'i' attribútummal rendelkező fájl nem módosítható: nem törölhető vagy átnevezhető, erre a fájlra semmilyen hivatkozás nem hozható létre, és a fájlba nem lehet adatokat írni. Csak a root felhatalmazó vagy a CAP_LINUX_IMMUTABLE képességgel rendelkező folyamat állíthatja be, vagy törölheti ezt az attribútumot.

Azaz emelt jog kell és gyakorlatilag immunitássá tesszük a fájlt minden változtatásra. Olvashatjuk, másolhatjuk, de nem tudunk bele írni és nem tudjuk törölni, átnevezni. Ez az ami nekünk most kell.

chattr +i vedeni_akart_fajl.kit

Ez megváltoztatja a fájl attribútumát "abszolút védetté". Ha a fájlattribútum immúnis, még a root felhasználók sem törölhetik a fájlt. A fájlt senki sem változtathatja meg. A fájl törléséhez (vagy módosításához) meg kell változtatni a fájlattribútumot újra.

chattr -i módosítani_akart_fajl.kit

Nyilván ezt is root-ként.

Aki megtette, mit az elején javasoltam (olvasgasd a man-t) annak nem lesz új a következő sem. Nyilván sok esetben nem egy fájt akarunk védeni, hanem egy teljes könyvtárat. Ezt at „-R” kapcsolóval tehetjük meg:

chattr -R +i /home/username/könyvtár

Így már biztonságban van az összes fájl. Ezután sem a könyvtár, sem a benne lévő fájlok nem törölhetők mindaddig, amíg a nem állítjuk vissza a tulajdonságokat.

A fenti paranccsal legyünk óvatosak, hiszen vannak olyan fájlok, melyeket a rendszer folyamatosan ír, így nem lenne túl jó ezeket immúnissá tenni. Vissza tudjuk állítani egy pillanat alatt, de...

A chattr parancs lehetővé teszi a helyettesítő karakterek használatát is. Hasonló eredményeket érhetünk el azáltal, hogy a védett fájlokat tartalmazó könyvtárban kiadjuk a következő parancsot:

chattr +i *. *

Ezzel a könyvtár összes fájlját immunizálja, így nem lehet törölni. De nyilván bármely megszokott és a fájlműveleteknél használatos helyettesítő megoldásokat is használhatjuk.

Az attribútumok lekérdezhetők az

lsattr

paranccsal. Így mindig tudjuk, hogy milyen tulajdonságot rendeltünk a fájlhoz.

Ami fontos: a sok-sok attribútum közül csak eggyel foglalkoztunk. Illetve – de ez egyértelmű – egyik megoldás sem véd meg a formázással járó veszteségtől, nem helyettesíti az adatmentést.

Talán jó ötlet az adatmentésünket immúnissá tenni a véletlen módosítás ellen.

Ami fontos: eltérő programok eltérően reagálnak az immunitásra. Egy sima szövegfájlon próbálgattam ki a lehetőséget. Ha geany-al nyitottam meg, akkor szerkeszthettem, de nem engedte menteni a fájlt, csak „mentés másképp”, de ha ugyanezt LibreWriter-rel nyitottam meg, akkor már azt jelezte, hogy csak olvasható és szerkeszteni nem engedi, és menteni kellett előbb másképp. Azaz mindenképp megmaradt az eredeti fájl, védetten a belepiszkálástól.

Ennyi!

Az eredeti bejegyzés a blogomban jelent meg (a blog látogatása ajánlott, mert a következő időben nem mindig lesz időm ide is átrakni a cikkeket))