nem létező fájl megnyitási kísérlet loggolása

Fórumok

Sziasztok!

Adott egy parancssorban futó nagy, összetett programrendszer.
Bizonyos fájlok neveit megváltoztattuk a fejlesztés során.

A kérdés: hogy lehet azt figyelni, hogy a régi fájlnevekre történik-e megnyitási kísérlet?

Magyarán ha valahol közvetlenül be lenne drótozva egy fájlnév, amit megváltoztattunk, és így már nem létezik, valahogy a Linux képes ezt loggolni, hogy nem létező fájlra történt megnyitási kísérlet?

A fájlnevek néha kiértékelt kifejezésekből, string konkatenációkból vagy adatbázis tartalomból állnak elő, vagyis nem annyira egyszerű a dolog, hogy rákeresek a régi nevekre és már meg is van a hely, esetleg még használják.

köszönöm!
dio

Hozzászólások

Hat, egy EPERM vagy egy ENOENT tipusu hiba az annyira gyakori hogy nem valoszinu hogy ezt barmi ku"lo"n loggolna... Szvsz egy LD_PRELOAD alapon levo" kis shared object-et behuzne'k, ami az open()-re ra'kattan es ha az -1 ertekkel te'r vissza akkor loggolja a parame'tereit.

Jaja, ez jo leiras, ilyesmire gondoltam.

A file-t normalis esetben mindig egy program fogja megnyitni. Ha ezen program inditasa elott behuzol egy LD_PRELOAD-ot, akkor azt tudod figyelni. Hogy globalisan hogyan lehet engedelyezni az LD_PRELOAD-nak megfelelo funkcionalitast az jo kerdes, talan az /etc/ld.so.conf-ban be lehet allitani. De ezt nem nagyon javallanam, inkabb csak a ce'l-program kornyezete'ben kapcsolnam be eztet.

...Ha ezen program inditasa elott behuzol egy LD_PRELOAD-ot...

Az a helyzet hogy hálózatba van kötve kb húsz gép, amin állandóan futó szerverek adatokat cserélnek és programokat futtatnak - nem tudom biztosan, hogy ki lesz a fájleléréssel próbálkozó program, ezért gondoltam rá, hogy az operációs rendszer oldaláról keresnék megoldást.

Szia, az strace-t már néztem - lehet hogy én értettem félre a leírását, de az egy konkrét program megfigyelésére szolgál, amennyire megértettem - itt pedig nem létezik a fájl, és nem tudom biztosan hogy honnan jöhet a hívás.

Amit figyelni kellene: jön-e futtatási vagy olvasási kérés olyan fájlnévre, ami már nem létezik?

Szia, egy nagy, több gépen futó összetett kommunikációs rendszerről van szó, nem tudom pontosan hogy honnan jöhet kérés egy fájl elérésére.

az ltrace egy adott parancsot futtat, és figyel meg, de én pont azt nem tudom hogy ki próbálhat elérni egy már nem létező fájlt.

Merő kíváncsiságból: ez mennyivel jobb, mint az auditd?
Ami leírást találtam róla, ez csak egy kernel kiegészítés, amihez még jócskán kell dolgozni, hogy megtaláld, a megnyitni próbált, nem létező fájlokat. Az audit logjából meg percek alatt kiderül mindenféle programozás nélkül is. (végső esetben ausearch-t használva)

Függőségként nem szerepelt, ha jól láttam. :)
Persze ettől még lehet.
Csak azon törtem a fejem, hogy vajon mi gond lehet az audittal, hogy szinte sehol sem hallani róla, hogy használnák.
Pedig egy elég kellemes kis eszköz, ha a rendszerben való matatásokat akarjuk nyomon követni. (akár könyvtárak, fájlok stb. hozzáféréseit, akár pl. rendszerhívásokat)

Esetleg felraksz egy auditd-t és...

auditctl -aexit,always -F exit=-2 -F arch=b64 -Sopen
Ebből kiindulva nagyjából be tudod lőni, mi kell neked (azt hiszem, elég csak a megcélzott könyvtárral kiegészíteni)

Egy dolgot nem tudok: milyen hatása lehet a performanciára.