Linuxのユーザー管理とは?権限とパーミッションを図解で解説

Linuxを学び始めたばかりの方にとって、「ユーザー管理」や「パーミッション」という言葉は少し難しく感じるかもしれません。しかし、これらはLinuxシステムの安全性を保つための最も重要な仕組みの一つです。今回は、Rocky Linuxを使いながら、ユーザー管理の基本概念から実践的なコマンドまで、わかりやすく解説していきます。

目次

Linuxの「ユーザー」とは?

ユーザーとは何か、なぜOSがユーザーを分けて管理しているのか

Linuxにおける「ユーザー」とは、システムを利用する人や、プログラムを実行するための「アカウント」のことです。たとえるなら、会社のオフィスビルに入るための「IDカード」のようなものです。IDカードごとに入れる部屋が違うように、ユーザーごとにアクセスできるファイルや実行できる操作が異なります。

なぜLinuxはユーザーを分けて管理しているのでしょうか。それは、複数の人が同じシステムを安全に共有するためです。例えば、家族で1台のパソコンを使う場合、お父さんの仕事のファイルを子どもが誤って削除してしまったら大変ですよね。Linuxではユーザーごとに「できること」と「できないこと」を明確に分けることで、このような事故を防いでいます。

rootユーザーと一般ユーザーの違い

Linuxには大きく分けて2種類のユーザーが存在します。

rootユーザー

システムのすべてを管理できる「特権ユーザー」です。まるで会社の社長のように、すべてのファイルにアクセスでき、システムの設定を自由に変更できます。rootユーザーは別名「スーパーユーザー」とも呼ばれ、ユーザーIDは常に「0」です。

uid=0(root) gid=0(root) groups=0(root)
一般ユーザー

限られた権限のみを持つユーザーです。自分のホームディレクトリ内のファイルは自由に操作できますが、システムの重要な設定ファイルは変更できません。これは会社の一般社員のように、自分のデスクでは自由に作業できても、社長室には入れないのと同じです。

セキュリティ上、rootで直接作業しない理由

「rootユーザーなら何でもできるから、いつもrootで作業すればいいのでは?」と思うかもしれません。

しかし、これは非常に危険な考え方です。

rootユーザーで直接作業することは、常に「最強の武器」を持って歩いているようなものです。ちょっとしたミスが致命的なダメージにつながる可能性があります。例えば、間違って「rm -rf /」というコマンドを実行してしまったら、システム全体が削除されてしまいます。一般ユーザーであれば、権限がないため実行できませんが、rootなら問答無用で実行されてしまいます。

システム階層構造
━━━━━━━━━━━━━━━━━━━━━━━
    root(特権管理者)
        ├── システム全体の管理
        └── すべてのファイルへのアクセス
    
    一般ユーザー(user1, user2...)
        ├── 自分のホームディレクトリ
        └── 許可されたファイルのみ
    
    ゲストユーザー
        └── 最小限の権限のみ
━━━━━━━━━━━━━━━━━━━━━━━

ユーザーを管理する基本コマンド

それでは、実際にユーザーを管理するための基本的なコマンドを見ていきましょう。Rocky Linuxでの実行例を交えながら、構文やオプションも含めて詳しく解説します。

useradd:新規ユーザーの作成

新しいユーザーを作成するにはuseraddコマンドを使います。

【基本構文

useradd [オプション] ユーザー名

【基本的な使用例

sudo useradd testuser

よく使うオプション

  • -m:ホームディレクトリを自動作成(Rocky Linuxではデフォルトで作成されます)
  • -s:ログインシェルを指定
  • -g:プライマリグループを指定
  • -G:追加グループを指定
  • -c:コメント(フルネームなど)を追加

【実践的な例

sudo useradd -m -s /bin/bash -c "Test User" testuser

このコマンドは「ホームディレクトリを作成し、bashシェルを使用し、フルネームを設定したtestuserを作成する」という意味です。実務では、新しく入社した社員のアカウントを作成する際などに使用します。

【wheelグループに追加する例

sudo useradd -m -G wheel developer

これで、sudoが使えるwheelグループに所属する「developer」ユーザーが作成されます。

passwd:パスワード設定

作成したユーザーにパスワードを設定するにはpasswdコマンドを使います。

基本構文

passwd [オプション] [ユーザー名]

基本的な使用例

sudo passwd testuser

【よく使うオプション

  • -l:パスワードをロック(ログイン不可にする)
  • -u:パスワードのロックを解除
  • -d:パスワードを削除(パスワードなしでログイン可能に)
  • -e:パスワードを強制的に期限切れにする
  • -S:パスワードの状態を表示

【パスワードをロックする例

sudo passwd -l testuser

これで一時的にtestuserのログインを禁止できます。退職者のアカウントを無効化する際などに使用します。

【パスワード状態を確認する例

sudo passwd -S testuser

実行すると、新しいパスワードを2回入力するよう求められます。セキュリティのため、入力したパスワードは画面に表示されません。これは、後ろから画面を覗き見されても大丈夫なようにという配慮です。

su:ユーザーを切り替える

別のユーザーに切り替えるにはsuコマンドを使います。

【基本構文

su [オプション] [ユーザー名]

基本的な使用例】

su - testuser

重要なオプション

  • -または-l:ログインシェルとして実行(環境変数も切り替える)
  • -c:指定したコマンドを実行してすぐ戻る
  • -s:使用するシェルを指定

環境変数を維持したまま切り替える例

su testuser

「-」を付けない場合、現在の環境変数を維持したままユーザーだけ切り替わります。

【一時的にコマンドを実行する例

su - testuser -c "whoami"

これは「testuserとしてwhoamiコマンドを実行し、すぐ元のユーザーに戻る」という動作をします。スクリプト内で特定のユーザー権限でコマンドを実行したい時に便利です。

sudo:root権限でコマンドを実行する

一時的にroot権限が必要な場合はsudoコマンドを使います。

基本構文

sudo [オプション] コマンド

基本的な使用例

sudo dnf update -y

よく使うオプション

  • -u:指定したユーザーとして実行(デフォルトはroot)
  • -i:rootユーザーのログインシェルを起動
  • -s:シェルを起動
  • -l:現在のユーザーが実行可能なコマンドを表示
  • -k:認証情報をリセット(次回パスワード入力が必要)

別のユーザーとしてコマンドを実行する例

sudo -u apache cat /var/log/httpd/access_log

これは「apacheユーザーの権限でログファイルを表示する」という意味です。

実行可能なsudoコマンドを確認する例

sudo -l

自分がどんなコマンドをsudo実行できるか確認できます。

rootシェルに入る例

sudo -i

これでrootユーザーとしてシェルが起動します。複数の管理コマンドを連続実行する必要がある時に使いますが、exitするまでroot権限が続くため注意が必要です。

usermod:既存ユーザーの変更

作成済みのユーザー情報を変更するにはusermodコマンドを使います。

【基本構文

usermod [オプション] ユーザー名

よく使うオプション

  • -l:ユーザー名を変更
  • -d:ホームディレクトリを変更
  • -s:ログインシェルを変更
  • -G:所属グループを変更
  • -aG:グループに追加(既存グループは維持)

wheelグループに追加する例

sudo usermod -aG wheel testuser

これで既存のtestuserをsudo実行可能にできます。「-a」を忘れると既存のグループから外れてしまうので注意が必要です。

userdel:ユーザーの削除

不要になったユーザーを削除するにはuserdelコマンドを使います。

基本構文

userdel [オプション] ユーザー名

よく使うオプション

  • -r:ホームディレクトリとメールスプールも削除
  • -f:強制削除(ログイン中でも削除)

ホームディレクトリごと削除する例

sudo userdel -r testuser

ユーザーのデータも完全に削除したい場合はこのオプションを使います。

susudoの違いを理解することは非常に重要です。

  • su:完全にユーザーを切り替える(その人になりきる)
  • sudo:今のユーザーのまま、一時的に管理者権限を借りる(一時的な権限昇格)

セキュリティの観点から、日常的な管理作業ではsudoの利用が推奨されています。なぜなら、誰がいつ何のコマンドを実行したかがログに記録されるため、後から追跡が可能だからです。それでは、実際にユーザーを管理するための基本的なコマンドを見ていきましょう。Rocky Linuxでの実行例を交えながら解説します。

【図解ポイント】

権限昇格のイメージ
━━━━━━━━━━━━━━━━━━━━━━━
一般ユーザー → sudo → root権限で実行
    ↑                    ↓
    └──── 実行後すぐ戻る ────┘
━━━━━━━━━━━━━━━━━━━━━━━

Linuxの権限(パーミッション)を理解しよう

Linuxのファイルやディレクトリには、誰が何をできるかを決める「パーミッション」という仕組みがあります。これは、ファイルごとに「読み取り」「書き込み」「実行」の権限を細かく設定できる機能です。

ls -lコマンドで表示される「rwx」の意味

ファイルの権限を確認するにはls -lコマンドを使います。

-rw-r--r--  1 user user 1234 test.txt

この表示の最初の部分「-rw-r–r–」がパーミッションを表しています。少し複雑に見えますが、実は規則的な構造になっています。

r、w、xの意味を解説

  • r(read):読み取り権限。ファイルの内容を見ることができます
  • w(write):書き込み権限。ファイルの内容を変更できます
  • x(execute):実行権限。プログラムやスクリプトを実行できます

これらの権限は、まるで「見る」「触る」「動かす」という3つの動作のようなものです。美術館の展示品で例えると、一般の来場者は「見る」だけ、学芸員は「見る」「触る」ができ、修復師は「見る」「触る」「動かす」すべてができる、というイメージです。

所有者・グループ・その他ユーザーの3階層構造

パーミッション「-rw-r–r–」を詳しく見ると:

  1. 最初の1文字「-」:ファイルの種類(-は通常ファイル、dはディレクトリ)
  2. 次の3文字「rw-」:所有者(owner)の権限
  3. 次の3文字「r–」:グループ(group)の権限
  4. 最後の3文字「r–」:その他のユーザー(others)の権限

つまり、このファイルは「所有者は読み書き可能、グループメンバーは読み取りのみ、その他のユーザーも読み取りのみ」という設定になっています。

【図解ポイント】

パーミッション構造の表
━━━━━━━━━━━━━━━━━━━━━━━━━━━
         | 読む(r) | 書く(w) | 実行(x) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━
所有者    |   ○    |   ○    |   ×    |
グループ  |   ○    |   ×    |   ×    |
その他    |   ○    |   ×    |   ×    |
━━━━━━━━━━━━━━━━━━━━━━━━━━━

権限を変更するコマンド

ファイルの権限を変更するためのコマンドを実践的に学んでいきましょう。

chmod:パーミッションを変更

chmodコマンドは、ファイルやディレクトリの権限を変更します。

chmod 755 script.sh

この「755」という数字は、権限を数値で表現したものです。各権限には以下の数値が割り当てられています:

  • r(読み取り)= 4
  • w(書き込み)= 2
  • x(実行)= 1

これらを足し算することで権限を表現します。例えば「7」は「4+2+1」なので「rwx(すべての権限)」を意味します。「755」を分解すると・・・

  • 所有者:7(rwx)= すべての権限
  • グループ:5(r-x)= 読み取りと実行
  • その他:5(r-x)= 読み取りと実行

実務では、Webサーバーのスクリプトファイルに実行権限を付与する際などによく使用します。

chown:ファイルの所有者を変更

ファイルの所有者やグループを変更するにはchownコマンドを使います。

sudo chown user1:user1 test.txt

このコマンドは「test.txt」の所有者とグループを両方とも「user1」に変更します。コロン(:)の前が所有者、後ろがグループを指定します。

groups:所属グループを確認

ユーザーがどのグループに所属しているかを確認するにはgroupsコマンドを使います。

groups testuser

実行すると、そのユーザーが所属しているすべてのグループが表示されます。Linuxでは、1人のユーザーが複数のグループに所属することができます。

所有者を変更すると、元の所有者がそのファイルを操作できなくなる場合があります。
これは意図しないアクセス制限を引き起こす可能性があるため、変更前に影響を確認することが大切です。

実務では、/var/www/などのWebサーバー用ディレクトリのパーミッション設定で頻繁に使用します。Webサーバーのプロセスがファイルを読み込めるように、適切な権限設定が必要になるからです。

例えば、Apacheのようなウェブサーバーが動作するユーザー(通常は「apache」や「www-data」)がHTMLファイルを読み込めるように設定する必要があります。

rootとsudoの違いを理解しよう

ここまで何度か登場した「root」と「sudo」について、もう少し詳しく理解を深めていきましょう。

root:すべての権限を持つ「神様ユーザー」

rootユーザーは、Linuxシステムにおける「絶対的な権限」を持つ特別なユーザーです。システムのあらゆるファイルにアクセスでき、どんな設定も変更できます。まさに「神様」のような存在です。

しかし、大いなる力には大いなる責任が伴います。rootユーザーでの操作は、一つのミスがシステム全体の破壊につながる可能性があります。そのため、通常の作業では使用を避けるべきです。

sudo:一時的にroot権限を借りて安全に操作

sudoは「Super User DO」の略で、一般ユーザーが一時的にroot権限を借りてコマンドを実行するための仕組みです。銀行のATMで例えると、キャッシュカード(一般ユーザー)を持っている人が、暗証番号(パスワード)を入力することで、一時的に口座(root権限)にアクセスできるようなものです。

/etc/sudoersで管理されている仕組み

sudoの設定は/etc/sudoersというファイルで管理されています。このファイルには、どのユーザーがsudoを使えるか、どんなコマンドを実行できるかが定義されています。Rocky Linuxでは、通常「wheel」グループに所属するユーザーがsudoを使用できるように設定されています。

実際の設定例を見てみましょう。sudoersファイルには以下のような行があります:

%wheel ALL=(ALL) ALL

これは「wheelグループのメンバーは、すべてのコマンドをroot権限で実行できる」という意味です。

【図解ポイント】

rootとsudoの関係図
━━━━━━━━━━━━━━━━━━━━━━━━━━
root(特権管理者)
  ├── 常に最高権限
  ├── すべてのアクセス可能
  └── 危険性:高

sudo(一時的アクセス)
  ├── 必要な時だけ権限昇格
  ├── 実行履歴が記録される
  └── 危険性:低(制御可能)
━━━━━━━━━━━━━━━━━━━━━━━━━━

sudoを使用することで、以下のメリットがあります:

  1. 監査ログ:誰がいつ何を実行したかが記録される
  2. パスワード管理:rootパスワードを共有する必要がない
  3. 権限の細分化:ユーザーごとに実行可能なコマンドを制限できる
  4. 事故防止:常時root権限でないため、うっかりミスを防げる

まとめ|安全で正しいユーザー管理を身につけよう

ここまで、Linuxのユーザー管理とパーミッションについて詳しく解説してきました。最後に、重要なポイントをおさらいしましょう。

Linuxでは「誰が」「何をできるか」を厳密に管理している

Linuxは多人数での利用を前提に設計されており、ユーザーごと、ファイルごとに細かく権限を設定できます。これにより、セキュアで安定したシステム運用が可能になっています。初心者の方は最初は複雑に感じるかもしれませんが、この仕組みがあるからこそ、Linuxは企業のサーバーやクラウドサービスで広く採用されているのです。

sudoを正しく使うことが安全運用の基本

日常的な管理作業では、rootユーザーで直接ログインするのではなく、sudoを使って必要な時だけ権限を昇格させる運用が推奨されています。これは、セキュリティと利便性のバランスを取った、現代的なLinux運用のベストプラクティスです。

Rocky Linuxを使った学習では、以下の順番で練習することをお勧めします:

  1. まず一般ユーザーを作成してみる
  2. ファイルを作成し、パーミッションを確認する
  3. chmodコマンドで権限を変更してみる
  4. sudoを使ってシステム管理コマンドを実行する

次は「ファイルの所有権とグループ管理」をさらに深掘りしていこう

今回学んだ基本的なユーザー管理とパーミッションの知識は、Linux運用の土台となる重要な概念です。今回学んだユーザー管理とパーミッションの知識を土台に、次のステップでは「ファイル操作とシェルの理解」に進みましょう。Linuxの強力な機能である「リダイレクト」と「パイプ」を使えば、複数のコマンドを組み合わせて効率的な作業が可能になります。

また、実際のWebサーバー運用では、適切なパーミッション設定がセキュリティの要となります。例えば、WordPressのようなCMSを運用する際には、アップロードディレクトリの権限設定が重要になります。今回学んだ基礎知識を活かして、ぜひ実践的なシナリオでも挑戦してみてください。

Linuxのユーザー管理は、最初は難しく感じるかもしれません。しかし、コマンドを一つずつ実際に試していくことで、必ず理解できるようになります。Rocky Linuxの環境で、ぜひ今回紹介したコマンドを実践してみてください。間違えても大丈夫です。むしろ、エラーメッセージから学ぶことも多いのがLinuxの面白さです。

Linux運用のスキルを身につけて、システム管理者への第一歩を踏み出しましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次