क्या कोई कमांड है जो कमांड प्रॉम्प्ट को जगह पर बढ़ा सकती है?


61

* निक्स सिस्टम पर, आप एक मूल शेल प्राप्त कर सकते हैं जैसे:

$ su # or 'sudo -s'
#

रूट शेल को उसी टर्मिनल के भीतर जगह में रखा गया है।

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

क्या विंडोज के लिए एक समान कमांड है जो एक नई विंडो को जन्म दिए बिना इन-प्लेस एलिवेशन करता है?


31
ध्यान दें कि su / sudo -s वास्तव में एक नई शेल प्रक्रिया भी शुरू करता है। यह सिर्फ एलिवेटेड प्रक्रियाएं एक ही टर्मिनल से जुड़ी हुई हैं, इसलिए वे इस तरह दिखाई देती हैं जैसे कि यह जगह में ऊंचा हो।
रेयान

"यह एक नई खिड़की या UAC संकेतों को प्रदर्शित नहीं करना चाहिए" क्या आप सिर्फ यह कह रहे हैं कि इसे ग्राफ़िकल इंटरैक्शन की आवश्यकता नहीं होनी चाहिए? या आप के लिए प्रेरित किया जाने नहीं देना चाहते सब पर ? उदाहरण के लिए, sudoकभी-कभी पासवर्ड के लिए संकेत देगा, लेकिन यह पाठ इंटरफ़ेस के साथ ऐसा करता है। मैं सोच रहा था कि नैनो सर्वर (जो मुझे विश्वास नहीं है कि डिफ़ॉल्ट रूप से रिमोट डेस्कटॉप के लिए GUI भी प्रदान करता है) इसे संभालते हैं।
jpmc26

2
@ jpmc26 पाठ इंटरफ़ेस पर सहभागिता ठीक है।
user2064000

@ jpmc26 मुझे आश्चर्य है कि नैनो सर्वर में भी UAC है। यह देखते हुए कि यह कंटेनरों के लिए अनुकूलित है, यह बहुत उपयोगी नहीं है। यह सर्वर कोर संस्करणों के साथ-साथ IIRC में अक्षम था। यदि आपने इसे आकस्मिक रूप से सक्षम किया, तो आपको परेशानियों का एक पूरा ढेर मिल गया :)
लुआं

2
@ user2064000 UAC प्रॉम्प्ट सुरक्षित डेस्कटॉप पर लॉन्च किए गए कम से कम (गैर-विंडोज बायनेरिज़ के लिए डिफ़ॉल्ट रूप से) है, उपयोगकर्ता के वर्तमान डेस्कटॉप पर नहीं। थोड़ा परेशान होने के अलावा, इसे यूएसी प्रॉम्प्ट के साथ हस्तक्षेप करने वाली अन्य प्रक्रियाओं को रोकने के लिए डिज़ाइन किया गया है। इसके अलावा, अगर प्रमाणीकरण की आवश्यकता होती है, तो उसे सुरक्षित डेस्कटॉप पर होना होगा, और कुछ व्यवस्थापक को यह भी साबित करने के लिए एक Ctrl-Alt-Del अनुक्रम की आवश्यकता हो सकती है कि Windows पासवर्ड ले रहा है और पासवर्ड प्रॉम्प्ट करने वाली कुछ अन्य प्रक्रिया नहीं है। इसलिए cmd विंडो में पासवर्ड टाइप करना शायद Microsoft सुरक्षा के नजरिए से नहीं उड़ता।
कैल्कस

जवाबों:


65

टीएल; डीआर - एकमात्र विकल्प एक और प्रक्रिया को स्पॉन करना है। (एक नया cmd.exe।) कमांड प्रॉम्प्ट के मामले में, एक पहुंच के साथ एक नया उदाहरण शुरू करना जिसमें उच्च अनुमतियाँ होती हैं, जिसके परिणामस्वरूप हमेशा एक नई विंडो बनाई जाएगी।


पहले से चल रही प्रक्रिया के लिए अतिरिक्त अनुमति देना संभव नहीं है ।

जब उपयोगकर्ता अधिकार वाला उपयोगकर्ता उपयोगकर्ता खाता नियंत्रण (UAC) के साथ विंडोज मशीन में लॉग इन करता है, तो दो अलग-अलग एक्सेस टोकन बनाए जाते हैं :

  1. पूर्ण व्यवस्थापक पहुंच के साथ एक, और
  2. मानक उपयोगकर्ता पहुंच के साथ एक दूसरा "फ़िल्टर्ड टोकन"

जिस समय एक प्रक्रिया (जैसे CMD.EXE) बनाई जाती है, उसे इन दो एक्सेस टोकन में से एक सौंपा जाता है । यदि प्रक्रिया को प्रशासक के रूप में "ऊंचा" चलाया जाता है, तो अनफ़िल्टर्ड एक्सेस टोकन का उपयोग किया जाता है। यदि प्रक्रिया को व्यवस्थापक अधिकार प्रदान नहीं किया जाता है, तो फ़िल्टर्ड, मानक उपयोगकर्ता टोकन का उपयोग किया जाता है।

एक बार एक प्रक्रिया बन जाने के बाद इसका एक्सेस टोकन बदलना संभव नहीं है1 विंडोज डेस्कटॉप थ्रेड के लिए एमएसडीएन एप्लीकेशन सिक्योरिटी में, विंडोज कर्नेल टीम के सदस्य के रूप में खुद को पहचानने वाला एक पोस्टर:

NT कर्नेल का इरादा कभी नहीं था कि जब एक प्रक्रिया चलने लगे तो टोकन स्विचिंग की अनुमति दे। ऐसा इसलिए है क्योंकि हैंडल, आदि को एक पुराने सुरक्षा संदर्भ में खोला गया हो सकता है, इनफ्लाइट ऑपरेशंस असंगत सुरक्षा संदर्भों का उपयोग कर सकते हैं, आदि, जैसे कि आमतौर पर एक प्रक्रिया के टोकन को स्विच करने के लिए समझ में नहीं आता एक बार जब यह निष्पादन शुरू हो जाता है। हालांकि, यह विस्टा तक लागू नहीं किया गया था[जोर मेरा] (स्रोत धन्यवाद करने के लिए @Ben एन )

नोट: उपयोगकर्ता खाता नियंत्रण विंडोज विस्टा की रिलीज के साथ पेश किया गया था ।

यह सुपर उपयोगकर्ता उत्तर दो अतिरिक्त स्रोतों की पुष्टि करता है जो समान हैं:

इसलिए कमांड प्रॉम्प्ट या किसी अन्य प्रक्रिया को इन-प्लेस करना संभव नहीं है। एकमात्र विकल्प एक अन्य प्रक्रिया को एक नए एक्सेस टोकन के साथ स्पॉन करना है (जो वांछित होने पर मूल प्रक्रिया का एक और उदाहरण हो सकता है)। कमांड प्रॉम्प्ट के मामले में, एक एक्सेस टोकन के साथ एक नया उदाहरण शुरू करना जिसमें उच्च अनुमतियाँ होती हैं, हमेशा एक नई विंडो बनाई जाएगी, और यदि सिस्टम पर UAC संकेत सक्षम होते हैं, तो उन्हें ट्रिगर भी किया जाएगा।


1 आप एडजस्टमेंट टोकन के साथ मौजूदा पहुँच टोकन में विशेषाधिकारों को समायोजित कर सकते हैं , लेकिन MSDN के अनुसार :

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


19

जबकि मैं एक उत्साही उपयोगकर्ता हूं TCC-LE, एक समाधान है जिसे किसी नए कार्यक्रम की आवश्यकता नहीं है: -

  • cmdप्रशासक के रूप में शुरू करें ।
  • यह आपको शुरू करना चाहिए %SystemRoot%\system32\- यदि नहीं, cdतो।
  • copy cmd.exe cmdadmin.exe(या आपके द्वारा चुना गया कोई भी नाम, जैसे su.exe)।
  • अब एक्सप्लोरर चलाएं और खोजें cmdadmin.exe
  • राइट-क्लिक करें और गुण चुनें ।
  • में संगतता टैब व्यवस्थापक के रूप में चलाने का चयन करें (या सभी उपयोगकर्ताओं के लिए यह सेट)।

अब cmdadminआपका suया sudo: आप इसे प्रशासनिक मापदंडों के साथ एक शेल देने के लिए मापदंडों के बिना शुरू कर सकते हैं, या आप /cइस मोड में किसी एक कमांड को निष्पादित करने के लिए इसे चला सकते हैं । आपकी नीतियों के आधार पर, आपको पुष्टि के लिए संकेत दिया जा सकता है या नहीं।

ध्यान दें कि यह हमेशा एक नई विंडो खोलेगा (जैसा कि TCC समाधान start /elevated ...): GUI एप्लिकेशन के लिए यह अपेक्षित है, लेकिन कमांड-लाइन प्रोग्राम के लिए, आप आउटपुट देखने का मौका देने के लिए, /kइसके बजाय उपयोग करना चाह सकते हैं। /c; या आप एक बैच फ़ाइल के माध्यम से चला सकते हैं ( sudo.cmdशायद?) जो & pauseआपके रन स्ट्रिंग के अंत तक पहुंचता है।

या तो मामले में यह के रूप में काफी समानता नहीं है suया sudoहै, लेकिन यह सबसे करीब आप मिल जाएगा है। खिड़कियों के लेआउट को मैन्युअल रूप से सेट करके, नई विंडो को सीधे नीचे बनाया जा सकता है और मूल को समाप्त कर सकता है।


यह शायद ओपी के व्यवहार के सबसे करीब हो सकता है sudo, एक नई खिड़की / प्रक्रिया के साथ निपटने के लिए अभी भी चेतावनी दी जा रही है। हालांकि, सुरक्षा के दृष्टिकोण से सबसे अच्छा विचार नहीं है, सभी UAC संकेतों को अक्षम करने से UAC प्रॉम्प्ट पर जवाब देना होगा जब एलिवेटेड प्रक्रिया शुरू हो जाएगी।
मैं कहता हूँ कि मोनिका

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

2
मैं आपके लाभ के लिए सुरक्षा निहितार्थ का उल्लेख नहीं कर रहा था, बल्कि अन्य पाठकों के लिए। हालाँकि मैं असहमत हूँ कि UAC संकेतों को अक्षम करना एक व्यवस्थापक के रूप में चलने से ज्यादा बुरा नहीं है। UAC संकेत किसी उपयोगकर्ता को व्यवस्थापकीय प्रक्रिया में अवांछित प्रशासनिक अधिकार देने से रोक सकते हैं। संकेतों के बिना उपयोगकर्ता इस अवसर को जब्त कर लेता है।
मैं कहता हूं कि मोनिका

@ टि्वस्टी - बस इतना ही। मेरी प्रतिक्रिया समान उद्देश्यों से आई थी। एक बार फिर धन्यवाद।
AFH

1
cmd.exe की प्रतिलिपि बनाने के बजाय, इसके लिए एक सिमलिंक बनाएं। इस तरह, अगर विंडोज़ इसे अपडेट करता है और सुरक्षा बग्स को पैच करता है, तो आप एक पुराने संस्करण को नहीं चलाते हैंmklink cmdadmin.exe cmd.exe
जोसेफ

11

क्या कोई कमांड है जो कमांड प्रॉम्प्ट को जगह पर बढ़ा सकती है?

एक असुविधाजनक तरीका है:

powershell -Command "Start-Process 'cmd.exe' -Verb runAs"

बेहतर तरीके थे लेकिन Microsoft ने उन्हें बंद कर दिया। बेशक, आप हमेशा अपनी आस्तीन ऊपर रोल कर सकते हैं और अपनी खुद की स्क्रिप्ट लिख सकते हैं sudoजो मैंने अभी दिया स्रोत कोड के बराबर है ।

दूसरे शब्दों में, इसे एक नई विंडो या UAC संकेत प्रदर्शित नहीं करना चाहिए।

ईश - निंदा! हिस्सेदारी में उसे जला दो! ;) मजाक एक तरफ, नहीं। वहाँ नहीं है यह एक बग और सुरक्षा भेद्यता होगी। Microsoft ने यह सुनिश्चित करने के लिए एक स्पष्ट प्रयास किया कि उन्नत और मानक प्रक्रिया यथासंभव कम है।

स्मार्ट बच्चे जो दो बैक-एंड (एक मानक और एक ऊंचा) और दोनों के लिए एक ग्राफिकल फ्रंट-एंड के बारे में सोच रहे हैं, उन्हें सत्र 0 अलगाव के बारे में पढ़ना चाहिए ।


2

क्या विंडोज के लिए एक समान कमांड है जो एक नई विंडो को जन्म दिए बिना इन-प्लेस एलिवेशन करता है?

इस तरह का कोई कमांड नहीं बनाया गया है। हालाँकि मैंने यह साबित नहीं किया है कि, मुझे विश्वास है कि क्योंकि मैंने इस मुद्दे पर काम करने के लिए अतिरिक्त सॉफ़्टवेयर / कोड का उपयोग करने के कई तरीके देखे हैं।

दूसरे शब्दों में, इसे एक नई विंडो या UAC संकेत प्रदर्शित नहीं करना चाहिए।

रहने भी दो। बिलकुल भूल जाते हैं। यह यूएसी के डिजाइन के खिलाफ जाता है। यदि आप इसे प्रबंधित कर सकते हैं, तो आप एक मूलभूत सुरक्षा प्रक्रिया को तोड़ रहे हैं। Microsoft द्वारा सीखे जाने और ठीक करने के बाद, पैच को तोड़ने के लिए अपने समाधान की अपेक्षा करें, जो भी प्रक्रिया आप इस के आसपास काम करने के लिए कर सकते हैं।

यूएसी संकेतों से बचने का उपाय इसके साथ शुरू करने के लिए उच्च ऊंचाई है। यदि आप पर्याप्त रूप से अधिकृत हैं तो यूएसी आपको परेशान नहीं करना चाहिए। यदि आप कम ऊंचाई के साथ शुरू करते हैं (जिसे अक्सर सुरक्षा लाभों के लिए अनुशंसित किया जाता है) और फिर उच्च ऊंचाई की आवश्यकता के लिए कुछ करने की कोशिश करते हैं, तो एएसी बातचीत की अपेक्षा करें।


UAC संकेतों को पहले से ही निर्धारित कार्य के साथ बायपास किया जा सकता है; मैं एक ऐसी चीज की तलाश कर रहा हूं जो नई कमांड प्रॉम्प्ट विंडो को स्पॉइन करने के बजाय इन-प्लेस एलिवेशन करती है।
user2064000

यदि आप ऐसा करते हैं, तो क्या आप यूएसी की आवश्यकताओं को पूरा किए बिना वास्तव में अनुसूचित कार्य स्थापित कर सकते हैं? स्पॉनिंग के रूप में, मैं कह रहा हूं कि मुझे इसकी उम्मीद नहीं है क्योंकि मैंने उन सभी ऊंचे समाधानों पर ध्यान दिया है जो मैंने अब तक देखे हैं एक नई प्रक्रिया शुरू करना। मुझे लगता है कि एक नई प्रक्रिया शुरू किए बिना तकनीकी रूप से ऊंचा किया जा सकता है, क्योंकि इंस्टॉलेशन प्रोग्राम यूएसी के लिए शुरू होने के बाद पूछ सकते हैं, लेकिन मुझे याद नहीं है कि किसी भी आसानी से उपलब्ध समाधान, आसानी से बैच फ़ाइल में आयात करने योग्य, अभी तक देखा जा सकता है।
TOOGAM

वास्तव में; शेड्यूल्ड टास्क UAC को पूरी तरह से हरा देते हैं। एक बार ऊंचा हो जाने पर, आप सेवाओं के माध्यम से सिस्टम को ऊपर उठा सकते हैं, और फिर मूल cmd.exe प्रक्रिया पर प्रतिस्थापित टोकन का उपयोग कर सकते हैं।
जोशुआ

वहाँ एक है कुछ हद तक सरकारी PowerToy स्क्रिप्ट है कि बुनियादी काम करता है; आप elevate cmdUAC प्रॉम्प्ट के साथ एक नई कमांड प्रॉम्प्ट विंडो खोलने के लिए टाइप कर सकते हैं (साइट में संदर्भ मेनू कमांड भी हैं!)। या, ज़ाहिर है, आप बस Ctrl + Shift + किसी भी मौजूदा कमांड प्रॉम्प्ट विंडो के टास्कबार आइकन पर क्लिक करके ऐसा कर सकते हैं - यही वह है जो मैं सबसे अधिक बार करता हूं। (जो मुझे पता है कि ओपी ने जो मांगा है वह नहीं है, लेकिन ओपी ने जो मांगा है वह डिजाइन द्वारा अवरुद्ध है।)
मिरल

2

आप जो चाहते हैं वह विंडोज में असंभव है, क्योंकि यह अवधारणा का समर्थन नहीं करता है। आपको उच्च अनुमतियों के साथ एक नई प्रक्रिया शुरू करने की आवश्यकता है

मैं कमांडलाइन से प्रक्रियाओं को ऊंचा करने के लिए nircmd का उपयोग करता हूं । आपकी आज्ञा होगीnircmdc elevate cmd


2

मैंने इस प्रश्न को देखा और एक सरल समाधान के साथ आया। यह एक छोटी उपयोगिता कहा जाता है rsudo, जो एक नियमित सीएमडी विंडो से बढ़ी हुई कमांड चलाता है।

ध्यान दें: एक यूएसी शीघ्र होगा आते हैं। यह छिपाना संभव नहीं है, बस यूएसी डिजाइन किया गया है।

Usage:
  rsudo.exe "[command]"

डाउनलोड [डाउनलोड काम नहीं कर रहा है, जल्द ही अपडेट होगा]

नोट: कमांड को एक नई विंडो में चलाया जाता है। यदि आप आउटपुट देखना चाहते हैं, तो दौड़ेंrsudo.exe "pause && [command]"


यह नहीं होना चाहिए rsudo.exe "[command] && pause"?

@fleet नहीं, एक बग pauseको पहले चलाने का कारण बनता है
rahuldottech

राहुल, धन्यवाद! सोर्स कोड का कोई मौका? ;) (या शायद मैं आपकी साइट पर गलत जगह देख रहा था।)
cxw

@cwz यकीन है! जब मैं घर पहुँचता हूँ और ब्लॉग पोस्ट जोड़ता हूँ, में इसका संपादन करता हूँ: D
rahuldottech

0

यह एक अजीब है।

आप अपने स्वयं के कंप्यूटर में एक ssh करने की कोशिश कर सकते हैं जो एक ही मौजूदा टर्मिनल का उपयोग करेगा, लेकिन वास्तव में एक पूरी तरह से अलग होगा।

यह काम करेगा, लेकिन यह वह नहीं है जो आप चाहते हैं।

दूसरों को हालांकि यह उपयोगी हो सकता है।


-1

JPSOFT का प्रयास करें कमांड कमांड प्रॉम्प्ट TCC / LE लें। यह 32- और 64-बिट संस्करणों में आता है और तब तक मुफ़्त है जब तक आप अधिक कार्यक्षमता नहीं चाहते।

Https://jpsoft.com/ पर जाएं और डाउनलोड पर क्लिक करें और जो आप चाहते हैं उसे चुनें।

TCC / LE में एक START / ELEVATED है, जो पूर्ण व्यवस्थापक विशेषाधिकारों के साथ उन्नत कार्यक्रम शुरू करता है। (विंडोज विस्टा या बाद में केवल)


1
यह प्रश्न कैसे संबंधित है?
user2064000

@DavidGrainger यह बताता है कि / एलिवेटेड स्विच अभी भी मुझे UAC को बायपास करने और इन-प्लेस एलीवेशन (विवरण के लिए प्रश्न देखें) करने की अनुमति नहीं देता है। क्या मैं कुछ भूल रहा हूँ?
user2064000

यह विंडोज कमांड प्रॉम्प्ट के लिए एक प्रतिस्थापन है। इसके अलावा, इसे ऊंचा शुरू करना बिल्ट-इन कमांड प्रॉम्प्ट को शुरू करने से अलग नहीं है।
मैं कहता हूं कि मोनिका

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

TCC / LE अन्य सामानों की भी भरमार करता है। मैंने इसे UAC सेट के साथ कभी नहीं और फिर उपयोग करने की कोशिश की, "Start / Elevated / PGM" C: \ Program Files \ IrfanView \ i_view64.exe "/ अंगूठे" को एक प्रोग्राम खोलने के लिए एलिवेट किया।
डेविड ग्रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.