Linux権限管理入門【基礎編】

権限管理基礎 - ファイル権限とセキュリティ

Linuxの権限管理は、システムセキュリティの基盤です。この基礎編では、権限の仕組み、危険回避術、chmod基本操作を安全に学んでいきます。初心者が陥りやすい罠と正しい対処法を重点的に解説します。

目次

  1. 権限の基本概念
  2. ⚠️ 初心者が陥りやすい罠と危険パターン
  3. 権限の読み方
  4. chmod - 権限の変更

1. 権限の基本概念

Linuxでは、すべてのファイルとディレクトリに3種類のユーザー3種類の権限が設定されています。

ユーザーの種類

  • Owner (u) - ファイルの所有者
  • Group (g) - グループメンバー
  • Others (o) - その他のユーザー

権限の種類

  • Read (r) - 読み取り権限(4)
  • Write (w) - 書き込み権限(2)
  • Execute (x) - 実行権限(1)

ファイルとディレクトリでの権限の意味

権限 ファイル ディレクトリ
読み取り (r) ファイルの内容を読める ディレクトリ内のファイル一覧を見れる
書き込み (w) ファイルの内容を変更できる ディレクトリ内でファイルの作成・削除ができる
実行 (x) プログラムとして実行できる ディレクトリに移動(cd)できる

2. ⚠️ 初心者が陥りやすい罠と危険パターン

Linux権限管理において、初心者が陥りやすい危険な操作よくある誤解を事前に学び、セキュリティリスクを回避しましょう。

🚨 最も危険:chmod 777 の乱用

絶対にやってはいけない操作

❌ 危険な例

$ chmod 777 /var/www/html/
$ chmod -R 777 /home/user/
$ chmod 777 /etc/config.php

これは非常に危険です! 誰でもファイルを読み書き・実行できる状態になります。

🔥 777の危険性

  • セキュリティ侵害 - 他のユーザーが機密情報にアクセス可能
  • システム破壊 - 重要ファイルの意図しない変更・削除
  • マルウェア感染 - 悪意のあるコードの実行リスク
  • データ漏洩 - 機密データの不正アクセス

✅ 正しい代替案

  • Webファイル: chmod 644 (ファイル) / chmod 755 (ディレクトリ)
  • 設定ファイル: chmod 600 (所有者のみアクセス)
  • 実行ファイル: chmod 755 または chmod 700
  • ログディレクトリ: chmod 750 (グループ読み取り許可)

🔍 よくある権限の誤解と間違い

❌ 間違い:「アクセスできない = chmod 777で解決」

症状: ファイルが開けない、エラーが出る

間違った対処: chmod 777 filename

✅ 正しいアプローチ
  1. 現在の権限を確認: ls -l filename
  2. 必要最小限の権限を付与: chmod 644 filename
  3. 所有者を確認: ls -l filename | awk '{print $3 $4}'
  4. 必要に応じて所有者変更: sudo chown user:group filename

❌ 間違い:再帰的権限変更の誤用

危険なコマンド: chmod -R 777 /

結果: システム全体のセキュリティが破綻

✅ 正しい方法
$ find /var/www/html -type f -exec chmod 644 {} \;
$ find /var/www/html -type d -exec chmod 755 {} \;

ファイルとディレクトリを分けて適切な権限を設定

❌ 間違い:実行権限の混同

よくある誤解: 「ファイルを開くには実行権限が必要」

✅ 正しい理解
  • テキストファイル: 読み取り権限(r)のみで十分
  • スクリプト実行: 実行権限(x)が必要
  • ディレクトリアクセス: 実行権限(x)が必要
$ chmod 644 document.txt    # テキストファイル
$ chmod 755 script.sh       # 実行スクリプト
$ chmod 755 directory/      # ディレクトリ

🪤 初心者がハマりやすい具体的な罠

罠1: Webサイトが表示されない

1

問題発生: 「403 Forbidden」エラーが表示される

2

間違った対処: chmod -R 777 /var/www/html/

⚠️

結果: セキュリティ脆弱性が発生!

正しい対処法:

$ sudo find /var/www/html -type d -exec chmod 755 {} \;
$ sudo find /var/www/html -type f -exec chmod 644 {} \;
$ sudo chown -R www-data:www-data /var/www/html/

罠2: SSH秘密鍵のアクセス拒否

1

問題発生: 「Permission denied (publickey)」エラー

2

間違った対処: chmod 777 ~/.ssh/id_rsa

⚠️

結果: SSHが秘密鍵を拒否(セキュリティ機能)

正しい対処法:

$ chmod 700 ~/.ssh/           # ディレクトリ
$ chmod 600 ~/.ssh/id_rsa     # 秘密鍵
$ chmod 644 ~/.ssh/id_rsa.pub # 公開鍵
$ chmod 600 ~/.ssh/config     # 設定ファイル

罠3: スクリプトが実行できない

1

問題発生: 「Permission denied」でスクリプトが実行できない

2

症状確認: ls -l script.sh-rw-r--r--

正しい対処法:

$ chmod u+x script.sh        # 所有者に実行権限を追加
$ chmod 755 script.sh         # または数値で設定

3. 権限の読み方

ls -lコマンドで表示される権限情報を正しく読み取れるようになりましょう。

権限情報の表示

$ ls -l example.txt
-rw-r--r-- 1 user group 1024 Jan 11 10:00 example.txt

権限情報の構成要素

1文字目:ファイルタイプ

  • - 通常ファイル
  • d ディレクトリ
  • l シンボリックリンク

2-4文字目:所有者の権限

  • r 読み取り可
  • w 書き込み可
  • x 実行可
  • - 権限なし

5-7文字目:グループの権限

  • r 読み取り可
  • - 書き込み不可
  • - 実行不可

8-10文字目:その他の権限

  • r 読み取り可
  • - 書き込み不可
  • - 実行不可

実例で理解する権限の読み方

-rw-r--r--

通常ファイル

  • 所有者:読み書き可
  • グループ:読み取りのみ
  • その他:読み取りのみ

用途:一般的なドキュメント

-rwxr-xr-x

実行可能ファイル

  • 所有者:読み書き実行可
  • グループ:読み取り実行可
  • その他:読み取り実行可

用途:実行スクリプト

drwxr-xr-x

ディレクトリ

  • 所有者:フルアクセス
  • グループ:閲覧・移動可
  • その他:閲覧・移動可

用途:公開ディレクトリ

-rw-------

プライベートファイル

  • 所有者:読み書き可
  • グループ:アクセス不可
  • その他:アクセス不可

用途:秘密鍵、設定ファイル

4. chmod - 権限の変更

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

シンボリック方式

基本構文

chmod [who][operation][permission] file
  • who: u (user), g (group), o (others), a (all)
  • operation: + (追加), - (削除), = (設定)
  • permission: r (read), w (write), x (execute)

実例:所有者に実行権限を追加

$ chmod u+x script.sh

実例:グループから書き込み権限を削除

$ chmod g-w file.txt

実例:すべてのユーザーに読み取り権限

$ chmod a+r document.pdf

数値方式

よく使う権限設定

$ chmod 755 script.sh    # rwxr-xr-x
$ chmod 644 file.txt     # rw-r--r--
$ chmod 600 private.key  # rw-------
$ chmod 777 public/      # rwxrwxrwx(危険!)

一般的な権限設定パターン

数値 権限 用途
755 rwxr-xr-x 実行可能ファイル、ディレクトリ
644 rw-r--r-- 通常のファイル
600 rw------- 秘密鍵、設定ファイル
700 rwx------ プライベートディレクトリ

再帰的な変更

ディレクトリ以下すべてを変更

$ chmod -R 755 /path/to/directory/

🛡️ 安全な権限変更のコツ

1. 現在の権限を必ず確認

$ ls -l filename

変更前に現在の状態を把握する

2. 最小権限の原則

必要最小限の権限のみ付与する

  • 読み取りのみ必要 → 644
  • 実行も必要 → 755
  • プライベート → 600/700

3. 段階的な変更

$ chmod u+x file.sh    # まず所有者のみ
$ chmod g+x file.sh     # 問題なければグループにも

一度に大きく変更せず、段階的に調整

🎯 次のステップ

基礎編では、Linux権限システムの基本概念、安全なchmod操作、そして初心者が陥りやすい危険なパターンについて学びました。

次の応用編では、chown・chgrp・umask・特殊権限などのより高度な権限管理技術を習得します。

🔐 権限管理シリーズ全体

  1. 基礎編(この記事) - 権限の仕組み、危険回避、chmod基本
  2. 応用編 - chown、グループ管理、umask、特殊権限
  3. 実践編 - 実務シナリオ、トラブルシューティング、セキュリティ
📢 アフィリエイトリンクについて

当サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである「Amazonアソシエイト・プログラム」の参加者です。商品価格に影響はありません。

🎉 実践で権限管理をマスターしよう

書籍で知識を習得したら、Penguin Gym Linuxの実践課題で手を動かして学習を定着させましょう。chmod、パーミッション、セキュリティ対策を実際に使うことで、確実にスキルアップできます。