回答:
バックグラウンド
Linux(および一般的なUnix)には、Rootという名前のスーパーユーザーがいます。スーパーユーザーは何でもできるので、スーパーユーザーとして日常業務を行うのは危険です。コマンドを誤って入力すると、システムが破壊される可能性があります。理想的には、手元のタスクに必要な特権のみを持つユーザーとして実行します。場合によっては、これは必ずしもルートですが、ほとんどの場合は通常のユーザーです。
su-
このコマンドは、rootアカウントでログインするために使用されます。
デフォルトでは、ルートアカウントのパスワードはUbuntuでロックされています。つまり、ルートとして直接ログインすることも、suコマンドを使用してルートユーザーになることもできません。ただし、ルートアカウントは物理的に存在するため、ルートレベルの特権でプログラムを実行することは可能です。これが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 -
:
これにより、ユーザーIDが変更され、そのユーザーでログインしたかのように環境変数が継承されます。通常、この形式su - <userid>
を使用してユーザーとしてログインします。「userid」を削除すると、rootとしてログインしようとしていると見なされます-これはできません(rootパスワードを変更しない限り)。
sudo bash
&sudo sh
:
sudoの後は実行するプログラムです。したがって、これらの場合、それぞれbashとdashの2つのシェルを実行するように求めています。使用man bash
してman sh
別のシェルの詳細については。
関連する質問:
sudo -i
て、ログインシェルsu -
が表示されます。
sudo su -
rootパスワードなしで実行することにより、スーパーユーザーとしてログインできることに注意してください。sudoはsu -
root権限でコマンドを実行するため、ユーザーのパスワードの入力のみが求められます。これには、rootユーザーの環境をセットアップするという利点があります。これは、sudoを使用してシェルを実行するだけでは実行できない場合があります。