web-dev-qa-db-ja.com

Linuxでadministrator / root / superuserはどのように機能しますか?

私が学校にいたとき、私たちはWindowsを教えられました。次に、Windowsの代わりにLinuxを使用するように作られたコンピュータエンジニアリングの学士号を選択しました。彼らはLinuxの基本について教えたことはなく、プログラミングを直接教え始めました。 Linuxにある程度慣れていたので、それほど難しくはありませんでした。しかし、それでもLinuxの管理者システムまたはルートシステムまたはスーパーユーザーシステムについて疑問があります。今、私の質問はいくつかの異なるサブ質問で構成されています。だからここに行く:

  1. ターミナルプロンプトの#(ハッシュ)はスーパーユーザーとして動作していることを意味し、$(ドル)はそうではないことを意味します。しかし、私のアカウントが管理者アカウントであるにもかかわらず、端末のプロンプトに#が表示されません。代わりに、管理者権限を取得するには、suコマンドを使用してログインする必要があります。何故ですか?

  2. 管理者、ルート、スーパーユーザーという用語は同じですか? Windowsでは、管理者という用語が1つしかなく、アカウントが管理者アカウントの場合、基本的に常に管理者権限でログインしているため、混乱しています。つまり、管理者として明示的にログインする必要はありません。 Linux。

  3. 大学のコンピューターにUbuntuがインストールされており、管理者としてログインする必要がある場合は、suと入力すると、スーパーユーザーになるために現在のアカウントのパスワードを入力する必要があるパスワードの入力を求められます。しかし、Ubuntuのデザインが気に入らなかったので、ラップトップに切り替えてFedoraをインストールすると、2つのパスワードが要求されました。1つは通常のアカウント(管理者権限を持つ)用で、もう1つは「root」ユーザー用です。つまり、通常のアカウントを使用して管理者としてログインする必要がある場合は常に、通常のパスワードではなく「root」パスワードにログインする必要があるということですか?その場合、管理者権限が直接付与されないのに、ソフトウェアが通常のパスワードを要求したのはなぜですか?

編集:

Linuxの管理システムについて誰かに説明してもらえますか?ルートとは何ですか?管理者であるのに管理者権限がないのはなぜですか?

5
radiantshaw

Unix/Linuxシステムのすべてのアカウントには、数値識別子、「ユーザーID」またはUIDがあります。慣例により、UID 0(ゼロ)には「root」という名前が付けられ、特別な特権(通常、システム上のあらゆるものにアクセスするためのアクセス許可)が与えられます。

Rootパスワードをお持ちの場合、couldはrootユーザーとして直接ログインするだけです。ただし、そうすることは一般的に悪い習慣と考えられています。

一つには、Unix/Linuxがあなたに安全なしで足を撃つための十分な十分な余地を与えることがよくあります—多くのタイプミスと最も簡単な回復が完全な再インストールおよび/またはバックアップからの復元を行うことである事故。したがって、必要なときに実際にrootに切り替える必要があるため、意図しないことを誤って実行することはありません。

また、マルウェアの拡散を制限するのにも役立ちます。 WebブラウザがUID0(「ルートとして」)で実行されている場合、プログラミングのバグがリモートWebサイトによって悪用され、コンピュータを完全に制御する可能性があります。 「通常の」ユーザーアカウントを維持することで、その被害を制限します。

これらは両方とも、「最小特権の原則」と呼ばれる一般的なベストプラクティスに従います。これは、正直なところ、システム設計全般で従うことをお勧めします。 rootが過大評価されているとしてログインすることについて懸念がありますか?

さて、それはあなたが非rootユーザーとして保護されたものにアクセスする方法の問題を残します。 suSudoの2つの基本的な方法があります。 1つ目はrootパスワードを必要とし、2つ目は通常の構成ではyourパスワードを必要とします。セッション全体でrootアカウントに切り替えるのではなく、Sudoを使用して「rootとして」単一のコマンドを実行することがよくあります。 (これは、ドキュメントでよく見られるsu -cを使用して行うこともできます。)これらの相対的なメリットの詳細については、 root権限を取得する最も安全な方法:Sudo、 suまたはlogin? 。 (そして、完全を期すために、Sudoではないが、通常GUIアプリケーションに使用されるPackageKitのように、同じように機能する他のメカニズムがあります。)

「root」、「superuser」、および「administrator」という用語が同じであるかどうかを尋ねます。 「ルート」と「スーパーユーザー」は基本的にです。正確には、「rootアカウントはtheスーパーユーザーです。UID0があるためです。」

「管理者」couldは同じ意味ですが、Fedoraでは*少し異なる方法で使用します。システム上のすべてのユーザーがSudoを介してroot権限を取得できるわけではありません。デフォルト設定のFedoraでは、グループwheelのメンバーがこれを行うことができます。また、インストーラーやドキュメントなどでは、thisを「管理者アカウント」と呼んでいます。 rootではありませんが、root権限にアクセスする権限を持っているもの。

(ああ、最後に1つ:プロンプトの#$は単なる視覚的な規則であり、決定的なものではありません。環境変数PS1を変更して、プロンプトに実行させることができます。いろいろなこと。)

*私はFedoraに取り組んでいます。

5
mattdm
  1. セキュリティ上の懸念については、 https://askubuntu.com/questions/16178/why-is-it-bad-to-login-as-root を参照してください。

  2. はい

  3. suを使用すると、代替ユーザーでコマンドを実行できます。引数なしで呼び出されると、デフォルトでインタラクティブシェルがルートとして実行されます。 http://www.linfo.org/su.html を参照してください。これにはrootパスワードが必要です。

    Sudo suを実行することでこれをバイパスできます(これを実行することが許可されている場合)。 Sudoを使用すると、セキュリティポリシーで指定されているように、許可されたユーザーがスーパーユーザーまたは別のユーザーとしてコマンドを実行できます。 (/ etc/sudoersファイルで指定)。詳細はこちら: https://www.Sudo.ws/man/1.8.15/Sudo.man.html

    だからあなたの最後の質問のために。最初のものに関しては、はい。しかし、ほとんどの人は便宜上Sudoを使用することを好みます。そして最後の1つについては、あなたが何を意味するのかわかりませんが、アカウントごとに異なるパスワードを設定することをお勧めします。

3
roxto

WindowsとLinuxは、同じ方法で管理特権を管理しません。

Windowsでは、システム管理タスクは、高い特権レベルで実行されているプロセスによってのみ実行できます。通常のプロセスは、通常の特権レベルで実行されます。アカウントが管理者としてマークされている場合、ユーザーは高い特権レベルでプロセスを実行できます。通常、そのためにはパスワードを再入力する必要があります(「 [〜#〜] uac [〜#〜] プロンプト」)。したがって、管理者は、アカウントに昇格された特権に対する権限を持つユーザーです。

Linux(およびその他のUnixシステム)では、システム管理タスクは rootユーザー のみが実行できます。これは、人間がログインするのではなく、システムタスクを対象としたユーザーアカウントです。rootユーザーは、0であるユーザーIDによって定義されます(アカウントは通常rootと呼ばれますが、ユーザーIDです)名前ではなく、特別なものになります)。管理者は、rootアカウントにアクセスする権限を持つユーザーです。

Linuxでrootアカウントにアクセスする主な方法は2つあります。システム管理者は、一方または両方、あるいはそれらを有効にすることができます(または、まれに、同じツールの構成が異なるか、他のツールを含む他の方法)。

  • su コマンドを使用すると、rootアカウントのパスワードを知っている場合、すべてのユーザーがrootアカウントにアクセスできます。一部の設定では、従来は wheel と呼ばれていたグループのメンバーである特定のユーザーのみが、suを使用してコマンドをrootとして実行できます。
  • Sudo コマンドを使用すると、コマンドがSudo構成ファイル(sudoers)で直接またはグループメンバーシップを介して宣言されている場合、ユーザーはコマンドをrootとして実行できます。通常、Sudoではユーザーが自分のパスワードを入力する必要があります。これは主に、ユーザーが端末から離れた場合に通行人がSudoを使用するのを防ぐためです。

したがって、Linuxで管理者アカウントを持っている場合は、Sudoまたはsuを実行してコマンドをrootとして実行できることを意味します。 rootとしてコマンドを実行していないときは、通常の特権があります。