ここで、Ask UbuntuでSudo -s
ではなくSudo su
を使用することに関する好みについて多くのコメントを見てきました。
私にとって、この2つのコマンドはまったく同じです。しかし、なぜSudo -s
の方が優れているのでしょうか?
Sudo -s
は「より良い」ものではなく、ただ違うだけだと思います。
Sudo -s
$ HOMEディレクトリを保持するため、プログラムを起動するときに、(rootではなく)設定ファイルなどを使用します。欠点:$ HOMEディレクトリ内のファイルの所有権も変更できます。典型的な例は.Xauthority
ファイルですが、私はそれで問題を経験したことがありません。
Sudo su
またはSudo -i
プログラムは、ルートのホームディレクトリとその構成ファイルを使用します。これはより直感的かもしれませんが、自分用に設定した設定(エイリアス、bash履歴など)を使用しないことも意味します。
Sudo -s
は環境変数、特に$HOME
のままであるHOME=/home/USER
は変更しないためです。 Sudo su
を使用すると、これはHOME=/root
に変わります。これは、プログラムがユーザーのホームディレクトリにアクセスしようとするときに悪影響を与える可能性があります。
したがって、基本的には、グラフィカルプログラムを実行しているときはSudo
vs gksudo
のようなものです。
既に述べた環境変数との違いは別として、Sudo
にルートとしてsu
を実行し、シェルにルートとして実行するように要求しているので、Sudo su
は愚かで無駄だと思います。ルートシェルを提供するようにプログラムに要求するようにプログラムに要求するのはなぜですか?それは実用的な意味で重要ですか?いいえ、私はただつまらないです。
シェルを持たないユーザーとしてログインする場合を考えると、他の回答には同意しません。これは、ユーザーがサービスに割り当てられている非常に一般的なケースです。
「Sudo su」を使用すると、ユーザーが指定したシェルが起動します。ただし、サーバープロセスに割り当てられたユーザーの場合、シェルは/ usr/bin/falseであり、ログ記録は失敗します。代わりに、次のように入力する必要があります。
Sudo -sHu <server-user>
ユーザーにシェルが割り当てられていない場合でも、ログインしてホームパスにcdします。