madvise() failed: Operation not permitted

Errorsmith

Kompiliertier
Moin!

Ich habe gerade meinen inetd in /etc/rc.conf aktiviert und gestartet Das ganze läuft in einer jail, der einzige freigegebene Dienst ist tftpd. Die jail hat "security.jail.allow_raw_sockets: 1" und "ping" funktioniert auch.

inetd meint dazu nur: madvise() failed: Operation not permitted und tftpd ist nicht erreichbar.

Was soll mir die Fehlermeldung sagen? Eigentlich dachte ich das hätte was mit Speicherallozierung zu tun. Wo ist hier mein Problem...?

Grüße,
errorsmith
 
Laut Manpage bedeutet es:
MADV_PROTECT was specified and the process does not have superuser privileges.
Dein Problem wird wohl darin bestehen, dass du als root einer Jail MADV_PROTECT nicht verwenden darfst, weil MADV_PROTECT doch ein ziemlicher Dampfhammer ist um Ressourcen zu blockieren. Der tftpd wird sich das anmaßen, weil er zum Netboot anderer Systeme nötig ist. Damit ist er ohne einen winzigen Patch wohl nicht in einer Jail nutzbar.
 
Wie winzig ist denn dieser Patch? Kann ich das mit Grundkenntnissen implementieren? Oder gibt es einen anderen Workaround? Und wieso ist MADV_PROTECT zum netboot anderer System nötig? Er soll ja eigentlich nur ein paar Files bereit stellen...

Edit:
Es ist der inetd der den fraglichen Aufruf verwendet. Im Quellcode des tftpd ist er nicht drin.

Edit 2:
Nach kurzem Lesen was MADV tut getestet und festgestellt: Den fraglichen Aufruf auskommentieren und inetd neu zu kompilieren funktioniert. (Von mir aus darf der OOM Killer den inetd killen, der ist nun wirklich nicht essentiell)

Grüße,
errorsmith
 
Zuletzt bearbeitet:
Zurück
Oben