1つのコマンドでrootとユーザーの両方を終了します


9

「使用しないsudo su -」などについては知っていますが、正直に言って、ほとんどすべての人が使用しています。

それで、ここに問題があります。rootログインを有効にすることはできないため、ユーザーとしてsshを実行してから、rootにsuする必要があります。
ここにプロセスツリーがあります:

    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

rootを終了し、1つのコマンドでユーザーを終了します。これを行う方法はありますか?

BTW exit && exitは、シェルを終了して残りのコマンドを処理しないため、機能しません

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

5
「私たちのほとんどがそれをやっています。」私はそれを疑います。私はいくつかのマシンを保守しており、すべてのパスワードを持っています。debianベースのシステムで「sudo su」を使用したことはありません。そして、私はほとんどの人がそれを使わないことを期待しています。
Rinzwind 2015

1
を使用しないでくださいsudo su。それは無意味であり、追加のプロセスを起動するだけです。sudo -i必要に応じて、代わりにを使用してください。
terdon 2015

sudo -iルートシェルを取得するために使用します。sshについては、ルートログインを許可するようにsshを設定できます。個人的には、ルートと「sshキー」または「kerberos」のいずれかに「パスワードなし」オプションを使用します。これにより、rootアカウントがパスワードにロックされたままになります。
Panther

うまくいかないものはなかなかわかりません。最初exitは終了しsu、2番目はログアウトします。あなたがやりたかったことではないですか?
Pilot6、2015

1
@ Pilot6あなたはそのコードをテストしましたか?私はやっただけでうまくいきません..それがまさに私がやりたいことです..しかし、うまくいきません..
Joshua Zitting

回答:


9

技術的には、誰もあなたの質問に答えませんでした。私は彼らが彼らのやり方がより良いと思う(おそらくそれは良い)と感謝しますが、ここに別のアプローチがあります(あなたがsu -時間をかけて同じ問題を抱えている場合に備えて)。

  1. [システムにログイン]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

rootを終了すると、最後のコマンドを続行しているため、元のユーザーもログアウトします。

乾杯!


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-edターミナルを使用するのによく使用しexec ssh whateverます。終了するとターミナルが閉じます。


2
よくやった!!! ありがとうございました!exitを2回入力する必要がなくなりました!!
Joshua Zitting、2015

賢くやった!優秀
Anwar

1

rootユーザーになったら、次のように入力します。

sudo -s && exit

rootを終了すると、シェルは自動的に閉じます。このコマンドをエクスポートして永続的にすることができます。

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.