इस जवाब को अभी भी आपकी मदद करनी चाहिए, यहां तक कि संपादन को भी ध्यान में रखते हुए। विशेष रूप से, एक खाता जिसके साथ
--disabled-loginकोई पासवर्ड सेट नहीं है और लॉग इन करने का कोई अन्य साधन नहीं है , लेकिन sudoउपयोगकर्ता के रूप में कमांड या शेल चलाने के लिए अभी भी इसका उपयोग (नीचे समझाया गया) संभव है । यह वास्तव में, rootउबंटू में खाता कैसे
सेट किया जाता है।
कमांड के साथ कई समस्याएं हैं su - irssi।
यह कमांड नाम के उपयोगकर्ता के स्वामित्व वाले शेल को शुरू करने का प्रयास करता है ।irssi
यह विफल हो जाएगा अगर:
- कोई
irssiउपयोगकर्ता नहीं है ।
irssiउपयोगकर्ता का खाता अक्षम है।
irssiउपयोगकर्ता का खाता इंटरैक्टिव प्रवेश के लिए अक्षम है। कभी-कभी किसी खाते को एफ़टीपी जैसी सेवाओं का उपयोग करने की अनुमति दी जाती है, लेकिन सामान्य रूप से अपने शेल को किसी ऐसी चीज़ में सेट करने से प्रतिबंधित किया जाता है, जो तुरंत समाप्त हो जाती है, जैसे /bin/false। फिर एक लॉगिन तुरंत समाप्त होता है, जिसमें कोई संदेश नहीं है।
- आपके द्वारा दर्ज किया गया पासवर्ड
irssiउपयोगकर्ता के लिए सही नहीं है ।
-तो खोल एक प्रारंभिक लॉगिन खोल simulates झंडा यह बनाता है - यह है कि, तो यह वास्तव में बहुत ज्यादा लॉगिंग की तरह के रूप में पर है irssi। -ध्वज के बिना , यदि suआदेश सफल हुआ, तो आपको अभी भी एक शेल प्राप्त होगा irssi, लेकिन पर्यावरण चर जैसे HOMEअपरिवर्तित होंगे।
आप के बजाय एक कार्यक्रम चलाना चाहते हैं तो कहा जाता है irssi , तो आप आह्वान चाहिए suअलग ढंग से:
su username - -c irssi
यदि आप बाहर निकलते हैं , तो यह कमांड को रूट के रूप में चलाने का प्रयास के समान है ।-c username-c root
वैकल्पिक रूप से आप एक शेल शुरू कर सकते हैं और फिर कमांड चला सकते हैं :
- खोल के साथ शुरू करो ।
su username -
- शेल में, कमांड चलाएं (
irssi)।
- यदि आप कर रहे हैं, तो शेल को चलाकर छोड़ दें
exit।
के रूप में चल रहा है root
यदि आप के irssiरूप में चलाना चाहते हैं root, suतो ऐसा करने का तरीका नहीं है। रूट लॉगिन उबंटू पर डिफ़ॉल्ट रूप से अक्षम हैं , और उन्हें फिर से सक्षम करने के लिए केवल कोई कारण नहीं है । यदि आपने rootलॉगिन सक्षम किया है , तो आपको suबनने के लिए उपयोग करने में सक्षम होना चाहिए root। कारण यह सक्षम करने के लिए अनावश्यक है rootखाते है कि आप अभी भी रूप में चला सकते हैं आदेशों है, या नहीं, आप ऐसा करेंगे, rootसाथ sudo।
जब आप के साथ कमांड चलाते हैं sudo, तो आप अपने पासवर्ड में डालते हैं, न कि उस उपयोगकर्ता के पासवर्ड के तहत जिसकी पहचान के लिए आप कमांड चलाना चाहते हैं। केवल व्यवस्थापक के रूप में मनमाने ढंग से कमांड चलाने कर सकते हैं rootके साथ sudo(जब तक आप पुन: कॉन्फ़िगर sudo, दूसरों को ऐसा करने की अनुमति के लिए निश्चित रूप से)। तो एक उपयोगकर्ता जिसे सिस्टम को प्रशासित करने की अनुमति नहीं है उसे rootअपने पासवर्ड के साथ कमांड चलाने की अनुमति नहीं है ।
चलाने के लिए irssiके रूप में rootके साथ sudo:
sudo irssi
और जब आपको संकेत दिया जाएगा तो आप अपना पासवर्ड दर्ज करेंगे , नहीं root।
आप जो पासवर्ड दर्ज करते हैं, उसे छोड़कर, यह वही काम करता है:
su -c irssi
sudoसंस्करण को छोड़कर सफल हो सकता है क्योंकि इसके लिए rootखाते को सक्षम करने की आवश्यकता नहीं है ।
इसके साथ su, आप कमांड को दूसरे, गैर- उपयोगकर्ता के रूप में चलाने केsudo लिए उपयोग कर सकते हैं । चलाने के लिए के रूप में के साथ :rootirssiusernamesudo
sudo -u username irssi
यदि आप के साथ सम्मान के साथ sudo व्यवहारsu -HOME करना चाहते हैं - तो आप लक्ष्य उपयोगकर्ता के HOMEपर्यावरण चर का उपयोग करना चाहते हैं , आप ध्वज के sudoसाथ चल सकते हैं -H:
sudo -H irssi
sudo -H -u username irssi
आप के साथ एक पूरे खोल शुरू sudoकर सकते हैं, जैसे आप कर सकते हैं su। पासवर्ड जिसे आप डालते हैं, उसे छोड़कर, इस कमांड का प्रभाव उसी प्रकार है su:
sudo -s
और इस कमांड का समान प्रभाव है su -:
sudo -i
( प्रारंभिक लॉगिन शेलi के लिए खड़ा है )
आप किसी अन्य उपयोगकर्ता के रूप में भी शेल शुरू कर सकते हैं:
sudo -u username -s
sudo -u username -i
आगे पढ़ रहे हैं sudo
के बारे में अधिक जानने के लिएsudo , इस पर एक नज़र डालें:
gksuजब suकाम नहीं किया तो क्यों किया ?
gksuशायद दौड़ करsudo काम किया ।
gksuदोनों के लिए एक दृश्य है suऔर sudo। उबंटू में, यह उपयोग करने के लिए चूक करता है sudo(चूंकि उबंटू में, suआमतौर पर बनने के लिए उपयोग नहीं किया जाता है root, और केवल अन्य, गैर- rootउपयोगकर्ता बनने का एक माध्यमिक तरीका है )।
आप रनिंग के रूप में gksuउपयोग कर सकते हैं ।sugksu --su-mode
आप पता लगा सकते हैं कि क्या gksuमें है suमोड या sudoमोड, और (यदि आप चाहें) इस सेटिंग को बदलने, चल द्वाराgksu-properties । यह एक प्रति-उपयोगकर्ता सेटिंग है।
जब मोड gksuमें होता sudoहै, तो यह वैसा ही व्यवहार करता है gksudo।
आगे पढ़ रहे हैं gksu
समाधान के बाद का विश्लेषण
आपने अंततः पाया कि आप के साथ आवश्यक कमांड चलाने में सक्षम थे:
sudo -u username irssi
(ऊपर सूचीबद्ध तकनीकों में से कौन सा है।)
अंतत: आपने सूचना के दो टुकड़े बताए, जो यह समझाने के लिए पर्याप्त हैं कि ऐसा क्यों था कि अन्य तकनीकें विफल हो गई थीं, लेकिन वह सफल हो गई थी:
usernameखाते के साथ बनाया गया था --disabled-loginझंडा है, जो बनाता है यह है कोई पासवर्ड (और में लॉग इन करने की कोई अन्य साधन)। कोई पासवर्ड नहीं होने का मतलब यह नहीं है कि रिक्त पासवर्ड के साथ लॉग इन करना संभव है । इसका मतलब है कि कोई भी पासवर्ड प्रमाणित करने के लिए पर्याप्त नहीं है। प्रमाणीकरण के अन्य साधनों के उन्मूलन के साथ संयोजन में, इसका मतलब usernameयह बिल्कुल प्रमाणित नहीं कर सकता है।
तो सभी- suआधारित समाधान बाहर हैं। sudoयद्यपि आप काम कर सकते हैं, क्योंकि sudoआपके द्वारा प्रमाणित किए जाने वाले उपयोगकर्ता के रूप में आप प्रमाणित नहीं करते हैं। इसके बजाय, आपको उन्हें लगाने के लिए अधिकृत किया जाना चाहिए , और आप स्वयं के रूप में प्रमाणित करते हैं (यानी, अपना पासवर्ड दर्ज करें, न कि उनका)।
खाते पर एक पासवर्ड सेट करना संभव है, जो लॉग इन करने में इस बाधा को दूर करता है:
sudo passwd username
हालांकि एक अच्छा कारण हो सकता है कि उपयोगकर्ता को लॉग इन करने की अनुमति नहीं है। उदाहरण के लिए, यदि इस उपयोगकर्ता को लॉग इन करने की अनुमति दी गई है और ग्राफिक रूप से लॉग इन किया गया है, तो उपयोगकर्ता के पर्यावरण या विशेष रूप से X11 ऐप चलाने के लिए खराब होने के कारण खराब समस्याएं उत्पन्न होंगी। ? यदि यह उपयोगकर्ता लॉग ऑन कर सकता है, तो क्या यह उस उपयोगकर्ता के रूप में दूरस्थ रूप से लॉग इन करना संभव बना देगा (उन मशीनों के लिए जहां आपने नेटवर्क सेवाओं को उजागर किया है)?
यदि आप इसे फिर से अक्षम करना चाहते हैं:
sudo passwd -dl username
संबंधित: अस्थायी रूप से सक्षम होने के बाद खाते को फिर से अक्षम rootकरना।
usernameखाता है /bin/falseइसके लॉगिन शेल के रूप में।
जब कोई शेल bashआपके लॉगिन शेल के रूप में चलता है, तो यह आपके वातावरण को सेट करता है और आपको एक इंटरैक्टिव प्रॉम्प्ट देता है जिसके साथ मशीन को नियंत्रित किया जाता है।
जब /bin/falseदूसरी ओर चलता है, तो यह कुछ नहीं करता है , और विफलता की रिपोर्ट करता है । ( /bin/trueकुछ नहीं करता है और सफलता की रिपोर्ट करता है।)
falseऔर trueआदेशों पटकथा में उपयोगी होते हैं और विभिन्न परीक्षण प्रयोजनों के लिए, लेकिन यह भी इतना है कि एक खाता अक्षम करने के लिए जब, उनके प्रवेश सत्र तुरंत समाप्त होता है में किसी को लॉग। इस तरह, एक पासवर्ड (या प्रमाणीकरण के अन्य साधन) को सक्षम किया जा सकता है, और लोग लॉग इन कर सकते हैं, केवल शेल एक्सेस के लिए नहीं । उदाहरण के लिए, यदि कोई एफ़टीपी सर्वर है, तो भी वे एफ़टीपी के माध्यम से अपने खाते तक पहुंच सकते हैं। यदि कोई SSH सर्वर है, तो वे SSH के माध्यम से एक शेल प्राप्त नहीं कर पाएंगे, लेकिन वे अभी भी उपयोग कर सकते हैं sftpऔर scpफ़ाइलों को स्थानांतरित कर सकते हैं।
के बाद से username's लॉगिन खोल अक्रिय था, आदेशों की तरह , , , और नहीं कर सकता काम करते हैं।su usernamesu - usernamesudo -u username -ssudo -u username -i
लेकिन कमांड जो एक शेल नहीं देते हैं, जैसे या अभी भी काम कर सकते हैं।sudo -u username commandsu username -c 'command'
चूंकि कमांड चलाए जा सकते हैं, आप उपयोगकर्ता के लॉगिन शेल को कुछ कार्यात्मक में बदल सकते हैं:
sudo chsh -s /bin/bash username
हालांकि, यह भी सावधानी के साथ किया जाना चाहिए, क्योंकि उपयोगकर्ता के लिए इंटरैक्टिव लॉगिन को अक्षम करने का एक अच्छा कारण हो सकता है।
यहां, usernameदोनों के पास अक्षम पासवर्ड और "अक्षम" शेल था। किसी भी कामकाजी पासवर्ड की अनुपस्थिति ने सभी- suआधारित समाधानों को काम करने से रोक दिया , जबकि एक कामकाजी इंटरएक्टिव लॉगिन शेल की अनुपस्थिति ने सभी शेल-स्पॉनिंग समाधानों को काम करने से रोक दिया (मैन्युअल रूप से शेल को खोलना छोड़कर, जैसे )।sudo -u username bash
sudo -u username command यही रह गया।