を使用suすると、別のユーザーになります。デフォルトではルートですが、潜在的に別のユーザーになります。と言うsu -場合、環境はそのユーザーのログイン環境にも置き換えられるため、表示される内容はそのユーザーとしてログインすることと区別できません。su別のユーザーがログインしたときに、そのユーザーによるアクションから、ユーザーが何をしているのかをシステムが伝える方法はありません。
物事は非常に異なっていsudoます:
sudo 実行するコマンドは、ターゲットユーザーとして実行されます(デフォルトではrootですが、変更可能です)が-u、実行するコマンドをログに記録し、ユーザー名でタグ付けして、後で責任を割り当てることができます。:)
sudo非常に柔軟です。たとえば、特定のユーザーまたはユーザーのグループが実行できるコマンドを制限できます。でsu、それはすべてまたは何もありません。
この機能は通常、ロールを定義するために使用されます。たとえば、実行dumpを許可する「バックアップ」グループを定義tarし、システムディスクを適切にバックアップするためにそれぞれルートアクセスを必要とします。
誰かにsudo権限sudo -sやsudo bash能力を与えることなく、誰かに特権を与えることができることを意味するため、ここでこれについて言及します。suシステム全体を実行しているのに対し、彼らは仕事をするのに必要な権限しか持っていません。ただし、これに注意する必要があります。sudo viたとえば、誰かに発言する能力を与えた場合、相手はから脱出viして、実質的にの場合と同じ力を持つことができますsudo -s。
ルートパスワードの代わりにsudoerのパスワードを使用するため、複数のsudoer sudo間のアクセス許可を分離します。
これにより、管理上の問題が解決されsuます。つまり、rootパスワードが変更された場合、使用するためにパスワードを知っていなければならなかったすべての人に通知するsu必要がありました。sudosudoersのパスワードを個別に変更できます。実際、システム上のrootユーザーのアカウントをパスワードロックして、sudoすべてのsysadminタスクをを介して強制的に実行するのが一般的ですsudo。多くの信頼できるsudoerを使用する大規模な組織では、sysadminの1人が去っても、rootパスワードを変更して残っている管理者に配布する必要はありません。
主な違いsudo bashとはsudo -sつまり-s短く、あなたはいくつかの方法で、ユーザーのデフォルトのシェルで実行するコマンドを渡すことができます:
sudo -s some-commandどちらがsome-commandシェルの下で実行されるかを言うことができます。基本的にの略記ですsudo $SHELL -c some-command。
代わりに、コマンドをシェルの標準入力に渡すことができます(例:)sudo -s < my-shell-script。これをヒアドキュメントで使用すると、複数のコマンドを1回のsudo呼び出しに送信でき、sudo繰り返し入力する必要がなくなります。
これらの動作は両方ともオプションです。はるかに一般的には、-s単独で与えるので、ユーザーのシェルをインタラクティブに実行するだけです。そのモードでは、最初に環境変数を調べ、それが設定されていない場合はユーザーのログインシェル設定(通常は)であるため、とはsudo bash異なるシェルを実行する可能性があるという点で異なります。bashSHELL/etc/passwd
によって実行されるシェルはsudo -s、現在のユーザー環境を継承します。ログイン直後に取得するように、実際に必要なのがクリーンな環境である場合、代わりに必要なのはsudo -i、に比較的最近追加されたものsudoです。大雑把に言えば、sudo -iにあるsudo -sようsu -にされsu、それはいくつかの重要な環境変数が、すべてをリセットし、ユーザーのホームディレクトリに戻りますを送信します。標準入力またはを介してそのシェルの下で実行するコマンドも指定しない場合sudo -i some-command、そのシェルは対話型ログインシェルとして実行されるため、ユーザーのシェルスタートアップスクリプト(例.bash_profile)が再度実行されます。
これのすべてはsudo -iかなりより安全になりsudo -sます。どうして?前に誰かがあなたの環境を変更sudo -sできると、意図しないコマンドが実行される可能性があるためです。最も明白な場合は変更しているSHELLが、それはまた、このような介するなど、あまり直接発生する可能性がありますPAGERあなたが言う場合はman foo下にある間sudo -s。
「変更できる場合PAGER、変更できる場合PATH、悪意のあるsudoプログラムを代用できる場合があります」と言うかもしれませんが、だまされやすい人は/usr/bin/sudo /bin/bashそのtrapを避けるように言うことができます。あなたはおそらくあまりにも妄想的ではないので、他のすべての影響を受けやすい環境変数のトラップも避けます。EDITORたとえば、VCSコマンドを実行する前に、を確認することも忘れていませんか?したがってsudo -i。
sudo -i作業ディレクトリもユーザーのホームディレクトリに変更されるため、実行時に使用sudo -sしていたディレクトリと同じディレクトリにとどまることがわかっている状況で使用したいcd場合がありますsudo。ただし、あなたがいた場所に戻っsudo -iたりcd戻ったりするのはまだ安全です。
sudo su -ルートパスワードを必要とせず-、ホームディレクトリが正しく設定されていることを確認するために、この方法を使用することを好みます。