मैं एक गैर-डोमेन-सदस्य सर्वर पर एक मनमानी उपयोगकर्ता या समूह को सेवा पर शुरू / रोक / पुनरारंभ करने की अनुमति कैसे दे सकता हूं?


61

हमारे पास हमारे सर्वर पर चलने वाली विंडोज सेवाओं का एक सूट है जो एक सेवा के अपवाद के साथ एक दूसरे के स्वतंत्र रूप से स्वचालित कार्यों का एक गुच्छा प्रदर्शन करता है जो अन्य सेवाओं के बाद दिखता है।

इस घटना में कि सेवाओं में से एक का जवाब देने या लटकने में विफल होना चाहिए, यह सेवा सेवा को फिर से शुरू करने का प्रयास करती है और, यदि प्रयास के दौरान एक अपवाद फेंक दिया जाता है, तो इसके बजाय समर्थन टीम को ईमेल करें, ताकि वे स्वयं सेवा को पुनरारंभ कर सकें।

थोड़ा शोध करने के बाद, मैं कुछ 'समाधानों' पर आया हूं, जो कि KB907460 में उल्लिखित वर्कअराउंड से लेकर उस खाते को देने के लिए हैं जिसके तहत सेवा व्यवस्थापक अधिकार चला रही है।

मैं इन विधियों में से किसी के साथ सहज नहीं हूँ - मैं Microsoft के ज्ञानकोष लेख में उल्लिखित पहली विधि के परिणामों को नहीं समझता, लेकिन मैं निश्चित रूप से उस खाते तक प्रशासक की पहुँच नहीं देना चाहता हूँ जिसके तहत सेवा चल रही है ।

मैंने स्थानीय सुरक्षा नीति और नीति के अलावा अन्य बातों पर ध्यान दिया है जो परिभाषित करती है कि कोई खाता सेवा के रूप में लॉग ऑन कर सकता है या नहीं, मैं कुछ और नहीं देख सकता जो ऐसा लगता है जैसे यह सेवाओं को संदर्भित करता है।

हम इसे सर्वर 2003 और सर्वर 2008 पर चला रहे हैं, इसलिए किसी भी विचार या संकेत को विनम्रतापूर्वक प्राप्त किया जाएगा!


स्पष्टीकरण: मैं किसी भी उपयोगकर्ता या समूह को शुरू / रोकने / फिर से शुरू करने की क्षमता प्रदान नहीं करना चाहता - मैं केवल विशिष्ट सेवाओं पर ऐसा करने की अनुमति किसी सक्षम उपयोगकर्ता या समूह को देना चाहता हूं ।


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


आप एमएस से इस लेख पर भी नज़र डाल सकते हैं, जो जीपी संशोधनों की ओर भी

3
सॉरी आई मिस यू… मैं व्यस्त था। आप कुछ इस तरह से देख रहे थे: serverfault.com/questions/15147/…
इवान एंडरसन

मुझे पता है कि यह एक बहुत पुराना सवाल है, लेकिन क्या आपने विंडोज सर्विस मैनेजर में 'रिकवरी' विकल्पों का उपयोग करने पर विचार किया है?
टिम लॉन्ग

जवाबों:


51

ऐसा करने का कोई GUI- आधारित तरीका प्रतीत नहीं होता है जब तक कि आप एक डोमेन में शामिल नहीं हो जाते हैं - कम से कम ऐसा नहीं जो मुझे कहीं भी मिल सकता है - इसलिए मैंने थोड़ा और खुदाई की और मुझे एक उत्तर मिला है जो इसके लिए काम करता है हमारी स्थिति।

मुझे समझ में नहीं आया कि स्ट्रिंग बेस का मतलब नॉलेज बेस आर्टिकल में क्या है, लेकिन थोड़ा सा खुदाई करने से मुझे पता चला कि यह SDDL सिंटैक्स है। आगे की खुदाई ने मुझे इस लेख को अलुन जोन्स द्वारा आगे बढ़ाया, जो बताता है कि एक सेवा के लिए सुरक्षा विवरणक कैसे प्राप्त करें और प्रत्येक बिट का क्या अर्थ है। MS KB914392 में अधिक विवरण हैं।

सेवा के मौजूदा सुरक्षा डिस्क्रिप्टर में संलग्न होने के sc sdshow "Service Name"लिए, मौजूदा डिस्क्रिप्टर प्राप्त करने के लिए उपयोग करें। यदि यह एक सादा पुराना। NET विंडोज सेवा है - जैसा कि हमारे साथ है - सुरक्षा विवरणक कुछ इस तरह दिखना चाहिए:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOC
RRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)S:(AU;FA
;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

हमें अनुमति प्रदान करने की आवश्यकता थी RP(सेवा शुरू करने के लिए), WP( सेवा को रोकने के लिए), DT( सेवा को रोकने / जारी रखने के लिए) और LO(ते सेवा की वर्तमान स्थिति को क्वेरी करने के लिए)। यह हमारे सेवा खाते को पावर उपयोगकर्ता समूह में जोड़कर किया जा सकता है, लेकिन मैं केवल उस खाते तक व्यक्तिगत पहुंच प्रदान करना चाहता हूं जिसके तहत रखरखाव सेवा चलती है।

का उपयोग करते हुए runasसेवा खाते के अंतर्गत एक कमांड प्रॉम्प्ट खोलने के लिए, मैं भाग गया whoami /allजो मुझे सेवा खाते के सिड दिया, और फिर नीचे अतिरिक्त SDDL का निर्माण:

(A;;RPWPDTLO;;;S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx)

यह तब D: SDDL स्ट्रिंग के ऊपर D: खंड में जुड़ जाता है:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOC
RRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWP
DTLO;;;S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx)S:(AU;FA;CCDCLCSWRPWPDTLOC
RSDRCWDWO;;;WD)

यह तब sc sdsetकमांड का उपयोग करके सेवा पर लागू होता है :

sc sdset "Service Name" D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;
CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU
)(A;;RPWPDTLO;;;S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx)S:(AU;FA;CCDCLCSW
RPWPDTLOCRSDRCWDWO;;;WD)

यदि सभी योजना के अनुसार चले जाते हैं, तो सेवा को तब शुरू किया जा सकता है, रोका जा सकता है, रोका जा सकता है और इसे ऊपर SID द्वारा परिभाषित उपयोगकर्ता द्वारा समझा जा सकता है।


10
एक ही काम करने के आसान तरीके के लिए, आपको SetACL.exe का उपयोग करना चाहिए । एक सेवा पर अनुमतियाँ सेट करने के लिए इसका उपयोग करने के तरीके का एक उदाहरण यहां दिया गया है:SetACL.exe -on "\\server1\W32Time" -ot srv -actn ace -ace "n:domain1\group1;p:start_stop"
मेसन जी। ज़्विती

2
आप सभी सेवाओं को कॉन्फ़िगर करने के लिए GUI के लिए प्रोसेस हैकर ( processhacker.sourceforge.net ) का उपयोग कर सकते हैं । इसमें छिपी हुई सेवाएँ शामिल हैं और आपको बाइनरी पथ - और अनुमतियों जैसी सेवा की अधिक सेटिंग्स कॉन्फ़िगर करने की अनुमति देता है।
ygoe

1
CoreTech gui ने मेरे लिए काम किया। यह मानना ​​मुश्किल है कि GUI पहले से ही विंडोज़ में मौजूद नहीं है। यहाँ उत्तर पढ़ना कि यह संभवतः कैसे कठिन हो सकता है? Microsoft की ओर से बड़ी विफलता।
माइककूल

मुझे CCLCSWSDDL अनुमतियां (RPWPDTLO के अलावा) में जोड़ना पसंद है, इसलिए मैं गेट-सर्विस चलाते समय सूचीबद्ध सेवा को भी देख सकता हूं (जिसमें पहले scmanager सेवा नियंत्रण प्रबंधक सेवा के लिए SDDL को संशोधित करने की आवश्यकता होती है जो सुलभ सेवाओं को सूचीबद्ध करने में सक्षम हो) । मुझे SWकुछ सेवाओं को फिर से शुरू करने में सक्षम होना चाहिए।
बोडाद

34

मुझे बस यही समस्या थी।
आप संसाधन किट से SubInACL.exe का उपयोग कर सकते हैं । यहाँ स्टैंडअलोन उपयोगिता डाउनलोड करें: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510

msiexec /a PathToMSIFile /qb TARGETDIR=DirectoryToExtractToयदि आप .msi को स्थापित नहीं करना चाहते हैं तो फ़ाइलों को निकालने के लिए उपयोग करें

  1. प्रशासक के रूप में कमांड प्रॉम्प्ट खोलें
  2. उस निर्देशिका पर जाएं जहां आपने .exe रखा था
  3. Daud subinacl /service SERVICE_NAME /grant=COMPUTER_NAME\USERNAME=TOP

T = सेवा प्रारंभ करें
O = सेवा रोक
P = रोकें / सेवा जारी रखें

पूर्ण संदर्भ: विंडोज 2000
या प्रकार में सेवाओं का प्रबंधन करने के लिए उपयोगकर्ताओं को अधिकार कैसे प्रदान करेंsubinacl /help

नोट: कोशिश मत करो subinacl /service SERVICE_NAME /permक्योंकि यह आपको मुसीबत में डाल सकता है (सबक सीखा: पी)। नाम भ्रामक (परम! = अनुमति) हो सकता है, क्योंकि यह सभी उपयोगकर्ताओं (यहां तक ​​कि व्यवस्थापक!) के लिए सभी अनुमतियों को हटा देता है।


एसओ और एसएफ खातों का विलय पैट नहीं कर सकते।
चॉपर 3

@ चॉपर 3 आपकी प्रतिक्रिया के लिए धन्यवाद। वास्तव में मेरे पास 2 एसओ खाते हैं: एक पंजीकृत है और इस एसएफ खाते के साथ जुड़ा हुआ है; अन्य एक अनरजिस्टर्ड SO खाता है जो मैंने रजिस्टर करने से पहले किया था ( उसी ईमेल पते का उपयोग किया था )। मैं उम्मीद कर रहा था कि दोनों को मिला दिया जा सकता है इसलिए मैं अपने द्वारा पहले की गई पोस्ट को ट्रैक कर सकता हूं। जैसा कि यहां बताया गया है कि मैंने एक पोस्ट को फ़्लैग करने की कोशिश की, लेकिन एसओ (1 प्रतिष्ठा) पर ऐसा नहीं कर सका। यही कारण है कि मैंने इस पोस्ट को हरी झंडी दिखाई। मैंने दो सप्ताह से अधिक समय से team@stackoverflow.com पर ईमेल करने का भी प्रयास किया, लेकिन कोई प्रतिक्रिया नहीं मिली। क्या आप मुझे सही जगह पर ले जा सकते हैं / व्यक्ति कृपया?
patrx

1
MSDN पर इस प्रक्रिया के विवरण की जाँच करें: support.microsoft.com/?kbid=288129
मार्क क्लाइमेंट

4

आप कंप्यूटर कॉन्फ़िगरेशन - नीतियां - विंडोज सेटिंग्स - सुरक्षा सेटिंग्स - सिस्टम सेवा की तलाश कर रहे हैं

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

उन सेवाओं को जोड़ने के लिए जो केवल दूसरी मशीन पर मौजूद हैं:

  • अन्य मशीन से सेवा की reg कुंजी निर्यात करें
  • gpedit मशीन पर आयात
  • नीति लागू करें
  • आयातित कुंजी को हटाएं

मुझे विश्वास है कि आप ऐसा करने का मतलब है gpedit.msc, क्योंकि "मैनेज सर्वर" विंडो नीतियों नोड को सूचीबद्ध नहीं करता है। यदि ऐसा है, तो मैं सुरक्षा सेटिंग्स नोड के नीचे एक आइटम नहीं देख सकता हूं जो "सिस्टम सेवा" का संदर्भ देता है जैसा कि आप ऊपर, सर्वर 2008 या सर्वर 2003 पर
सुझाते हैं

आह येस। मैंने मान लिया कि आप समूह नीति के माध्यम से ये परिवर्तन करने की योजना बना रहे थे।
रियान बोल्गर

1
वास्तव में - ये सदस्य सर्वर नहीं हैं। क्या स्थानीय नीति या किसी अन्य विधि का उपयोग करके इसे लक्षित करने का एक तरीका है?
abitgone

2

मैंने SubinAcl का उपयोग किया (जैसा कि patrx द्वारा सुझाया गया है) MySQL को एक नियमित डोमेन उपयोगकर्ता (व्यवस्थापक नहीं) के रूप में शुरू करने में सक्षम होने के लिए और यह पूरी तरह से काम करता है! (हालांकि कमांड को कम से कम-व्यवस्थापक के रूप में निष्पादित किया जाना चाहिए)

आदेश है:

[PATH_TO_SUBACL]\subinacl.exe /service MySQL /grant=[Domain User - Without domain]=TOP

बस ध्यान दें कि मैंने उपयोगकर्ता को डोमेन के साथ उपसर्ग किए बिना दर्ज किया था ... अन्यथा कमांड पार्सिंग कमांड पर विफल रहता है!

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