web-dev-qa-db-ja.com

「Sudo-i」と「Sudobash-l」の違いは何ですか

Rootとして機能する複数のシステム管理者に関して 最近の質問 があり、Sudo bash -lが参照されました。

グーグルとSEで検索したのですが、Sudo bash -lSudo -iの違いがわかりません。

BashとSudoのマニュアルページから、Sudo bash -lがrootユーザーの〜/ .bash_profile、〜/ .bash_login、〜/ .profile、および〜/ .bash_logoutを実行するという違いがあるようですが、自分でテストすると、ルートユーザーではなく通常のユーザーの.bashrcが実行されているように見えます。 〜式がマニュアルページで参照しているユーザーを誤解している可能性があります。違いと使用シナリオを明確にしていただければ幸いです。

13
Rqomey

/ etc/passwdで指定されたrootユーザーのログインシェルがbashでない場合、2番目のコマンドはbashシェルをrootとして取得し、最初のコマンドはrootユーザーが持っているインタラクティブシェルを使用するという点で異なります。

10
johnshen64

また、@ johnshen64の回答に追加するために、Sudo -i呼び出しが$USERNAMEenv変数をrootに更新し、cd ~をユーザーホームに次のように更新することに気付きました。

$ Sudo -i
[root@workstation001 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 ~]# echo $USERNAME
root
[root@workstation001 userXXX]# echo $PWD
/root

ただし、Sudo bash -l$USERNAMEは無秩序であり、作業ディレクトリは変更されません。 (これは他のユーザー間で一貫していませんが、コメントを参照してください...)

$ Sudo bash -l
[root@workstation001 userXXX]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 userXXX]# echo $USERNAME
userXXX
[root@workstation001 userXXX]# echo $PWD
/home/userXXX

したがって、おそらく、~/.bashrcのセットがまったく同じではないか、同じ順序ではないなどです。

(私の箱は私の.bashrcのいじくり回しによって少し台無しにされたかもしれないので、YMMV)

4
Tom H