sudo -sとsudo suの違い - [重複]

sudo -sとsudo suの違い - [重複]

sudo -sおそらく重複するでしょう。この質問に対する答えをどこかで見たことがあります。しかし、権利と変数、その他の項目の違いは何ですかsudo su -

私が知っている限り、私が望むものは何でもできるルートシェルを開きますが、いつかいくつかの違いに遭遇するかどうか疑問に思います。

返品この質問はAskUbuntuにあります。私の懸念を解決していません。

答え1

sudo-s

$SHELL変数を読み、内容を実行します。$SHELL含まれれば/bin/bashと呼ばれるsudo /bin/bash。したがって、/bin/bash非ログインシェルで始まるので、すべてのドットファイルは実行されませんが、bash自体は.bashrc呼び出すユーザーの情報を読み取ります。あなたの環境は変わりません。あなたの家はルートの家ではありません。したがって、あなたはrootですが、呼び出しユーザーのコンテキストにあります。

水道水 -

su -と呼ばれるsudo。 (ダッシュを使用)とは異なり、sudo suこのシェルはログインシェルと呼ばれるため、およびが/etc/profile実行.profile.bashrcれ、ルートのホームディレクトリとルート環境で自分自身を見つけることができます。

源泉:

答え2

私の考えでは、「sudo」の後に「su」を使用するのは過剰です。
suの主な目的である有効なユーザーIDを変更せずにsuを使用しています。これはすでにsudoによって行われているからです。デフォルトの目的でユーザーIDを変更した後、シェルを実行するsuのデフォルトの動作を使用します。 sudoで直接シェルを実行すると、これをより効率的かつ明示的に達成できます。呼び出すユーザーがすでにrootである場合、suアクションを介してパスワードを再度要求することはありません。それ以外の場合は、パスワードを2回入力する必要があります(sudoに1回、suに1回)。 -l オプションを渡すか、"-" プレフィックスを使用して argv[0] を設定して、ログインシェルでシェルを実行できます。ただし、... sudoはデフォルトでターゲットユーザーと一致するように$ HOMEの値を変更しません(「set_home」または「always_set_home」が/ etc / sudoersにない限り)、-Hオプションを使用してオーバーライドします。 -- $HOME は誰を決定します。 profileこのスクリプトは-lで動作します。 sudoやbashは現在のディレクトリを変更しません(bash_profileの一部のコマンドが変更しない限り)。

したがって、「sudo -H bash -l」は「sudo su -」とほぼ同じです。過度ではなく、現在のディレクトリだけは変更されません。

「sudo -s」は「sudo su」に似ていますが、過度ではありません。

関連情報