首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FreeBSD:监狱不能设置security.jail.sysvipc_allowed

FreeBSD:监狱不能设置security.jail.sysvipc_allowed
EN

Stack Overflow用户
提问于 2012-08-10 22:18:53
回答 4查看 13.1K关注 0票数 9

当我在PostgreSQL监狱中插入一个FreeBSD数据库时,会出现一个问题。

我找到了一篇关于这个问题的文章。我尝试了它的建议,但我没有任何运气,我不知道为什么。有一个链接:PostgreSQL在监狱里

我还阅读了关于PostgreSQL的内核资源文档

如果通过启用FreeBSD的sysctlsecurity.jail.sysvipc_allowedsecurity.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

我重新启动了监狱机器好几次。我还没有重新启动主机,也不想重新启动。

希望有人能给我一个解决方案或者一些建议。非常感谢。

这是我重新启动监狱时的信息:

代码语言:javascript
复制
 /etc/rc.d/sysctl: WARNING: unable to set security.jail.sysvipc_allowed=1

或者当我手动运行sysctl时:(在监狱)

代码语言:javascript
复制
 root@xxxxx:/home/xxxx# sysctl security.jail.sysvipc_allowed=1
 security.jail.sysvipc_allowed: 0
 sysctl: security.jail.sysvipc_allowed: Operation not permitted

Freebsd版本: FreeBSD xxxxxxx9.1- FreeBSD 9.1-预发布

postgreSQL版本:postgresql 9.1.4

错误信息:

代码语言:javascript
复制
 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值:

代码语言:javascript
复制
   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)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-14 17:30:26

在队友的帮助下,我发现了这个问题。

因为我使用/etc/jail.conf,所以必须添加一行"allow.sysvipc“来启用系统共享内存。

在主机上,

代码语言:javascript
复制
  /etc/sysctl.conf
  security.jail.sysvipc_allowed=1

  /etc/rc.conf 
  jail_sysvipc_allow="YES" (DO NOT have to do this, remove it) 
票数 3
EN

Stack Overflow用户

发布于 2012-11-15 15:10:07

监狱有一些特殊粒度的新特性,我们需要允许更改每个监狱的sysvipc_allowed,将其放在/etc/rc.conf中:

代码语言:javascript
复制
jail_example_parameters="allow.sysvipc=1"
票数 6
EN

Stack Overflow用户

发布于 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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11909993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档