Apache tomcat के लिए उपयोगकर्ताओं की पहुँच अनुमति के लिए सर्वोत्तम अभ्यास


22

मेरे पास विभिन्न डेवलपर्स द्वारा साझा किया जा रहा लिनक्स बॉक्स है। वे अपाचे टॉमकट में अपनी युद्ध फाइलों को साझा करना चाहते हैं जो साझा स्थान (/ ऑप्ट / टॉमकैट) में हैं।

चूंकि उनके पास sudo एक्सेस नहीं है, इसलिए मुझे tomcat निर्देशिका के लिए फ़ोल्डर की अनुमति बदलनी होगी।

के तहत निर्देशिका संरचना /opt/tomcatहै -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

उपरोक्त स्थिति में सर्वोत्तम अभ्यास क्या हैं - उपयोगकर्ता के लिए सबसे उपयुक्त पहुँच अनुमति? समय के लिए, मैंने 777 से वेबपेज और लॉग में अनुमति बदल दी है।

धन्यवाद

जवाबों:


32

मैं इसे इस तरह से करता हूं:

हम tomcat उपयोगकर्ता को tomcat के फ़ोल्डर के स्वामी के रूप में रखते हैं:

# chown -R tomcat:tomcat /opt/tomcat

उपयोगकर्ता टॉमकैट के विन्यास को संशोधित नहीं कर सकते हैं :

# chmod -R g+r /opt/tomcat/conf

उपयोगकर्ता अन्य फ़ोल्डरों को संशोधित कर सकते हैं:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

नई फ़ाइलों के लिए स्टिकी-बिट को सक्रिय करें अनुमतियाँ परिभाषित करें:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

अंत में, हम tomcat समूह को जोड़ते हैं जो हम उन उपयोगकर्ताओं को चाहते हैं जो tomcat का उपयोग कर सकते हैं:

# usermod -a -G tomcat MIUSER

4
यदि -a टैग के बिना किया जाता है, तो आप उपयोगकर्ता को टॉमकैट समूह में जोड़ देंगे, लेकिन MIUSER को उन सभी अन्य समूहों से हटा दें जो वे हैं (इसका मतलब यह नहीं है कि अधिक sudo समूह)। मुझे सिर्फ अपने सर्वर पर मुख्य समूह पर अपने समूहों को पुनर्प्राप्त करने के लिए जल्दी से कार्य करना था, उन्हें एक पुराने सत्र से पुनर्प्राप्त करना जहां मैं अभी भी उन समूहों को प्राप्त करता हूं। इस उत्तर को पढ़ने वाले अन्य उपयोगकर्ताओं को चेतावनी का एक शब्द।
एक्सोरन जूल

मैंने प्रतिक्रिया के लिए विकल्प जोड़ा है। धन्यवाद
इंट्रोपीड्रो जू

टॉमकैट को टॉमकैट उपयोगकर्ता के रूप में कैसे शुरू किया जाए? खदान को बहरे के रूप में शुरू किया गया है और अब यह जड़ के रूप में चलता है।
स्टीफन

1
हैलो स्टीफन, उबंटू में, टॉमकैट एक टॉमकैट उपयोगकर्ता के साथ निष्पादित कर रहा है और यह फ़ाइल में है / etc / default / tomcat8 चर TOMCAT8_USER और TOMCAT8_GROUP के साथ। दूसरों के लिनक्स में मैं नहीं जानता।
इंट्रोपीड्रो जू

+sउपयोगकर्ता / समूह आईडी सेट नहीं है ? मैन पेज कहता +tहै चिपचिपा सा है।
बैमपिन

13

Non-Tomcat settingsटोमाकट की सुरक्षा का अनुभाग इस विषय पर उपयोगी जानकारी प्रदान करता है। यहाँ देखें:

टॉम्कट को रूट उपयोगकर्ता के तहत नहीं चलाया जाना चाहिए। टॉमकैट प्रक्रिया के लिए एक समर्पित उपयोगकर्ता बनाएं और उस उपयोगकर्ता को ऑपरेटिंग सिस्टम के लिए न्यूनतम आवश्यक अनुमतियाँ प्रदान करें। उदाहरण के लिए, टॉमकैट उपयोगकर्ता का उपयोग करके दूरस्थ रूप से लॉग इन करना संभव नहीं होना चाहिए।

फ़ाइल अनुमतियाँ भी उपयुक्त रूप से प्रतिबंधित होनी चाहिए। ASF में टॉमकैट के उदाहरणों को लेते हुए एक उदाहरण के रूप में (जहां ऑटो-तैनाती अक्षम है और वेब अनुप्रयोगों को विस्फोट निर्देशिकाओं के रूप में तैनात किया गया है), मानक कॉन्फ़िगरेशन में समूह टॉमकैट के साथ रूट द्वारा स्वामित्व वाली सभी टॉमकैट फाइलें हैं और जबकि मालिक को पढ़ने / लिखने के विशेषाधिकार हैं , समूह केवल पढ़ा है और दुनिया के पास कोई अनुमति नहीं है। अपवाद लॉग, अस्थायी और कार्य निर्देशिका हैं जो रूट के बजाय टॉमकैट उपयोगकर्ता के स्वामित्व में हैं । इसका मतलब यह है कि भले ही कोई हमलावर टॉमकैट प्रक्रिया से समझौता करता है, वे टॉमकैट कॉन्फ़िगरेशन को बदल नहीं सकते हैं, नए वेब एप्लिकेशन को तैनात कर सकते हैं या मौजूदा वेब एप्लिकेशन को संशोधित कर सकते हैं। इन अनुमतियों को बनाए रखने के लिए टॉमकैट प्रक्रिया 007 के एक umask के साथ चलती है।


मुझे आश्चर्य है कि यदि वर्णित दृष्टिकोण को न केवल टॉमकैट में बल्कि अन्य सेवाओं के साथ (डेटाबेस, रिवर्स प्रॉक्सी, आदि) अपनाया जा सकता है। क्या आपको लगता है कि यह संभव / बुद्धिमान है?
पाओलो

1

आपको कम से कम विशेषाधिकार के सिद्धांत का पालन ​​करने की आवश्यकता है । सर्वर (शायद www-data, लेकिन आपको जांचने की आवश्यकता होगी) को अधिकांश फ़ाइलों को पढ़ने में सक्षम होना चाहिए (सभी कहते हैं) और लॉग में ही लिखें। वेब डेवलपर्स को यह लिखने की अनुमति है कि उन्हें कहाँ ज़रूरत है। निर्देशिकाओं पर चिपचिपा बिट सेट करें ताकि केवल एक फ़ाइल का स्वामी ही इसे हटा सके।

व्यवहार में आपको एक समूह बनाने की ज़रूरत है (उदाहरण के लिए webdev) और सभी डेवलपर्स और सर्वर को इसमें जोड़ें ( usermod -aG webdev <user>या usermod -A webdev <user>आपके लिनक्स स्वाद पर निर्भर करता है)। chownवेबसर्वर उपयोगकर्ता के लिए सभी फाइलें और निर्देशिका, सभी निर्देशिकाओं को 500 तक और सभी फाइलों को 400 तक ( binजहां निष्पादन योग्य 500 के रूप में अच्छी तरह से करने की आवश्यकता है) को छोड़कर ।

/opt/tomcatसमूह को अनुमतियाँ प्रदान करें (जो 570 होगी) और चिपचिपा सा सेट करें ताकि वे केवल उन फाइलों को हटा सकें जो उनके पास हैं (चोद 1570)। सर्वर को लॉग्स की अनुमति दें, और डेवलपर्स को अनुमतियाँ पढ़ें (फ़ोल्डर के लिए 0740, फ़ाइलों के लिए 0640, चिपचिपा बिट संभवतः आवश्यक नहीं है, और इसे कभी भी फ़ाइल को न दें, केवल फ़ोल्डर, क्योंकि यह एक है अलग अर्थ (फ़ाइल के निष्पादन योग्य होने पर स्वामी की अनुमति के साथ निष्पादित करें)।

फिर आपको webdevकुछ निर्देशिकाओं पर लेखन अनुमति (1570) देने की आवश्यकता होगी । आपको यहां कुछ परीक्षण और त्रुटि की आवश्यकता होगी, और यह आवेदन पर निर्भर हो सकता है। उन फ़ोल्डरों को 1570 होना चाहिए, जबकि कुछ अन्य 0500 हो सकते हैं)।

डेवलपर्स को समूह में अपनी फ़ाइलों पर रीड एक्सेस देने की आवश्यकता होगी ताकि सर्वर उन्हें (वह 640) पढ़ सके, और निर्देशिकाओं (जो 750) पर निष्पादित हो।


1

मुझे लगता है कि @ इंट्रोपीड्रो का स्वीकृत उत्तर एक अच्छा है। यह इंगित करने के लायक है कि पैकेज इंस्टॉलर का उपयोग करने से बहुत सारे सिरदर्द बच सकते हैं - कम से कम Ubuntuc पर Tomcat 7 apt-get install tomcat7के लिए इंस्टॉलेशन निर्देशिकाओं का अधिक "मानक" सेट उत्पन्न होता है:

  • /etc/tomcat7 कॉन्फ़िगरेशन फ़ाइलों के लिए,
  • /var/lib/tomcat7 कोर पुस्तकालयों के लिए, और
  • /usr/share/tomcat7 साझा संसाधनों के लिए।

सभी अनुमतियां कम से कम विशेषाधिकार के सिद्धांत के साथ सही तरीके से स्थापित की जाती हैं, जैसे कि समूह tomcat7में उपयोगकर्ताओं को जोड़ना तैनाती की अनुमति देने के लिए पर्याप्त है। इसके अलावा, टॉमकैट सर्वर को एक ऐसी सेवा के रूप में स्थापित किया जाता है जिसे अन्य (जैसे sudo service tomcat startया वैकल्पिक रूप से /etc/init.d/tomcat start) शुरू और बंद किया जा सकता है । टॉमकैट स्वचालित रूप से रिबूट पर शुरू होता है, और एक "पुनरारंभ" कमांड है। मुझे यकीन है कि आरएचईएल / सेंटोस उपयोगकर्ताओं के लिए एक बराबर यम पैकेज है। (और हाँ, स्थानीय OSX इंस्टॉलेशन के लिए होमब्रेव इंस्टॉलर है)।

आप समस्या हो रही है, वहाँ एक अच्छा उपयोगिता है में /usr/share/binकहा जाता configtest.shहै कि अगर रिपोर्ट अनुमतियों या अन्य त्रुटियों कर रहे हैं। ध्यान दें, एक खुला बग है जो कुछ प्रतीकात्मक लिंक जोड़ने का सुझाव देता है

हम अभी भी Ubuntu trusty(14.04) चला रहे हैं ; उन और अधिक हाल के संस्करणों को चलाने के लिए, मेरा मानना ​​है कि एक टॉमकैट 8 एप्ट-गेट रेपो है।

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