आइए डोमेन यूजर्स को लोकल एडमिनिस्ट्रेटर अधिकारों के बिना रिमोट सर्वर पर चल रही सेवाओं की सूची गिनने के लिए रिमोट एक्सेस परमिशन देने की विशेषताओं पर विचार करें। वास्तव में, यह कार्य सर्विस कंट्रोल मैनेजर (SCManager) से रिमोट कनेक्शन प्रदान करने तक सीमित है।
यहां समस्या इस तरह दिखती है। मान लीजिए, हम चाहते हैं कि एक रिमोट यूजर या मॉनिटरिंग सिस्टम किसी सर्वर पर सेवाओं की स्थिति क्वेरी कर सके। स्पष्ट कारणों से, इस रिमोट यूजर के पास कोई एडमिनिस्ट्रेटिव अधिकार नहीं है और सर्वर को स्थानीय रूप से एक्सेस करने का विशेषाधिकार नहीं है।
services.msc कंसोल का उपयोग करके रिमोट कंप्यूटर से कनेक्ट करने और सेवाओं की सूची प्राप्त करने का प्रयास करते समय, यूजर को निम्न एरर दिखाई देती है:
Windows was unable to open service control manager database on computer_name
Error 5: Access is denied.
यदि आप sc.exe का उपयोग करके रिमोट सर्वर पर सेवाओं की सूची प्राप्त करने का प्रयास करते हैं, तो एरर इस प्रकार है:
C:\Windows\system32>sc \\lonts-01 query
[SC] OpenSCManager FAILED 5:
Access is denied.
सेवाओं की सूची तक एक्सेस Service Control Manager डेटाबेस के सिक्योरिटी डिस्क्रिप्टर द्वारा नियंत्रित किया जाता है, जिसके लिए Windows 2003 SP1 में पहले से ही "Authenticated Users" के रिमोट एक्सेस को प्रतिबंधित कर दिया गया था (जो काफी तार्किक है)। केवल लोकल एडमिनिस्ट्रेटर्स ग्रुप के सदस्यों को इस सर्विस को रिमोट रूप से एक्सेस करने का अधिकार है।
आइए विचार करें कि सर्वर पर सेवाओं की सूची प्राप्त करने के लिए Service Control Manager को रिमोट एक्सेस कैसे दिया जाए और सामान्य यूजर्स (एडमिनिस्ट्रेटिव अधिकारों के बिना) Windows Server 2012 R2 में इन सेवाओं की स्थिति कैसे प्राप्त कर सकते हैं।
कमांड प्रॉम्प्ट में एडमिनिस्ट्रेटर विशेषाधिकारों के साथ चलाकर sc.exe का उपयोग करके वर्तमान Service Control Manager (SCM) परमिशन प्राप्त की जा सकती हैं:
sc sdshow scmanager
कमांड एक समान SDDL स्ट्रिंग लौटाती है:
D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
इस मामले में आप देख सकते हैं कि डिफ़ॉल्ट रूप से Authenticated Users (AU) ग्रुप को केवल SCM का उपयोग करके कनेक्ट करने की अनुमति है, लेकिन सर्विसेज को पोल (LC) करने की नहीं। इस स्ट्रिंग को किसी भी टेक्स्ट एडिटर में कॉपी करें।
अगला कदम उस यूजर या ग्रुप का SID प्राप्त करना है जिसे हम SCM पर रिमोट एक्सेस का अधिकार देना चाहते हैं (यूजरनेम द्वारा यूजर SID कैसे प्राप्त करें)। उदाहरण के लिए, आइए AD ग्रुप lon-hd का SID प्राप्त करें:
Get-ADgroup -Identity lon-hd | select SID
SID
---
S-1-5-21-2470146451-39123456388-2999995117-23338978
SDDL स्ट्रिंग में ब्लॉक (A;;CCLCRPRC;;;IU) कॉपी करें – (IU का अर्थ इंटरैक्टिव यूजर्स है) अपने टेक्स्ट एडिटर में, कॉपी किए गए ब्लॉक में IU को यूजर/ग्रुप के SID से बदलें और S से पहले आपके द्वारा प्राप्त स्ट्रिंग पेस्ट करें:
हमारे मामले में हमें निम्न स्ट्रिंग मिली:
D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CCLCRPRC;;;S-1-5-21-2470146451-39123456388-2999995117-23338978)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
अब Service Control Manager सिक्योरिटी डिस्क्रिप्टर के पैरामीटर्स बदलें:
sc sdset scmanager “D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CCLCRPRC;;;S-1-5-21-2470146451-39123456388-2999995117-23338978)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)“
स्ट्रिंग [SC] SetServiceObjectSecurity SUCCESS बताती है कि नए सिक्योरिटी पैरामीटर्स सफलतापूर्वक लागू हो गए हैं, और यूजर को स्थानीय रूप से प्रमाणित यूजर्स के समान विशेषाधिकार मिले हैं: SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE, SC_MANAGER_QUERY_LOCK_STATUS और STANDARD_RIGHTS_READ।
सुनिश्चित करें कि एक रिमोट यूजर services.msc कंसोल का उपयोग करके सेवाओं की सूची और उनकी स्थिति प्राप्त कर सकता है या sc \\srv-name1 query का उपयोग कर सकता है।
स्वाभाविक रूप से, आपके पास सेवाओं को मैनेज करने के कोई विशेषाधिकार नहीं हैं, क्योंकि प्रत्येक सर्विस तक एक्सेस व्यक्तिगत ACL द्वारा नियंत्रित होता है। किसी यूजर को सर्वर सेवाओं को शुरू/रोकने के विशेषाधिकार देने के लिए, लेख How to Grant Permissions to Manage (Start, Stop or Restart) Windows Services to a User में निर्देशों का पालन करें।
टिप. यदि आप सामान्य से अलग कोई SCManager अधिकार असाइन करते हैं, तो वे रजिस्ट्री ब्रांच HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\Security में सेव हो जाते हैं। और यदि आपने SDDL स्ट्रिंग तैयार करते समय गलती की है, तो आप इस ब्रांच को डिलीट कर सकते हैं और अपने कंप्यूटर को रीस्टार्ट करके वर्तमान परमिशन को डिफ़ॉल्ट पर रीसेट कर सकते हैं।