Dauerhaft verstopfte Message Queue
-
messagequeuesepp schrieb:
Also in etwa so geht's leider nur als Root:
wär ja noch schöner wenn da jeder hamplemann rum pfuschen könnte
-
also so gings bei mir über die console
noname:/proc# cat /proc/sys/kernel/msgmnb 16384 noname:/proc# echo 13652 > /proc/sys/kernel/msgmnb noname:/proc# cat /proc/sys/kernel/msgmnb 13652 noname:/proc#
also solltest du /proc/sys/kernel/msgmnb öffnen und dann kannst einfach den wert mit nem write als string rein schreiben? hoffe das ist jetzt nicht zu falsch
lg lolo
-
Hallo und danke nochmal nooblobo,
der Code ist aus einem groesseren zusammenhang herauskopiert, daher der Zeiger auf int. Das ganze findet in einer init() Funktion statt, die die mq_id initialisiert wieder zurueck (oben) verfuegbar machen soll, darum. So aus dem Zusammenhang gerissen macht das keinen Sinn, stimmt.Nja, von der Moeglichkeit ueber /proc habe ich wie oben gesagt, auch schon gelesen. Aber ich dachte es muesse auch eine Moeglichkeit geben als "Owner" der Messagequeue deren Parameter zu veraendern, zumindest wird davon in manchen Quellen gesprochen. Naja, vllt gilt das nicht fuer die max Groesse
Danke nochmal fuer die Geduld.
-
PS:
sudo sh -c "echo 524288 > /proc/sys/kernel/msgmnb"
nja, auch nicht viel besser, aber vllt etwas..
-
messagequeuesepp schrieb:
Aber ich dachte es muesse auch eine Moeglichkeit geben als "Owner" der Messagequeue deren Parameter zu veraendern, zumindest wird davon in manchen Quellen gesprochen.
kannst mal eine angeben? damit ich da mal schauen kann wie die das machen
lg lolo
-
The effective UID of the calling process must match the owner (msg_perm.uid) or creator (msg_perm.cuid) of the message queue, or the caller must be privileged. Appropriate privilege (Linux: the CAP_IPC_RESOURCE capability) is required to raise the msg_qbytes value beyond the system parameter MSGMNB.
Quelle: manpage (e.g. hier: http://linux.die.net/man/2/msgctl (wie oben schon zitiert, ist eigentlich die gleiche Stelle)
Also, anscheinend required Linux nur die CAP_IPC_RESOURCE capability, schon kann man die msg_qbytes beyond MSGMNB raisen und dann workts! Aber wie setzt man die CAP_IPC_RESOURCE? (Haette das vllt gleich fragen sollen)
-
Hallo kann es sein, dass man diese "capability" per #define CAP_IPC_RESOURCE im Code bzw. per -D CAP_IPC_RESOURCE als gcc Flag setzt? Zumindest scheint es so zu gehen..
-
puh keine ahnung? könnt auch sein das es distris gibt die etwas lockerer eingestellt sind?
http://linux.die.net/man/7/capabilities
http://www.takatan.net/lxr/source/include/linux/capability.h?v=2.4.21-47.EL#L175
-
noobLolo schrieb:
puh keine ahnung? könnt auch sein das es distris gibt die etwas lockerer eingestellt sind?
http://linux.die.net/man/7/capabilities
http://www.takatan.net/lxr/source/include/linux/capability.h?v=2.4.21-47.EL#L175Nein, da das nicht von der Distri abhaengt sondern vom Linux (Kernel) selber (wie Du mittlerweile sicher auch weitergelesen hast, ich schreibs nur noch der vollstaendigkeit hin). Man kann ueber die Permissionflags u.a. mit Werkzeugen wie lcap diverse Einzelerlaubnisse geben, aber auch nehmen. Im obigen Sinne macht es sinn, die eigene erstellte Messagequeue auch einstellen zu duerfen, daher ist es moeglich sich diese "Capability" zu geben, was afaik per #define moeglich ist (zu sein scheint).
-
bin gerade dabei mich ein bischen einzulesen, dabei ist mir aufgefallen, das sich die manpage auf linux.die.net ein bischen von der auf kernel.org unterscheidet kann mir das zwar nicht erklären, aber ein
ist es mir wert
http://linux.die.net/man/7/capabilities
http://www.kernel.org/doc/man-pages/online/pages/man7/capabilities.7.htmllg lolo