एक कमांड के साथ रूट और उपयोगकर्ता दोनों से बाहर निकलें


9

मुझे "उपयोग नहीं करने sudo su -" आदि के बारे में पता है, लेकिन चलो ईमानदार रहें, लगभग हम सभी ऐसा करते हैं।

तो, यहाँ मुद्दा है। हमारे पास रूट लॉगिन सक्षम नहीं हो सकता है, इसलिए हमें अपने उपयोगकर्ता के रूप में ssh तो रूट करना होगा।
यहाँ प्रक्रिया पेड़ है:

    1  7897  7826  7826 ?           -1 S     1000   0:00 sshd: josh@pts/0
 7897  7898  7898  7898 pts/0     8182 Ss    1000   0:00  \_ -bash
 7898  7990  7990  7898 pts/0     8182 S        0   0:00      \_ sudo su -
 7990  7991  7990  7898 pts/0     8182 S        0   0:00          \_ su -
 7991  7992  7992  7898 pts/0     8182 S        0   0:00              \_  -su
 7992  8182  8182  7898 pts/0     8182 R+       0   0:00                  \_ ps axjf

मैं रूट से बाहर निकलना चाहूंगा, फिर अपने उपयोगकर्ता से एक कमांड के साथ। क्या इसे करने का कोई तरीका है?

BTW बाहर निकलना && निकास काम नहीं करता है क्योंकि यह शेल से बाहर निकलता है और बाकी कमांड को संसाधित नहीं करता है

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$

5
"लगभग हम सभी इसे करते हैं .." मुझे संदेह है कि। मैं कई मशीनों को बनाए रखता हूं और सभी पासवर्ड रखता हूं और मैं कभी भी डेबियन आधारित सिस्टम पर "सुडो सु" का उपयोग नहीं करता हूं। और मैं उम्मीद करता हूं कि हम में से अधिकांश इसका इस्तेमाल नहीं करेंगे।
रिनविविंड

1
उपयोग न करें sudo su, यह व्यर्थ है और बस एक अतिरिक्त प्रक्रिया शुरू करता है। उपयोग करें sudo -i, यदि आपको करना है, तो इसके बजाय।
टेराडन

मैं sudo -iएक रूट शेल प्राप्त करने के लिए उपयोग करता हूं । Ssh के रूप में, आप रूट लॉगिन को अनुमति देने के लिए ssh को कॉन्फ़िगर कर सकते हैं, व्यक्तिगत रूप से मैं रूट के लिए "बिना पासवर्ड" विकल्पों का उपयोग करता हूं और या तो ssh कीज एर केरेरोस। यह रूट अकाउंट को पासवर्ड से लॉक रखता है।
पैंथर

मुझे वह नहीं मिलता जो काम नहीं करता। पहला exitबाहर निकलता है su, दूसरा लॉगआउट करता है। क्या यह नहीं है कि आप क्या करना चाहते हैं?
पायलट

1
@ Pilot6 क्या आपने उस कोड का परीक्षण किया है ?? मैंने अभी किया है और यह काम नहीं करता है .. कि बस मैं क्या करना चाहता हूँ .. लेकिन यह काम नहीं करता है ..
जोशुआ Zitting

जवाबों:


9

तकनीकी रूप से, किसी ने आपके प्रश्न का उत्तर नहीं दिया। मैं सराहना करता हूं कि उन्हें लगता है कि उनका रास्ता बेहतर है (शायद), लेकिन यहां एक और दृष्टिकोण है (यदि आपके पास su -कुछ समय है और एक ही मुद्दा है);

  1. [एक प्रणाली में प्रवेश करें]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

जब आप रूट से बाहर निकलते हैं, तो मूल उपयोगकर्ता भी लॉग आउट करेगा क्योंकि यह अंतिम कमांड जारी है।

चीयर्स!


14

बस करो

exec sudo -i

अब रूट शेल डिफ़ॉल्ट एक की जगह ले रहा है, और जब आप बाहर निकलते हैं, तो आप "दोनों" से बाहर निकलते हैं (गलत तरीके से लिखे गए, क्योंकि पहला शेल मौजूदा के साथ बंद हो जाता है exec)।

देखो:

[romano:~] % ssh pern
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

[romano@pern:~] % exec sudo -i
[sudo] password for romano: 
root@pern:~# whoami
root
root@pern:~# pstree -a -s -l -p -u $$
init,1
  └─sshd,1140 -D
      └─sshd,17450 
          └─sshd,17570,romano  
              └─sudo,17571,root -i
                  └─bash,17665
                      └─pstree,17678 -a -s -l -p -u 17665
root@pern:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] % 

मेरे पास बहुत-से sshटर्मिनल का उपयोग करने के लिए इसका उपयोग करते हैं: उपयोग करें exec ssh whateverऔर जब आप बाहर निकलते हैं, तो टर्मिनल बंद हो जाता है।


2
अच्छी तरह से किया!!! धन्यवाद! मुझे अब दो बार बाहर निकलने की ज़रूरत नहीं है !!
जोशुआ Zitting

चतुराई से किया! उत्कृष्ट
अनवर

1

जब आप रूट उपयोगकर्ता बन रहे हों तो बस टाइप करें ::

sudo -s && exit

जब आप जड़ से बाहर निकलेंगे तो आप अपने आप बंद हो जाएंगे। आप इस आदेश को स्थायी बनाने के लिए निर्यात कर सकते हैं।

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.