Pokoli AIX adminisztrátor - XCOFF file header módosítása

Ilyen is ritkán fordul elő, de néha azért csak szembejön, úgy hogy gondoltam megér egy újabb blog bejegyzést.

Éppen aktuális szituáció: Az audit subsystem által generált $trail file-t nem képes az auditcat rotálni.
Mint kiderült a (/etc/security/audit/bincmds file) subsystem az alábbi parancs futtatása során vérzett el (persze futás közben hibaüzenetet sehova nem akar írni)

test_server@root:/ # /usr/sbin/auditcat -p -o /var/log/eprise/working -r /var/log/eprise/bin1
auditcat: ** out of memory
auditcat: Not enough space

Na akkor nézzük mink is van
- 1 alap bin file-unk, ami rendesen meg is hízott:

test_server@root:/ # ls -l /var/log/eprise/bin1
-rw-rw----    1 root     system    541955176 Apr 11 11:09 /var/log/eprise/bin1

- 1 éppen 0ás méretű working out file-unk

test_server@root:/ # ls -l /var/log/eprise/working
-rw-r-----    1 root     system            0 Apr 11 11:06 /var/log/eprise/working

- A jelek szerint elég memória:

test_server@root:/ # svmon -G |head -2
               size       inuse        free         pin     virtual
memory       950272      565469      384803      216798      475335

A log alapján még valami hely hibába is belefutottunk, de mivel a /var/log/eprise alatt van elég hely, így kicsit tanácstalan vagyok merre is induljak el.. Szóval inkább sorba megyek, és foglalkozok a memória "hibával".

És itt jön a képbe az alábbi kis kérdés: Mire jó az XCOFF header? :)
Egyik pozitívuma, hogy vannak olyan (a headerben meghatározott) entry-k amiket azért lehet piszkálni is.. Az 1ik ilyen a maxdata változó.
Definíció szerint a következőre használható: "Specifies the maximum data size (in bytes) allowed for this executable. If the value is 0, the system default maximum data size is used.". Az alapértelmezett az 256 MB legjobb tudomásom szerint, úgy hogy a kutya egy része tutira itt van elásva, már ha a maxdata nincs beállítva:

test_server@root:/ # od -HAx -N4 -j76 /usr/sbin/auditcat |head -1
0000000  00000000

Vagy ha valaki valami olvashatóbb formára vágyik, akkor:

test_server@root:/ # dump -ov /usr/sbin/auditcat |tail -2
maxSTACK    maxDATA     SNbss       magic       modtype
0x00000000  0x00000000  0x0003      0x010b        1L

Oksa.. Hát akkor állítsuk be ezt egy picit magasabbra, töröljük le a working file-unk, majd nézzük újra mit sikerül lőni a búcsúban:

test_server@root:/ # ls -l /var/log/eprise/working
-rw-r-----    1 root     system            0 Apr 11 11:06 /var/log/eprise/working
test_server@root:/ # rm /var/log/eprise/working
test_server@root:/ # cp -p /usr/sbin/auditcat /usr/sbin/auditcat.bck
test_server@root:/ # ldedit -b maxdata:0x40000000 /usr/sbin/auditcat
ldedit:  File /usr/sbin/auditcat has been updated.
test_server@root:/ # /usr/sbin/auditcat -p -o /var/log/eprise/working -r /var/log/eprise/bin1
/audit: No space left on device
auditcat: ** auditpack failed packing "/var/log/eprise/working"
auditcat: No space left on device

Na ez még mindig nem az az unikornis, amit mi akartunk.. De már közelebb vagyunk, mert legalább már közli velünk, hogy a /audit alatt nincs elég helye..
Nos.. mint kiderült az auditcat ha tetszik, ha nem, használni akarja a /audit alatti helyet, így gyógyírként a számára szükséges helyet meg kell neki adni (éljen a JFS2: Amint megkapta amit akart, és megcsinálja amit én akarok, nyomban el is veszem tőle a "nyalókát"! :DDD )

test_server@root:/ # rm /var/log/eprise/working
test_server@root:/ # df -m /audit
Filesystem    MB blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4         768.00    667.84   14%     6864     5% /
test_server@root:/ # chfs -a size=+512M /
Filesystem size changed to 1572864
test_server@root:/ #  /usr/sbin/auditcat -p -o /var/log/eprise/working -r /var/log/eprise/bin1
test_server@root:/ # du -m /var/log/eprise/working
67.73   /var/log/eprise/working
test_server@root:/ # audit off
auditing disabled
test_server@root:/ # audit shutdown
auditing reset
test_server@root:/ # audit start
test_server@root:/ # chfs -a size=-512M /
Filesystem size changed to 524288

Note: aki esetleg nem akar az ldedit-el játszani, az még próbálkozhat az alábbi módszerrel is:

export LDR_CNTRL=MAXDATA=0x40000000

szerk: A blogot még lusta voltam költöztetni, így még ide került ki ez a bejegyzés :)

Hozzászólások

Bocsi az offért, de te vagy a Huncraft minecraft szerver tulajdonosa? :)

Nem :) Ez a nick még jóval a MineCraft előtt be lett regisztrálva, viszont semmi közöm nincs se a huncraft.hu (starcraft), se a huncraft.net(minecraft) oldalakhoz.
Persze jó pénzért a nick megvehető :DDD
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..