Hay un problema cuando inicio una base de datos PostgreSQL en una cárcel de FreeBSD.FreeBSD: jail no puede establecer security.jail.sysvipc_allowed
Encontré un artículo sobre el problema. Intenté su consejo, pero no tuve suerte y no sé por qué. Existe el enlace: PostgreSQL in jail.
También leí la documentación de PostgreSQL en kernel resources:
Si se ejecuta en jaulas de FreeBSD, permitiendo
sysctl
'ssecurity.jail.sysvipc_allowed
, administradores de correos que se ejecutan en diferentes cárceles deben ser ejecutados por diferentes usuarios del sistema operativo. Esto mejora la seguridad de porque evita que los usuarios no root interfieran con memoria compartida o semáforos en diferentes cárceles, y permite que el código de limpieza PostgreSQL IPC funcione correctamente. (En FreeBSD 6.0 y después el código de limpieza CIP no detecta correctamente los procesos en otras cárceles, impidiendo el funcionamiento de los administradores de correos en el mismo puerto en diferentes cárceles.)
Lo que he hecho:
- edité
/etc/rc.conf
(en la máquina host) y se añadió la líneajail_sysvipc_allow="YES"
- en la línea de
/etc/sysctl.conf
, agrego la máquina cárcelsecurity.jail.sysvipc_allowed=1
He reiniciado la máquina de la cárcel varias veces. No reinicié la máquina host y no quiero.
Espero que alguien me puede dar una solución o algún consejo. Muchas gracias.
Este es el mensaje que aparece al reiniciar la cárcel:
/etc/rc.d/sysctl: WARNING: unable to set security.jail.sysvipc_allowed=1
O cuando corro sysctl manualmente: (en la cárcel)
[email protected]:/home/xxxx# sysctl security.jail.sysvipc_allowed=1
security.jail.sysvipc_allowed: 0
sysctl: security.jail.sysvipc_allowed: Operation not permitted
versión de FreeBSD: FreeBSD xxxxxxx 9,1-SALIDA PREVISTA FreeBSD 9.1-PRERELEASE
versión de postgreSQL: postgresql-server-9.1.4
MensajeError:
[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"
Actualización:
en máquina anfitrión, /etc/sysctl.conf: security.jail.sysvipc_allowed = 1 /etc/rc.conf: jail_sysvipc_allow = "SÍ"
En el servidor Jail, no hay configuración jail_sysvipc adicional.
valor sysctl en la máquina host:
[email protected]:/home/xxxx# sysctl -a | grep 'sysvipc'
security.jail.param.allow.sysvipc: 0
security.jail.sysvipc_allowed: 1
sigo teniendo el mismo mensaje de error a medida que fui antes.
En adicional, me pregunto si hay algo con security.jail.param.allow.sysvipc? Porque, en máquina host, no pude configurarlo. (Security.jail.param.allow.sysvipc 0-> 0)
¿Qué versión de FreeBSD está utilizando? ¿Qué versión de PostgreSQL? –
Además, ¿esto le está causando un problema específico? ¿Simplemente quieres mejorar el aislamiento entre las cárceles? ¿Estás teniendo problemas para comenzar Pg en una cárcel? ¿Cuál es el fondo? Incluya los comandos que ejecuta y los errores que producen, tal como lo hizo con el intento de solución sobre el que escribió. Por favor actualice su pregunta. –
El mismo problema aquí, con FreeBSD-9.1, compilado hace dos días .. – drumfire