जवाबों:
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
संभवतः सबसे सरल है, बशर्ते कि यह स्थापित हो और आपको इसका उपयोग करने की अनुमति हो।
su - [user]
उपयोगी हो सकता है - अतिरिक्त डैश आपको एक लॉगिन शेल देता है।
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 चलाने दें।
आम तौर पर आप sudo
एक नया शेल लॉन्च करने के लिए उपयोग करते हैं जैसा कि उपयोगकर्ता आपको चाहते हैं; -u
ध्वज आप जो उपयोगकर्ता नाम चाहते निर्दिष्ट कर सकते हैं:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
अगर आपके पास सुडो पहुंच नहीं है, तो अधिक सर्किट तरीके हैं ssh username@localhost
, लेकिन मुझे लगता sudo
है कि यह स्थापित होने पर शायद सबसे सरल है और आपको इसके लिए सिफारिश करनी होगी
sudo -s
आप की तरह एक खोल देता है su
, sudo -i
लॉगिन की तरह अनुकरण करता है su -
। के साथ जोड़ा जा सकता है -u $user
।
$ whoami
यह कमांड वर्तमान उपयोगकर्ता को प्रिंट करता है। उपयोगकर्ताओं को बदलने के लिए, हमें इस कमांड (उपयोगकर्ता के पासवर्ड के बाद) का उपयोग करना होगा:
$ su secondUser
Password:
सही पासवर्ड दर्ज करने के बाद, आपको निर्दिष्ट उपयोगकर्ता के रूप में लॉग इन किया जाएगा (जिसे आप फिर से जाँच कर सकते हैं whoami
।
टर्मिनल सत्र को किसी भिन्न उपयोगकर्ता पर स्विच करने के लिए, जहाँ वह उपयोगकर्ता मूल उपयोगकर्ता से वापस नहीं निकल सकता है, निष्पादन का उपयोग करें:
$ | # निष्पादन सु - [उपयोगकर्ता नाम]
यह तकनीकी रूप से नए उपयोगकर्ता को एक नई टर्म प्रक्रिया में लॉगिन करेगा, और वर्तमान को बंद कर देगा। इस तरह से जब उपयोगकर्ता बाहर निकलने या Ctrl-D का प्रयास करता है, तो टर्मिनल बंद हो जाएगा, क्योंकि उपयोगकर्ता वह था जिसने इसे त्वरित किया, अर्थात, उपयोगकर्ता मूल उपयोगकर्ता के कार्यकाल में वापस नहीं निकल सकता है। बेकार की तरह, यह देखते हुए कि वे अभी भी एक नया टर्मिनल सत्र शुरू कर सकते हैं और स्वचालित रूप से मूल उपयोगकर्ता शब्द लॉगिन में हो सकते हैं, लेकिन वहां यह है।
संपादित करें: इसके लायक क्या है, आप टर्मिनल सत्रों को डिफ़ॉल्ट रूप से लॉक करने के लिए अपने ~ / .bashrc में लिनक्स व्लॉक कमांड का उपयोग कर सकते हैं, जिसके लिए शब्द सत्र उपयोगकर्ता के पासवर्ड को अनलॉक करने की आवश्यकता होती है। यह कुछ हद तक मूल उपयोगकर्ता संदर्भ के तहत पूर्वोक्त अवधि के पुनरारंभ को रोक देगा, यह देखते हुए कि शब्द को उपयोगकर्ता के गैर-डिफ़ॉल्ट ~ / .bashrc के रूप में कॉन्फ़िगर नहीं किया गया है।
फिर भी एक अन्य मार्ग उस उपयोगकर्ता के रूप में कमांड चलाने के लिए एक अलग (गैर-रूट) उपयोगकर्ता के रूप में एक नया शेल लॉन्च करना है।
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
इसका एक उदाहरण mongodb
उपयोगकर्ता है। शार्प किए गए MongoDB क्लस्टर को तैनात करते समय, सभी आवश्यक प्रक्रियाओं को अवश्य चलाना चाहिए mongodb
और दर्जनों नोड्स के लिए init स्क्रिप्ट का उपयोग करके प्रक्रियाओं को निष्क्रिय करना आवश्यक (या पूरी तरह से सुविधाजनक) नहीं है।
हमें यह अधिकार मिलता है: आप 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 कर सकते हैं और अपने लॉगिन पर लौट सकते हैं।
यदि आपको केवल एक ही कमांड चलाने की आवश्यकता है, तो आप sudo का उपयोग कर सकते हैं:
sudo -u username command
$XDG_RUNTIME_DIR
विशेष रूप से) के साथ मुद्दों में भाग गया जो मुझे पागल कर रहे थे। -> unix.stackexchange.com/questions/354826/…