Linuxファイルパーミッション完全ガイド:chmod、chownでセキュリティを強化

Linuxのファイルパーミッションを基礎から徹底解説。chmod、chownコマンドの使い方、所有権の変更、セキュリティ設定の実践例を紹介。初心者にもわかりやすく説明。

Linuxパーミッションchmodchown所有権セキュリティ2026/5/25

Linuxファイルパーミッションとは?

Linuxはマルチユーザーシステムであり、ファイルやディレクトリへのアクセスを制御するためにパーミッション(権限)を設定します。パーミッションは、ファイルの所有者(owner)、所有グループ(group)、その他のユーザー(others)の3つのカテゴリに対して、読み取り(r)、書き込み(w)、実行(x)の権限を指定します。

パーミッションの表示

ls -lコマンドでファイルの詳細情報を表示すると、左端に-rwxr-xr--のような10文字のパーミッション文字列が表示されます。
  • 1文字目:ファイルタイプ(-は通常ファイル、dはディレクトリ)
  • 2-4文字目:所有者の権限
  • 5-7文字目:グループの権限
  • 8-10文字目:その他のユーザーの権限
  • 例:-rwxr-xr--

  • 所有者:rwx(読み取り、書き込み、実行)
  • グループ:r-x(読み取り、実行)
  • その他:r--(読み取りのみ)
  • 数値表現

    パーミッションは8進数(3桁の数字)でも表せます。各権限に数値が割り当てられています。
  • r = 4
  • w = 2
  • x = 1
  • 各カテゴリの数値を合計します。例:rwx = 4+2+1=7、r-x = 4+0+1=5、r-- = 4+0+0=4。 つまり-rwxr-xr--755と表せます。

    chmodコマンド:パーミッションの変更

    chmod(change mode)コマンドでファイルやディレクトリのパーミッションを変更します。

    シンボルモード

    記号を使って権限を指定します。
  • u:所有者、g:グループ、o:その他、a:すべて
  • +:権限追加、-:権限削除、=:権限設定
  • 例:

  • chmod u+x file:所有者に実行権限を追加
  • chmod go-w file:グループとその他から書き込み権限を削除
  • chmod a=r file:全ユーザーに読み取り権限のみ設定
  • 絶対モード(数値モード)

    3桁の8進数で権限を指定します。
  • chmod 755 file:所有者にrwx、グループとその他にr-x
  • chmod 644 file:所有者にrw-、グループとその他にr--
  • ディレクトリのパーミッション

    ディレクトリの場合、実行権限(x)はそのディレクトリ内に入る(cd)ために必要です。また、書き込み権限があればファイルの作成・削除が可能です。

    例:chmod 755 dir:所有者はすべて可能、グループとその他はディレクトリに入り読み取り可能。

    chownコマンド:所有権の変更

    chown(change owner)コマンドでファイルやディレクトリの所有者とグループを変更します。スーパーユーザー(root)のみが実行できます。

    基本構文

    chown [オプション] 所有者[:グループ] ファイル

    例:

  • chown user1 file:所有者をuser1に変更
  • chown user1:group1 file:所有者をuser1、グループをgroup1に変更
  • chown :group1 file:グループのみgroup1に変更
  • 再帰的変更

    -Rオプションでディレクトリ内の全ファイル・サブディレクトリを再帰的に変更します。 chown -R user1:group1 /home/user1

    実践的なセキュリティ設定例

    1. Webサーバーのファイル権限

  • ファイル:644(所有者rw-、グループr--、その他r--)
  • ディレクトリ:755(所有者rwx、グループr-x、その他r-x)
  • 所有権:root:www-data または ユーザー:www-data
  • 2. SSH鍵のパーミッション

  • 秘密鍵(~/.ssh/id_rsa):600(所有者のみrw-)
  • 公開鍵(~/.ssh/id_rsa.pub):644
  • ~/.sshディレクトリ:700
  • 3. 共有ディレクトリ

    グループで共有する場合、setgidビットを設定すると便利です。 chmod 2775 shared_dir(2はsetgidビット) これにより、そのディレクトリ内に作成されたファイルのグループが自動的に親ディレクトリのグループになります。

    特殊パーミッション

    SUID (Set User ID)

    数値表現:4xxx ファイルに設定すると、実行時に所有者の権限で動作します。 chmod u+s file または chmod 4xxx file

    SGID (Set Group ID)

    数値表現:2xxx ファイル:実行時にグループの権限で動作。ディレクトリ:新規ファイルのグループを継承。 chmod g+s dir または chmod 2xxx dir

    スティッキービット (Sticky Bit)

    数値表現:1xxx ディレクトリに設定すると、ファイルの所有者またはrootのみ削除可能(/tmpなど)。 chmod +t dir または chmod 1xxx dir

    よくあるエラーと対処法

  • Permission denied:権限不足。ls -lで確認し、必要に応じてchmodまたはchown。
  • Operation not permitted:所有権変更にはroot権限が必要。sudo chownを使用。
  • Cannot remove file:親ディレクトリに書き込み権限がない。親ディレクトリの権限を確認。

  • *この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

    まとめ

    Linuxのパーミッションはセキュリティの基本です。chmodchownを適切に使い、必要最小限の権限を設定することでシステムを安全に保ちましょう。特にWebサーバーやSSH鍵の設定では、推奨されるパーミッションを守ることが重要です。