2012-08-10 38 views
9

एक समस्या है जब मैं एक फ्रीबीएसडी जेल में PostgreSQL डेटाबेस init।फ्रीबीएसडी: जेल सुरक्षा सेट नहीं कर सकता है। Jail.sysvipc_allowed

मुझे समस्या के बारे में एक लेख मिला। मैंने इसकी सलाह की कोशिश की लेकिन मुझे कोई भाग्य नहीं मिला और मुझे नहीं पता कि क्यों। लिंक है: PostgreSQL in jail। सक्षम करने से

तो FreeBSD जेलों में चल रहे sysctl के security.jail.sysvipc_allowed, अलग जेलों में चल रहे पोस्टमास्टर अलग ऑपरेटिंग सिस्टम के उपयोगकर्ताओं द्वारा चलाए जाने चाहिए:

मैं भी kernel resources पर PostgreSQL दस्तावेज़ पढ़ें। इससे सुरक्षा में सुधार होता है क्योंकि यह गैर-रूट उपयोगकर्ताओं को अलग-अलग जेलों में साझा स्मृति या सेमफोरों के साथ हस्तक्षेप करने से रोकता है, और यह पोस्टग्रेएसक्यूएल आईपीसी क्लीनअप कोड को ठीक से काम करने की अनुमति देता है। (FreeBSD 6.0 और बाद में भारतीय दंड संहिता सफाई कोड को ठीक से, अन्य जेलों में प्रक्रियाओं पता नहीं लगा पाया विभिन्न जेलों में ही बंदरगाह पर पोस्टमास्टर के संचालन को रोकने में।)

मैंने क्या किया है:

  • मैं (होस्ट मशीन पर) /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 चलाएँ: (जेल पर)

[email protected]:/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-प्री-रिलीज़ फ्रीबीएसडी 9.1-PRERELEASE

postgreSQL संस्करण: postgresql-server-9.1.4

त्रुटि संदेश:

[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" 

अद्यतन:

मेजबान मशीन में

, /etc/sysctl.conf: security.jail.sysvipc_allowed = 1 /etc/rc.conf: jail_sysvipc_allow = "हाँ"

जेल सर्वर में, कोई अतिरिक्त jail_sysvipc कॉन्फ़िगरेशन नहीं है।मेजबान मशीन में

sysctl मूल्य:

[email protected]:/home/xxxx# sysctl -a | grep 'sysvipc' 
    security.jail.param.allow.sysvipc: 0 
    security.jail.sysvipc_allowed: 1 

मैं अभी भी एक ही त्रुटि संदेश मिलता है के रूप में मैं पहले मिला है।

अतिरिक्त में, मैं सोच रहा हूं कि सुरक्षा.jail.param.allow.sysvipc के साथ कुछ भी है या नहीं? क्योंकि, होस्ट मशीन में, मुझे इसे सेट करने की अनुमति नहीं थी। (0-> 0 security.jail.param.allow.sysvipc)

+0

आप किस फ्रीबीएसडी संस्करण का उपयोग कर रहे हैं? कौन सी PostgreSQL संस्करण? –

+0

इसके अलावा, क्या यह आपको एक विशिष्ट समस्या का कारण बन रहा है? क्या आप सिर्फ अंतर-जेल अलगाव सुधारना चाहते हैं? क्या आपको जेल में पीजी शुरू करने में समस्याएं हैं? पृष्ठभूमि क्या है? आपके द्वारा चलाए गए आदेशों और आपके द्वारा उत्पन्न त्रुटियों को शामिल करें, जैसे आपके द्वारा लिखे गए प्रयास किए गए समाधान के लिए। कृपया अपना प्रश्न अपडेट करें। –

+0

फ्रीबीएसडी-9.1 के साथ, वही समस्या दो दिन पहले संकलित .. – drumfire

उत्तर

3

मुझे अपने टीम के साथी की मदद के बाद समस्या मिली।

क्योंकि मैं /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) 
2

sysctl security.jail.sysvipc_allowed जेल में नहीं मेजबान पर स्थापित किया जाना है। लेकिन यदि आप होस्ट के rc.conf में jail_sysvipc_allow="YES" सेट करते हैं, तो इसे आपके लिए सेट करना चाहिए, /etc/rc.d/jail देखें।

यदि आप जेल शुरू करते हैं तो security.jail.sysvipc_allowed का मान 1 में बदल जाता है तो आपको होस्ट पर जांच करनी चाहिए। यदि नहीं, तो आपके rc.conf में शायद कुछ गलत है। होस्ट पर security.jail.sysvipc_allowed मैन्युअल रूप से सेट करने का प्रयास करें।

17

समाधान मिल गया। निम्नलिखित मेरे लिए काम करता है। मेजबान पर, कार्य करें:

[email protected]# jls 
    JID IP Address  Hostname      Path 
    3 -    some.jail      /usr/jails/somejail 

मेरे उदाहरण में सही JID, 3 का पता लगाएं। फिर, मेजबान, इस मुद्दे पर:

jail -m jid=3 allow.sysvipc=1

6

वहाँ विशेष विस्तृत रूप से जेल के लिए कुछ नई सुविधाओं हैं, हम परिवर्तन /etc/rc.conf में रखते प्रत्येक जेल के लिए अनुमति देते हैं sysvipc_allowed की जरूरत है:

jail_example_parameters="allow.sysvipc=1" 
0

जेल को पुन: प्रारंभ, अन्यथा यह 0. मैंने किया नहीं जरूरत के दोनों मेजबान और जेल स्थापित करेगा से पहले मेरे प्रणाली की आवश्यकता modding /etc/rc.conf security.jail.sysvipc_allowed सेट करने के लिए = 1 में/etc/sysctl.conf।

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