एक उपयोगकर्ता जिसका लॉगिन अक्षम है के रूप में एक कमांड चलाने के लिए कैसे?


21

मैं किसी अन्य उपयोगकर्ता के रूप में एप्लिकेशन को चलाने के लिए su कमांड का उपयोग करने का प्रयास कर रहा हूं

इस मामले में मैं irssi चलाने की कोशिश कर रहा हूं

blah@ubuntu: su - [username] irssi
(enter password)

blah@ubuntu:
(nothing happens)

blah@ubuntu: su - [username] -c irssi
(nothing)

मैं gksu चलाता हूं और समान पैरामीटर सेट करता हूं और यह काम करता है, और उपयोगकर्ता पासवर्ड के लिए मुझसे नहीं पूछता है। मामला क्या है? और मैं इसे कैसे हल करूं?

मुझे ध्यान देना चाहिए कि उपयोगकर्ता को इस तरह बनाया गया था

adduser --system --disabled-login [username]

अगर इससे कोई फर्क पड़ता है तो .... आह।


क्या आप भूल नहीं रहे हैं -c झंडा irssi लॉन्च करने के लिए? (su -c irssi)
eephyne

यह भी कोशिश की ... एक हजार चीजों की कोशिश की ... क्यों डब्ल्यूटीएफ को चलाने के लिए बहुत मुश्किल है क्योंकि मैन पेज इसे चाहता है ... लेकिन कुछ भी नहीं होता है grrrr
user123361

क्या यह हो सकता है कि irssiएक मुद्दा हो और सु कमांड काम करे?
नन्ने

क्या? [उपयोगकर्ता नाम]? Irssi चलाने का उचित अधिकार है?
डोका

जवाबों:


28

इस जवाब को अभी भी आपकी मदद करनी चाहिए, यहां तक ​​कि संपादन को भी ध्यान में रखते हुए। विशेष रूप से, एक खाता जिसके साथ --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

वैकल्पिक रूप से आप एक शेल शुरू कर सकते हैं और फिर कमांड चला सकते हैं :

  1. खोल के साथ शुरू करो ।su username -
  2. शेल में, कमांड चलाएं ( irssi)।
  3. यदि आप कर रहे हैं, तो शेल को चलाकर छोड़ दें 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

(ऊपर सूचीबद्ध तकनीकों में से कौन सा है।)

अंतत: आपने सूचना के दो टुकड़े बताए, जो यह समझाने के लिए पर्याप्त हैं कि ऐसा क्यों था कि अन्य तकनीकें विफल हो गई थीं, लेकिन वह सफल हो गई थी:

  1. usernameखाते के साथ बनाया गया था --disabled-loginझंडा है, जो बनाता है यह है कोई पासवर्ड (और में लॉग इन करने की कोई अन्य साधन)। कोई पासवर्ड नहीं होने का मतलब यह नहीं है कि रिक्त पासवर्ड के साथ लॉग इन करना संभव है । इसका मतलब है कि कोई भी पासवर्ड प्रमाणित करने के लिए पर्याप्त नहीं है। प्रमाणीकरण के अन्य साधनों के उन्मूलन के साथ संयोजन में, इसका मतलब usernameयह बिल्कुल प्रमाणित नहीं कर सकता है।

    तो सभी- suआधारित समाधान बाहर हैं। sudoयद्यपि आप काम कर सकते हैं, क्योंकि sudoआपके द्वारा प्रमाणित किए जाने वाले उपयोगकर्ता के रूप में आप प्रमाणित नहीं करते हैं। इसके बजाय, आपको उन्हें लगाने के लिए अधिकृत किया जाना चाहिए , और आप स्वयं के रूप में प्रमाणित करते हैं (यानी, अपना पासवर्ड दर्ज करें, न कि उनका)।

    खाते पर एक पासवर्ड सेट करना संभव है, जो लॉग इन करने में इस बाधा को दूर करता है:

    sudo passwd username

    हालांकि एक अच्छा कारण हो सकता है कि उपयोगकर्ता को लॉग इन करने की अनुमति नहीं है। उदाहरण के लिए, यदि इस उपयोगकर्ता को लॉग इन करने की अनुमति दी गई है और ग्राफिक रूप से लॉग इन किया गया है, तो उपयोगकर्ता के पर्यावरण या विशेष रूप से X11 ऐप चलाने के लिए खराब होने के कारण खराब समस्याएं उत्पन्न होंगी। ? यदि यह उपयोगकर्ता लॉग ऑन कर सकता है, तो क्या यह उस उपयोगकर्ता के रूप में दूरस्थ रूप से लॉग इन करना संभव बना देगा (उन मशीनों के लिए जहां आपने नेटवर्क सेवाओं को उजागर किया है)?

    यदि आप इसे फिर से अक्षम करना चाहते हैं:

    sudo passwd -dl username

    संबंधित: अस्थायी रूप से सक्षम होने के बाद खाते को फिर से अक्षम rootकरना।

  2. 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 यही रह गया।


जब आप अपने उत्तर पर काम कर रहे थे, तो कई संपादन के लिए क्षमा करें। वाह। धन्यवाद। जब मैं कैट / etc / पासवार्ड करता हूं, तो मेरे द्वारा कॉन्फ़िगर किया गया उपयोगकर्ता अंत में / bin / false है - तो क्या यह विफल होने का कारण है? किसी भी विचार कैसे तय करने के लिए?
user123361

जो भी कारण के लिए, sudo -u उपयोगकर्ता नाम irssi का उपयोग कर उपचार का काम करता है। अपने लंबे, अच्छी तरह से समझाया जवाब के लिए धन्यवाद!
user123361

@db मुझे खुशी है कि यह काम किया है! (Btw, संपादन के लिए माफी माँगने की ज़रूरत नहीं है, संपादन बहुत अच्छा है, और आपका प्रश्न संभवतः अधिक अन्य लोगों के लिए भी संपादन के परिणाम के रूप में उपयोगी होगा।) आपके अन्य प्रश्नों के लिए, मैंने अपने उत्तर को संपादित कर दिया है। अंत में एक विश्लेषण अनुभाग शामिल करें।
एलिया कगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.