जब मेरे पास SeShutdownPrivilege नहीं है, तो मैं सिस्टम को कैसे बंद कर सकता हूं


20

विंडोज में उपयोगकर्ताओं को विभिन्न विशेषाधिकार दिए जा सकते हैं

विशेषाधिकार एक उपयोगकर्ता खाता प्रदर्शन कर सकते हैं कि सिस्टम संचालन के प्रकार का निर्धारण करते हैं। एक व्यवस्थापक उपयोगकर्ता और समूह खातों को विशेषाधिकार प्रदान करता है। प्रत्येक उपयोगकर्ता के विशेषाधिकारों में उपयोगकर्ता को दिए गए समूह और उपयोगकर्ता के समूह शामिल हैं।

वर्तमान में 35 विशेषाधिकार हैं। कुछ और दिलचस्प हैं:

  • SeSystemtimePrivilege : सिस्टम समय को संशोधित करने के लिए आवश्यक है।
  • SeTimeZonePrivilege : कंप्यूटर की आंतरिक घड़ी से जुड़े समय क्षेत्र को समायोजित करने के लिए आवश्यक है
  • SeBackupPrivilege : यह विशेषाधिकार फ़ाइल के लिए निर्दिष्ट पहुँच नियंत्रण सूची (ACL) पर ध्यान दिए बिना सिस्टम को किसी भी फ़ाइल पर सभी रीड एक्सेस कंट्रोल प्रदान करने का कारण बनता है।
  • SeCreatePagefilePrivilege : पेजिंग फ़ाइल बनाने के लिए आवश्यक है।
  • SeRemoteShutdownPrivilege : नेटवर्क अनुरोध का उपयोग करके सिस्टम को बंद करने के लिए आवश्यक है।
  • SeDebugPrivilege : किसी अन्य खाते के स्वामित्व वाली प्रक्रिया की मेमोरी को डीबग करना और समायोजित करना आवश्यक है।

लेकिन जिस में मेरी दिलचस्पी है:

  • SeShutdownPrivilege : स्थानीय सिस्टम को बंद करने के लिए आवश्यक है।

मैंने देखा कि मेरे पास वास्तव में यह विशेषाधिकार नहीं है। एक उन्नत कमांड प्रॉम्प्ट से:

>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                  Description                               State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege        Adjust memory quotas for a process        Disabled
SeSecurityPrivilege             Manage auditing and security log          Disabled
SeTakeOwnershipPrivilege        Take ownership of files or other objects  Disabled
   ...
SeShutdownPrivilege             Shut down the system                      Disabled
   ...

इस प्रक्रिया की पुष्टि तब की जाती है जब मैं के रूप में चल रहे एक उन्नत प्रक्रिया के सुरक्षा टोकन की जांच करने के लिए प्रोसेस एक्सप्लोरर का उपयोग कर रहा हूं:

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

और फिर भी मैं सिस्टम को बंद कर सकता हूं । क्यूं कर?

समूह नीति कहती है कि मेरे पास यह होना चाहिए

यदि आप स्थानीय सुरक्षा नीति संपादक स्नैपइन ( secpol.msc) का उपयोग करते हैं , तो आप देख सकते हैं कि मुझे विशेषाधिकार होना चाहिए :

  • secpol.msc

    • सुरक्षा सेटिंग
    • स्थानीय नीतियां
    • उपयोगकर्ता अधिकार असाइनमेंट
    • सिस्टम को शट डाउन करें

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

विशेषाधिकार की व्याख्या :

सिस्टम को शट डाउन करें

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

कार्यस्थानों पर डिफ़ॉल्ट: व्यवस्थापक, बैकअप ऑपरेटर, उपयोगकर्ता।

सर्वर पर डिफ़ॉल्ट: व्यवस्थापक, बैकअप ऑपरेटर।

डोमेन नियंत्रकों पर डिफ़ॉल्ट: व्यवस्थापक, बैकअप ऑपरेटर, सर्वर ऑपरेटर, प्रिंट ऑपरेटर।

मैं एक उपयोगकर्ता हूँ । कभी-कभी मैं एक प्रशासक होता हूं , और दूसरी बार मैं एक NotAdministrator हूं

शायद सवाल यह होना चाहिए कि मुझे विशेषाधिकार क्यों नहीं हैं

लेकिन वास्तविकता यह है कि मेरे पास विशेषाधिकार नहीं है; और फिर भी जब मैं स्थानीय रूप से लॉग इन करता हूं तो स्थानीय सिस्टम को बंद कर सकता हूं।

क्यूं कर?


@ मेहरदाद के पास एक अच्छा जवाब था, वह हटा दिया, जो मुझे लगता है कि ध्यान देने योग्य है और इस सवाल का जवाब अच्छी तरह से और पर्याप्त जवाब देता है:

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

बोनस पढ़ना


डोमेन द्वारा नियंत्रित आपकी समूह नीति आपकी स्थानीय समूह नीति को ओवरराइड कर देगी। स्थानीय अनुमतियों के बजाय डोमेन अनुमतियों को समायोजित करें। जब आप दौड़े, "whoami / private :, आप किस उपयोगकर्ता समूह में थे? यदि मुझे पूरी तरह से समझ नहीं आया है कि आप क्या पूछ रहे हैं, तो अपना प्रश्न संपादित करें, क्योंकि मैं केवल एक जंगली अनुमान लगा रहा हूं कि आप क्या पूछ रहे हैं।
रामहाउंड

मैं पूछ रहा हूं कि मैं सिस्टम को बंद करने में सक्षम क्यों हूं जब मेरे सुरक्षा टोकन का विशेषाधिकार नहीं है। क्या विशेषाधिकार स्थानीय मशीन या डोमेन नियंत्रक से आता है: किसी भी तरह से मेरे पास नहीं है।
इयान बॉयड

पावर प्लग को हटाने से सभी विशेषाधिकार प्राप्त मुद्दों के आसपास हो जाता है ... :) बेशक यह कैसे फिर से शुरू होता है पर निर्भर करता है ...
सौर माइक

जवाबों:


29

आपके पास अनुमति है, लेकिन यह अक्षम है । यही तो PowerShell आपको बता रहा है।

सिस्टम को बंद करने के लिए आप Win32API फ़ंक्शन का उपयोग करते हैं जिसे कहा जाता है InitiateSystemShutdownया ExitWindowsEx:

ExitWindowsEx(EWX_POWEROFF, 0);

ये कार्य नोट करते हैं:

स्थानीय कंप्यूटर को बंद करने के लिए, कॉलिंग थ्रेड में SE_SHUTDOWN_NAME विशेषाधिकार होना चाहिए। डिफ़ॉल्ट रूप से, उपयोगकर्ता उन कंप्यूटर पर SE_SHUTDOWN_NAME विशेषाधिकार को लॉग ऑन कर सकते हैं, और व्यवस्थापक दूरस्थ कंप्यूटर पर SE_REMOTE_SHUTDOWN_NAME विशेषाधिकार सक्षम कर सकते हैं।

जैसा कि आप देख सकते हैं, विंडोज थ्रेड विशेषाधिकार की जांच करता है (किसी भी थ्रेड में विशेषाधिकारों के साथ टोकन है)। यदि आप SE_SHUTDOWN_NAME विशेषाधिकार के ExitWindowsExबिना कॉल करते हैं , तो फ़ंक्शन त्रुटि के साथ विफल हो जाएगा:

Error code: 1314
A required privilege is not held by the client

डिफ़ॉल्ट रूप से आपके द्वारा बनाए गए धागे आपके विशेषाधिकार प्राप्त करते हैं; लेकिन एक कार्यक्रम एक विकलांग विशेषाधिकार को सक्षम कर सकता है जिसे इसका उपयोग करके प्रदान किया गया है AdjustTokenPrivileges:

TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = LookupPrivilegeValue(NULL, "SeShutdownPrivilege");
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

HANDLE processToken = OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES);
AdjustTokenPrivileges(processToken, false, tp, 0, NULL, NULL);
CloseHandle(processToken);

एक टोकन में विशेषाधिकार बदलने का कहना है:

AdjustTokenPrivileges टोकन से विशेषाधिकारों को जोड़ या हटा नहीं सकते । यह केवल मौजूदा विशेषाधिकारों को सक्षम कर सकता है जो वर्तमान में अक्षम हैं या वर्तमान में सक्षम विशेषाधिकारों को अक्षम कर सकते हैं


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

एक प्राचीन लेकिन बहुत अच्छी किताब है: https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/ उस सभी सामान के बारे में।


मैंने वास्तव में उस किताब को कुछ साल पहले खरीदा था; मुझे इसे फिर से पढ़ना होगा।
इयान बॉयड

यदि आप जानते हैं कि आप वीएस समुदाय को डाउनलोड कर सकते हैं (जो मुफ़्त है) और निजी के साथ पीसी को प्रोग्रामेटिक रूप से बंद करने का प्रयास करें। फिर, इस निजी प्रोग्राम को सक्षम करें और फिर से प्रयास करें)। विंडोज :)
user996142

@ user996142 - क्या, इसे बंद करने से? आप सही समझे। :)
जूल्स

5

ऐसा इसलिए है क्योंकि आपका उपयोगकर्ता उस समूह से संबंधित है जिसके पास वह विशेषाधिकार है जो सक्षम है।

अपने आप को देखने के लिए कौन सा समूह:

  • व्यवस्थापक के रूप में एक PowerShell (या कमांड) प्रॉम्प्ट खोलें।
  • भागो secedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG
  • नोटपैड या एक जैसे में OutFile.cfg की सामग्री को देखें और SeShutdownPrivilegeप्रविष्टि देखें। आपको उन उपयोगकर्ताओं और / या समूहों के लिए एक जोड़ी / कुछ SID देखना चाहिए, जिनके पास यह विशेषाधिकार सक्षम है।

इसलिए मेरे पास तीन लघु SID सूचीबद्ध हैं। लघु SID आमतौर पर कंप्यूटर-स्तरीय खाते / समूह होते हैं। उदाहरण के लिए, उनमें से एक है S-1-5-32-545

PowerShell का उपयोग करके हम यह निर्धारित कर सकते हैं कि SID किस खाते / समूह का प्रतिनिधित्व करता है:

$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-32-545")
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser.Value

यह लौटता है BUILTIN\Users

चूंकि आप उस कंप्यूटर पर एक उपयोगकर्ता हैं, आप स्वचालित रूप से उस समूह के सदस्य हैं, जिसका अर्थ है कि आप कंप्यूटर को बंद कर सकते हैं।

अन्य दो मेरे पास हैं S-1-5-32-544, और S-1-5-32-551। ये मानक BUILTIN\Administratorsसमूह, और BUILTIN\Backup Operatorsसमूह हैं। secpol.mscसंवाद में आप जो समूह देख रहे हैं, उसके साथ कौन सी पंक्ति है ।

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