ルートを何十回も連続して入力する必要がある場合は、セッションをルートセッションに切り替えます。インターネットで使用したさまざまなチュートリアルと手順では、Sudo su
、Sudo su -
、Sudo -i
、およびSudo /bin/bash
がルートセッションを開くために使用されていますが、これらの違いと、その違いが重要かどうか、またはその違いが重要かどうかについては明確ではありません。
誰かが私のためにこれをクリアできますか?
これを説明するには、プログラムが何をするのかを知る必要があります。
su
-コマンドsu
を使用して別のユーザーに切り替えます(s witch ser)が、rootユーザーに切り替えることもできますパラメーターなしでコマンドを呼び出します。 su
は、ユーザーの環境に切り替えたパスワードを入力した後、切り替えるユーザーのパスワードを尋ねます。Sudo
-Sudo
は、root権限で単一のコマンドを実行することを意図しています。ただし、su
とは異なり、現在のユーザーのパスワードの入力を求められます。このユーザーは、sudoersファイル(またはsudoersファイルにあるグループ)に存在する必要があります。デフォルトでは、Ubuntuは15分間パスワードを「記憶」しているため、毎回パスワードを入力する必要はありません。bash
-コンピューターと対話するためのテキストインターフェイス。ログインシェル、非ログインシェル、インタラクティブシェルと非インタラクティブシェルの違いを理解することが重要です。シェルの種類:
ケースは次のとおりです。
Sudo su
Sudo
コマンドでsu
を呼び出します。 Bashは、対話型の非ログインシェルと呼ばれます。そのため、bashは.bashrc
のみを実行します。ルートに切り替えた後も同じディレクトリにいることがわかります。
user@Host:~$ Sudo su
root@Host:/home/user#
Sudo su -
今回はログインシェルであるため、/etc/profile
、.profile
、および.bashrc
が実行され、ルートのホームディレクトリにルートの環境が表示されます。
Sudo -i
これはSudo su -
とほぼ同じです。-i(初期ログインのシミュレーション)オプションは、ターゲットユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、.profile
、.bashrc
、または.login
などのログイン固有のリソースファイルがシェルによって読み取られ、実行されることを意味します。
Sudo /bin/bash
これは、コマンド/bin/bash
でSudo
を呼び出すことを意味します。 /bin/bash
は非ログインシェルとして起動されるため、すべてのドットファイルは実行されませんが、bash自体は呼び出しユーザーの.bashrc
を読み取ります。環境は変わりません。あなたの家は根の家ではありません。したがって、あなたはルートですが、呼び出しユーザーの環境にいます。
Sudo -s
$Shell
変数を読み取り、コンテンツを実行します。 $Shell
が/bin/bash
を含む場合、Sudo /bin/bash
を呼び出します(上記を参照)。
チェック:
ログインシェルであるかどうかを確認するには(shopt
は組み込みコマンドであるため、bashでのみ動作します):
shopt -q login_Shell && echo 'Login Shell' || echo 'No login Shell'