rootユーザーのホームディレクトリが/rootになるのは仕様 – Linuxの基礎知識
Linuxでrootユーザーとして作業中、ターミナルで「cd」や「cd ~」と入力すると、/home配下ではなく「/root」に移動してしまい、「何か設定がおかしいのでは?」と感じたことはありませんか。実はこれはエラーではなく、Linuxの設計上まったく正常な動作です。この記事では、その理由と確認方法をわかりやすく解説します。
cdコマンドはどこからでもホームディレクトリへ戻れる
ターミナルで「cd」または「cd ~」と入力すると、現在いるディレクトリ階層の位置に関係なく、必ずログインユーザーのホームディレクトリへ移動します。別のパーティションにいても、外部のファイルシステムをマウントしている環境でも同様です。ディレクトリを辿っているうちに現在地が分からなくなったときも、「cd」と入力すれば、ターミナルを開いた時点のホームディレクトリに一発で戻れます。
rootユーザーのホームディレクトリは/root
一般ユーザーのホームディレクトリは通常「/home/ユーザー名」に配置されますが、rootユーザーの場合は異なります。一部のディストリビューションでは「/home/root」が使われることもありますが、大多数のLinuxディストリビューションでは、ファイルシステム最上位階層直下の「/root」がrootユーザーのホームディレクトリとして設定されています。
実際に試してみましょう。一般ユーザーの状態でターミナルから次のコマンドを実行してください。
cd /root
すると「bash: cd /root: Permission denied(許可がありません)」というエラーが表示されるはずです。これは/rootがスーパーユーザー専用のホームディレクトリであり、一般ユーザーにはアクセス権限がないためです。
rootシェルでの動作確認手順
GUI環境でroot権限のターミナルを開くには、次のコマンドを実行します。
gksu x-terminal-emulator
管理者パスワードの入力を求められるので入力すると、完全に昇格した権限を持つ新しいターミナルウィンドウが起動します。
なお、Ubuntuなど多くのディストリビューションでは、セキュリティ上の理由からrootアカウントがロックされており、直接rootとしてログインできないようになっています。しかし、この方法ならそのロックの影響を受けずにroot権限のシェルを利用できます。
新しいrootシェルが開いたら、以下のコマンドを1行で入力してEnterキーを押してください。
whoami; cd; pwd
このコマンドは、まず「whoami」で現在のユーザー名を表示し、続いて「cd」でホームディレクトリに移動し、最後に「pwd」で現在のディレクトリの絶対パスを出力します。結果として「root」と表示され、ホームディレクトリが「/home/root」ではなく「/root」であることが確認できるはずです。
確認が終わったら、root権限のまま放置しないよう、必ず「exit」コマンドでそのウィンドウを抜けてください。
なぜrootのホームだけ別の場所にあるのか
この設計には明確な理由があります。多くのシステムでは、/homeディレクトリ全体を/(ルート)とは別のパーティションや別のディスクに配置することがあります。もし/homeを置いたディスクが物理的に故障しても、/rootがシステムパーティション内にあれば、少なくともスーパーユーザーとしてシステムを起動し、復旧作業を行うことができます。
パーミッションの面にも違いがあります。一般ユーザーのホームディレクトリには通常755のUnixパーミッションが与えられ、他のユーザーも読み取り可能です。一方、/rootディレクトリは700に設定されており、rootスーパーユーザー以外は読み取ることすらできません。これにより、システム管理者の機密性の高いファイルが保護されています。
チルダ(~)記号の意味
シェルで見かける「~」記号は、ユーザーのホームディレクトリを表す略称(ショートカット)です。ホームディレクトリがどこにあっても、この記号は常にそれを指し示します。「tilde(チルダ)」という名称でも呼ばれ、意味は同じです。
つまり、rootユーザーで「cd」と入力したときに/rootへ移動するのは、正しく期待された動作です。上記のような出力が得られたのであれば、修正すべきエラーは一切ありません。
著者について

Kevin Arrows(ケヴィン・アローズ)
ケヴィン・アローズは10年以上の業界経験を持つテクノロジースペシャリストです。Microsoft Certified Technology Specialist(MCTS)の資格を保有し、ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど幅広い技術トピックについて執筆しています。複雑な技術的概念を平易かつ簡潔に説明する能力で高く評価されています。
-
Gitの「git init」コマンドを取り消す方法【Windows・Linux対応】
Gitは、アプリケーション開発中にソースコードの変更履歴を追跡するためのバージョン管理システムです。各開発者のコンピュータ上にコードベースのコピー(リポジトリ)が保持され、チームメンバー間での作業の調整や、コードの整合性の維持、すべての変更履歴の追跡が可能になります。「git init」コマンドは、新しいプロジェクトを開始する際に最初に実行されることが多いコマンドです。このコマンドを実行すると、カレントディレクトリに新しいGitリポジトリが作成されます。既存のプロジェクトをGitリポジトリに変換することも、まったく新しいリポジトリを作成することもできます。しかし、「間違ってinitを実行してし
-
LinuxのApacheでmod_authz_hostエラーを解決する方法|ステップバイステップガイド
Red Hat Enterprise Linux、Arch、Scientific Linux、Debian Server、Ubuntu Serverなど、Apache2をサポートする各種Linuxディストリビューションにapache2サービスをインストールすると、mod_authz_hostモジュールに関するエラーが発生し、サービスが実行できなくなることがあります。このエラーは、apache2サービスを再起動するたびに問題となる可能性が高く、多くの場合はファイルの1行目に関する構文警告として表示されますが、別の形式のエラーが出ることもあります。どの行で問題が発生していても、その原因はmod_a