FreeBSD: jail не может установить безопасность.тюрьма.sysvipc разрешено [закрыто]

есть проблема, когда я init базу данных PostgreSQL в тюрьме FreeBSD.

я нашел статью о проблеме. Я попробовал его совет, но мне не повезло, и я не знаю почему. Есть ссылка: PostgreSQL в тюрьме .

я также прочитал документацию PostgreSQL на ядра ресурсов:

если вы работаете в FreeBSD jails, включив sysctlsecurity.jail.sysvipc_allowed, postmasters работает в отличающийся тюрьмы должны управляться разными пользователями операционной системы. Это улучшает безопасности, потому что он мешает обычным пользователям мешать разделяемой памяти и семафоров в разных тюрьмах, и это позволяет Код очистки PostgreSQL IPC для правильной работы. (В FreeBSD 6.0 и позже код очистки IPC неправильно обнаруживает процессы в другие тюрьмы, препятствующие работе почтмейстеров в том же порту в разных тюрьмах.)

что у меня есть сделано:

  • я отредактировал /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 permitted

FreeBSD версия: ХХХХХХХ во FreeBSD 9.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"

обновление:

в хост-машине, /и т. д./sysctl.конф: безопасность.тюрьма.sysvipc_allowed=1 / etc / rc.conf : jail_sysvipc_allow= "YES"

в Jail server нет дополнительной конфигурации jail_sysvipc.

значение sysctl в главной машине:

   root@xxxxx:/home/xxxx# sysctl -a | grep 'sysvipc'
   security.jail.param.allow.sysvipc: 0
   security.jail.sysvipc_allowed: 1

я все еще получаю то же сообщение об ошибке, что и раньше.

кроме того, мне интересно, есть ли что-нибудь с безопасностью.тюрьма.парам.позволять.для sysvipc? Потому что в host machine мне не разрешили установить его. (безопасность.тюрьма.парам.позволять.sysvipc 0 - > 0)

5 ответов


решение найдено. Следующее действительно работает для меня. На хоста, do:

root@host# jls
   JID  IP Address      Hostname                      Path
     3  -               some.jail                     /usr/jails/somejail

найдите правильный JID, 3 в моем примере. Затем, на хоста вопрос:

jail -m jid=3 allow.sysvipc=1


есть некоторые новые функции для тюрьмы в особой детализации, нам нужно разрешить изменение sysvipc_allowed для каждой тюрьмы поместить это в /etc / rc.conf:

jail_example_parameters="allow.sysvipc=1"

Я нашел проблему после помощи моего товарища по команде.

потому что я использую /etc / jail.conf, я должен добавить строку " разрешить.sysvipc " для включения общей памяти системы.

в хост-машине,

  /etc/sysctl.conf
  security.jail.sysvipc_allowed=1

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

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 вручную хоста.


моей системе требуется моддинг / etc / rc.conf перед перезапуском тюрьмы, иначе он установил бы как хост, так и тюрьму в 0. Я сделал не необходимо установить безопасность.тюрьма.sysvipc_allowed=1 в файле /etc / sysctl.conf.

/etc/rc.conf:
jail_sysvipc_allow="YES"