当我在PostgreSQL监狱中插入一个FreeBSD数据库时,会出现一个问题。
我找到了一篇关于这个问题的文章。我尝试了它的建议,但我没有任何运气,我不知道为什么。有一个链接:PostgreSQL在监狱里。
我还阅读了关于PostgreSQL的内核资源文档
如果通过启用FreeBSD的
sysctl的security.jail.sysvipc_allowed在security.jail.sysvipc_allowed中运行,那么运行在不同监狱中的邮政主程序应该由不同的操作系统用户来运行。这提高了安全性,因为它防止非根用户干扰不同监狱中的共享内存或信号量,并允许PostgreSQL IPC清理代码正常工作。(在FreeBSD 6.0和稍后的IPC清理代码中,不能正确地检测其他监狱中的进程,从而阻止不同监狱中同一端口上的postmasters运行。)
我所做的:
/etc/rc.conf (在主机上)并添加了行jail_sysvipc_allow="YES"/etc/sysctl.conf中,我添加了行security.jail.sysvipc_allowed=1我重新启动了监狱机器好几次。我还没有重新启动主机,也不想重新启动。
希望有人能给我一个解决方案或者一些建议。非常感谢。
这是我重新启动监狱时的信息:
/etc/rc.d/sysctl: WARNING: unable to set security.jail.sysvipc_allowed=1或者当我手动运行sysctl时:(在监狱)
root@xxxxx:/home/xxxx# sysctl security.jail.sysvipc_allowed=1
security.jail.sysvipc_allowed: 0
sysctl: security.jail.sysvipc_allowed: Operation not permittedFreebsd版本: FreeBSD xxxxxxx9.1- FreeBSD 9.1-预发布
postgreSQL版本:postgresql 9.1.4
错误信息:
root@xxxxxx:/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"更新:
在主机中,/etc/sysctl.conf: security.jail.sysvipc_allowed=1 /etc/rc.conf :jail_sysvipc_allow=“是”
在监狱服务器中,没有额外的jail_sysvipc配置。
主机中的sysctl值:
root@xxxxx:/home/xxxx# sysctl -a | grep 'sysvipc'
security.jail.param.allow.sysvipc: 0
security.jail.sysvipc_allowed: 1我仍然得到与以前相同的错误信息。
另外,我想知道security.jail.param.allow.sysvipc是否有什么地方吗?因为,在主机上,我不允许设置它。(security.jail.param.allow.sysvipc 0-> 0)
发布于 2012-08-14 17:30:26
在队友的帮助下,我发现了这个问题。
因为我使用/etc/jail.conf,所以必须添加一行"allow.sysvipc“来启用系统共享内存。
在主机上,
/etc/sysctl.conf
security.jail.sysvipc_allowed=1
/etc/rc.conf
jail_sysvipc_allow="YES" (DO NOT have to do this, remove it) 发布于 2012-11-15 15:10:07
监狱有一些特殊粒度的新特性,我们需要允许更改每个监狱的sysvipc_allowed,将其放在/etc/rc.conf中:
jail_example_parameters="allow.sysvipc=1"发布于 2012-08-12 23:31:28
sysctl security.jail.sysvipc_allowed必须设置在主机上,而不是在监狱中。但是,如果在主机的jail_sysvipc_allow="YES"中设置了rc.conf,那么应该为您设置它,参见/etc/rc.d/jail。
如果启动监狱时,如果security.jail.sysvipc_allowed的值更改为1,则应检查主机。如果不是,您的rc.conf中可能有问题。尝试在主机上手动设置security.jail.sysvipc_allowed。
https://stackoverflow.com/questions/11909993
复制相似问题