エグゼクティブサマリー:「ルート」は、管理者アカウントの実際の名前です。「sudo」は、一般ユーザーが管理タスクを実行できるようにするコマンドです。「須藤」はユーザーではありません。
長い答え:
「ルート」(別名「スーパーユーザー」)は、システム管理者アカウントの名前です。名前の由来は少し古風ですが、それは問題ではありません。
rootユーザーのユーザーIDは0で、名目上は無制限の特権があります。ルートは、任意のファイルにアクセスし、プログラムを実行し、システムコールを実行し、設定を変更できます。(ただし、以下を参照¹)。
「sudo」コマンドが発明される前は、管理タスクを実行するには、何らかの方法でログインプロンプトを取得するか、su
コマンド(「su」は代替ユーザーの略)を使用して、rootとしてログインする必要がありました。
これは少し面倒ですが、ユーザーに部分的な管理権限を与えることもできません。そのため、「sudo」コマンド(「substitute user do」の略)が発明されました。
「sudo」コマンドを使用すると、ユーザーIDがsudoersファイル内にある限り、スーパーユーザー特権でコマンドを実行でき、必要な許可が与えられます。
したがって、たとえばsudo vi /etc/hosts
、rootとして実行しているようにhostsファイルを編集できます。あなたはルートパスワードさえ必要ではなく、あなた自身のログインパスワードさえ必要です。
そしてもちろん、sudo su
単純にルートになることができます。結果は、su
rootパスワードを知っている必要はないが、sudoersファイルにいる必要があることを除いて、rootとしてログインしたか、コマンドを実行した場合と同じです。
sudoersファイルは、sudoコマンドを使用できるユーザーと、それを使用して実行できる操作を決定します。
sudoersファイルは、複数の管理者を提供します⁴。事実上、管理者はrootであり、sudoersファイルにリストされている全員です。sudoersファイルがない場合、唯一の管理者はrootです。
実際、他の誰かがあなたのためにあなたのコンピューターを管理している組織では、あなたのコンピューターのrootパスワードを知らないことは非常に一般的です-あなたがsudoersファイルにいる限り、それは問題ではありません。
私が働いていたある会社では、巨大なサーバーファームで、ごく少数の人しかルートパスワードを知っていませんでした。代わりに、誰がどのサーバーで作業することを許可されているかのデータベースがありました。自動化されたプロセスにより、アクセスが許可されたサーバーのsudoersファイルに追加され、許可の期限が切れると削除されます。
¹もう1つ:現代のUnixバージョンでは、rootユーザーができることさえ制限できるようになりました。
下でのSELinux(Securityは、Linuxの強化)、アクセス制御リストは効果がありますプログラムは何をすべきか、とさえ根できるかを決定し、それらの制約を乗り越えることができません。
Appleのシステム完全性保護(SIP)(別名「ルートレス」)システムでは、特定のファイルとディレクトリがロックダウンされるため、適切なホワイトリスト上のアプリケーションのみがアクセスできます。
これらのシステムは、悪意のあるユーザーがルートアクセスを取得した場合からシステムを保護するために存在します。(または、場合によっては、ユーザーが埋め込みデバイスをジェイルブレイクするのを防ぐために。)明らかな理由から、これらの制限をバイパスすることは、rootアクセスであっても非常に困難です。
² "login:"プロンプトは、ウィンドウシステムではなく、シリアル回線でascii端末を使用したときから遡る、Unixの歴史の別の古風な部分です。login
ターミナルウィンドウに入力するか、他の場所からコンピューターへのssh(またはtelnetまたはrsh)接続を開くと、「login:」プロンプトを表示できます。必要に応じて、そこから別のユーザーとしてログインできます。(コンピューターにシリアルポートがある場合でも、それらにログインできるように構成できます。)
³個々のプログラムにルートアクセス権を付与することもできます。これらのプログラムは、通常のユーザーが実行した場合でも、rootアクセスを持つユーザーができることをすべて実行できます。これらは通常、特定のタスクに限定されています。たとえば、crontabプログラムにはcronテーブルを編集できるようにルート権限があります。明らかに、 "sudo"にはroot権限があるため、実行できることはできません。
previously以前に説明したポイントをもう1つ説明します。「管理者」と「ルート」を同じ意味で使用していますが、他の種類の管理者もいます。これらはしばしば「ロールアカウント」と呼ばれます。つまり、これらのアカウントは実際の人間のものではなく、システム上で特定のロールを実行するために存在します。/etc/passwd
システム上のファイルを見ると、そのようなアカウントが何十と何十もあります。
たとえば、システムにmysqlがインストールされている場合、「mysql」ユーザーが存在し、すべてのデータベースファイル、構成ファイルなどはすべてそのユーザーが所有します。そのユーザーのみが、ファイルにアクセスしてmysqlサーバーを実行するために必要な権限を持ちます。ある意味では、そのユーザーは管理者アカウントになりますが、mysqlのみです。
データベース管理タスクを実行する必要がある場合は、su mysql
コマンドを使用して「mysql」になるかsudo
、sudoersファイルがそれらの特定のコマンドのmysql権限を付与する場所を使用します。