次のコマンドの違いは何ですか?
su
sudo -s
sudo -i
sudo bash
su
ルートパスワードを知る必要があり、ファイルsudo
に存在する必要があることを知っていますが、一度実行するとどのような違いがありますか?sudoers
su
sudo -s
私のホームディレクトリは/root
私が実行して以来、私の間に違いがあることを知っていますが、私のsu
ホームディレクトリはまだ/home/myname
後ですsudo -s
。しかし、私はこれが私が見過ごしている根本的な違いの症状にすぎないと思います。
ベストアンサー1
su
あなたと~になる他のユーザー - デフォルトはrootですが、他のユーザーにすることもできます。と言うとsu -
、ユーザーの環境もそのユーザーのログイン環境に置き換えられます。システムは、他のsu
ユーザーがログインしたときに行った操作に基づいて、他のユーザーに何をしているのかを判断できません。
状況は非常に異なりますsudo
。
実行するコマンド
sudo
実装するターゲットユーザーとして(デフォルトはルートですが変更可能です)-u
、実行するコマンドを記録し、後で責任を割り当てることができるようにユーザー名でタグ付けします。 :)sudo
とても柔軟です。たとえば、特定のユーザーまたはユーザーグループが実行できるコマンドを制限できます。それで、su
それは全部または専務です。この機能は通常、役割を定義するために使用されます。たとえば、実行が許可される
dump
「バックアップ」グループを定義でき、tar
各グループにはシステムディスクを正しくバックアップするためにrootアクセス権が必要です。ここでこれを言及する理由は、誰かに能力や能力を
sudo
付与せずに特権を付与できるという意味だからです。彼らは仕事をするために必要な権限しか持っていませんが、システム全体を実行することができます。しかし、この点には注意が必要です。たとえば、誰かに話す権限を与えると、その人はその言葉を無視して同じ権限を持つことができます。sudo -s
sudo bash
su
sudo vi
vi
sudo -s
ルートパスワードではなくsudoerパスワードを使用するため、
sudo
複数のsudoer間の権限を分離します。su
これは、ルートパスワードが変更された場合にsu
使用するためにパスワードを知る必要があるすべての人に知らせる必要がある管理上の問題を解決します。sudo
sudoerのパスワードを独立して変更できるようにします。実際、システムのrootユーザーアカウントをパスワードでロックすると、sudo
すべてのシステム管理タスクが通過しますsudo
。信頼性の高いsudoerを持つ大規模な組織では、システム管理者の1人が去ったときにルートパスワードを変更して展開する必要はありません。残りの管理者に渡します。
sudo bash
との主な違いは次のとおりsudo -s
です。
-s
~より短いbash
デフォルトのシェルで実行し
sudo -s some-command
ますが、スーパーユーザー権限で実行できます。some-command
基本的にはの略語ですsudo $SHELL -c some-command
。コマンドをシェルの標準入力に渡すことができます
sudo -s < my-shell-script
。たとえば、と一緒に使用できます。トレドックsudo
繰り返し入力を避けるために、単一の呼び出しに複数のコマンドを送信しますsudo
。これらの追加のコマンド引数がなくても他のシェルで実行できるため、
sudo -s
まだ異なります。まず、環境変数を見てから設定されていない場合は、ユーザーのログインシェル設定(通常は。sudo bash
bash
SHELL
/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
予期しないコマンドが実行される可能性があるためです。最も明確なケースは修正ですが、while under then passと言う場合のようSHELL
に、それほど直接的ではないかもしれません。PAGER
man foo
sudo -s
「修正できれば、修正してPAGER
邪悪PATH
なsudo
プログラムを置き換えることができます。」と言うこともできますが、編集証がひどい人は/usr/bin/sudo /bin/bash
この罠を避けるべきだと主張することができます。あなたはあまりにも編集証的であり、すべての落とし穴を避けることはできません。その他しかし、環境変数の影響を受けやすい。EDITOR
たとえば、コマンドを実行する前に確認することを覚えていましたか?VCS注文する?したがってsudo -i
、。
sudo -i
作業ディレクトリもユーザーのホームディレクトリに変更されるため、実行しているディレクトリと同じディレクトリにsudo -s
滞在したい場合は、このディレクトリを引き続き使用できます。ただし、元の場所を行き来することは依然として安全です。cd
sudo
sudo -i
cd
時々見ることができるこれらすべてのもう一つの変形sudo su
はsudo -s
。また、sudo su -
機能面でも非常に似ていますsudo -i
。sudo
とは競合するコマンドなので、このように対にsu
するのが少し奇妙なので、代わりにフラグを使用することをお勧めしますsudo
。