जब हम प्रोग्राम को रूट के रूप में चलाना चाहते हैं तो हम उपयोग करते हैं sudo, gksu, gksudo और आदि । अब मेरा सवाल यह है कि हम टर्मिनल में रूट उपयोगकर्ता के रूप में टर्मिनल कैसे चला सकते हैं?
मैंने उपयोग करने की कोशिश की gksudo terminal और gksu terminal लेकिन कुछ नहीं होता । और दौड़ने से sudo terminal मुझे त्रुटि मिलती है sudo: terminal: command not found.
उबंटू पर डिफ़ॉल्ट टर्मिनल एमुलेटर है सूक्ति टर्मिनल. यह स्थित है /usr/bin/gnome-terminal और के साथ चलाया जा सकता है gnome-terminal कमान।
आप वास्तव में क्या चाहते हैं
आप जो चाहते हैं वह रूट के रूप में चलने वाला एक शेल है, जैसे कि यह रूट लॉगिन से उत्पन्न हुआ था (उदाहरण के लिए, आपके उपयोगकर्ता के बजाय रूट के लिए सेट किए गए सभी पर्यावरण चर के साथ) ।
आपके पास एक रूट शेल होगा जिसमें आपके द्वारा दर्ज किए गए कमांड को रूट के रूप में चलाया जाएगा (बिना उनके साथ पूर्ववर्ती किए sudo).
लेकिन अगर आप वास्तव में ग्राफिकल टर्मिनल एमुलेटर एप्लिकेशन को रूट के रूप में चलाना चाहते हैं, तो पढ़ें । मैं दो तरीके प्रस्तुत करता हूं: साथ gksu/gksdo, और के साथ sudo कमान।
चूंकि आपके पास है जीकेएसयू पैकेज स्थापित, आप चला सकते हैं gnome-terminal के साथ जड़ के रूप में:
gksu gnome-terminal
gksudo gnome-terminal
(चूंकि gksu डिफ़ॉल्ट रूप से उबंटू में सुडो-मोड पर सेट है, ये समकक्ष होना चाहिए । )
चल रहा है gnome-terminal एक नियंत्रित गैर-रूट टर्मिनल के बिना रूट के रूप में:
वस्तुतः प्रत्येक डेस्कटॉप वातावरण एक टर्मिनल खोलने के बिना कमांड चलाने की सुविधा प्रदान करता है (जो तब बंद होने पर, आमतौर पर कमांड को समाप्त करने का कारण बनता है) ।
यह आमतौर पर इसके साथ हासिल किया जाता है Alt+F2. एक टेक्स्टबॉक्स लेबल किया गया रन कमांड (या समान) दिखाई देगा और आप अपना आदेश दर्ज कर सकते हैं ।
और मेट में इस तरह (गनोम फ्लैशबैक/फॉलबैक, एक्सएफसीई, एलएक्सडीई समान हैं):
ध्यान दें कि इसके साथ काम करता है gksu और gksudo क्योंकि वे एक ग्राफिकल प्रमाणीकरण संवाद का उपयोग करते हैं । यदि आप प्रेस करने के लिए थे Alt+F2 और भागो sudo ..., तब आप पासवर्ड प्रॉम्प्ट के साथ इंटरैक्ट करने में असमर्थ होंगे ।
साथ में sudo
यदि आपके पास जीकेएसयू पैकेज नहीं है और आप इसे इंस्टॉल नहीं करना चाहेंगे, तो आप इसका उपयोग कर सकते हैं:
sudo -H gnome-terminal
द -H ध्वज महत्वपूर्ण है क्योंकि यह सेट करता है HOME पर्यावरण चर /root अपने स्वयं के उपयोगकर्ता की होम निर्देशिका के बजाय । आपको चाहिए नहीं उपयोग करें sudo gnome-terminal चूंकि यह गैर-रूट उपयोगकर्ता से संबंधित गनोम-टर्मिनल कॉन्फ़िगरेशन को तोड़ सकता है । इस बारे में अधिक जानकारी के लिए देखें:
यदि आप (1) एक ग्राफिकल टर्मिनल खोलें, (2) कुछ इस तरह चलाएं sudo -H gnome-terminal इसमें, एक नया ग्राफिकल रूट टर्मिनल बनाने के लिए, और (3) मूल गैर-रूट ग्राफिकल टर्मिनल से बाहर निकलें ।..फिर रूट ग्राफिकल टर्मिनल भी छोड़ देता है ।
ऐसा इसलिए है क्योंकि रूट ग्राफिकल टर्मिनल भेजा जाता है सिघुप जब इसका मालिक टर्मिनल बाहर निकल जाता है ।
इसे रोकने के लिए, आप सोच सकते हैं कि आप इसके बजाय ग्राफिकल रूट टर्मिनल लॉन्च कर सकते हैं:
sudo -H gnome-terminal &
लेकिन यह केवल तभी काम करेगा जब sudo पासवर्ड के लिए संकेत नहीं देना है । यदि ऐसा होता है, तो आपको पासवर्ड प्रॉम्प्ट दिखाई नहीं देगा ।
एक रास्ता इसके आसपास काम करना उपयोग करना है:
sudo -vsudo -H gnome-terminal
sudo -v बस इस उद्देश्य के लिए मौजूद है । जैसा कि समझाया गया है man sudo, यह " उपयोगकर्ता के कैश्ड क्रेडेंशियल्स को अपडेट करता है, यदि आवश्यक हो तो उपयोगकर्ता को प्रमाणित करता है । "
ध्यान दें कि यह अभी भी काम नहीं करेगा यदि सीधे आपके डेस्कटॉप वातावरण से चलाया जाए Alt+F2 "रन कमांड" बॉक्स, क्योंकि आपको अभी भी अपना पासवर्ड दर्ज करने के लिए एक टर्मिनल की आवश्यकता है sudo -v.
या आप इसे पारंपरिक तरीके से क्या कह सकते हैं, नौकरी शुरू होने के बाद निलंबित:
भागो sudo -H gnome-terminal मूल गैर-रूट ग्राफिकल टर्मिनल से ।
द्वारा बताए अनुसार अपना पासवर्ड दर्ज करें sudo. ग्राफिकल टर्मिनल शुरू हो जाएगा ।
अभी भी गैर-रूट टर्मिनल में, दबाएँ Ctrl+Z रूट टर्मिनल को निलंबित करने के लिए । जबकि रूट टर्मिनल निलंबित है, आप इसका उपयोग नहीं कर सकते; इसका इंटरफ़ेस आपके कार्यों का जवाब नहीं देगा ।
के साथ नियंत्रित गैर-रूट टर्मिनल से बाहर निकलें exit. ग्राफिकल रूट टर्मिनल कार्य स्वचालित रूप से गैर-रूट टर्मिनल द्वारा अनसुना और अस्वीकृत दोनों होगा ।
संक्षेप में:
sudo -H gnome-terminal^Zexit
लेकिन मान लीजिए कि आप मूल, गैर-रूट टर्मिनल का भी उपयोग करना चाहते थे । तब आप दौड़ सकते थे bg N, जहां N पृष्ठभूमि में नौकरी फिर से शुरू करने के लिए ग्राफिकल रूट टर्मिनल की नौकरी संख्या है । आप चला सकते हैं jobs खोजने के लिए N लेकिन आप शायद नहीं होगा-उस संख्या के रूप में दिखाया गया था [N] जब आपने दबाया Ctrl+Z. उदाहरण के लिए:
ek@Ilex:~$ sudo -H gnome-terminal[sudo] password for ek: ^Z[1] + रूका हुआ सुडो-एच गनोम-टर्मिनलेक@इलेक्स:~$
यह समझाने की जरूरत नहीं है कि आप इसे खोलने के लिए उपयोग कर सकते हैं कोई भी इस तरह रूट के रूप में टर्मिनल; वैला की तरह (gksudo vala-terminal), एक्सटर्म (gksudo xterm), टर्मिट (gksudo termit), उक्सटर्म (gksudo uxterm), कंसोल (gksudo konsole) और इसी तरह ।
जैसा कि पहले कहा गया है, आप पूछते हैं कि टर्मिनल को रूट के रूप में कैसे चलाया जाए, लेकिन अधिक संभावना है कि आप वास्तव में ग्राफिकल टर्मिनल एप्लिकेशन को अपने सामान्य उपयोगकर्ता के रूप में चलाना चाहते हैं, और इसके अंदर एक रूट शेल शुरू करें जहां आप रूट के रूप में लॉग ऑन हैं । इस तरह ग्राफिकल टर्मिनल एप्लिकेशन को रूट विशेषाधिकार नहीं दिए जाते हैं । पिछले उत्तरों का उपयोग करने के लिए स्पष्ट कमांड लाइनें नहीं लगती हैं, इसलिए यहां मैं क्या उपयोग करता हूं ।
एक्सटर्म के साथ
xterm -bg black -fg red -e sudo -i
'- ई सुडो-आई' सत्र में रूट पर स्विच करने के लिए एक्सटर्म को बताता है, और रंग सिर्फ यह स्पष्ट करने के लिए हैं कि यह एक रूट शेल है ।
सूक्ति टर्मिनल के साथ
gnome-terminal -- sudo -i
व्यक्तिगत रूप से, मैं टर्मिनलों को आसानी से लॉन्च करने के लिए गनोम कीबाइंडिंग को बांधता हूं
कीबोर्ड सेटिंग्स पर जाएं, शॉर्टकट सुपर+एक्स और कमांड 'एक्सटर्म-बीजी ब्लैक-एफजी व्हाइट-एसबी-एसएल 5000' के साथ एक कस्टम शॉर्टकट जोड़ें, और शॉर्टकट सुपर+जेड के साथ रूट एक्सटर्म और कमांड 'एक्सटर्म-बीजी ब्लैक-एफजी रेड-एसबी-एसएल 5000-ई सुडो-आई' ।
अतीत में मैंने गनोम टर्मिनल पर एक्सटर्म को प्राथमिकता दी है क्योंकि फ़ॉन्ट छोटा और सरल है, लेकिन मैं टर्मिनल पर आ रहा हूं अब मैं उच्च डीपीआई बड़ी स्क्रीन चलाता हूं । एक बार जब आप दुर्घटनाओं से बचने के लिए खतरनाक परिणामों के साथ अलग-अलग प्रोफाइल चलाना शुरू करते हैं (उदाहरण के लिए स्थानीय रूट, रिमोट क्लाइंट की मशीन, रिमोट क्लाइंट रूट) तो अपने टर्मिनलों को रंग देना एक बहुत अच्छा विचार है ।
यह प्रश्न इतना सरल लगता है कि एक सरल समाधान होना चाहिए, है ना? बेशक आप उपयोग कर सकते हैं gksudo या इसी तरह के उपकरण लेकिन ऐसे वातावरण हो सकते हैं जहाँ आप निर्भर नहीं रहना चाहते जीटीके. यह भ्रामक है लेकिन एक terminal एक नहीं है shell!
द टर्मिनल क्या वह चीज है जो आपको सामान दिखाती है, जहां शैल क्या वह चीज है जिसमें पर्यावरण चर, सशर्त और सभी स्क्रिप्टिंग सामान जैसी फैंसी विशेषताएं हैं । इसीलिए x-terminal-emulator -e ... बस एक कार्यक्रम चलाने की उम्मीद है । यहां कोई स्क्रिप्ट संभव नहीं है, यह सिर्फ एक नया शुरू करता है प्रक्रिया. जब कोई टर्मिनल शुरू होता है तो यह सिर्फ यह जानता है कि किसी प्रकार की स्क्रीन आपको सामान दिखाती है और आपके कीबोर्ड का इनपुट जो सीधे वहां डालता है । A शैल जैसे स्क्रिप्ट भाषा के सभी तर्क को वितरित करता है । श, बैश, ऐश, ज़श, ...!
अन्य महत्वपूर्ण अंतर यह है कि कौन चल रहा है टर्मिनल और क्या शैल इसके अंदर चल रहा है । आप एक चला सकते हैं टर्मिनल एक के संदर्भ में साधारण उपयोगकर्ता जो इसके अंदर एक रूट शेल चलाता है लेकिन इसके कुछ नुकसान हैं जैसे । जब आप एक नया टैब शुरू करते हैं तो एक नया शेल पैदा होता है लेकिन यह एक के विशेषाधिकारों पर वापस आ जाता है साधारण उपयोगकर्ता। एक के अपने आदेश 'नया खोल कृपया' टर्मिनल पर जाता है और शेल नहीं! एक निराशा जब आपको एहसास होता है कि आपको उन सभी में प्रवेश करना है सुडो आपके द्वारा खोले गए प्रत्येक टैब के लिए एक बार फिर से सामान । अब, क्या टर्मिनल खोलने का कोई तरीका है और पैकेज का उपयोग किए बिना रूट के रूप में शेल नहीं है जीकेएसयूडीओ? एक उम्मीद डेबियन प्रसंग:
अनुमति दें जड़ वर्तमान उपयोगकर्ता के एक्स डेस्कटॉप तक पहुंचने के लिए ।
चूंकि सुडो एक की आवश्यकता है टीटीवाई, हम दौड़ने से बचते हैं ssh-askpass जो चलता हैवर्तमान उपयोगकर्ता के संदर्भ में और आपके पास के लिए पूछता है ।
सुडो अब से है कि पास पढ़ता स्टडिन (-एस), यह होम फोल्डर (-एच) सेट करता है और हमारे संदर्भ (- बी) से अलग होने वाली एक नई प्रक्रिया को जन्म देता है ।
और अंत में टर्मिनल प्रक्रिया ' डिफ़ॉल्ट होम फ़ोल्डर को सेट करता है जड़ वर्तमान उपयोगकर्ता के घर में उतरने से बचने के लिए ।
और वहाँ यह है!आपके पास एक टर्मिनल चल रहा है जड़ वर्तमान उपयोगकर्ता के संदर्भ में पैदा हुआ । अब जब आप एक नया टैब स्पॉन करते हैं तो यह उस उपयोगकर्ता के बजाय रूट टर्मिनल के अंदर हो रहा है जिसने इसे पैदा किया था ।
सावधान!एक कारण है कि यह सामान इतना जटिल क्यों है । जो कुछ भी ध्यान में रखें एक्स / वीएनसी / आरडीपी सत्र आप इसे चला रहे हैं । यह सिर्फ एक टर्मिनल खुला रखता है । यह नकारात्मक पक्ष है! यदि कोई आपके सत्र को कैप्चर करने में सक्षम है (हालांकि यह हो सकता है), रूट एक्सेस मुफ्त में है! आपका निर्णय।
ऐसा करने का एक और तरीका है, उबंटू 16.04 एलटीएस पर परीक्षण और काम करना:
पहले गनोम-पैनल स्थापित करें:
sudo apt install gnome-panel
फिर जीकेएसयू स्थापित करें:
sudo apt install gksu
स्थापना पूर्ण होने के बाद, चलाएं:
gnome-desktop-item-edit ~/Desktop/ --create-new
यह एक डेस्कटॉप शॉर्टकट बनाता है । आपके पास इसे नाम देने का विकल्प होना चाहिए । मैंने अपना 'एक्स-टर्म' कहा, लेकिन आप जो चाहें अपना फोन कर सकते हैं । में टाइप करें /usr/bin/gksu* 'कमांड' पथ के लिए ।
जब आप अपना नया डेस्कटॉप शॉर्टकट लॉन्च करते हैं तो आपको एप्लिकेशन को चलाने के लिए प्रेरित किया जाएगा । में टाइप करें: xterm.
अब आपको अपने पासवर्ड के लिए संकेत दिया जाएगा; एक बार जब आप इसे दर्ज करते हैं तो आपके पास एक कार्यशील रूट टर्मिनल तक पहुंच होगी । केवल तभी उपयोग करना याद रखें जब बिल्कुल आवश्यक हो और जब आप इसके साथ समाप्त कर लें तो बंद कर दें ।
* मान लें कि आपने उबंटू को डिफ़ॉल्ट सेटिंग्स के साथ स्थापित किया है और स्थापना के बाद से किसी भी फ़ाइल-सिस्टम को महत्वपूर्ण रूप से नहीं बदला है ।
@ गुरु [सुडो ' का उपयोग ग्राफिकल प्रोग्राम चलाने के लिए नहीं किया जाना चाहिए जैसे this.](http://askubuntu.com/questions/270006/why-user-should-never-use-normal-sudo-to-start-graphical-application) यदि जीकेएसयू/जीकेएसयूडीओस्थापित नहीं है (या नहीं हो सकता है),सुडो-एच । …`(या ’ सुडो-आई ।…’) एक ग्राफिकल अनुप्रयोग चलाने के लिए इस्तेमाल किया जा सकता’…'जड़ के रूप में ।