web-dev-qa-db-ja.com

Sudo -sがSudo suよりも優れているのはなぜですか?

ここで、Ask UbuntuでSudo -sではなくSudo suを使用することに関する好みについて多くのコメントを見てきました。

私にとって、この2つのコマンドはまったく同じです。しかし、なぜSudo -sの方が優れているのでしょうか?

28
fitojb

Sudo -sは「より良い」ものではなく、ただ違うだけだと思います。

Sudo -s

$ HOMEディレクトリを保持するため、プログラムを起動するときに、(rootではなく)設定ファイルなどを使用します。欠点:$ HOMEディレクトリ内のファイルの所有権も変更できます。典型的な例は.Xauthorityファイルですが、私はそれで問題を経験したことがありません。

Sudo suまたはSudo -i

プログラムは、ルートのホームディレクトリとその構成ファイルを使用します。これはより直感的かもしれませんが、自分用に設定した設定(エイリアス、bash履歴など)を使用しないことも意味します。

26
arrange

Sudo -sは環境変数、特に$HOMEのままであるHOME=/home/USERは変更しないためです。 Sudo suを使用すると、これはHOME=/rootに変わります。これは、プログラムがユーザーのホームディレクトリにアクセスしようとするときに悪影響を与える可能性があります。

したがって、基本的には、グラフィカルプログラムを実行しているときはSudo vs gksudoのようなものです。

13
htorque

既に述べた環境変数との違いは別として、Sudoにルートとしてsuを実行し、シェルにルートとして実行するように要求しているので、Sudo suは愚かで無駄だと思います。ルートシェルを提供するようにプログラムに要求するようにプログラムに要求するのはなぜですか?それは実用的な意味で重要ですか?いいえ、私はただつまらないです。

5
psusi

シェルを持たないユーザーとしてログインする場合を考えると、他の回答には同意しません。これは、ユーザーがサービスに割り当てられている非常に一般的なケースです。

「Sudo su」を使用すると、ユーザーが指定したシェルが起動します。ただし、サーバープロセスに割り当てられたユーザーの場合、シェルは/ usr/bin/falseであり、ログ記録は失敗します。代わりに、次のように入力する必要があります。

Sudo -sHu <server-user>

ユーザーにシェルが割り当てられていない場合でも、ログインしてホームパスにcdします。

3
SystematicFrank