Eazydns: Can’t load ‘/tmp/DBI.so’ for module DBI

Wenn beim Ausführen des DNS Administrations Tools eazydns folgende Fehlermeldung angezeigt wird…

server:~# /root/eazydns/eazydns
Can't load '/tmp/DBI.so' for module DBI: /tmp/DBI.so: failed to map segment from shared object: Operation not permitted at PERL2EXE_STORAGE/DynaLoader.pm line 229.
at PERL2EXE_STORAGE/DBI.pm line 250
BEGIN failed--compilation aborted at PERL2EXE_STORAGE/DBI.pm line 250.
Compilation failed in require at /root/eazydns/eazydns line 24.
BEGIN failed--compilation aborted at /root/eazydns/eazydns line 24.

… hat dies zumeist als Ursache, dass die /tmp Partition des Webservers auf noexec gemountet ist und somit keine Scripte im temporären Verzeichnis ausgeführt werden können. Nun erfolgt das Mounten von /tmp auf noexec nicht von ungefähr,

sondern in der Regel zur Absicherung des Webservers und man möchte ja nicht zugunsten der Ausführung von eazydns auf die Sicherheit verzichten… ;-)

Also sollte man mittels eines kleinen Zusatzeintrages beim Cronjob von eazydns das “Um-Mounten” von /tmp gleich miterledigen:

1. /tmp aktivieren:

mount -o remount,loop,rw /dev/tmpMnt /tmp;

2. eazyddns Script ausführen:

/root/eazydns/eazydns;

3. /tmp wieder sichern:

mount -o remount,loop,rw,nosuid,noexec /dev/tmpMnt /tmp;

Und hier der ganze Cron-Eintrag:

*/10 * * * * mount -o remount,loop,rw /dev/tmpMnt /tmp; rm -f /root/eazydns/eazydns.pid; /root/eazydns/eazydns; mount -o remount,loop,rw,nosuid,noexec /dev/tmpMnt /tmp

Das rm -f /root/eazydns/eazydns.pid; vor dem eayzydns Befehl /root/eazydns/eazydns; bewirkt dabei, dass ein ggf. bestehender (sich evtl. “aufgehangen habender” eazydns Prozess beendet wird, bevor der neue gestartet wird, um so weitere Fehlermeldungen zu vermeiden. Dabei ist allerdings auf den Ausführungsrhythmus des Cronjobs zu achten, der bei vielen Zone Einträgen lieber etwas länger gewählt werden sollte, da ansonsten das Script nie korrekt terminieren würde.

Tags: , , , , , ,

Einen Kommentar schreiben