web-dev-qa-db-ja.com

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

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

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

    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

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

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

josh@ubuntu:~$ Sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$
9
Joshua Zitting

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

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

ルートを終了すると、元のユーザーも最後のコマンドであるためログアウトします。

乾杯!

9

ただやる

exec Sudo -i

これで、ルートシェルがデフォルトのシェルに置き換わり、終了すると「both」を終了します(最初のシェルが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を使用し、終了するとターミナルが閉じます。

14
Rmano

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

Sudo -s && exit

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

echo "alias mysudo='Sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
1
javesh bhardwaj