FreeBSDjailでPostgreSQLデータベースを初期化すると問題が発生します。
問題についての記事を見つけました。私はそのアドバイスを試しましたが、運がなかったので、理由がわかりません。リンクがあります:刑務所内のPostgreSQL。
カーネルリソースに関するPostgreSQLのドキュメントも読みました。
を有効にしてFreeBSDjailで実行している場合
sysctl
、security.jail.sysvipc_allowed
異なるjailで実行されているポストマスターは、異なるオペレーティングシステムユーザーによって実行される必要があります。これにより、root以外のユーザーが異なるjail内の共有メモリやセマフォに干渉するのを防ぎ、PostgreSQLIPCクリーンアップコードが正しく機能するようになるため、セキュリティが向上します。(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を手動で実行する場合:( jailで)
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 xxxxxxx 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE
postgreSQLバージョン:postgresql-server-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 = "YES"
Jailサーバーでは、追加の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)