एक टर्मिनल पर उपयोगकर्ताओं के बीच स्विच कैसे करें?


479

मैं वर्तमान (एक ही टर्मिनल पर) से लॉग आउट किए बिना एक अलग उपयोगकर्ता के रूप में लॉग इन करना चाहूंगा। मैं उसको कैसे करू?


1
मैंने एक समान प्रश्न पूछा, क्योंकि मैं एक्सडीजी पर्यावरण चर ( $XDG_RUNTIME_DIRविशेष रूप से) के साथ मुद्दों में भाग गया जो मुझे पागल कर रहे थे। -> unix.stackexchange.com/questions/354826/…
जोनाथन

जवाबों:


560

suकमांड का उपयोग कैसे करें ?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

यदि आप रूट के रूप में लॉग इन करना चाहते हैं, तो उपयोगकर्ता नाम निर्दिष्ट करने की कोई आवश्यकता नहीं है:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

आम तौर पर, आप sudoएक नया शेल लॉन्च करने के लिए उपयोग कर सकते हैं जैसा उपयोगकर्ता चाहते हैं; -uध्वज आप जो उपयोगकर्ता नाम चाहते निर्दिष्ट कर सकते हैं:

$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2

अगर आपके पास sudo एक्सेस नहीं है, तो ssh username @ localhost जैसे अधिक सर्किट वाले तरीके हैं, लेकिन sudoसंभवतः सबसे सरल है, बशर्ते कि यह स्थापित हो और आपको इसका उपयोग करने की अनुमति हो।


17
इसके अलावा, su - [user]उपयोगी हो सकता है - अतिरिक्त डैश आपको एक लॉगिन शेल देता है।
ईपीएमिएंट

मुझे यह त्रुटि मिल रही है "-su: / dev / stderr: अनुमति से वंचित" इस आदेश echo >>/dev/stderrको किसी लॉगिन su --login ..., किसी भी टिप पर लॉगिन करने के बाद ? मुझे यह btw unix.stackexchange.com/questions/38538/…
कुंभ

क्या यह प्रत्येक नए उपयोगकर्ता को पर्यावरण चर के लिए भिन्न, ओवरराइडिंग मानों की अनुमति देता है? जैसे काम के लिए गिट कॉन्फिग, ओपन सोर्स इत्यादि
केविन सुटल

एक खोज, जब मैंने envइसे सूचीबद्ध किया तो देखा कि सब कुछ क्रम में था और साथ ही एक दृश्य निरीक्षण भी हो सकता है; और एक बात गलत थी: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on ~ / .Xauthority` फ़ाइल है -rw-------:। मैंने एक प्रति बनाई और कहा कि मुझे एक प्रयोग के रूप में gedit चलाने दें।
होगा

1
अगर आपको "यह खाता अभी उपलब्ध नहीं है": su -s / bin / bash - www-data
max4ever

46

आम तौर पर आप sudoएक नया शेल लॉन्च करने के लिए उपयोग करते हैं जैसा कि उपयोगकर्ता आपको चाहते हैं; -uध्वज आप जो उपयोगकर्ता नाम चाहते निर्दिष्ट कर सकते हैं:

[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody

अगर आपके पास सुडो पहुंच नहीं है, तो अधिक सर्किट तरीके हैं ssh username@localhost, लेकिन मुझे लगता sudoहै कि यह स्थापित होने पर शायद सबसे सरल है और आपको इसके लिए सिफारिश करनी होगी


क्या होगा यदि मेरे सिस्टम में ssh सर्वर या sudo नहीं है? क्या आप उत्तर पर उस हिस्से का उल्लेख कर सकते हैं?
tshepang 19

ठीक है, प्रैट ने उत्तर दिया कि एक
tshepang

4
sudo -sआप की तरह एक खोल देता है su, sudo -iलॉगिन की तरह अनुकरण करता है su -। के साथ जोड़ा जा सकता है -u $user
इफिशिएंट

बहुत अधिक कुशल। एक उपयोगकर्ता के रूप में "लॉगिन" करने में सक्षम होना जो सामान्य रूप से लॉगिन नहीं कर सकता है वह एक महान संपत्ति है ..! पूरी तरह से मुझे अनुमति या सेलेनक्स के साथ खिलवाड़ के बिना एक डेटाबेस उदाहरण चलाने की अनुमति दी
Félix Gagnon-Grenier

20
$ whoami 

यह कमांड वर्तमान उपयोगकर्ता को प्रिंट करता है। उपयोगकर्ताओं को बदलने के लिए, हमें इस कमांड (उपयोगकर्ता के पासवर्ड के बाद) का उपयोग करना होगा:

$ su secondUser
Password:

सही पासवर्ड दर्ज करने के बाद, आपको निर्दिष्ट उपयोगकर्ता के रूप में लॉग इन किया जाएगा (जिसे आप फिर से जाँच कर सकते हैं whoami


उपयोगी यदि आप सुडौल नहीं हैं।
मार्को सुल

15

यदि आप उबंटू चला रहे हैं, और यदि आप जिस उपयोगकर्ता को लॉगिन करना चाहते हैं, उसके पास पासवर्ड सेट नहीं है:

sudo su - username

अपना खुद का पासवर्ड डालें और आपको सेट होना चाहिए। बेशक, इसके लिए आवश्यक है कि आपके उपयोगकर्ता के पास रूट विशेषाधिकार प्राप्त करने के अधिकार हों sudo


8

टर्मिनल सत्र को किसी भिन्न उपयोगकर्ता पर स्विच करने के लिए, जहाँ वह उपयोगकर्ता मूल उपयोगकर्ता से वापस नहीं निकल सकता है, निष्पादन का उपयोग करें:

$ | # निष्पादन सु - [उपयोगकर्ता नाम]

यह तकनीकी रूप से नए उपयोगकर्ता को एक नई टर्म प्रक्रिया में लॉगिन करेगा, और वर्तमान को बंद कर देगा। इस तरह से जब उपयोगकर्ता बाहर निकलने या Ctrl-D का प्रयास करता है, तो टर्मिनल बंद हो जाएगा, क्योंकि उपयोगकर्ता वह था जिसने इसे त्वरित किया, अर्थात, उपयोगकर्ता मूल उपयोगकर्ता के कार्यकाल में वापस नहीं निकल सकता है। बेकार की तरह, यह देखते हुए कि वे अभी भी एक नया टर्मिनल सत्र शुरू कर सकते हैं और स्वचालित रूप से मूल उपयोगकर्ता शब्द लॉगिन में हो सकते हैं, लेकिन वहां यह है।

संपादित करें: इसके लायक क्या है, आप टर्मिनल सत्रों को डिफ़ॉल्ट रूप से लॉक करने के लिए अपने ~ / .bashrc में लिनक्स व्लॉक कमांड का उपयोग कर सकते हैं, जिसके लिए शब्द सत्र उपयोगकर्ता के पासवर्ड को अनलॉक करने की आवश्यकता होती है। यह कुछ हद तक मूल उपयोगकर्ता संदर्भ के तहत पूर्वोक्त अवधि के पुनरारंभ को रोक देगा, यह देखते हुए कि शब्द को उपयोगकर्ता के गैर-डिफ़ॉल्ट ~ / .bashrc के रूप में कॉन्फ़िगर नहीं किया गया है।



2

फिर भी एक अन्य मार्ग उस उपयोगकर्ता के रूप में कमांड चलाने के लिए एक अलग (गैर-रूट) उपयोगकर्ता के रूप में एक नया शेल लॉन्च करना है।

ubuntu@aws-ip:~$ sudo -u mongodb bash          #<-- or zsh, etc... 
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork

इसका एक उदाहरण mongodbउपयोगकर्ता है। शार्प किए गए MongoDB क्लस्टर को तैनात करते समय, सभी आवश्यक प्रक्रियाओं को अवश्य चलाना चाहिए mongodbऔर दर्जनों नोड्स के लिए init स्क्रिप्ट का उपयोग करके प्रक्रियाओं को निष्क्रिय करना आवश्यक (या पूरी तरह से सुविधाजनक) नहीं है।


2

हमें यह अधिकार मिलता है: आप UserA के रूप में लॉग इन हैं और कुछ कमांड चलाने के लिए UserB के रूप में "लॉगिन" करना चाहते हैं, लेकिन जब किया जाए तो UserA पर वापस आना चाहेंगे। सादगी के लिए, मुझे लगता है कि आप उपयोगकर्ता के रूप में ls -l / tmp चलाना चाहते हैं। यदि आप UserA के वर्तमान शेल को छोड़ना नहीं चाहते हैं, बल्कि UserB के रूप में एक कमांड चलाते हैं और अभी भी UserA के रूप में लॉग इन रहते हैं, तो आपको यह करना चाहिए:

su - UserB -c "ls -l /tmp"   <-- Just an example

यह मानता है कि आप UserB के लिए पासवर्ड जानते हैं। हालाँकि, यदि आप UserB का पासवर्ड नहीं जानते हैं, तो आपको रूट पासवर्ड जानना होगा। फिर:

sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

यदि आप बहुत सारे आदेशों को चलाने के लिए अस्थायी रूप से UserB के रूप में लॉगिन करेंगे, तो बस यह करें:

sudo su - UserB

यह आपको UserB के लिए एक नया शेल देगा (आईडी टाइप करके देखें)। जब किया जाता है, तो आप ctrl-d कर सकते हैं और अपने लॉगिन पर लौट सकते हैं।


1

यदि आपको केवल एक ही कमांड चलाने की आवश्यकता है, तो आप sudo का उपयोग कर सकते हैं: sudo -u username command


-1
~$ sudo login

फिर यह आपको sudo पासवर्ड (वर्तमान में उपयोगकर्ता के पासवर्ड में लॉग इन) के लिए संकेत देगा।

इसके अलावा: सुनिश्चित करें कि वर्तमान उपयोगकर्ता sudoers फ़ाइल में है!


2
सवाल एक अलग उपयोगकर्ता के रूप में लॉगिंग के बारे में था।
मिनिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.