का उपयोग करना Visual C# का उपयोग कर सक्रिय निर्देशिका उपयोगकर्ता आइसोलेशन FTP

लेखक:

Bart De Smet MVP

समुदाय समाधान सामग्री उद् घोषणा

MICROSOFT CORPORATION और/या उसके संबंधित आपूर्तिकर्ताओं SUITABILITY, विश्वसनीयता, या जानकारी और संबंधित ग्राफ़िक्स यहाँ निहित की सटीकता के बारे में कोई प्रतिनिधित्व करते हैं। ऐसी सभी जानकारी और संबंधित ग्राफ़िक्स "जैसा है" किसी भी प्रकार की वारंटी के बिना प्रदान किए जाते हैं। MICROSOFT और/या उसके संबंधित आपूर्तिकर्ताओं बशर्ते सभी वारंटी और शर्तों संबंध में यह जानकारी और संबंधित ग्राफ़िक्स सहित सभी अव्यक्त वॉरंटी, और शर्तों की बिक्री, उपयुक्तता, किसी विशेष प्रयोजन, WORKMANLIKE प्रयास, शीर्षक और गैर उल्लंघन के लिए, DISCLAIM. यदि आप विशेष रूप से कोई ईवेंट में MICROSOFT और/या इसके प्रदाताओं उत्तरदायी होगा कि सहमत किसी भी प्रत्यक्ष, अप्रत्यक्ष, PUNITIVE, आकस्मिक, विशेष, परिणामस्वरूप होने वाली क्षति या किसी भी नुकसान पहुँचाने से, किसी सीमा, उपयोग, डेटा या PROFITS, की हानि के लिए क्षति के बिना सहित के लिए से बाहर उत्पन्न होने वाले या भी में अलग का उपयोग के साथ कनेक्ट या अक्षमता यहाँ जानकारी और निहित संबंधित ग्राफ़िक्स का उपयोग करने के लिए , चाहे अनुबंध, हानि, उपेक्षा, निश्चित उत्तरदायित्व पर आधारित या MICROSOFT या इसके आपूर्तिकर्ताओं में से कोई भी नहीं है, तो भी अन्यथा, क्षतियों की संभावना की सलाह दी जाती गया है।

सार

IIS 6.0 किसी अन्य उपयोगकर्ता की होम फ़ोल्डर में नेविगेट करने से उपयोगकर्ताओं को रोकता है जो FTP उपयोगकर्ता आइसोलेशन कहा जाता है एक नई सुविधा है। बिना उपयोगकर्ता आइसोलेशन FTP साइट पर लॉग ऑन करें और cd का उपयोग करके किसी अन्य उपयोगकर्ता का फ़ोल्डर पर जाएँ करने के लिए किसी उपयोगकर्ता के लिए संभव है. आदेश में FTP उपकरण है। यद्यपि, उपयोगकर्ता अन्य उपयोगकर्ता के फ़ोल्डर में लिखने के लिए सक्षम नहीं होंगे (कम से कम, जब सुरक्षा सेट है ऊपर दाईं ओर), उपयोगकर्ता अन्य उपयोगकर्ता के फ़ोल्डर की सामग्री को पढ़ने में सक्षम हो सकता है।
 
3 विभिन्न modi समर्थित हैं:
-जिसके कारण उपयोगकर्ताओं को अन्य उपयोगकर्ताओं के लिए फ़ोल् डरों को ट्रैवर्स करने के लिए सक्षम होने के लिए कोई आइसोलेशन।
-आइसोलेशन फ़ोल्डर्स पर आधारित है। इस स्थिति में, FTP रूट फ़ोल्डर सेट है और प्रत्येक उपयोगकर्ता के एक समर्पित, सैंडबॉक्स किए गए सबफ़ोल्डर है।
-आइसोलेशन सक्रिय निर्देशिका पर आधारित है। इस विकल्प के साथ, FTP उपयोगकर्ता की सेटिंग्स सक्रिय निर्देशिका में संगत उपयोगकर्ता ऑब्जेक्ट की विशेषताएँ के रूप में संग्रहीत होते हैं। एक बिग डील में मदद के इस विकल्प का उपयोग करना संभव है।
 
यह आलेख का उपयोग कर सक्रिय निर्देशिका FTP उपयोगकर्ता आइसोलेशन पर केंद्रित है और मानता है कि आप किसी सक्रिय निर्देशिका डोमेन को आपके एंटरप्राइज़ में सेट है और आप सक्रिय निर्देशिका का मूल ज्ञान है।

सक्रिय निर्देशिका उपयोगकर्ता आइसोलेशन के साथ नया FTP साइट बनाएँ

1. इंटरनेट सूचना सेवाओं (IIS) प्रबंधक प्रारंभ, चलाएँ, inetmgr, ठीक का उपयोग करने के लिए पर जाएँ।
2. वृक्ष संरचना में सही कंप्यूटर पर नेविगेट करें।
3. दाईं ओर FTP साइट फ़ोल्डर पर क्लिक करें और नया, FTP साइट का चयन करें...
4. अगला पर क्लिक करें और कोई नया FTP साइट के लिए नाम प्रदान करें। अगला पुन: क्लिक करें।
5. निर्दिष्ट IP पता और पोर्ट सेटिंग्स नए FTP साइट के लिए। यह के बारे में अधिक जानकारी के लिए, IIS मदद फ़ाइलों को देखें। जारी रखने के लिए अगला क्लिक करें।
6. अभी पिछले विकल्प का चयन करें: "अलग का उपयोग कर सक्रिय निर्देशिका उपयोगकर्ता", और अगला क्लिक करें।
7. उपयोगकर्ता की विशेषताएँ पढ़ें करने के लिए FTP सेवा चल रही है, जब सक्रिय निर्देशिका सेटिंग्स प्राप्त करने के लिए उपयोग किया जाएगा जो डोमेन खाते के लिए उपयोगकर्ता क्रेडेंशियल्स प्रदान करें। कोई सुरक्षा श्रेष्ठ अभ्यास, का उपयोग करें एक निम्न-विशेषाधिकार खाते के रूप में। डोमेन पाठ बॉक्स में, मूल डोमेन नाम, नहीं पूरी तरह योग्य डोमेन नाम प्रदान करें। नोट: उपयोग किए गए खाते का पासवर्ड परिवर्तित करता है, यदि FTP सेटिंग परिवर्तन को प्रतिबिंबित करने के लिए अद्यतन करने के लिए की आवश्यकता होगी। अगला क्लिक करें।
8. पासवर्ड की पुष्टि करें, और ठीक क्लिक करें।
9. FTP फ़ोल्डर पर अनुमतियों को सेट करें। आप अपने फ़ोल्डरों में फ़ाइलें अपलोड करने के लिए सक्षम होने के लिए उपयोगकर्ता चाहते हैं, तो पठन और लेखन दोनों विकल्प tick. अगला क्लिक करें।
10. FTP साइट सेटअप पूरा करने के लिए समाप्त क्लिक करें।

का उपयोग कर सक्रिय निर्देशिका उपयोगकर्ता आइसोलेशन FTP समझाया गया

सक्रिय निर्देशिका-आधारित उपयोगकर्ता आइसोलेशन होस्टिंग प्रदाता और FTP उपयोगकर्ता फ़ोल्डर्स की बड़ी मात्रा बनाए रखने के लिए उन कंपनियों के लिए अनुशंसित विकल्प है। मूलत:, उपयोगकर्ता के घर फ़ोल्डर पर प्रमाणीकरण और msIIS-FTPDir msIIS-FTPRoot सक्रिय निर्देशिका में उपयोगकर्ता ऑब्जेक्ट की विशेषताएँ क्वेरी द्वारा निर्धारित होता है। और msIIS-FTPDir msIIS-FTPRoot मानों का संयोजन करने के लिए उपयोगकर्ता के घर फ़ोल्डर पथ में परिणाम।
 
एक उदाहरण निम्नानुसार है:
msIIS-FTPRoot D:\FTP उपयोगकर्ता =
msIIS-FTPDir = \JohnSmith
यह उपयोगकर्ता के घर फ़ोल्डर के रूप में "D:\FTP Users\JohnSmith" में परिणाम होगा। यह भी किसी अन्य सर्वर, जैसे किसी फ़ाइल सर्वर पर सर्वर LAN के लिए कनेक्ट करने के लिए msIIS-FTPRoot मान के रूप में कोई UNC पथ निर्दिष्ट करने के लिए संभव है कि ध्यान दें।
 
यह लचीलापन FTP सर्वर का कॉन्फ़िगरेशन, केवल समस्याग्रस्त उपयोगकर्ता के लिए msIIS-FTPRoot विशेषता में सक्रिय निर्देशिका परिवर्तन द्वारा स्पर्श किए बिना किसी भी समय उपयोगकर्ता के रूट फ़ोल्डर बदलने के लिए आप की अनुमति देता है। सक्रिय निर्देशिका जोड़-तोड़ बहुत सरल है, क्योंकि विभिन्न तकनीकों (VBScript, .NET Framework) का उपयोग कर यह एक तेज़ तरीका में विभिन्न उपयोगकर्ताओं के लिए सेटिंग्स परिवर्तित करने के लिए संभव है। इसलिए, यह केवल सक्रिय निर्देशिका में उनके msIIS-FTPRoot विशेषता अद्यतन द्वारा उपयोगकर्ता FTP फ़ोल्डर किसी अन्य स्थान पर ले जाने के लिए अपेक्षाकृत आसान है।
 
रिमार्क्स:
1. जानकारी सक्रिय निर्देशिका से प्राप्त की है 10 मिनट के लिए FTP सेवा द्वारा कैश किया जा रहा है। यह डिफ़ॉल्ट मान DsCacheRefreshSecs रजिस्ट्री प्रविष्टि का उपयोग कर परिवर्तित करने के लिए संभव है। आप रजिस्ट्री परिवर्तन करने के लिए अपने सिस्टम क्षति पैदा कर सकते हैं, क्योंकि ऐसा करने के लिए निर्णय लेते हैं, तो होशियार हो।
2. यदि आप आपके नेटवर्क पर किसी Windows 2000 सर्वर-आधारित सक्रिय निर्देशिका कार्यान्वयन का उपयोग कर रहे हैं, तो आप उपयोगकर्ता ऑब्जेक्ट के लिए और msIIS-FTPDir msIIS-FTPRoot विशेषताओं के साथ स्कीमा विस्तारित करने के लिए की आवश्यकता होगी। स्कीमा एक्सटेंशनों पूर्ववत् नहीं किया जा सकता, जब आप के लिए आवश्यक अधिकार डोमेन व्यवस्थापक से संपर्क करें और ऐसा करने के लिए चाहते हैं तो होशियार रहें।
3. उपयोगकर्ता पर निर्दिष्ट फ़ोल्डर तक पहुँच है करने के लिए आपके पास अधिकार की आवश्यकता है। उपयोगकर्ता अधिकार आवश्यक है, या पथ अमान्य है, तो पहुँच अनुमति नहीं दी जाएगी। आप यह समस्या अनुभव करते हैं, और फ़ाइल सिस्टम (NTFS Acl) के स्तर पर साझा (UNC-पथ msIIS-FTPRoot सेटिंग के लिए यदि आप उपयोग कर रहे हैं) के स्तर पर सुरक्षा की जाँच करें।

स्क्रिप्ट से एक उपयोगकर्ता के लिए FTP पहुँच सक्षम करें

स्क्रिप्ट का उपयोग कर किसी उपयोगकर्ता के लिए एक घर फ़ोल्डर सेट करने के लिए, तो अगली कार्यविधि का पालन करें:
1. एक कमांड प्रॉम्प्ट विंडो खोलें।
2. iisftp.vbs /SetADProp का उपयोग करें /? iisftp.vbs स्क्रिप्ट का सिंटैक्स जानकारी दिखाने के लिए।
3. उपयोगकर्ता की होम फ़ोल्डर निर्धारित करें और उसे रूट फ़ोल्डर और उपयोगकर्ता फ़ोल्डर में विभाजित। रूट फ़ोल्डर किसी स्थानीय फ़ोल्डर या UNC पथ जिसमें उपयोगकर्ता फ़ोल्डर का पथ है, जबकि विशेष रूप से, उपयोगकर्ता फ़ोल्डर \JohnSmith, जैसे अभी कुछ है। मैं अगला उदाहरण उपयोग करेंगे:
रूट फ़ोल्डर: \\fileserver\ftproot
उपयोगकर्ता फ़ोल्डर: \JohnSmith
4. उपयोगकर्ता के लिए सेटिंग्स लागू करें: निम्न आदेश निष्पादित कर रहा द्वारा
iisftp.vbs /SetADProp JohnSmith FTPRoot \\fileserver\ftproot
iisftp.vbs /SetADProp JohnSmith FTPDir \JohnSmith
 
महत्वपूर्ण: यह न भूलें कि \ FTPDir मान के सामने है। कोई मान्य पथ में परिणाम देने के लिए रूट फ़ोल्डर का मान और मान उपयोगकर्ता फ़ोल्डर की, दोनों का संयोजन हो।
 
ऐसा करने से आप किसी उपयोगकर्ता को सेट किया है, तो आप FTP के साथ फ़ोल्डर को उपयोगकर्ता के लिए लॉग इन कर सकते हैं कि की जाँच करें। क्या आप आदेश पंक्ति ftp.exe या ब्राउज़र या FTP क्लाइंट अनुप्रयोग का उपयोग कर सकते हैं ताकि करने के लिए।

C# का उपयोग करके FTP पहुँच के लिए उपयोगकर्ता को सक्षम

आप के रूप में अच्छी तरह प्रबंधित कोड का उपयोग करके FTP के लिए कोई उपयोगकर्ता सक्षम कर सकते हैं। जब आप उपयोगकर्ता खाते को सेट करने के लिए कोई अनुप्रयोग लिख रहे हैं और आप FTP पहुँच को भी शामिल करना चाहते हैं उपयोगी हो सकता है। यदि आप एक FTP फ़ोल्डर सिस्टम पर करने के लिए उपयोगकर्ताओं की एक बड़ी श्रृंखला नवीनीकरण कर रहे हैं, तो C# भी उपयोगी हो सकता है। (में किसी कंसोल अनुप्रयोग) मूल कोड निम्नानुसार दिखाई देता है:
 
सिस्टम का उपयोग करते हुए;
System.DirectoryServices का उपयोग करते हुए;
System.Reflection का उपयोग करते हुए;
System.Text का उपयोग करते हुए;
 
EnableFTP वर्ग
{
सार्वजनिक स्थिर void मुख्य (स्ट्रिंग [] तर्क नहीं)
    {
अगर (तर्क नहीं है। लंबाई < 2)
        {
Console.WriteLine ("उपयोग: {0} < उपयोगकर्ता >< rootFolder > [< डोमेन >]", Assembly.GetExecutingAssembly(). GetName(). नाम);
वापसी;
        }
 
स्ट्रिंग डोमेन = नल;
अगर (तर्क नहीं है। लंबाई = = 3)
डोमेन = तर्क [2];
अन्य
डोमेन = Environment.GetEnvironmentVariable("USERDNSDOMAIN");
 
अगर (डोमेन नल = = || डोमेन = = String.Empty)
        {
Console.WriteLine ("प्राप्त कोई मान्य डोमेन। पूरा डोमेन DNS नाम उत्तम पैरामीटर के रूप में निर्दिष्ट करें.");
वापसी;
        }
 
स्ट्रिंग dc = GetDC(domain);
ldap स्ट्रिंग = String.Format("LDAP://{0}/{1}",domain,dc);
 
स्ट्रिंग लॉगिन = तर्क [0];
rootFolder स्ट्रिंग = तर्क [1];
 
क्वेरी स्ट्रिंग = String.Format ("(& (samAccountName={0})(objectClass=user))", लॉगिन);
SearchResult पु = नल;
प्रयास करें
        {
DirectoryEntry रूट = नए DirectoryEntry(ldap);
DirectorySearcher src = नया DirectorySearcher (रूट, क्वेरी);
res = src. FindOne();
        }
कैच (अपवाद)
        {
Console.WriteLine ("{0} डोमेन से कनेक्ट नहीं कर सकता", डोमेन);
वापसी;
        }
 
अगर (पु! नल =)
        {
usrFolder स्ट्रिंग = "\\" + लॉगिन;
DirectoryEntry उपयोगकर्ता = पु। GetDirectoryEntry();
उपयोगकर्ता। गुण ["msIIS-FTPRoot"]। मान = rootFolder;
उपयोगकर्ता। गुण ["msIIS-FTPDir"]। मान = usrFolder;
user.CommitChanges();
Console.WriteLine ("FTP होम निर्देशिका के लिए {0}: {1} {2}", लॉगिन, rootFolder, usrFolder);
        }
अन्य
Console.WriteLine ("{0} नहीं मिला उपयोगकर्ता.", लॉगिन);
    }

निजी स्थैतिक स्ट्रिंग GetDC(string domain)
    {
StringBuilder sb = नए StringBuilder(domain);
स स। Replace(".",",DC=");
        sb.Insert(0,"DC=");
स स पर वापस जाएँ। ToString();
    }
}
 
नोट: आप Visual Studio .NET 2003 में संकलित करने का प्रयास करते हैं, तो आप System.DirectoryServices.dll असेंबली संदर्भ समाधान explorer में जोड़ने के लिए की आवश्यकता होगी।
 
उदाहरण के लिए आदेश का उपयोग बहुत सरल है: "उपयोगकर्ता D:\FTP" EnableFTP.exe JohnSmith
 
उदाहरण के लिए एक संगठन इकाई के सभी उपयोगकर्ताओं को सक्षम करने के लिए चाहते हैं, तो यह उदाहरण विस्तृत कर सकते हैं। DirectorySearcher वर्ग का उपयोग करते हुए यह सभी उपयोगकर्ता ऑब्जेक्ट्स का उपयोग करके प्राप्त करने के लिए संभव है "(objectClass=user)" क्वेरी और आधार का उपयोग FindAll विधि वर्ग इंस्टेंस पर परिणाम प्राप्त करने के लिए। सक्रिय निर्देशिका C# में प्रोग्रामिंग पर अधिक जानकारी .NET Framework SDK (System.DirectoryServices के लिए खोज) में पाया जा सकता है।
गुण

आलेख ID: 555205 - पिछली समीक्षा: 15/02/2017 - संशोधन: 1

Microsoft Internet Information Services 6.0, Microsoft Visual C# .NET 2003 Standard Edition

प्रतिक्रिया