एक अलग उपयोगकर्ता के रूप में अपाचे चलाना


10

जब मैं ps -efHसभी प्रक्रिया को सूचीबद्ध करने के लिए कमांड चलाता हूं , तो मैं अपाचे को चलाने के रूप में देख सकता हूं rootऔर लगता है कि उप-प्रक्रियाएं चल रही हैं www-data। यहाँ प्रस्तुत है:

root     30117     1  0 09:10 ?        00:00:00   /usr/sbin/apache2 -k start
www-data 30119 30117  0 09:10 ?        00:00:00     /usr/sbin/apache2 -k start
www-data 30120 30117  0 09:10 ?        00:00:00     /usr/sbin/apache2 -k start
www-data 30121 30117  0 09:10 ?        00:00:00     /usr/sbin/apache2 -k start

क्या मैं अपाचे और सभी उप-प्रक्रियाओं को अलग-अलग उपयोगकर्ता के रूप में चला सकता हूं apache2d:apache2d? यदि हां, तो कैसे? मैंने कहीं पढ़ा है कि इसके लिए सेटिंग्स मिल सकती हैं /etc/apache2/httpd.confलेकिन वह फ़ाइल खाली लगती है? क्या यह /etc/init.d/apache2स्क्रिप्ट के स्वामी और समूह को बदलकर पूरा किया जा सकता है और फिर उस पर सेटिड फ्लैग को सेट करता है?

जवाबों:


21

अपाचे को रूट के रूप में 80 पोर्ट पर बाँधने के लिए प्रारंभिक रूप से चलाना है। यदि आप इसे रूट के रूप में शुरू में नहीं चलाते हैं, तो आप पोर्ट 80 पर बाँध नहीं सकते। यदि आप 1024 से ऊपर कुछ पोर्ट से बाँधना चाहते हैं, तो आप कर सकते हैं। अन्यथा जड़ की चिंता मत करो। यह मूल अपाचे प्रक्रिया है और कोई अनुरोध नहीं करता है। यह अनुरोधों को संभालने के लिए बच्चे की प्रक्रियाओं को छोड़ देगा और विशेषाधिकार छोड़ देगा।

अपाचे उपयोगकर्ता को बदलने के लिए Userऔर Groupअपने अपाचे विन्यास में पैरामीटर सेट करें ।


ठीक है, डिग्रेस करने के लिए खेद है, लेकिन मैं नोटिस करता हूं कि हाइप्रोक्स हाइप्रोक्सी (रूट के रूप में नहीं) के रूप में चल सकता है, और टीसीपी 80 पोर्ट को बांध सकता है। यह कैसे प्राप्त होता है? कोई आत्मज्ञान?
कीवी जूल

1
यह नहीं है प्रक्रियाएं केवल 1024 से कम के पोर्ट के लिए बाध्य कर सकती हैं यदि इसके पास सुपर उपयोगकर्ता विशेषाधिकार है। तो हैप्रोक्सी या तो रूट और ड्रॉपिंग विशेषाधिकारों (शायद) या सेतु रूट (संभावना नहीं) के रूप में शुरू हो रहा है।
बहमट

आपको इसे रूट के रूप में चलाने की आवश्यकता नहीं है, आपको बस अपने 'अपाचे' उपयोगकर्ता को प्रतिबंधित बंदरगाहों (यानी, 1024 से नीचे वाले) तक पहुंचने की अनुमति देने की आवश्यकता है। यह उत्तर बताता है कि आप ऐसा करने के लिए 'ऑर्टबिन्द' का उपयोग कैसे कर सकते हैं: superuser.com/questions/710253/…
एनिमलहुड

4

@ राममूरत इसे बहुत अच्छी तरह से समझाते हैं, लेकिन मैं थोड़ा और विस्तार जोड़ूंगा।

सामान्य ऑपरेशन के दौरान, रूट-स्वामित्व वाली अपाचे प्रक्रिया पोर्ट 80 पर सुनने और इसके (सुरक्षित रूप से गैर-विशेषाधिकार प्राप्त, www-dataउपयोगकर्ता के रूप में ) बच्चों को अग्रेषित करने के अलावा कोई वास्तविक संचालन नहीं करेगी ।

मास्टर कॉन्फ़िगरेशन फ़ाइल का स्थान संकलन-समय विकल्पों पर निर्भर करता है और प्रति वितरण भिन्न होता है, लेकिन /etc/apache2/apache2.confएक अच्छा शुरुआती अनुमान है।

इसके अलावा, यदि आप एक मल्टी-उपयोगकर्ता वेबहोस्टिंग सिस्टम स्थापित कर रहे हैं, तो आप SuExec और fcgid में देखना चाह सकते हैं ताकि प्रत्येक व्यक्ति वेबहोस्टिंग उपयोगकर्ता की अपाचे प्रक्रिया को उपयोगकर्ता के रूप में चलाता हो - ताकि यदि कोई उपयोगकर्ता अपनी सुरक्षा के साथ लापरवाही बरतता है, तो अन्य उपयोगकर्ता प्रभावित नहीं होंगे।


3

उबंटू में कम से कम, इसके लिए सेटिंग्स में हैं /etc/apache2/envvars। उन लोगों को मोड़ो, फिर अपाचे को पुनरारंभ करें और आप बंद और चल रहे हैं।


धन्यवाद, इससे मुझे मदद मिली! मैं एक ubuntu योनि बॉक्स स्थापित कर रहा हूं, और किसी कारण से /etc/apache2/httpd.conf का उपयोग उपयोगकर्ता और समूह को लोड करने के लिए नहीं किया जा रहा था। envars चाल करने के लिए लगता है!
ग्रेग

2

इसके अलावा, Apache2 ITK MPM देखें

यह असाइन किए गए uid/ के साथ एक अपाचे धागे की तलाश करता है gid, यह आपको उपयोग करते रहना चाहिए mod_php। और नहीं chmod/ chownआदि।


उपकॉटिंग mpm_itkजिसके लिए suexec / fcgid पर एक महत्वपूर्ण सुधार है
Shadur

0

मैक ओएस एक्स:

मेरे लिए क्या काम अपाचे विन्यास फाइल में जा रहा है:

/etc/apache2/httpd.conf

इस फ़ाइल में मैंने उपयोगकर्ता या समूह के लिए खोज की है

और इसमें टकरा गया:

User _www
Group _www

मैंने इसे कभी भी उस उपयोगकर्ता / समूह में बदल दिया है जिसकी मुझे आवश्यकता थी (मेरे मामले में उपयोगकर्ता / समूह के लिए जो मेरी वेब ऐप फ़ाइलों का स्वामी है जिसे आप देख सकते हैं। और यह आप साधारण 'ls -l' का उपयोग करके देख सकते हैं। आदेश)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.