root権限を持つユーザーが〜に含まれないのはなぜですか?


20

好奇心から、rootとしてログインしたときに/ home / userにいない理由を知りたいと思います。理由は何ですか、/ rootディレクトリは正確に何をしますか?

私は上級ユーザーではありません。簡単な言葉で答えるか、明確で簡単な説明を提供するリンクを提供してください。Ubuntu 16.04を使用して、rootでログインしますsudo -i。それのが説明したように、ここでsudo -i持っている/ルート自宅などを。その理由を知りたい。そこにいる利点はありますか?そしてのユーザーのようにsudo -s


11
rootもユーザーであるため、彼は自分の個人homeディレクトリを持っていますが、これは名前が付けられていますroot
-damadam

3
を使用sudo -sして、同じユーザーディレクトリに配置できます。
パイロット

3
@ Pilot6申し訳ありませんが、私はあなたのコメントを見たと同時にそれを追加しました:Dあなたが気にしないことを願っています:)
Rinzwind

2
@Unbesiegbarkeit man sudoが質問に答えます。簡単にするためにuser -iは、rootユーザー設定を使用しますがsudo -s、現在のユーザー設定を使用します。
パイロット

回答:


28

sudoコマンドを実行してrootとしてログを記録していません。ルート権限でシェルを起動しています。

現在のユーザーのホームディレクトリにとどまる場合sudo -sは、sudo -iコマンドの代わりに使用できます。

cd ~root権限を持つシェルにいない場合と同じディレクトリに移動します。文字通り/home/$USER

を使用するsudo -iと、システムはrootユーザーとしてログインしているように動作します。このため

cd ~ 

ルートユーザーのホームディレクトリに移動します/root

/rootディレクトリは、rootユーザーのホームディレクトリです。

主な違いは、などのシェル設定ファイル.bashrcがの/root場合に使用され、の場合にsudo -i通常のユーザーから使用されることですsudo -s


3
/ rootをホームにするとどのような利点がありますか?
Coditoエルゴ合計

2
のようなファイル.bashrcは、そこから特定のシェルで使用されます。ほとんどの場合、大きな違いはありません。
パイロット

11
@Unbesiegbarkeit / homeは、シングルユーザーモード、ネットワークアクセスなしなどの特定の状況ではマウントされない場合があり、rootはそのような状況でログオンできる必要があります。
-doneal24

2
@ DougO'Neal /homeが利用できない場合、問題は存在しません。次に、実際にルートとしてログインします。
Pilot6

4
@ Pilot6:違いがあるか、そうあるべきです。たとえば、私のマシンでは、rootの。* shrcファイルを設定して、rootとして実行していることを視覚的に明らかにします。たとえば、異なる形式でプロンプトが赤で表示されます。また、エイリアスは、root&cとして実行すると有害になる可能性のある特定のことを行わないように設定されます。
-jamesqf

29

rootユーザーのホームが存在する理由/rootとそうでない/home/root理由は、通常/home、個別のパーティション/ボリューム/ディスクへのマウントポイントであるためです...(ディスクスペースやリモートなど、さまざまな理由で...)

何らかの理由でマウント/homeが失敗した場合でもroot/rootホームディレクトリとして接続して、調査と修正を行うことができます。

さらに、メンテナンス、初期セットアップ、サイズ変更などのために、接続されroot、アンマウント/再マウントできるはずです。/home


7
+1、これは受け入れられた答えです。ルートのホームを任意の場所に変更することもできますが、リカバリ上の理由から、/ homeは/ homeではなく/のままにしておきます。
ntg

16

理由は何ですか、/ rootディレクトリは正確に何をしますか?

rootのホームは/ rootであり、rootに切り替えると、最終的にホームになります。それが性質ですsudo -isudo -s同じことを行いますが、ディレクトリを切り替えません。sudoのマニュアル

-s [command]

-s(シェル)オプションは、設定されている場合はSHELL環境変数で指定されたシェルを実行し、パスワードデータベースで指定されたシェルを実行します。コマンドが指定されている場合、シェルの-cオプションを介して実行するためにコマンドがシェルに渡されます。コマンドが指定されていない場合、対話型シェルが実行されます。

-i [command]

-i(初期ログインのシミュレート)オプションは、ターゲットユーザーのパスワードデータベースエントリ指定されたシェルをログインシェルとして実行します。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、シェルの-cオプションを介して実行するためにコマンドがシェルに渡されます。コマンドが指定されていない場合、対話型シェルが実行されます。sudoは、シェルを実行する前にそのユーザーのホームディレクトリに変更しようとします。セキュリティポリシーは、ユーザーがログインしたときに存在するものと同様に、環境を最小限の変数セットに初期化します。 sudoersポリシーが使用されているときに実行します。

rootユーザーはシステムの一部である必要があります。/ homeを別のパーティションに配置し、rootが/ homeの一部であった場合、パーティションがマウントされないと深刻な問題が発生します。同じ理由で

/bin
/sbin 

そして

/usr/bin
/usr/sbin

/ usrをパーティションに配置し、/ usrがマウントされない場合、まだ動作しているシステムがあります。


2
これは質問にどのように答えますか?コメントですか?
Pilot6

2
私が答えたとき、sudo -iは質問の一部ではありませんでした;-)
Rinzwind

2
sudo -ivs に関するQ&Aはありsudo -sますか?
Pilot6

2
なるほど。検索します。編集私は1つを見つけませんでしたが、私は1つを見たことを覚えていましたが、それは私たちのオランダubuntuフォーラムにありました:D
Rinzwind

2
私はここでそれを見たようですが、どちらも見つかりませんでした。
パイロット

15

Linuxファイルシステムは、特定の方法で構造化されています。必須のバイナリがあり/bin/、ブートローダーファイルがあり/boot/、ほとんどのデバイスファイルがあり/dev/、リムーバブルメディアのマウントポイントがあり/media/ます...

https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standardを参照してください

いくつかのマイナーな詳細は、ディストリビューションへのディストリビューション(例えば異なる場合があり/usr/bin//usr/local/bin/)が、一般的には、ほぼすべてのLinuxディストリビューションは、同じディレクトリ構造に従ってください。

質問に答えるには:

ユーザーのホームディレクトリはにあり/home/ます。原則として、Linuxはマルチユーザーオペレーティングシステムです。ラップトップのホームディレクトリが1つだけのユーザーアカウントを持つことができます/home/<username>//home/、共有Linuxサーバーを調べると、各ユーザーアカウントに1つずつ、多くのホームディレクトリが表示されます。システムのすべてのユーザーは、自分のホームディレクトリにのみ書き込み権限を持っているという考え方です。あなたのユーザ名がある場合bob、あなたは読み取りおよび書き込み、削除ファイルをにすることができます/home/bob/が、あなたはには何も触れることができない/home/alice/かで/var/log/

rootでも違います。 rootは管理ユーザーであり、システムのあらゆる場所に書き込み権限があります(システムの任意のユーザーとして機能できます)。そのため、通常のユーザーではないためroot、特別なホームディレクトリがあるのは理にかなっています。それ以外は、特別な魔法のない単なる通常のディレクトリです。ただし、システムユーティリティがuserのホームであることに依存している可能性はありますが、静かです。/root/root/root//root/root

sudo -iターミナルで実行すると、たとえば通常のユーザーbobからになりrootます。このスイッチは、入力したターミナルウィンドウのみに影響することに注意してくださいsudo -i。ファイルマネージャの場合はまだ存在してbobおり、別のターミナルウィンドウを開いてもbobそこにいます。このコンテキストでは、シンボル~は現在のユーザーのホームディレクトリの省略形です。以下のためのbob ~手段/home/bob/が、ためのroot ~手段/root/

それがあなたのために物事を明確にすることを願っています。


3
これは完璧な答えです!
パイロット

5
Rootのホームディレクトリが元々であったことはおそらく注目に値し/ます。標準の場所は、誰もが、リストファイルにできなければならない(セキュリティ上の理由で変更されてしまった/ので、誰もがrootユーザーが持っていたものをドットファイル見ることができました。
オースティンHemmelgarnを

14

rootとしてログオンするとが起こる誰もが答えているようです(/ homeにない〜ディレクトリを取得します)が、誰もその理由を 言っていませんその理由は次のとおりです。

/ home構造全体が使用できなくなって修正する必要がある場合、または/ homeのスペースが不足しているために/ homeを再割り当てする必要がある場合は、何らかの方法でそれを行う必要があります。/ homeに〜があるユーザーとしてログオンすることはできません。何もしようとするとすぐにクラッシュするからです。そのため、rootユーザーにはhir〜が他の場所にあります。


3
試してみてください。通常のユーザーとしてのディストリビューションとセキュリティ設定によっては、ログインしないか、cwdと$ HOMEにアクセスできないだけで/になってしまいます。ポイントは、他の人がアクセスできないときに、たとえば、特別なニーズのファイルがあるために、ルートがホームディレクトリにアクセスしたいということです。ルート用にスペースを確保しているほとんどのfssで同様に、システムアカウントには/ home以外のホーム
ディレクトリがあります-PlasmaHH

2
後で投稿されたalexfとarpからの回答は、基本的に同じことを言っています。誰もが自分の答えを追加する前に既存の投稿を読んでいないのですか?
ジェニファー

@Dan-変更をロールバックしました。機知に:
ジェニファー

(1)/ homeと〜をチェックボックスに入れると改善されると思いますが、そうすることはそれほど重要ではありません。あなたは私の意味を知っていました。(2)「試してみるとすぐにクラッシュする」は、時制で矛盾しています。「you'd」は「you will」であり、「would」は時制を過ぎているので、現在時制である「try」ではなく、「tried」であり、過去形である必要があります。(3)「hir」は、Kate Bornsteinによって発明された新しい代名詞です。「彼」と「彼女」をカバーしており、性別がわからないときに役立ちます。(「Ze」は「彼」と「彼女」をカバーしています。)
ジェニファー

@ジェニファー心配ありません。毎日新しいことを学びます。hirタイプミスだと思った。すべての情報をありがとう!コードのフォーマットを厳しくすることをお勧めしますが、それはあなた次第です。
ダン

8

あなたは上級ユーザーではないと言うので、ステップごとの回答を書いてみます。

Linuxを使用する場合、いくつかの重要なことを覚えておく必要があります。

  • Linuxはマルチユーザーシステムです。Unixの哲学に従って、当初からそのように考えられていました(シングルユーザーシステムとして考えられていたWindowsの異なるアプローチに注目してください)

  • マルチユーザーシステムとして、Linuxにはシステム内の各ユーザーに属するファイルを分離する機能があります。Linuxがこれを実現する方法は、各ユーザーに/home/ディレクトリ内のサブフォルダーを割り当てることです。各ユーザーファイルは彼/彼女によって所有されており、それらのユーザーファイルのみを開いたり、変更したり、他のユーザーに使用を許可したりできます。逆に、ファイルシステム内の各ファイルはユーザーに属し、そのユーザーはそのファイルを表示または使用できるユーザーを支配します。別の回答で述べたように、元々ユーザーはシステムのどこにでもファイルを置くことができましたが、ある時点で物事を整理する必要があることが明らかになり、/home/(「スラッシュホーム」)はユーザーのファイルがあるべき場所になりました。

  • バイナリ、デバイスファイル、システムファイル、エトセトラ(覚えている:Linuxでは、他のUnixライクなシステムでは、システム自体および/またはシステムのニーズのすべての単一のユーザーというファイルは、しかし、がありますすべてがファイルです) 。この世界的に必要なファイルは、内のさまざまなフォルダに整理、ファイルシステムに沿ってさまざまな場所に格納されているファイルシステムのルート/。また、これらのグローバルに必要なファイルはシステムの特定のユーザーではなく、システム自体に属します...しかし、それは混乱を招く可能性があります:バイナリを所有しているのは誰ですか?これらのグローバルに必要なファイルに対する許可を与えるのは誰ですか?

  • システム内のすべてのファイルには「所有者が必要」であるため、グローバルに必要なファイルを管理できる「特別なユーザー」が必要です。さらに、この「特別なユーザー」は、システム内の他のユーザーにはできないことを実行できます。彼は、システム用に他のユーザーを作成できます。このユーザーは、「スーパーユーザー」(私たちにとっては人間)または「ルート」(システムにとっては)と呼ばれます。

  • 現在、このスーパーユーザーはシステムの別のユーザーですが、たとえばメンテナンスなど、他のユーザーよりもはるかに優れた権限(および責任)を持っています。そのため、「ルート」には自分のものを置く場所が必要であると考えるのは自然ですが、他のユーザーに属するものと混同しないでください。そのため、下/home/にサブフォルダーを置く代わりに、「root」にはファイルシステム内に独自の予約スペースがあります/root/(「slash-root」と呼ばれます)。覚えておいてください:「ルート」は非常に特別なユーザーなので、彼のものを置くために特別で特権的な場所が必要です。

  • 現在、Ubuntuではデフォルトでルートアカウントが有効になっていないため、「通常の」ユーザーはシステム全体に対する権限を持っている必要があります。ここでsudo(「ユーザーを切り替えて実行」)コマンドが開始されます。通常のユーザー(以前は「sudoers」リストに含まれていた)が、「root」など、他のユーザーであるかのようにコマンドを実行できます。

  • 最後に、その-iオプションは「初期ログインをシミュレートする」ことを意味します。つまりsudo、指定されたコマンドを実行する前に、「ターゲットユーザーのプロファイル」のデータを読み取ります。コマンドを提供しない場合sudo、ターゲットユーザーの(ルート)プロファイルでシェルインスタンスを起動します...そして、それは「ターゲットユーザー」の「ホーム」フォルダに移動することから始まります。だから、sudo -i(rootのホームフォルダを行うためにあなたを移動します/root/)。

これが何が起こるかを理解するのに役立つことを望みますsudo -i


編集

私は何かを明確にしていないと思うので、ここに追加します:

  • 私は上で言った:「Linuxでは、すべてがファイルです」。そして、私はそれを意味する、文字通り!文書と画像はファイルですが、端末([CTRL] + [ALT] + [Fn]を押すとアクセスできる端末)、物理ドライブ、キーボードなどもあります。Unixライクなシステムは、ファイルとの間でデータを読み書きすることで機能し、システム内の適切なファイルとの間でデータの流れを指示します。これは、作業中のファイルと入力中のキーの入力を表し、画面に表示される出力。これらのファイルの一部はユーザーが直接使用できますが、一部は使用できません。たとえば、ハードドライブを直接読み書きすることはできませんが、Linuxに通常の閲覧可能なフォルダーを/dev/ハードドライブを表すデバイスファイル(下)にリンクさせる必要があります。

  • Linuxファイルシステムは、複数の物理ドライブにまたがることができます。簡単な例は、USBペンドライブを接続する場合です:Linuxはそのドライブをマウントできます(マウントとは、システムが標準フォルダーを接続するプロセスです。標準フォルダーでは、シェルまたはファイルナビゲーターのファイルを表示でき、デバイスファイルに接続できます/dev/)。それを使って作業することができ、完了したら、Linuxにドライブのマウントを解除し、USBポートから削除するように依頼します。ここで重要なことは、この「マウント-アンマウント」サイクルが毎日使用する*同じファイルシステムに影響することです。物理ドライブを追加または削除するたびに新しいファイルシステムを作成するのではなく、その物理ドライブをファイルシステムに追加します(繰り返しますが、この哲学をWndowsのアプローチと比較してください)。

  • ファイルシステムは複数の物理ドライブにまたがることができるため、システムの異なるファイルを異なる物理ドライブに書き込むことができることが明らかになります。1つのドライブはシステムバイナリ(/bin/)を保存でき、別のドライブはユーザーのファイル(/home/およびその子孫)を保存できます。マルチドライブ設定では/home/、が異なる物理ドライブに書き込まれているのが一般的です/root/。そのため、システムが壊れ、ユーザーがログインできない場合、ドライブは動作を/home/停止するため、rootができます。(これは単純です...他のユーザーができない場合、rootがログインできるようにするために、各物理ドライブに多くのものをコピーする必要がありますが、これは一般的な考えを与えることができます)。

  • そして、そのチルダ(~)文字は、現在のユーザーのホームディレクトリを示します。あなたが「ボブ」としてログインしている場合は、cd ~に行くことができます/home/bob/が、あなたは「root」としてログインしている場合は、cd ~に行くことができます/root/

tl; drだから今、私はすべてが言われていると思う:

  • 「ルート」は特別なユーザーであり、他のユーザーよりもはるかに優れた権限と責任を持っています

  • 「/ root /」は、「root」が通常のユーザーに属する他のものと混同される危険を冒すことなく、「root」がその内容を保存できる場所です。このフォルダは、とは異なる物理ドライブに書き込むことができます/home/

  • sudo -iルートのログインをシミュレートするシェルを起動します。これは、ルートのホームフォルダーに移動することを意味します。他のユーザーと同様cd ~に、ホームディレクトリに移動しますが、rootの場合は次のようになります。/root/

  • システムが異なる物理ドライブにインストールされている場合、システム内の別のドライブに障害が発生した場合でも、rootはログインして問題の修正を試みることができます。


1
完璧な答え!
アーチ

7

ルートのホームディレクトリが異なる方法で処理される主な理由:

問題が発生した場合、/ファイルシステムのマウントを管理するとすぐにシステム回復タスクを実行できる必要があります。

セットアップによっては、ユーザーのホームディレクトリが別のファイルシステムにある場合や、ネットワークを介してマウントされる場合もあります。

コンソールからルートとしてログインする(つまり、ログインプロンプトでルート名とルートパスワードを入力する)には、1つのファイルシステムのみがマウントされている必要があります。

(これは、コアユーティリティが/ usr / binまたは/ usr / sbinではなく/ binおよび/ sbinにある理由でもあります。/usrのすべてが消耗品です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.