Ubuntuサーバーでルートレベルのアクションを実行しようとしました。 rootユーザーに切り替えたところ、ユーザー名が異なることがわかりました。私は通常、次のコマンドでrootユーザーに切り替えます。
Sudo su -
しかし、プロンプトは別のユーザーとして表示されていました:webadm-dev
。 /etc/shadow
誰かがユーザーを追加しようとしても、何も見つからなかった場合。次のようにして(ログインしたユーザーに戻った後で)rootユーザーに切り替えようとしました。
Sudo su - root
変わりました。私は戻って通常のコマンドをもう一度実行しようとしました:
Sudo su -
そして、ユーザー名はrootユーザーに戻されます。このコマンドの動作とこの奇妙な変更を理解できません。助けてください!
編集1:ルートプロンプトでのユーザー変更の動作は1回だけで、二度と表示されませんでした。
Sudo su -
の動作は次のとおりです。
/etc/profile
、.profile
、および.bashrc
が読み込まれ、ユーザーがルートのホームディレクトリに移動して、ルートの環境が使用されます。質問のコメントで説明したように、ルートシェルを使用するもう1つの方法は、Sudo -i
を実行することです。 Sudo -i
の動作は次のとおりです。
Sudo su -
とほぼ同じです。-i
(初期ログインをシミュレート)オプションは、ターゲットユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。つまり、.profile
、.bashrc
、.login
などのログイン固有のリソースファイルがシェルによって読み取られ、実行されます。Sudo -i
がSudo su -
よりも優先される理由は、コマンドがrootではなくユーザーが使用したものとしてログに記録されるため、マルチユーザー環境でコマンド(何を実行したか)を簡単に監査できるためです。
質問の別の部分(なぜ別のユーザーとしてプロンプトが表示されるのか)では、その動作が最初に表示された理由は当面不明です。環境には他の監査ソフトウェアがインストールされているため(WebADM具体的には)somethingがそのユーザーによって実行されました。その振る舞いは再現性がなく、エッジのケースでした。