- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny Duben 1998

Kontrola integrity RPM balíků

Jan "Yenya" Kasprzak, 15. února

V předchozí části tohoto seriálu jsme viděli, jaké informace systém RPM udržuje o jednotlivých balících a jejich souborech. V minulém čísle jsme si dokonce ukazovali, jak tyto údaje ze systému získat. V tomto čísle bude řeč o kontrole integrity balíků - co dělat, chceme-li zjistit, jestli soubory, které se v systému nacházejí, mají vůbec ještě nějaký vztah k RPM balíku, ze kterého byly kdysi nainstalovány.

Soubory a verifikační skripty

K verifikaci RPM balíků slouží přepínač -V, resp. -y nebo též --verify příkazu rpm. Systém RPM umí kontrolovat jednak integritu souborů příslušných RPM balíkům, a jednak správnost konfigurace. První z kontrol se provádí oproti RPM databázi nebo .rpm-balíku samotnému, druhá je prováděna pomocí verifikačního skriptu, který může být součástí RPM balíku. Tam si autor balíku může sám napsat cokoli, co zkontroluje například syntaxi konfiguračních souborů (uživatelé systému UUCP si jistě vzpomenou na program uucheck). Poslední věcí, kterou RPM kontroluje, jsou závislosti mezi balíky.

Kontrola souborů

Následujících devět atributů se může u každého souboru v daném balíku kontrolovat:

  • vlastník souboru
  • skupina souboru
  • přístupová práva
  • kontrolní součet (metoda MD5)
  • velikost souboru
  • hlavní číslo zařízení
  • vedlejší číslo zařízení
  • cíl symbolického linku
  • čas poslední modifikace

Ne všechny atributy jsou pochopitelně smysluplné u všech souborů - například cíl symbolického linku lze zřejmě kontrolovat pouze u souborů typu symbolický link. Taktéž hlavní a vedlejší číslo je platné pouze u speciálních souborů. Naopak MD5 součet je u speciálních souborů k ničemu. Navíc sám autor balíku má možnost zakázat verifikaci určitého atributu pro konkrétní soubor. Například terminálová zařízení mění svého vlastníka (nikoli však skupinu) podle toho, kdo je momentálně na daném terminálu přihlášen. Proto by bylo nemoudré verifikovat vlastníka takového souboru.

Nesouhlasí-li hodnota některého atributu ve skutečnosti a v databázi, RPM o tom vypíše zprávu. Pro každý změněný soubor je ve výstupu jeden řádek. Na řádku je seznam atributů, které nesouhlasí, případně písmeno c, jde-li o konfigurační soubor, a cesta k souboru. Seznam je uveden ve formě osmiznakového řetězce, kde na místě změněných atributů je písmeno, a na místě nezměněných nebo neverifikovaných atributů je tečka. Výstup může vypadat asi takto:

$ rpm -V bash
.M5....T c /etc/bashrc
Na místě teček mohou být tyto atributy (podle pořadí v seznamu):

  • S - velikost
  • M - přístupová práva
  • 5 - MD5-součet
  • D - hlavní a vedlejší číslo zařízení
  • U - vlastník
  • G - skupina
  • T - čas poslední modifikace
Je vidět, že v našem příkladu byl soubor bashrc modifikován. Je změněn jeho obsah (MD5 součet), čas modifikace a přístupová práva. Pokud soubor, který se má verifikovat, vůbec neexistuje, je místo seznamu atributů vypsáno slovo missing. Je-li verifikace balíku úspěšná, RPM nevydává žádný výstup.

Co se má kontrolovat?

Jak jsme již viděli výše, stačí příkazu rpm -V dát jako parametr seznam balíků, které má zkontrolovat. Kromě toho existují tyto další možnosti:

  • -a - kontrola všech balíků, které jsou právě v systému nainstalovány.
  • -f soubor - kontrola balíku, kterému patří daný soubor.
  • -p soubor.rpm - provádí kontrolu balíku nikoli proti RPM databázi, ale proti balíku samotnému. Toto se použije zejména v případě, kdy si nejsme úplně jisti platností RPM databáze nebo když databáze vůbec neexistuje.
  • -g skupina - kontrola všech nainstalovaných balíků, patřících do dané skupiny (například rpm -Vg Shells zkontroluje všechny shelly).

Další možnosti

Kromě výše uvedených přepínačů lze také specifikovat, které části verifikačního procesu se mají provést. Jednotlivé části lze vypnout těmito volbami:

  • --nodeps - neprovádí kontrolu závislostí mezi balíky.
  • --noscripts - nespouští verifikační skript.
  • --nofiles - neprovádí kontrolu

Za zmínku stojí ještě přepínače -v, resp. -vv, které zvyšují podrobnost vypisovaných informací (například zapínají výpis standardního vstupu verifikačního skriptu, resp. i jednotlivé příkazy, tímto skriptem prováděné).

Tento díl našeho seriálu o systému RPM uzavírá první část zaměřenou na běžné uživatele. Od příště se budeme věnovat vlastní tvorbě RPM balíků. *


- předchozí článek - následující článek - obsah - úvodní stránka -