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」に似ていますが、過度ではありません。