sudoログインとプロンプト表示の違い

sudoログインとプロンプト表示の違い

sudo -sとの違いは何ですかsudo -i? 異なるシェルが提供される理由は何ですか? は、私をの-s中に閉じ込めて を提供するようです。bash-ish

MacOSX High Sierra 10.13 で、sudo -sターミナルに入力してパスワードを入力すると、ユーザー名として root が表示されますが、プロンプトにドル記号が表示されます。

user1@mymachine:~$ sudo -s
**root@mymachine:~$**

しかし、 と入力するとsudo -i、次のようになります:

user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**

上記の例で私が root なのにハッシュ記号 # が表示されないのはなぜですかsudo -s? 私は本当の root ではないのですか?
2 つの間で環境変数が異なるのですか?

答え1

まず理解しておく必要があるのは、 はsudo -sと同等でありsudo -s rootsudo -iは と同等であるということですsudo -i root。sudo からユーザーを省略すると、ユーザー root を対象としているものとみなされます。

sudo -ssudo -iターゲットユーザーとしてログインしながら、ターゲット ユーザーとしてシェルを実行します。

を実行するたびにsudo -s、シェルが実質的にルート ユーザー シェルに変更されますが、 を実行するたびに、sudo -i現在のユーザーからログアウトしてルートとしてログインすることになります。シェルをルート ユーザー シェルに変更するたびに、ユーザーのエクスポート情報が保持されるため、この点は重要です。 を実行すると、sudo -iユーザーからログアウトしてルートとしてログインします。つまり、ルート ユーザーのシェル構成を採用することになります。

これは関係ありませんが、誤って何かを壊してしまう可能性があるため、ユーザーを root に変更することは避けてください。面倒でも、エスカレーションが必要なすべてのコマンドを sudo するようにしてください。本当に root シェルに変更したい場合は、suこれを実行して root としてログインできるようにしてください。

関連情報