क्या विंडोज के लिए कोई 'sudo' कमांड है?


449

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


7
मेरा मानना ​​है कि आप जिस पद की तलाश कर रहे हैं वह "उन्नत" है। भले ही आपके क्रेडेंशियल में व्यवस्थापक की अनुमति हो, फिर भी आपके क्रेडेंशियल्स के अंतर्गत प्रक्रियाओं के पास तब तक प्रशासक की अनुमति नहीं है जब तक कि आप "sudo" कमांड को नहीं करते। विंडोज में, वे इसे "एलिवेट" कहते हैं।
सर्फस

7
@IGRACH मेरी शक्तियों पर नहीं ...
जिगगंज

2
मैं इसका उपयोग करता हूंdoskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
विलियम

1
मेरी कोशिश करो wsudo, sudoएक चॉकलेट पैकेज के रूप में उपलब्ध विंडोज के लिए एक समान उपकरण।
noseratio

जवाबों:


267

Runas आदेश।

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

बस दौडो:

runas /noprofile /user:Administrator cmd 

एक प्रशासक के रूप में एक कमांड शेल शुरू करने के लिए


22
आप पा सकते हैं कि आप किसी भी विस्तारित उपयोग के लिए प्रोफाइल लोड करना चाहते हैं (जैसे पर्यावरण चर सहित)। किस मामले में गिरा /noprofile
रिचर्ड

6
यह मेरे लिए काम नहीं कर रहा है। मैंने अपना पासवर्ड टाइप करने के बाद कमांड प्रॉम्प्ट बंद कर दिया है।
जोनास

55
क्या यह प्रशासक का पासवर्ड नहीं पूछ रहा है? sudo आपका पासवर्ड पूछ रहा है !
n611x007

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

12
+1 "पुराने" के लिए क्योंकि रनस यूएसी को बायपास नहीं कर सकता है। इसके बजाय, Windows बटन दबाएँ, cmd टाइप करें, और Ctrl + Shift + Enter दबाएँ।
मध्याह्न-पीला

125

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

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

एलिवेट का उद्देश्य यूएसी (उपयोगकर्ता खाता नियंत्रण) के आसपास काम करना या बायपास करना नहीं है, बल्कि इसके साथ काम करना है। जब तक यूएसी सक्षम होता है तब तक प्रक्रिया में कुछ बिंदु पर किसी प्रकार का संकेत होना चाहिए । यदि आपको पूरी तरह से शीघ्रता से छुटकारा पाने की आवश्यकता है तो आपको यूएसी को अक्षम करना होगा

दर्द बिंदु को कम करने वाली कमियां एक विशेष प्रक्रिया को एक गैर-विशेषाधिकार प्राप्त शेल से बढ़ा रही हैं, और फिर सामान्य रूप से ले जा रही हैं। इसके बिना आपको राइट-क्लिक> "Run as Administrator" के साथ एक विशेषाधिकार प्राप्त कमांड प्रॉम्प्ट शुरू करने की आवश्यकता है , जिसे विशेषाधिकार प्राप्त कमांड का प्रयास करने से पहले आसानी से स्क्रिप्ट नहीं किया जा सकता है।


5
यह secpol.msc में "प्रॉम्प्ट के बिना एलिवेट" के साथ एकदम सही हो जाता है। साथ में, वे %wheel ALL=(ALL) NOPASSWD: ALLसुडो में भी ऐसा ही करते हैं ।
Sayap

2
@ sayap, बस स्पष्ट होने के लिए, क्या आपका यह मतलब है: ss64.com/nt/syntax-uac.html ?
मैट विल्की

5
एलिवेट (v1.3.0) के साथ एकमात्र परेशानी मुझे यह है कि यह उस प्रोग्राम से त्रुटि कोड को वापस नहीं करता है जो इसे ऊंचा कर रहा है।
केन

4
सूद .bat: @elevate %*=> लाभ!
जो डीएफ

10
यह उल्लेख करना अच्छा होगा कि यह एक बाहरी उपयोगिता है, ओओटीबी गायब है।
हाय-एंजेल

67

आप रनस कमांड का उपयोग कर सकते हैं जो समान है, या आप स्रोत प्रोजेक्ट पर विंडोज प्रोजेक्ट के लिए sudo की जांच कर सकते हैं जो एक sudo कमांड जोड़ता है।

अंतर सूक्ष्म है:

मान लीजिए कि आपके दो उपयोगकर्ता हैं। बॉब एक ​​सामान्य उपयोगकर्ता है और जेम्स एक प्रशासक है।

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

अगर दूसरी तरफ बॉब "sudo acommand" करता है, तब भी कमांड को Bob के रूप में चलाया जाता है, लेकिन उन्नत अनुमतियों के साथ - जैसे Linux sudo कमांड। किसी भी उपयोगकर्ता को sudo में सक्षम होने से रोकने के लिए आपको एक sudoers उपयोगकर्ता समूह को परिभाषित करना होगा, जिसमें सामान्य उपयोगकर्ताओं की सूची शामिल है जिन्हें sudo का उपयोग करके ऊपर उठाने की अनुमति है। उपयोगकर्ताओं को अभी भी ऊंचाई से पहले क्रेडेंशियल्स प्रदान करना है।

कभी-कभी अंतर महत्वपूर्ण नहीं होता है, कभी-कभी यह होता है, और मुझे लगता है कि दोनों कमांड उपयोगी हो सकते हैं।


2
क्या आपको यकीन है? जब मैं ubuntu में sudo चलाता हूं, अगर मेरा वर्तमान विषय है, ~/.themesतो sudo-ed एप्लिकेशन उस विषय तक नहीं पहुंच पाएगा, क्योंकि यह अंदर नहीं है /home/root/.themes, और डिफ़ॉल्ट बदसूरत gtk विषय का उपयोग करेगा।
hasen

5
@ jenen j - आपका मुद्दा सिर्फ इसलिए है क्योंकि ~ / .themes कमांड चलाने से पहले मूल्यांकन करता है (और इस तरह यह रूट पर स्विच होने से पहले)।
जारेड

1
GitHub पर होस्ट को छोड़कर एक अन्य समाधान है, विंडोसु: github.com/tehsenaus/windosu मैं इसे मिला, और यह बहुत अच्छा काम करता है। पसंदीदा चीज यह स्थापित करने के लिए सुपर आसान है। बस "एनपीएम इंस्टॉल -g विंडोसु"।
वेनरिक्स

39

आप स्क्रिप्ट एलिवेशन पावरटॉय का भी उपयोग कर सकते हैं ।


बहुत बढ़िया - ठीक वही, जिसकी मुझे तलाश थी। मैं नहीं चाहता था कि कमांड के रूप में एक अलग उपयोगकर्ता हो, केवल इसे उन्नत विशेषाधिकार के साथ चला सके।
orip

वास्तव में इस समस्या का सही समाधान है! अपने गन्दा वाक्य रचना के साथ कौन Runas चाहता है?
स्टैब्लॉग

1
मैं अक्सर कामना करता हूं कि एलिवेटेड कमांड विंडोज में बनाया गया था। यह एक शानदार उपकरण है।
nhinkle

अब उसी लेखक द्वारा एक एलिवेशन पॉवरटॉयस संग्रह है जिसमें सेल्फ-एलेवेटिंग स्क्रिप्ट बनाना विशेष रूप से प्रासंगिक है।
मैट विल्की

1
@ बार नहीं। यह UAC के उद्देश्य को पराजित करेगा।
nhinkle

29

यदि आप वैकल्पिक कंसोल में जाने के लिए तैयार हैं, तो ConEmu (मैं लेखक हूं)। इसकी एक विशेषता - एक ConEmu विंडो में ऊंचे और गैर-ऊंचे दोनों टैब को चलाने की क्षमता। टैब को विभिन्न क्रेडेंशियल्स के साथ भी शुरू किया जा सकता है।

उपयोगकर्ता सुविधा के लिए, बैच-फ़ाइल csudo.cmd है (जिसे आसानी से बैश करने के लिए अपनाया जा सकता है)। परियोजना के विकी में पूरा विवरण पढ़ें । संक्षेप में, जब आप मौजूदा गैर-एलिवेटेड टैब से कुछ कमांड चलाते हैं, उदाहरण के लिए

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

ConEmu dismनए एलिवेटेड कंसोल / टैब (विस्टा में पूर्व UAC शीघ्र या XP में लॉगिन बॉक्स के साथ) में शुरू होगा।

डिफ़ॉल्ट रूप csudoसे एक विभाजन में नया कंसोल शुरू होता है ( csudo.cmdसामग्री के संपादन के माध्यम से परिवर्तन हो सकता है )।

और निश्चित रूप से आप इसका नाम बदल सकते हैं sudo.cmdयदि आप "क्लासिक" sudoशब्द पसंद करते हैं।

ConEmu / विंडोज में sudo


1
कॉनडेमु डिस्ट्रीब्यूशन में लंबे समय से सीएसडीओ को शामिल किया गया था। किसी भी लिंक की जरूरत नहीं है।
मैक्सिमस

समस्या यह है कि sudo'd कमांड के बाद नया कंसोल टैब अनुपयोगी हो जाता है। इसलिए आप ऊंचे टैब में काम करना जारी नहीं रख सकते, बस एक press enter or esc to exitसंदेश प्राप्त करें ।
जिग्गंजर

1
बेशक आप खिचड़ी भाषा। यहां तक ​​कि यूनिक्स पर भी आप sudoअपने काम को पूरा करने के बाद वापस गैर-ऊंचे टर्मिनल पर पहुंच जाते हैं ! आप गलत तरीके से जा रहे हैं।
मैक्सिमस

1
1) यदि आप एक नई विंडो या टैब खोलने जा रहे हैं, तो आप इसे रख सकते हैं, यदि वे जारी रखना चाहते हैं, तो उपयोगकर्ता को चुनने दें। 2) मेरे ubuntu पर मुझे हर बार सूडो नहीं करना पड़ता है, ऊंचाई कुछ मिनटों तक रहती है जो मुझे लगता है। 3) इस एप्लिकेशन के पास एक लाख विकल्प हैं, फिर भी इसके लिए कुछ नहीं है? शायद मैं खराब हो गया हूं।
जिग्गंजर

24

त्वरित विधि:

सूद जोड़ने के तीन चरण।

  1. PowerShell खोलें।

  2. निम्नलिखित स्क्रिप्ट (Ctrl + C) की प्रतिलिपि बनाएँ और इसे PowerShell (Alt + Space + E + P) में चिपकाएँ:

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
  1. मारो Enter

यह sudoPowerShell में स्थायी रूप से कमांड को सक्षम करेगा ।

उपयोग:

sudo <process-name> [param1 [param2 [param3]]]

उदाहरण:

sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496

सीखने के लिए लंबी विधि:

नोट: मैंने उपरोक्त लेख बनाने के लिए दोनों लेखों से स्क्रिप्ट को मिलाया। नोटपैड में स्क्रिप्ट को मैन्युअल रूप से चिपकाने के बजाय मैंने स्क्रिप्ट Out-Fileसे बचाने ps1और $profileफ़ाइलों को जोड़ने के लिए स्टेटमेंट जोड़े ।

युक्ति: यदि आप UAC पॉपअप (मेरे जैसे) के बहुत बड़े प्रशंसक नहीं हैं, तो निम्न। * फ़ाइल को सहेजें और चलाएँ:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000

1
मुझे इस प्रश्न के लिए शक्तियां समाधान पसंद हैं। यह किसी चीज को ऊंचा करने का सबसे आसान तरीका है। मौजूदा .bat फाइलें आसानी से POSH में बदल सकती हैं
मिशेल Skurnik

विंडोज़ 10 पर यह त्रुटि मिली:. : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
sovrov

@sowrov, [यह लेख] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/) देखें। डिफ़ॉल्ट रूप से PowerShell स्क्रिप्ट किसी भी विंडोज इंस्टॉलेशन पर अक्षम होती हैं। आपको इसे इस आदेश के साथ सक्षम करने की आवश्यकता है set-executionpolicy remotesigned। इसके अलावा अन्य विकल्प आधिकारिक डॉक्सremotesigned में वर्णित हैं ।
वल्कन रैवेन

पाठक ध्यान दें कि यह पीएस स्क्रिप्ट powershell -c start -verb runas program.exeकार्यक्षमता के लिए एक आवरण है । यह भी ध्यान दें कि आप इस तरह cmd प्रॉम्प्ट (मूल रूप से) के साथ ऊंचा नहीं कर सकते । Powershell सबसे अच्छा देशी विकल्प है।
जिगगंजर

क्या शक्तियां env के बजाय cmd.exe में ही की जा सकती हैं? शक्तियां क्लिंक के साथ गणना नहीं करती हैं और बिना क्लिंक विंडो के बिल्कुल भी गणना नहीं होती ...
PJJ

20

यदि आप विंडोज पर ऐसा कर रहे हैं, तो रन आंसर कमांड के अलावा, कुछ अन्य उत्तरों में बताया गया है, माउस के साथ ऐसा करने के भी तरीके हैं।

यदि आप Shiftविंडोज में सबसे निष्पादन योग्य फ़ाइलों पर राइट-क्लिक करते हैं, तो आपको कुछ और उन्नत विकल्पों पर ध्यान देना चाहिए। इनमें से एक " Run As..." विकल्प है (मुझे लगता है कि इसे Run As Administratorविस्टा से " " कहा जाता है )।

आप Microsoft से RunAs का एक और अधिक उन्नत संस्करण डाउनलोड कर सकते हैं, जिसे ShellRunAs कहा जाता है , इसमें अंतर्निहित RunAs कमांड पर एन्हांसमेंट है, कमांड लाइन और ग्राफिकल मोड दोनों में, जिसमें आपको खाता क्रेडेंशियल्स को बचाने की सुविधा मिलती है।


4

सुविधाजनक नाम sudo के साथ इसके लिए एक चॉकलेट पैकेज है । आप इस आदेश का उपयोग करके चॉकलेट के साथ पैकेज स्थापित कर सकते हैं:

choco install -y sudo

फिर आपको जो भी विंडोज / एमएस शेल का उपयोग करना है, आप sudoउम्मीद के अनुसार उपयोग कर सकते हैं ।


3

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

जब मैं विंडोज एक्सपी का उपयोग कर रहा था तो यह ऐप मुझे बहुत मदद करता है। बीटा विंडोज 7 के तहत काम करता है।


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

3

जैसा कि आपने शायद खोज लिया है, रनस आपको एक अन्य उपयोगकर्ता के रूप में चलाने देगा लेकिन यह उन्नयन नहीं कर सकता है और यह वर्तमान निर्देशिकाओं, पर्यावरण चर या लंबी कमांड लाइनों को पारित नहीं करता है।

हैमिल्टन सी शेल एक वास्तविक सु और सूडो के साथ हल करता है। सु आपको दूसरे उपयोगकर्ता के रूप में एक कमांड चलाने की सुविधा देता है; सुडो (वास्तव में सु के लिए एक उपनाम) आपको उन्नत कमांड चलाने की सुविधा देता है। आप दोनों भी कर सकते हैं, एक अलग उपयोगकर्ता के रूप में बढ़ रहे हैं। वर्तमान निर्देशिकाओं, पर्यावरण चर और लंबी कमांड लाइनों को कॉलर के संदर्भ में चल रहे सु के बीच एक साझा मेमोरी हैंडशेक के माध्यम से पारित किया जाता है और खुद की एक प्रति जो नए क्रेडेंशियल्स के साथ अंतःक्षेपण के रूप में चल रही है जो तब बच्चे को शुरू करती है। पूर्ण प्रकटीकरण: मैं लेखक हूँ।


1

sudoCygwin के minttyटर्मिनल के लिए एक कार्यशील प्रतिस्थापन उपयोगकर्ता के PATH में निम्नलिखित स्क्रिप्ट को रखने के लिए होगा:

$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"$@\"

मेरे लिए यह विंडोज पर एक टर्मिनल में काम करते समय vimया जैसे कार्यक्रमों के विशेषाधिकारों को बढ़ाने के लिए एकमात्र व्यवहार्य प्रतिस्थापन है cygrunsrv


1

यह स्क्रिप्ट काम करती है:

@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs

इसे सहेजें और sudo.cmdफिर इसे अपने पेट में जोड़ें

नोट: runasइस संदर्भ में साधन "व्यवस्थापक के रूप में चलाएं" और "अन्य उपयोगकर्ता के रूप में चलाएँ"

यहां से लिया गया और आउटपुट से cscript.exe हेडर को हटाने के लिए थोड़ा संपादित किया गया


1
यह एक नया कंसोल बनाता है। Sudo'd कमांड पूरा होने के बाद नई विंडो गायब हो जाएगी - इसलिए आप आउटपुट भी नहीं पढ़ सकते हैं।
जिगगंजर

निराशापूर्वक हां। लेकिन इसका इस्तेमाल कुछ बेसिक कमांड (कॉपी), जीयूआई टूल या एडमिन cmd खोलने के लिए किया जा सकता है।
चार्ल्स बाजरा

1

मेरे विचार में सबसे सरल उपाय यह है कि काम करने के लिए शक्तियां का लाभ उठाया जाए, जो पोर्टेबल हो और यूएसी का उपयोग कर उपयोगकर्ता को संकेत देगा।

आप इसे किसी भी शेल (cmd या पावरशेल) में चला सकते हैं

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"

0

निम्नलिखित vbs स्क्रिप्ट मेरे लिए ट्रिक करती है। मैंने उसे लगा दियाC:\Windows\System32

Set objArgs = WScript.Arguments
exe = objArgs(0)
args = ""
IF objArgs.Count >= 2 Then
   args = args & objArgs(1)
End If
For it = 2 to objArgs.Count - 1
   args = args & " " & objArgs(it)
Next
Set objShell = CreateObject( "WScript.Shell")
windir=objShell.ExpandEnvironmentStrings("%WINDIR%")
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute exe, args, "", "runas", 1
set objShellApp = nothing

कमांड प्रॉम्प्ट पर उदाहरण का उपयोग करें sudo net start service

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