su ティーン sudo -s ティーン sudo -i ティーン sudo bash

su ティーン sudo -s ティーン sudo -i ティーン sudo bash

次のコマンドの違いは何ですか?

su
sudo -s
sudo -i
sudo bash

suルートパスワードを知る必要があり、ファイルsudoに存在する必要があることを知っていますが、一度実行するとどのような違いがありますか?sudoers

susudo -s私のホームディレクトリは/root私が実行して以来、私の間に違いがあることを知っていますが、私のsuホームディレクトリはまだ/home/myname後ですsudo -s。しかし、私はこれが私が見過ごしている根本的な違いの症状にすぎないと思います。

ベストアンサー1

suあなたと~になる他のユーザー - デフォルトはrootですが、他のユーザーにすることもできます。と言うとsu -、ユーザーの環境もそのユーザーのログイン環境に置き換えられます。システムは、他のsuユーザーがログインしたときに行った操作に基づいて、他のユーザーに何をしているのかを判断できません。

状況は非常に異なりますsudo

  • 実行するコマンドsudo 実装するターゲットユーザーとして(デフォルトはルートですが変更可能です)-u、実行するコマンドを記録し、後で責任を割り当てることができるようにユーザー名でタグ付けします。 :)

  • sudoとても柔軟です。たとえば、特定のユーザーまたはユーザーグループが実行できるコマンドを制限できます。それで、suそれは全部または専務です。

    この機能は通常、役割を定義するために使用されます。たとえば、実行が許可されるdump「バックアップ」グループを定義でき、tar各グループにはシステムディスクを正しくバックアップするためにrootアクセス権が必要です。

    ここでこれを言及する理由は、誰かに能力や能力をsudo付与せずに特権を付与できるという意味だからです。彼らは仕事をするために必要な権限しか持っていませんが、システム全体を実行することができます。しかし、この点には注意が必要です。たとえば、誰かに話す権限を与えると、その人はその言葉を無視して同じ権限を持つことができます。sudo -ssudo bashsusudo vivisudo -s

  • ルートパスワードではなくsudoerパスワードを使用するため、sudo複数のsudoer間の権限を分離します。

    suこれは、ルートパスワードが変更された場合にsu使用するためにパスワードを知る必要があるすべての人に知らせる必要がある管理上の問題を解決します。sudosudoerのパスワードを独立して変更できるようにします。実際、システムのrootユーザーアカウントをパスワードでロックすると、sudoすべてのシステム管理タスクが通過しますsudo。信頼性の高いsudoerを持つ大規模な組織では、システム管理者の1人が去ったときにルートパスワードを変更して展開する必要はありません。残りの管理者に渡します。

sudo bashとの主な違いは次のとおりsudo -sです。

  1. -s~より短いbash

  2. デフォルトのシェルで実行しsudo -s some-commandますが、スーパーユーザー権限で実行できます。some-command基本的にはの略語ですsudo $SHELL -c some-command

  3. コマンドをシェルの標準入力に渡すことができますsudo -s < my-shell-script。たとえば、と一緒に使用できます。トレドックsudo繰り返し入力を避けるために、単一の呼び出しに複数のコマンドを送信しますsudo

  4. これらの追加のコマンド引数がなくても他のシェルで実行できるため、sudo -sまだ異なります。まず、環境変数を見てから設定されていない場合は、ユーザーのログインシェル設定(通常は。sudo bashbashSHELL/etc/passwd

実行中のシェルはsudo -s現在のユーザーエクスペリエンスを継承します。本当に欲しいものがログイン後に得られるようなきれいな環境であれば、欲しいものは次のとおりsudo -iですsudo。おおまかに言えば、sudo -iこれは次のようになりますsudo -ssu -いくつsuかの主要な環境変数を除くすべての変数をリセットし、元の状態に戻ります。ユーザーのホームディレクトリ。標準入力またはコマンドを介してそのシェルで実行するようにコマンドを指定しないと、そのシェルはsudo -i some-command対話型ログインシェルとして実行されるため、ユーザーのシェル起動スクリプト(たとえば.bash_profile)が再実行される可能性があります。

これらはすべてsudo -isudo -sなぜ?誰かが以前に環境を変更できた場合、sudo -s予期しないコマンドが実行される可能性があるためです。最も明確なケースは修正ですが、while under then passと言う場合のようSHELLに、それほど直接的ではないかもしれません。PAGERman foosudo -s

「修正できれば、修正してPAGER邪悪PATHsudoプログラムを置き換えることができます。」と言うこともできますが、編集証がひどい人は/usr/bin/sudo /bin/bashこの罠を避けるべきだと主張することができます。あなたはあまりにも編集証的であり、すべての落とし穴を避けることはできません。その他しかし、環境変数の影響を受けやすい。EDITORたとえば、コマンドを実行する前に確認することを覚えていましたか?VCS注文する?したがってsudo -i、。

sudo -i作業ディレクトリもユーザーのホームディレクトリに変更されるため、実行しているディレクトリと同じディレクトリにsudo -s滞在したい場合は、このディレクトリを引き続き使用できます。ただし、元の場所を行き来することは依然として安全です。cdsudosudo -icd

時々見ることができるこれらすべてのもう一つの変形sudo susudo -s。また、sudo su -機能面でも非常に似ていますsudo -isudoとは競合するコマンドなので、このように対にsuするのが少し奇妙なので、代わりにフラグを使用することをお勧めしますsudo

おすすめ記事