इस जवाब को अभी भी आपकी मदद करनी चाहिए, यहां तक कि संपादन को भी ध्यान में रखते हुए। विशेष रूप से, एक खाता जिसके साथ
--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
लिए उपयोग कर सकते हैं । चलाने के लिए के रूप में के साथ :root
irssi
username
sudo
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
उपयोग कर सकते हैं ।su
gksu --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 username
su - username
sudo -u username -s
sudo -u username -i
लेकिन कमांड जो एक शेल नहीं देते हैं, जैसे या अभी भी काम कर सकते हैं।sudo -u username command
su username -c 'command'
चूंकि कमांड चलाए जा सकते हैं, आप उपयोगकर्ता के लॉगिन शेल को कुछ कार्यात्मक में बदल सकते हैं:
sudo chsh -s /bin/bash username
हालांकि, यह भी सावधानी के साथ किया जाना चाहिए, क्योंकि उपयोगकर्ता के लिए इंटरैक्टिव लॉगिन को अक्षम करने का एक अच्छा कारण हो सकता है।
यहां, username
दोनों के पास अक्षम पासवर्ड और "अक्षम" शेल था। किसी भी कामकाजी पासवर्ड की अनुपस्थिति ने सभी- su
आधारित समाधानों को काम करने से रोक दिया , जबकि एक कामकाजी इंटरएक्टिव लॉगिन शेल की अनुपस्थिति ने सभी शेल-स्पॉनिंग समाधानों को काम करने से रोक दिया (मैन्युअल रूप से शेल को खोलना छोड़कर, जैसे )।sudo -u username bash
sudo -u username command
यही रह गया।