Álljon hát itt néhány kis szösszenet azokból az "URAM ISTEN" pillanatokból, amiket az elmúlt időszakban sikerült megtapasztalnom.
1) - "Van e elég hely a /dev/null alatt?"
Anno volt ez egy elszólása egy némileg távoli kollégámnak, amin sikerült jót vigadni. A dolog apropója annyi volt, hogy az egyik logfile-t átirányítottuk a /dev/null alá (mondván, hogy úgy se használjuk, csak ha debugolni kell) erre ő -féltve, hogy az FS megtelik- megkérdezte, hogy van e elég hely alatta.. Ez anno tényleg vicces volt, viszont amikor az ember ilyet lát, de most már kezdem azt hinni, hogy ilyen felszólalásokat Murphy felhívásnak érzi, hogy megcáfolja őket ; főleg amikor ilyesmi issue jön az emberrel szembe:
Hogy az a jó élet.. WTF?? A /dev/null nem egy character file-nak kéne lennie? Dehogynem.. Akkor miért nem az?? A válasz: Mert valaki letörölte.. Az első jött ment process meg nyomban létre is hozta a file-t egy átirányítás révén ($command 2>/dev/null - szerintem mindenki látott már hasonlót :)), ami aztán lassan meg is telítette a / filerendszert..server@root:/ # df -m / Filesystem MB blocks Free %Used Iused %Iused Mounted on /dev/hd4 192.00 0.00 100% 3694 85% / server@root:/ # du -axk / |sort -rn |head -5 193860 / 109992 /dev 109956 /dev/null 27160 /etc 24272 /lpp server@root:/ # ls -l /dev/null -rw------- 1 root system 112590848 Aug 23 19:55 /dev/null server@root:/ # du -m /dev/null 107.38 /dev/null server@root:/ # file /dev/null /dev/null: commands text
* facepalm * ... Aztán akkor meg a gyógyszer:
Ha azt hiszitek, itt vége a sztorinak tévedtek!! Murphy úgy gondolta, hogy lesz 2. felvonás is:rm /dev/null; mknod /dev/null c 2 2; chmod 666 /dev/null
*sigh* Ez meg mi a lóturó...server@root:/ # ls -l /dev/null* crw-rw-rw- 1 root system 2, 2 Aug 23 15:09 /dev/null -rw-r--r-- 1 root system 20057274 Aug 23 13:54 /dev/null 2>&1
Kis turkálás, majd az oka is megvan: http://www-01.ibm.com/support/docview.wss?uid=nas74d33539b559cc0308625792900533a8f
Igen.. A programozók ilyet is tudnak...
2) - Forkbomb sudo-val
A szituáció a következő: Megpróbálsz belépni a rendszerre, de a belépés sikertelen. HMC-ről látod, hogy a gép megy, de a gépet a virtuális terminálon át se sikerül elérni (a terminál megnyílik, de login screen-t nem kapsz). A gép lényegében vegetál, úgy hogy nincs más mint előre - force restart HMC-ről. A gép vissza is jön az életbe, persze az okot ekkor még nem tudjuk, tehát elkezdünk nézegelődni a logokban, hogy mi a fene van.. Rövid vizsgálódás után a shell közli velem, hogy "unable to fork"..
Őőő... Mi van??? És a gép tényleg ismét elkezdi azt amit előtte is: nem lehet vele semmit se kezdeni..
Újabb újraindítás, svmon-al nézzük, hogy mi zabálja a memóriát, de semmi különöset nem látok.. topas.. detto semmi.. ps lista.... állj..
őő.. ez kicsit sok nem?? Plusz mi a fenétől jöttek ezek elő??? Közben persze telik az idő, és ismét beüt a krach ; újabb restart, de most már sejtem, hogy mi a probléma , valamiért túl sok ksh forkolódik és sok kicsi sokra megy alapon mindegyik lefoglal magának egy kis memóriát, ami azért ekkora léptékben már képes megzabálni a gépet.. Úgy hogy az újraindítás után nyomban proctree-vel kezdem a játékot, s mit látok?server@user:/ # ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Jul 05 - 0:06 /etc/init root 1441896 1 0 Jul 05 - 21:51 /usr/sbin/syncd 60 root 1638488 1 0 Jul 05 - 0:00 /usr/ccs/bin/shlap64 root 1769656 1 0 Jul 05 - 0:00 /usr/lib/errdemon root 2359508 8192170 0 17:57:36 pts/0 0:00 -ksh root 2424966 3145848 0 Jul 05 - 0:00 /usr/sbin/biod 6 root 2556062 3145848 0 Jul 05 - 0:01 /usr/sbin/hostmibd root 2752642 3145848 0 Jul 05 - 0:02 /usr/sbin/syslogd root 2818192 3145848 0 Jul 05 - 1:35 sendmail: accepting connections root 2883696 3145848 0 Jul 05 - 0:02 /usr/sbin/snmpmibd root 2949226 3145848 0 Jul 05 - 0:26 /usr/sbin/aixmibd root 3014786 15335476 0 17:57:32 pts/0 0:00 -ksh root 3080398 4391120 0 17:57:29 pts/0 0:00 -ksh root 3145848 1 0 Jul 05 - 0:00 /usr/sbin/srcmstr root 3211378 3145848 0 Jul 05 - 0:00 /usr/sbin/snmpd root 3342544 4194544 0 17:57:33 pts/0 0:00 -ksh root 3407976 3145848 0 Jul 05 - 0:00 /usr/sbin/portmap root 3473514 3145848 0 Jul 05 - 0:00 /usr/sbin/inetd root 3539066 7864376 0 17:57:32 pts/0 0:00 -ksh root 3604658 10420352 0 17:57:33 pts/0 0:00 -ksh root 3735804 7536670 0 17:57:34 pts/0 0:00 -ksh root 3801268 7340182 0 17:57:32 pts/0 0:00 -ksh root 3866832 9044146 0 17:57:31 pts/0 0:00 -ksh root 3932166 7667938 0 17:57:34 pts/0 0:00 -ksh root 3997750 9764978 0 17:57:30 pts/0 0:00 -ksh root 4063286 4259944 0 17:57:31 pts/0 0:00 -ksh root 4128854 12910818 0 17:57:34 pts/0 0:00 -ksh root 4194544 12320872 0 17:57:33 pts/0 0:00 -ksh root 4259944 8978666 0 17:57:31 pts/0 0:00 -ksh root 4325470 13041670 0 17:57:35 pts/0 0:00 -ksh root 4391120 10223744 0 17:57:29 pts/0 0:00 -ksh root 4456662 3604658 0 17:57:34 pts/0 0:00 -ksh ... root 15335476 11337968 0 17:57:32 pts/0 0:00 -ksh root 15401026 12648676 0 17:57:36 pts/0 0:00 -ksh root 15532266 15204356 0 17:57:37 pts/0 0:00 -ksh server@user:/ # ps -ef |grep -c ksh 245
És innen meg végtelen sorokban ksh hegyek..server@user:/ # ps -ef |grep ksh |tail -1 root 1478878 1466588 0 18:20:10 pts/0 0:00 -ksh server@user:/ # proctree 1478878 434214 /bin/ksh /etc/rc.itm1 389164 -ksh -c /opt/IBM/ITM/bin/itmcmd agent start ul >/dev/null 2>&1 462944 -ksh 385246 -ksh 405732 -ksh 176296 -ksh 442614 -ksh 381148 -ksh 94260 -ksh
Na nézzük mi jön le ebből: Van egy 434214 PID-ű process-ünk ami épp egy ITM6-os indító script, ami meghívja az UL agent startupját, ami meg aztán hegyekben szórja a ksh-s forkokat.. Ahogy a hívásból látjuk egy ksh futtatja magában a /opt/IBM/ITM/bin/itmcmd file-t is (ergo az is script), ami meg init-ből indul..
Scriptet megnéztem - semmi különös - a szokásos hívások vannak csak benne.. Fejvakarás, wattafák.. Majd megpróbálok én is felmenni root szintre sudo-val, és furcsa módon tapasztalom, hogy bizony, shell-t azt nem kapok... Ctrl+C hegyekben, aztán csak kaptam shell-t..
Ez volt az a pillanat amikor már kezdtem azt hinni, hogy a root user-el van csak gond ( a user shellem gond nélkül ment), ergo belekukkantottam a root profile file-jába, és ezt a gyönyörűséget láttam:
ŐŐ.. Álj.. 'sudo su -' a root profiljában???? KI VOLT AZ A MARHA???? Profil átír, 'sudo su -' sor eltávolít, rendszer ujraindít, minden működik szépen.server@root:/ # cat .profile export ENV=.kshrc # Define initial prompt to include hostname export PS1=`hostname`@$USER':$PWD # ' sudo su -
Na de mi is történt? - valamelyik ökör belerakta a root profiljába a 'sudo su -' sort.. Miért is gond ez? Mert a 'sudo su -' a root user alatt kérdés (meg jelszó kérés) nélkül lefut, és egy újabb shell-t nyit, ami meg megint beolvassa a root .profile-ját, ami így megint lefuttatja a 'sudo su -'-t és így tovább amíg a szerver bírta...
Ergo valaki ügyesen fork bomb-á alakította a sudo-t root alatt :)
3) - Az öngyilkos java alkalmazás
Anno még írtam is az egyik szép kis kamikáze kódról, ami sikeresen szembe jött velem.. Most újra elő kell vegyem a témát, mert az amit láttam az nem hogy ennek egy emeltebb formája volt, mintsem egy komplett seppuku :)
Na szóval... Van egy szerver, egy rajta futó Websphere (Web's Fear) alkalmazással rajta, amin belül meg fut egy valaki által írt applikáció jópár éve..
Egyik nap megszólal a vészharang, ügyfél sikoltozik, hogy a hőn szeretett alkalmazása nem működik.. Jó, rendben nézzünk utána.. Kis nyomozás, közös munka az application support group-al, majd kiderül, hogy hiányzik az alkalmazás "magja". Pontosabban ott van, csak nem úgy működik, ahogy kéne (azaz sehogy).
Az elején még nem értettem miről van szó, de aztán lassacsakán megvilágosodtam.. Íme egy röpke összefoglaló arról, hogy mi történt (időrendi sorrendben)
- Jópár éve már, hogy valami fejlesztő palánta megírta az alkalmazás core modulját
- Ez a modul jópár évig gond nélkül, aztán beütött a krach - Az applikáció összeomlott, majd nem volt képes újraindulni.
- Az applikáció HOME könyvtárában lévő core file elemzése után kiderült, hogy az alkalmazás egy verem hiba miatt esett össze, majd a szokásos módon dobott egy java core-t. Mindezt egy olyan applikációs almodul játszotta el, amit közvetlenül a fő mag hívott
- Aki még nem találta ki, annak itt a csattanó - Igen, az applikáció magját 'core'-nak hívták.. Ezt volt a file neve..
Tehát mi is történt: Volt egy core nevű alkalmazásunk, ami szépen futott, míg az egyik almodulja (ugyan abból a HOME-ból futtatva) nem dobott egy coredumpot, ezzel szimplán felülvágva az eredeti 'core' file-t, innentől meg az alkalmazás központi magja nem volt elérhető, ergo persze, hogy nem is indult el ez után.
És egyesek még csodálkoznak, hogy az IT-sok néha "kicsit" idegesek.. El nem tudom képzelni miért..
A /dev/null -ost nekem is sikerult egyszer megjatszani. Szerencsere volt hely boven.
VálaszTörlésKolléga ma mutatta:
VálaszTörlésserver@root:/ # lspv
hdisk0 0006c847b4ffb302 rootvg active
hdisk1 0006c8479b9dd486 rootvg active
hdisk2 0006c847d27b21d7 testvg active
hdisk3 0006c847d27b226c None active
Igen.. None nevű VG... *facepalm*