sudo su -そしてsudo -i

sudo su -そしてsudo -i

ルートアカウントが無効になっているシステムでルートシェルを起動するには、次のいずれかのコマンドを実行できます。

  • sudo -i:対話型ログインシェルの実行(読み取り/root/.bashrc/root/.profile
  • sudo -s:非ログインインタラクティブシェルの実行(読み取り/root/.bashrc

sudo suUbuntuの世界では、これがルートシェルを取得する方法として提案されていることをよく見ています。 1つのコマンドで十分な場合に2つの別々のコマンドを実行するのはなぜですか?私が知っている限り、sudo -iそれは同等でsudo su -同じsudo -sですsudo su

唯一の違いは次のとおりです(sudo -i左とsudo su -右の比較)。

「sudo -i」と「sudo su -」を比較するmeldスクリーンショット

sudo -s(左)と(右)の比較sudo su

「sudo -s」と「sudo su」を比較するmeldスクリーンショット

SUDO_foo変数とを無視する主な違いは、バージョンのシステム変数LS_COLORSのようです。XDG_foosudo su

ややエレガントでないケースを使うべき違いはありますかsudo su?人々に走ることがまったく意味がないか、sudo su何かを逃していると安全に言うことができますか?

ベストアンサー1

質問で述べたように、最大​​の違いは環境です。

sudo su -そしてsudo -i

sudo su -ログインシェルの場合を実行すると、ルート/etc/profileのホームディレクトリにあり、ルート環境を持つことになります。.profile.bashrc

sudo -isudo su -(初期ログインシミュレーション)オプションとほぼ同じで、ターゲット-iユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、ログイン固有のリソースファイル(たとえば.profile.bashrcまたは).loginがシェルから読み取られ実行されることを意味します。

sudo suそしてsudo -s

sudo susudoコマンドとして呼び出されますsu。 Bashはインタラクティブな非ログシェルとして知られています。したがってbash、を実行する.bashrcと、ルートに切り替えた後も同じディレクトリにまだ存在することがわかります。

user@host:~$ sudo su
root@host:/home/user#

sudo -s$SHELL変数を読み、内容を実行します。$SHELL含まれている場合が/bin/bash呼び出されますsudo /bin/bash。つまり、/bin/bash非ログインシェルで始まるので、ドットファイルは実行されませんが、bash独自に読み込まれます。bashrcユーザーに電話をかけます。あなたの環境は変わりません。あなたの家はルートの家ではありません。したがって、あなたはrootですが、呼び出しユーザーのコンテキストにあります。

結論として

フラグが次に-i追加されました。sudo2004年sudo su -はテンプレートsudo su -と同様の機能を提供し、テンプレートとsudo -i同じように機能するようになっています。環境が重要ではない場合、どのようなものを使用するかは重要ではないと思います。

次へ追加

ここで言及すべき基本は、sudo実行専用に設計されていることです。コマンドより高い権限を持ち、その権限を元の権限に戻してください。それは決して現実になるつもりではなかった。変化ユーザーを選択し、ルートシェルを開いたままにします。このメカニズムは時間の経過とともに拡張されました。sudoなぜすべてのコマンドの前にこのメカニズムが使用されるのかについて人々が迷惑をかけたからです。sudo

だから、その言葉の意味が間違ってsudo使われました。sudoユーザーがroot権限の使用を最小限に抑えるようにするように設計されています。

私たちが今持っていることはますます普及しsudoています。ほとんどすべてのよく知られているLinuxディストリビューションに統合されています。別のユーザーアカウントに切り替えるための元のツールはですsu。古い*nixベテランにとっては、そのようなものはsudo不要に見えるかもしれません。これは複雑さを増し、Microsoftオペレーティングシステムのファミリで知られているメカニズムと同様に機能するため、* nixシステムの単純さのアイデアに反します。

sudo私はベテランではありませんが、紹介されて以来私の脇腹にとげになったようで、sudo可能であれば使い方を常に迂回しています。私は少なくともそれを使いたいですsudo。私のすべてのシステムでrootアカウントが有効になっています。ただし、状況は変わり、いつかは廃止され、完全に置き換えsuられるsudo可能性があります。su

そのため、古いツールに頼るのではなく、sudo内部メカニズム(-s、)を使用する方が良いと思います。-isu

おすすめ記事