EVERYONE कार्यों के लिए लिखें, IUSR, IIS_IUSRS, DefaultAppPool काम नहीं करता है। क्यों?


10

ठीक है। यहां हम Windows Server 2008 R2 में IIS 7.5 पर एक क्लासिक ASP वेबसाइट स्थापित करने का प्रयास कर रहे हैं। वेबसाइट की जड़ के नीचे dbc नाम का एक फोल्डर होता है और इसमें एक फाइल होती है जिसका उपयोग कुछ जानकारी को पढ़ने और लिखने के लिए किया जाता है जबकि हर पेज को संसाधित किया जाता है।

मुद्दा यह है, अगर मैं IUSR लिखें अनुमतियाँ प्रदान करता हूं, और IIS_IUSRS अनुमतियाँ लिखें, या DefaultAppPool अनुमतियाँ लिखें, तो मुझे "E: .. पथ पर पहुंच प्राप्त होती है .. \ _ websiteroot \ dbc \ filename .xt" अस्वीकृत है।

लेकिन अगर मैं हर किसी को उस dbc फ़ोल्डर पर पहुंच प्रदान करता हूं, तो मुझे कोई त्रुटि नहीं मिलती है, सब कुछ सही लगता है।

अधिक जानकारी: वेबसाइट क्लासिक पाइपलाइन मोड में चलती है, बेनामी प्रमाणीकरण सक्षम है (शायद यह एकमात्र प्रमाणीकरण सक्षम है) .. और मैंने IUSR खाते के साथ-साथ एप्लिकेशन पूल पहचान का उपयोग करके अनाम प्रमाणीकरण की कोशिश की। मेरे मामले में, ApplicationPoolIdentity वेबसाइट के प्रमाणीकरण के लिए पहचान है। हम फ़ाइल I / O के लिए COM + का उपयोग करते हैं। और क्लासिक ASP Server.CreateObject इसमें से किसी ऑब्जेक्ट को तुरंत हटाने के लिए। COM + एक नेटवर्क सेवा के रूप में चलता है।

विचार? मैं हर किसी को लिखने की अनुमति नहीं देना चाहता। क्या मैं कुछ भूल रहा हूँ?

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

CipherDemo नाम की मेरी वेबसाइट IIS 7.5 में एक AppPoolIdentity के तहत चल रही थी, जो कि पहचान IIS AppPool \ CipherDemo द्वारा स्थित हो सकती है। मैंने उस फ़ोल्डर पर RW की अनुमति देने के लिए ICACLS का उपयोग किया।

और COM + जो वास्तव में I / O फ़ाइल को नेटवर्क सेवा पहचान के तहत चला रहा था। जब मैं एक्सेस अस्वीकृत त्रुटि का पता लगाने के लिए प्रक्रिया मॉनिटर का उपयोग कर रहा था, तो यह बदल गया कि नेटवर्क सेवा को केवल उस फ़ोल्डर पर एक पढ़ने की अनुमति है।

मैंने ICACLS "foldername" / अनुदान का उपयोग किया: r "NT AUTHORITY \ NETWORKSERVICE" :( OI) (CI) RXW / T को उस फ़ोल्डर में लिखने के लिए अनुदान प्रदान करें।

और उसे हल किया।

मैं इस आशय में था कि चूंकि वेबसाइट CipherDemo Identity के रूप में चलती है, यह वह खाता होगा जिसका उपयोग COM + के माध्यम से फ़ाइल तक पहुंचने के लिए किया जाएगा। लेकिन यह पता लगाना शर्मनाक है कि COM + अभी भी अपनी पहचान की सीमाओं पर काम करेगा।

जवाबों:


5

IIS 7.5 के अंतर्गत (और IIS 7 में वैकल्पिक रूप से) सभी कार्यकर्ता एप्लिकेशन पूल पहचान के साथ चलते हैं: उपयोगकर्ता "IIS AppPool * PoolName *"।

हर किसी के बजाय उस उपयोगकर्ता तक पहुंच प्रदान करें (आपको चयन पहचान संवाद में नाम टाइप करना होगा - यह खोज फ़ंक्शन में नहीं दिखाई देगा)।

Iis.net पर एक बहुत उपयोगी पृष्ठ है जो चीजों को बहुत अधिक विस्तार से कवर करता है।

यह भी नोट करें: IIS7 (सर्वर 2008) के तहत:

  • आप उन्नत सेटिंग में प्रति-ऐप पूल आधार पर ऐप पूल पहचान सेट करते हैं।
  • कोई GUI समर्थन नहीं है, इसलिए आपको अनुमतियाँ सेट करने के लिए कमांड लाइन की आवश्यकता होगी ( icacls.exe)।

अंत में एसक्यूएल सर्वर की पहचान चयन ऐप पूल की पहचान के बारे में नहीं जानता है: उपयोग करें CREATE LOGINऔर CREATE USERशुरू में, इसके बाद जीयूआई का उपयोग भूमिकाएं प्रदान करने के लिए किया जा सकता है आदि।


@ रिचर्ड - हाँ। शीघ्र प्रतिक्रिया के लिए धन्यवाद। एमएसडीएन फोरम इन दिनों बहुत ही बेकार हैं। वापस आ रहा है ... मैं IIS.net वेबसाइट और कुछ दिनों के लिए सर्वरफॉल्ट के आसपास बगिंग कर रहा हूं। मैं अपने IIS 7.5 / Win सर्वर 2008 R2 में डिफ़ॉल्ट एप्लिकेशन पूल पहचान का उपयोग करता हूं। और इसलिए, मैंने अपने 'dbc' फोल्डर पर IIS APPPOOL \ DefaultAppPool Wite की अनुमति दी है। साथ ही मैंने उस फ़ोल्डर पर IUSR और IIS_IUSRS राइट परमिशन दी है। यह अभी भी काम नहीं करेगा मैं हर किसी को लिखने की अनुमति नहीं देता। मुझे पता है कि कुछ ऐसा है जो मुझे याद आ रहा है .. क्या आप मदद कर सकते हैं?
गमरन २३

@ gmaran23: यदि स्पष्ट चरण काम नहीं करते हैं, तो मैं प्रक्रिया मॉनिटर का उपयोग करता हूं यह देखने के लिए कि क्या विफल हो रहा है (और अक्सर यह होगा या तो खुली हुई फ़ाइल बहुत अधिक पहुंच के लिए पूछ रही है, मैं एसीएल को सही ढंग से सेट करने में विफल रहा हूं, या कुछ और और फ़ाइल खुली)।
रिचर्ड

@ रीचर्ड - मैं FileMode.Open, FileAccess.ReadWite के साथ c # में एक फ़ाइल रीडर के साथ रीड / राइट ऑपरेशन करता हूं। - मुझे लगता है कि वह हिस्सा अच्छा है। कुछ और फाइल खुली है - मुझे लगता है कि इससे इंकार किया जा सकता है, क्योंकि इसकी कोई संभावना नहीं है। ACL में कुछ गड़बड़ है। मैं इसकी जांच करूंगा और इसे यहां पोस्ट करूंगा। प्रक्रिया मॉनिटर की भी कोशिश करेंगे। सहायता के लिए धन्यवाद :)
gmaran23

@ gmaran23: यदि यह काम नहीं कर रहा है, तो आप यह न समझें कि आप हमेशा कुछ भी जानते हैं। मैंने वर्षों में बहुत अधिक समय बर्बाद किया है क्योंकि मुझे पता है कि कुछ था या यह सच नहीं था - सभी अक्सर मैं गलत था।
रिचर्ड

1
@ gmaran23: वास्तव में क्या चल रहा है यह देखने के लिए उपकरणों का उपयोग करें: आप अनुमान लगा रहे हैं और समस्याओं के माध्यम से व्यवस्थित रूप से काम नहीं कर रहे हैं। (1) फ़ाइल खोलने की पुष्टि करने के लिए प्रोसेस एक्सप्लोरर का उपयोग करें। (2) प्रक्रिया मॉनिटर का उपयोग करके देखें कि किस पहुंच का अनुरोध किया जा रहा है और किस पहचान के द्वारा (और आपके पास सही फ़ाइल है)। (3) फ़ाइल पर ACL के खिलाफ # 2 का दोहरा परिणाम (और पूर्ण विवरण के लिए उन्नत सुरक्षा गुण खोलें)। (4) एक चीज़ को समायोजित करें और तय होने तक # 1 पर जाएँ। यदि आप कुछ पुनरावृत्तियों के पूर्ण विवरण के साथ क्यू का विस्तार करने के बाद भी अटके हुए हैं (और विशिष्ट हो)।
रिचर्ड

5

आप इसे सीधे टाइप करके NTFS GUI के माध्यम से खाता जोड़ सकते हैं। नाम प्रारूप में है IIS APPPOOL\<<app pool name>>, जैसे IIS APPPOOL\DefaultAppPool। (यह Microsoft समर्थन लेख देखें )

एक वैकल्पिक समाधान: मैं "नेटवर्क सेवा" खाते का उपयोग एप्लिकेशन पूल उपयोगकर्ता के रूप में कर रहा हूं जो इसे अनुमति देता है।


सही है, वह टिप अच्छा है, लेकिन मैंने पहले ही ऐसा कर लिया है। मैं अनुप्रयोग पूल के लिए डिफ़ॉल्ट "ApplicationPoolIdentity" का उपयोग करता हूं। और फ़ोल्डर 'dbc' के लिए मैंने पहले ही IIS AppPool \ DefaultAppPool के लिए लिखने की अनुमति दे दी है। लेकिन यह अभी भी काम नहीं करेगा जब तक मैं हर किसी को लिखने की अनुमति नहीं देता।
gmaran23 १६'११ को an

1

यदि आप विशिष्ट उपयोगकर्ता को केवल फ़ोल्डर राइट की अनुमति देना चाहते हैं, तो आपको साइट के 'अनाम उपयोगकर्ता पहचान' को 'विशिष्ट उपयोगकर्ता' में भी बदलना चाहिए, न कि 'एप्लिकेशन पूल पहचान' को।

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