私は何の違いが知りたいです
su -
Sudo bash
Sudo sh
ルートパスワードを持っていないため、su -
を実行中にrootとしてログインできません-Sudo "command"
には使用できるユーザーパスワードがありますが、このパスワードはsu -
Iでは機能しませんユーザーパスワードでSudo bash
を使用してrootとしてログインでき、Sudo sh
を実行中にログインできますが、この形式でコマンドプロンプトを取得します#
背景
Linux(および一般的なUnix)には、SuperUserという名前のRoot。スーパーユーザーは何でもできるので、スーパーユーザーとして日常業務を行うのは危険です。コマンドを誤って入力すると、システムが破壊される可能性があります。理想的には、手元のタスクに必要な特権のみを持つユーザーとして実行します。場合によっては、これは必ずしもルートですが、ほとんどの場合は通常のユーザーです。
su-
このコマンドは、rootアカウントでログインするために使用されます。
デフォルトでは、Ubuntuではルートアカウントのパスワードがロックされています。つまり、ルートとして直接ログインすることも、suコマンドを使用してルートユーザーになることもできません。ただし、ルートアカウントは物理的に存在するため、ルートレベルの特権でプログラムを実行することは可能です。これがSudoの出番です。許可されたユーザー(通常は「管理者」ユーザー)が、ルートパスワードを知らなくてもルートとして特定のプログラムを実行できます。
ルートアカウントを有効にする方法 を参照してください。
Sudo sh
このコマンドは、スーパーユーザーとして「sh」を実行します。
shユーティリティは、コマンドラインストリング、標準入力、または指定されたファイルから読み取られたコマンドを実行するコマンド言語インタープリターです。
Sudo bash
このコマンドは、スーパーユーザーとして「bash」を実行します。
Bashはシェル、またはコマンド言語インタープリターです。 Bashは、Kornシェル(ksh)およびCシェル(csh)の便利な機能を組み込んだsh互換シェルです。 IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools標準に準拠することを目的としています。プログラミングとインタラクティブな使用の両方でshよりも機能が改善されています。さらに、ほとんどのshスクリプトは、変更せずにBashで実行できます。
su -
:
これにより、ユーザー識別子が変更され、そのユーザーでログインしたかのように環境変数が継承されます。通常、su - <userid>
の形式を使用して、ユーザーとしてログインします。 「userid」をドロップすると、rootとしてログインしようとしていると見なされます-これはできません(rootパスワードを変更しない限り)。
Sudo bash
&Sudo sh
:
Sudoの後のものはすべて実行するプログラムです。したがって、これらの場合、それぞれbashとdashの2つのシェルを実行するように求めています。さまざまなシェルの詳細については、man bash
およびman sh
を使用してください。
関連する質問: