IIS AppPoolIdentity और फ़ाइल सिस्टम पहुँच अनुमतियाँ लिखते हैं


395

यहाँ IIS 7.5 और ASP.NET के साथ एक समस्या है जिस पर मैं शोध कर रहा हूँ और इसके साथ कहीं नहीं जा रहा हूँ। किसी भी तरह की सहायता का स्वागत किया जाएगा।

मेरा प्रश्न है: IIS 7.5 में ASP.NET का उपयोग करना, IIS और / या ऑपरेटिंग सिस्टम कैसे वेब एप्लिकेशन को एक फ़ोल्डर में लिखने की अनुमति देता है जैसे C:\dumpपूर्ण विश्वास के तहत चल रहा है? यह कैसे होता है कि मुझे एप्लिकेशन पूल उपयोगकर्ता (इस मामले में ApplicationPoolIdentity) के लिए स्पष्ट रूप से लिखने का उपयोग नहीं करना है ?

यह मुझे पता है:

  • IIS 7.5 में, अनुप्रयोग पूल के लिए डिफ़ॉल्ट पहचान है ApplicationPoolIdentity
  • ApplicationPoolIdentity "IIS APPPOOL \ AppPoolName" नामक एक विंडोज उपयोगकर्ता खाते का प्रतिनिधित्व करता है, जो एप्लिकेशन पूल के निर्माण के समय बनाया जाता है, जहां AppPoolName अनुप्रयोग पूल का नाम है।
  • "IIS APPPOOL \ AppPoolName" उपयोगकर्ता डिफ़ॉल्ट रूप से IIS_IUSRSसमूह का एक सदस्य है ।
  • आप पूर्ण ट्रस्ट के तहत चल रहे हैं, तो अपने वेब अनुप्रयोग (छोड़कर फ़ोल्डरों की तरह फाइल सिस्टम के कई क्षेत्रों में लिख सकते हैं C:\Users, C:\Windows, आदि)। उदाहरण के लिए, आपके एप्लिकेशन में कुछ फ़ोल्डर्स, जैसे, लिखने के लिए एक्सेस होगा C:\dump
  • डिफ़ॉल्ट रूप से, IIS_IUSRSसमूह को पढ़ने या लिखने के लिए एक्सेस नहीं दिया जाता है C:\dump(कम से कम उस तक पहुंच नहीं है जो विंडोज एक्सप्लोरर में "सुरक्षा" टैब के माध्यम से दिखाई देती है)।
  • यदि आप लिखने की पहुँच से इनकार करते हैं IIS_IUSRS, तो आपको फ़ोल्डर में लिखने की कोशिश करते समय एक SecurityException मिलेगी (जैसा कि अपेक्षित है)।

तो, उस सब को ध्यान में रखते हुए, "IIS APPPOOL \ AppPoolName" उपयोगकर्ता को दी गई पहुंच कैसे लिखी जाती है? W3wp.exe प्रक्रिया इस उपयोगकर्ता के रूप में चलती है, इसलिए यह उपयोगकर्ता को उस फ़ोल्डर में लिखने की अनुमति देता है जिसमें स्पष्ट पहुंच नहीं है?

कृपया ध्यान दें कि मैं समझता हूं कि यह संभवत: सुविधा के लिए किया गया था, क्योंकि यह एक उपयोगकर्ता को प्रत्येक फ़ोल्डर तक पहुंच प्रदान करने के लिए एक दर्द होगा जिसे यह लिखना होगा कि क्या आप पूर्ण ट्रस्ट के तहत चल रहे हैं। यदि आप इस एक्सेस को सीमित करना चाहते हैं, तो आप हमेशा मीडियम ट्रस्ट के तहत एप्लिकेशन चला सकते हैं। मुझे इस बात का पता लगाने में दिलचस्पी है कि ऑपरेटिंग सिस्टम और / या IIS इन लिखने की अनुमति देता है, भले ही कोई स्पष्ट फ़ाइल सिस्टम एक्सेस दी गई प्रतीत न हो।

जवाबों:


403

ApplicationPoolIdentityकी सदस्यता असाइन किया गया है Usersसमूह के साथ ही IIS_IUSRSसमूह। पहली नज़र में यह कुछ चिंताजनक लग सकता है, हालाँकि Usersसमूह के पास कुछ सीमित NTFS अधिकार हैं।

उदाहरण के लिए, यदि आप फ़ोल्डर में एक फ़ोल्डर बनाने की कोशिश करते हैं C:\Windowsतो आप पाएंगे कि आप नहीं कर सकते। ApplicationPoolIdentityअभी भी विंडोज़ सिस्टम फ़ोल्डर से फ़ाइलों को पढ़ने में सक्षम होने की जरूरत है (अन्यथा और कैसे वर्कर प्रोसेस गतिशील आवश्यक DLL के लोड करने में सक्षम हो जाएगा)।

आपकी टिप्पणियों के संबंध में आपके c:\dumpफ़ोल्डर में लिखने में सक्षम होने के बारे में । यदि आप उन्नत सुरक्षा सेटिंग्स में अनुमतियों पर एक नज़र डालते हैं, तो आप निम्नलिखित देखेंगे:

यहां छवि विवरण दर्ज करें

देखें कि विशेष अनुमति किससे विरासत में मिली है c:\:

यहां छवि विवरण दर्ज करें

यही कारण है कि आपकी साइट उस फ़ोल्डर को ApplicationPoolIdentityपढ़ और लिख सकती है । उस अधिकार को c:\ड्राइव से विरासत में मिला है ।

एक साझा वातावरण में, जहां आपके पास संभवतः कई सौ साइटें हैं, प्रत्येक अपने स्वयं के एप्लिकेशन पूल और एप्लीकेशन पूल आइडेंटिटी के साथ, आप साइट फ़ोल्डर को एक फ़ोल्डर या वॉल्यूम में स्टोर करेंगे, जिसमें Usersसमूह को हटा दिया गया है और अनुमतियाँ सेट की गई हैं जैसे कि केवल व्यवस्थापक और सिस्टम खाते की पहुंच (विरासत के साथ) है।

आप तब व्यक्तिगत रूप से आवश्यक अनुमतियाँ असाइन करेंगे जो प्रत्येक के IIS AppPool\[name]लिए साइट रूट फ़ोल्डर पर होनी चाहिए।

आपको यह भी सुनिश्चित करना चाहिए कि आपके द्वारा बनाई गई कोई भी फ़ोल्डर जहाँ आप संभावित संवेदनशील फ़ाइलों को संग्रहीत करते हैं या डेटा Usersसमूह को हटा दिया है। आपको यह भी सुनिश्चित करना चाहिए कि आपके द्वारा इंस्टॉल किए गए कोई भी एप्लिकेशन संवेदनशील डेटा को अपने c:\program files\[app name]फ़ोल्डरों में संग्रहीत न करें और इसके बजाय वे उपयोगकर्ता प्रोफ़ाइल फ़ोल्डर का उपयोग करें।

तो हाँ, पहली नज़र में ऐसा लगता है कि इसके ApplicationPoolIdentityपास जितना अधिकार होना चाहिए, उससे अधिक अधिकार हैं, लेकिन वास्तव में इसके पास समूह की सदस्यता तय करने की तुलना में अधिक अधिकार नहीं हैं।

एक ApplicationPoolIdentityके समूह सदस्यता का उपयोग कर SysInternals जांच की जा सकती एक्सप्लोरर उपकरण प्रक्रिया । उस कार्यकर्ता प्रक्रिया को खोजें जो आपके द्वारा रुचि रखने वाले एप्लिकेशन पूल पहचान के साथ चल रही है (आपको User Nameकॉलम को सूची में कॉलम को प्रदर्शित करने के लिए जोड़ना होगा :

यहां छवि विवरण दर्ज करें

उदाहरण के लिए, मेरे पास यहां एक पूल है जिसका नाम 900300एप्लीकेशन पूल आइडेंटिटी है IIS APPPOOL\900300। प्रक्रिया के लिए गुणों पर राइट-क्लिक करें और सुरक्षा टैब का चयन करें जो हम देखते हैं:

यहां छवि विवरण दर्ज करें

जैसा कि हम देख सकते हैं IIS APPPOOL\900300कि Usersसमूह का एक सदस्य है ।


@ केव [+1] मैंने ऐप पूल की पहचान के लिए इसी तरह के एक प्रश्न का संबंध एनटीएफएस अनुमतियों को पोस्ट किया है: stackoverflow.com/questions/11232675/… - यदि आप एक नज़र रखेंगे तो मैं आभारी रहूंगा।
one.beat.consumer

@ one.beat.consumer - क्षमा करें, मैंने आपकी टिप्पणी कभी नहीं देखी। आप अब भी उस सवाल से चिपके हुए हैं?
केव

@ केव - हाँ, यह एक समस्या से कम हो गया है क्योंकि मुझे दूसरी बकवास से अलग कर दिया गया है, लेकिन यह अभी भी अनसुलझी है। कोई विचार?
one.beat.consumer

7
आइए इस खंड को MSDN पर शामिल करने के लिए वोट करें। कभी भी यह पता लगाने के लिए समय नहीं लिया, इसलिए यह एक बड़ी मदद है (और मुझे शर्म आती है कि मैं कभी नहीं जानता था)।
डेसपेयर का ग्रास

67
स्पष्ट नहीं है कि यह Microsoft IIS कोर दस्तावेज़ MSDN के बजाय SO पर क्यों है।
अमित नायडू

40
  1. फ़ोल्डर पर राइट क्लिक करें।

  2. गुण पर क्लिक करें

  3. सुरक्षा टैब पर क्लिक करें। आप कुछ इस तरह देखेंगे:

यहां छवि विवरण दर्ज करें

  1. उपरोक्त स्क्रीन में "संपादित करें ..." बटन पर क्लिक करें। आप कुछ इस तरह देखेंगे:

यहां छवि विवरण दर्ज करें

  1. उपरोक्त स्क्रीन में "जोड़ें ..." बटन पर क्लिक करें। आप कुछ इस तरह देखेंगे:

यहां छवि विवरण दर्ज करें

  1. उपरोक्त स्क्रीन में "स्थान ..." बटन पर क्लिक करें। आपको कुछ ऐसा दिखाई देगा। अब, इस ट्री संरचना के शीर्ष पर जाएं और अपना कंप्यूटर नाम चुनें, फिर ठीक पर क्लिक करें।

यहां छवि विवरण दर्ज करें

  1. अब "iis apppool \ your_apppool_name" टाइप करें और "चेक नेम" बटन पर क्लिक करें। यदि ऐपपूल मौजूद है, तो आपको टेक्स्ट बॉक्स में अपना ऐप्पल नाम दिखाई देगा। ओके बटन पर क्लिक करें।

यहां छवि विवरण दर्ज करें

  1. खाते को अनुदान देने के लिए आपको जो भी एक्सेस की आवश्यकता है उसे चेक / अनचेक करें

  2. अप्लाई बटन पर क्लिक करें और फिर ओके करें।


0

IIs में प्रत्येक एप्लिकेशन पूल सी: \ उपयोगकर्ताओं के तहत डिफ़ॉल्ट रूप से पूर्ण पढ़ने / लिखने की अनुमति के साथ अपना स्वयं का सुरक्षित उपयोगकर्ता फ़ोल्डर बनाता है। अपने उपयोगकर्ता फ़ोल्डर को खोलें और देखें कि एप्लिकेशन पूल फ़ोल्डर क्या हैं, राइट क्लिक करें, और असाइन किए गए एप्लिकेशन पूल वर्चुअल खाते के लिए उनके अधिकारों की जांच करें। आपको अपने एप्लिकेशन पूल खाते को पहले से ही अपने रूट और सबफ़ोल्डर्स को सौंपे गए रीड / राइट एक्सेस के साथ जोड़ा जाना चाहिए।

तो उस प्रकार की फ़ाइल संग्रहण पहुंच स्वचालित रूप से हो जाती है और आपको कुछ भी बदले बिना ऐप पूल उपयोगकर्ता खाते के फ़ोल्डरों में जो कुछ भी पसंद है उसे लिखने में सक्षम होना चाहिए। इसलिए प्रत्येक एप्लिकेशन पूल के लिए वर्चुअल उपयोगकर्ता खाते बनाए गए थे।


यह केवल तभी होता है जब "लोड उपयोगकर्ता प्रोफ़ाइल" ट्रू पर सेट हो।
जेम्स क्यू मर्फी

यह सही है, जिसका अर्थ है कि अगर यह सही नहीं है, तो AppPool उपयोगकर्ता का फ़ोल्डर नहीं बनाया जाएगा? यही कारण है कि उन्होंने इसे इस तरह से बनाया है ..... केवल IIs को विंडोज़ / टेम्प और सभी हार्ड ड्राइव पर कबाड़ को एक्सेस करने और स्टोर करने के लिए प्रबंधित सिक्योर फोल्डर के बजाय सिर्फ उस अकाउंट के लिए।
स्टोकली

0

मैंने एक IIS वेबसाइट तक पहुंच के मुद्दों को ठीक करने के लिए यह कोशिश की, जो कुछ के रूप में प्रकट हुई ईवेंट लॉग → विंडोज → एप्लिकेशन में निम्नलिखित के :

लॉग नाम: आवेदन
स्रोत: ASP.NET 4.0.30319.0
दिनांक: 1/5/2012 4:12:33 PM
इवेंट आईडी: 1314
टास्क श्रेणी: वेब इवेंट
स्तर: जानकारी
कीवर्ड: क्लासिक
उपयोगकर्ता: एन / ए
कंप्यूटर: SALTIIS01

विवरण:
इवेंट कोड: 4008 
ईवेंट संदेश: फ़ाइल प्राधिकरण अनुरोध के लिए विफल रहा। 
घटना समय: 1/5/2012 4:12:33 अपराह्न 
घटना का समय (UTC): 1/6/2012 12:12:33 पूर्वाह्न 
इवेंट आईडी: 349fcb2ec3c24b16a862f6eb9b23dd6c 
घटना क्रम:: 
घटना घटना: 3 
घटना विस्तार कोड: 0 

आवेदन की सूचना: 
    आवेदन डोमेन: / LM / W3SVC / 2 / ROOT / आवेदन / SNCDW-19-12970281803404090 
    विश्वास स्तर: पूर्ण 
    एप्लीकेशन वर्चुअल पाथ: / एप्लीकेशन / एसएनसीडीडब्ल्यू 
    आवेदन पथ: D: \ Sites \ WCF \ Application \ SNCDW \ 
    मशीन का नाम: SALTIIS01 

प्रक्रिया की जानकारी: 
    प्रक्रिया आईडी: 1896 
    प्रक्रिया का नाम: w3wp.exe 
    खाता नाम: iisservice 

जानकारी का आग्रह: 
    अनुरोध URL: http: //webservicestest/Application/SNCDW/PC.svc 
    अनुरोध पथ: /Application/SNCDW/PC.svc 
    उपयोगकर्ता होस्ट पता: 10.60.16.79 
    उपयोगकर्ता: js3228 
    प्रमाणिक है: सत्य 
    प्रमाणीकरण प्रकार: बातचीत 
    थ्रेड खाता नाम: iisservice 

अंत में मुझे विंडोज Everyoneग्रुप को उस फोल्डर को पढ़ने के लिए एक्सेस देना था, ताकि वह ठीक से काम कर सके।

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