「Windowsでは管理者権限くらいしか意識しなかったのに、Linuxはなぜユーザーとグループの話が出てくるの?」
Linux入門者が最初に壁にぶつかるのが、この「ユーザーとグループ」の仕組みです。
Linuxはもともと複数人で1台のサーバーを共有する前提で設計されているため、「誰がそのファイルを使えるか」「誰がそのコマンドを実行できるか」という区別がOSの根幹に組み込まれています。
この記事では、Linuxのユーザーとグループの基本概念を、Windows経験しかない方にもわかるように丁寧に解説します。
rootと一般ユーザーの違い、ホームディレクトリとの関係、グループの役割、そして最初に覚えておくべき確認コマンドまでをカバーします。
実行環境: Ubuntu 24.04 LTS(WSL2)/ Rocky Linux 9.4で動作確認済み
この記事のポイント
・Linuxは複数ユーザーで1台を共有する前提で設計されている
・rootは全権限、一般ユーザーは自分のホームディレクトリだけ操作可能
・グループは複数ユーザーに共通の権限を与える仕組み
・whoami・id・groupsコマンドで自分の立場を確認できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜLinuxには「ユーザー」と「グループ」があるのか
Linuxがユーザーとグループを厳格に管理するのには、明確な理由があります。それは、Linuxがもともと「1台のコンピューターを複数人で同時に使う」ことを前提に設計されたOSだからです。
Windowsもマルチユーザー対応ですが、普段使っている個人のパソコンではユーザーは自分1人だけ、というケースが多いでしょう。
対してLinuxの現場では、1台のサーバーに開発者、運用担当者、管理者など複数人が同時にログインして作業するのが当たり前です。
| 比較項目 | Windows(個人利用) | Linux(サーバー利用) |
|---|---|---|
| 前提 | 基本は1人で1台を使う | 複数人で1台を共有する |
| 管理者権限 | 管理者・標準ユーザーの2層 | root・一般ユーザー・グループの多層 |
| ファイルの所有 | 基本は自動で全員アクセス可 | 所有者・所有グループ・その他の3区分 |
| 作業の分離 | ユーザー切替で分ける | ホームディレクトリで明確に分離 |
その制御の土台になっているのが、ユーザーとグループの仕組みなのです。
rootユーザーと一般ユーザーの違い
Linuxには2種類のユーザーが存在します。root(ルート)ユーザーと一般ユーザーです。
1. rootユーザー = システム全体の管理者
rootユーザーは、Linuxシステム上で何でもできる特別なユーザーです。Windowsで言う「Administrator」に近い存在ですが、その権限範囲はさらに広く、システムファイルの削除やカーネルの設定変更まで、何の制限もなく実行できます。
・ユーザー名:root(固定)
・ユーザーID(UID):0(これも固定)
・ホームディレクトリ:/root
・できること:すべて(システム停止、全ファイル削除、ユーザー作成など)
rootの力は絶大ですが、裏を返せば「1つのミスでシステムを壊せてしまう」リスクも大きい立場です。
2. 一般ユーザー = 日常的な作業を行うユーザー
一般ユーザーは、普段の作業に使うユーザーです。自分のホームディレクトリ配下では自由にファイルを作ったり削除したりできますが、システム全体に影響を与える操作(他人のファイル削除、OS設定の変更など)はできません。
・ユーザー名:自由(例:tomohiro、ubuntu、ec2-user)
・ユーザーID(UID):1000以上(ディストリビューションにより異なる)
・ホームディレクトリ:/home/ユーザー名
・できること:自分のホーム配下の操作、一部の共有ディレクトリの閲覧
3. なぜ普段はrootを使わないのか
初心者から「rootで全部やれば楽なのでは?」と聞かれることがよくあります。しかし現場では、日常作業を一般ユーザーで行い、必要なときだけsudoコマンドでroot権限を借りるのが鉄則です。
理由は3つあります。
・事故の影響範囲を限定できる:rmコマンドの打ち間違えでも、一般ユーザーなら自分のホームだけで被害が止まる
・操作ログが残る:sudoを使えば「誰が・いつ・何の権限で・何をしたか」がログに記録される
・セキュリティ侵害の影響を抑える:仮に不正アクセスされても、一般ユーザー権限ではシステム全体は乗っ取られにくい
この考え方は、現場で「最小権限の原則」と呼ばれています。
グループとは何か ~ 複数ユーザーに共通の権限を与える仕組み
ユーザーの次に理解したいのが「グループ」です。グループは、複数のユーザーを1つの単位にまとめて、同じ権限を一括で与えるための仕組みです。
例えば、開発チーム5人で同じプロジェクトファイルを編集したい場合、全員のユーザー名をファイルに個別登録するのは大変です。
そこで「devteam」というグループを作って5人をそこに所属させておけば、ファイルに「devteamグループに読み書き権限」と設定するだけで済みます。
1. プライマリグループとセカンダリグループ
Linuxのグループには2種類あります。・プライマリグループ(主グループ):ユーザーを作成したときに自動で作られるグループ。ユーザーが作ったファイルの所有グループになる
・セカンダリグループ(補助グループ):後から追加で所属させるグループ。ユーザーは何個でも所属できる
多くのディストリビューションでは、ユーザーを作ると同じ名前のプライマリグループが自動生成されます。
例えば「tomohiro」というユーザーを作ると、「tomohiro」というグループも同時に作られ、ユーザーはそのグループに所属します。
2. 現場でよく使われる標準的なグループ
Linuxには、OSインストール時から存在する便利な標準グループがあります。・wheel / sudo:sudoコマンドでroot権限を使えるユーザーのグループ
・adm:システムログ(/var/log配下)を読めるグループ
・docker:dockerコマンドをsudoなしで使えるグループ(Docker導入時)
・www-data / apache:Webサーバーが動作するためのグループ
新しいユーザーを作成したあと、sudoを使えるようにするには、このwheelまたはsudoグループに追加するのが定番の手順です。
ファイルの所有者・所有グループ・その他の3区分
ユーザーとグループの仕組みが最も分かりやすく現れるのが、ファイルのパーミッション(権限)です。Linuxでは、すべてのファイルに対して3つの区分で権限が設定されています。
・所有者(owner):そのファイルを作ったユーザー本人
・所有グループ(group):所有者のプライマリグループ、または明示的に指定されたグループ
・その他(others):上記以外のすべてのユーザー
lsコマンドに-lオプションを付けると、この3区分が実際に見られます。
# ls -l で所有者と所有グループを確認する $ ls -l -rw-r--r-- 1 tomohiro tomohiro 245 Apr 17 09:30 memo.txt drwxr-xr-x 2 tomohiro tomohiro 4096 Apr 17 09:28 project
一番左の「-rw-r--r--」が3区分それぞれの権限を表しています。
パーミッション記号の詳しい読み方は別記事にまとめていますが、ここでは「ファイルには所有者とグループがひもづいていて、誰が何をできるかが決まっている」という大枠を押さえておけば十分です。
自分のユーザー情報を確認する基本コマンド
Linuxにログインしたら、まず自分が「誰として」「どのグループに所属しているか」を確認しましょう。以下の3つのコマンドが基本です。
1. whoami ~ 今のユーザー名を表示
今自分がどのユーザーで作業しているかを表示する、最もシンプルなコマンドです。$ whoami tomohiro
「あれ?今自分はrootだっけ?一般ユーザーだっけ?」と分からなくなったら、まずこのコマンドで確認してください。
2. id ~ ユーザーIDとグループIDを詳細表示
idコマンドは、ユーザーIDとすべての所属グループをまとめて表示します。$ id uid=1000(tomohiro) gid=1000(tomohiro) groups=1000(tomohiro),27(sudo),100(users)
・uid=1000(tomohiro):ユーザーIDは1000、ユーザー名はtomohiro
・gid=1000(tomohiro):プライマリグループID1000、グループ名はtomohiro
・groups=1000(tomohiro),27(sudo),100(users):所属している全グループの一覧
ここでsudoグループに入っていれば、sudoコマンドでroot権限の操作が可能です。
3. groups ~ 所属グループだけを表示
idコマンドはやや情報量が多いので、「所属グループだけ知りたい」ときはgroupsコマンドがシンプルです。$ groups tomohiro sudo users
ユーザー情報はどこに保存されている?
Linuxのユーザーとグループの情報は、データベースのような特別な場所ではなく、シンプルなテキストファイルに保存されています。これもLinuxの面白さの一つです。
| ファイルパス | 内容 | 権限 |
|---|---|---|
| /etc/passwd | ユーザーの基本情報(ユーザー名・UID・ホームディレクトリ) | 全員読める |
| /etc/shadow | 暗号化されたパスワード情報 | rootのみ読める |
| /etc/group | グループの一覧と所属ユーザー | 全員読める |
| /etc/gshadow | グループのパスワード情報(使用頻度は低い) | rootのみ読める |
$ head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev/sys:/dev/sys/nologin sync:x:4:4:sync:/bin:/bin/sync
こうしたファイルの構造が「読める」と、いざトラブル対応のときに原因の特定が驚くほど速くなります。
「Permission denied」が出た時などよくあるエラー対処
最後に、私がセミナーで受講生からよく受ける質問と、その対処法を3つ紹介します。1. 「Permission denied」が出るときは所有者とグループを確認
Linux入門者が最初にぶつかる壁が「Permission denied(権限がありません)」というエラーです。このエラーが出たときは、まず以下を確認してください。
・自分は誰?:whoamiで現在のユーザーを確認
・ファイルの所有者は誰?:ls -lでファイルの所有者・所有グループを確認
・自分は所有者かグループメンバーか?:idコマンドで自分の所属グループを確認
このチェックを習慣にしておくと、権限エラーの原因特定が早くなります。
2. sudoが効かないときはsudo/wheelグループへの所属を確認
「sudoと打ったら『このユーザーはsudoersファイルに登録されていません』と出た」というケースは、そのユーザーがsudoグループ(またはwheelグループ)に所属していないのが原因です。groupsコマンドで自分の所属グループを確認し、sudoもwheelも入っていなければ、別のユーザー(rootまたはsudo権限を持つ別ユーザー)から追加してもらう必要があります。
3. ホームディレクトリの場所を間違える
cdコマンドで自分のホームディレクトリに戻ろうとして、間違えて別のユーザーのホームに入ってしまい「Permission denied」、というのも初心者あるあるです。自分のホームディレクトリに戻りたいときは、引数なしのcdまたは「cd ~」を使うのが確実です。
# どこにいても自分のホームディレクトリに戻る $ cd $ pwd /home/tomohiro # または $ cd ~
本記事のまとめ
Linuxのユーザーとグループの入門ポイントをまとめます。| やりたいこと | コマンド |
|---|---|
| 今のユーザー名を確認する | whoami |
| ユーザーIDと所属グループを詳細表示する | id |
| 所属グループだけを表示する | groups |
| ファイルの所有者・所有グループを確認する | ls -l ファイル名 |
| ユーザー一覧を確認する | cat /etc/passwd |
| root権限で一時的にコマンドを実行する | sudo コマンド名 |
最初は「root・一般ユーザー・グループの3つ」だけ押さえて、あとは実際に使いながら少しずつ感覚を掴んでいけば十分です。
次に読むべき関連記事
ユーザーとグループの基礎を理解したら、次は実務で使うコマンドへ進みましょう。・Linuxのユーザーとグループを管理する方法|useradd・usermod・groupaddコマンドの使い方 ~ ユーザー作成・変更・グループ追加の具体的な手順
・Linuxのパーミッション入門|ファイルの権限と読み書き実行の仕組みを初心者向けに解説 ~ 所有者・グループ・その他の権限設定方法
・sudoコマンドでroot権限を安全に実行する方法|visudoの設定からログ確認まで ~ 現場で必須のroot権限の借り方
・passwdコマンドでパスワードを変更する方法|ロックや有効期限の設定も ~ ユーザーのパスワード管理
・lastコマンドでログイン履歴を確認する方法|lastb・lastlogやセキュリティ調査も ~ 誰がいつログインしたかを調べる
・シェル変数と環境変数の違い|exportの使い方・env/set/printenvの使い分け ~ ユーザーごとの環境を理解する
・bashの設定ファイル完全解説|/etc/profile・~/.bash_profile・~/.bashrcの違いと使い分け ~ ログイン時に自動実行される設定
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
ユーザー・グループ・権限の基礎から一歩踏み込んだ構築ノウハウまで、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます