Es gibt ein Problem, wenn ich eine PostgreSQL-Datenbank in einem FreeBSD-Gefängnis anstelle.FreeBSD: jail kann nicht security.jail.sysvipc_allowed setzen
Ich habe einen Artikel über das Problem gefunden. Ich habe es versucht, aber ich hatte kein Glück und ich weiß nicht warum. Es gibt den Link: PostgreSQL in jail.
Ich habe auch gelesen, die PostgreSQL-Dokumentation auf kernel resources:
Wenn durch Aktivierung
sysctl
‚ssecurity.jail.sysvipc_allowed
, laufen Webmastern in verschiedenen Jails in FreeBSD Jails ausgeführt wird, sollen durch unterschiedliche Betriebssystembenutzer ausgeführt werden. Dies verbessert die Sicherheit , weil es verhindert, dass Nicht-Root-Benutzer Shared Memory oder Semaphoren in verschiedenen Jails stören, und es ermöglicht die PostgreSQL IPC Bereinigungscode ordnungsgemäß zu funktionieren. (In FreeBSD 6.0 und später den Bereinigungscode IPC nicht richtig Prozesse in anderen Gefängnissen erkennen, die Ausführung von Webmastern auf dem gleichen Port zu verhindern in verschiedenen Gefängnissen.)
Was ich getan habe:
- I edited
/etc/rc.conf
(auf dem Host-Rechner) und hinzugefügt, um die Liniejail_sysvipc_allow="YES"
- im Gefängnis der Maschine
/etc/sysctl.conf
, füge ich hinzu Liniesecurity.jail.sysvipc_allowed=1
Ich habe den Jail-Computer mehrmals neu gestartet. Ich habe den Host-Rechner nicht neu gestartet und möchte nicht.
Hoffe jemand kann mir eine Lösung oder einen Rat geben. Vielen Dank.
Dies ist die Botschaft, wenn ich das Gefängnis neu starten:
/etc/rc.d/sysctl: WARNING: unable to set security.jail.sysvipc_allowed=1
Oder wenn ich laufe Sysctl manuell (auf Gefängnis)
[email protected]:/home/xxxx# sysctl security.jail.sysvipc_allowed=1
security.jail.sysvipc_allowed: 0
sysctl: security.jail.sysvipc_allowed: Operation not permitted
Freebsd Version: FreeBSD xxxxxxx 9,1-PRERELEASE FreeBSD 9.1-PRERELEASE
postgreSQL-Version: postgresql-server-9.1.4
NachrichtFehler:
[email protected]:/home/xxx # /usr/local/etc/rc.d/postgresql initdb
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.
The database cluster will be initialized with locale C.
The default text search configuration will be set to "english".
creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 10
selecting default shared_buffers ... 400kB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... FATAL: could not create
shared memory segment: Function not implemented
DETAIL: Failed system call was shmget(key=1, size=2146304, 03600).
child process exited with exit code 1
initdb: removing data directory "/usr/local/pgsql/data"
Update:
in Host-Maschine, /etc/sysctl.conf: security.jail.sysvipc_allowed = 1 /etc/rc.conf: jail_sysvipc_allow = "YES"
Im Jail-Server gibt es keine zusätzliche jail_sysvipc-Konfiguration.
Sysctl Wert in Host-Maschine:
[email protected]:/home/xxxx# sysctl -a | grep 'sysvipc'
security.jail.param.allow.sysvipc: 0
security.jail.sysvipc_allowed: 1
ich immer noch die gleiche Fehlermeldung, wie ich vorher bekam.
In weiteren, frage ich mich, ob es etwas mit security.jail.param.allow.sysvipc ist? Weil ich es im Host-Rechner nicht einrichten durfte. (Security.jail.param.allow.sysvipc 0-> 0)
Welche FreeBSD-Version verwenden Sie? Welche PostgreSQL-Version? –
Auch, verursacht dies ein bestimmtes Problem? Möchten Sie nur die Isolation zwischen den Gefängnissen verbessern? Hast du Probleme, Pg in einem Gefängnis zu starten? Was ist der Hintergrund? Fügen Sie die von Ihnen ausgeführten Befehle und die von ihnen erzeugten Fehler genau so ein, wie Sie es für die versuchte Lösung, über die Sie geschrieben haben, getan haben. Bitte aktualisieren Sie Ihre Frage. –
Das gleiche Problem hier, mit FreeBSD-9.1, vor zwei Tagen kompiliert .. – drumfire