Linuxパーミッション管理の極意:chmodコマンドの基礎から実践(755・644の違いと再帰適用まで)

概要

Linuxにおけるアクセス制御とセキュリティ対策の根幹をなすのが「ファイルパーミッション」です。本記事では、アクセス権を操作する中核コマンド chmod のメカニズムを紐解きます。頻出する数値モード(755や644)の計算ロジックや記号指定(rwx)の挙動について、実際のターミナル実行画面を交えながら体系的にマスターしていきましょう。

1. ファイル属性の構造とパーミッションの確認手法 (ls -l)

安全に検証を進めるため、まずはテスト用の作業領域をホーム配下に構築し、カレントディレクトリを切り替えます。以下の mkdir -p ~/chmod_demo && cd ~/chmod_demo を投入してください。

mkdir -p ~/chmod_demo && cd ~/chmod_demo

権限確認の対象となるプレーンテキストを新規作成するため、touch sample.txt を実行して空ファイルを配置します。

touch sample.txt

配置したファイルの属性およびパーミッション初期値を確認すべく、ls -l sample.txt を実行してみましょう。
出力行の先頭10文字(-rw-r--r--)は、ファイル種別に続いて「所有者(読込/書込)」「所属グループ(読込のみ)」「その他のユーザー(読込のみ)」に割り当てられたアクセス権の現状を表しています。
⚙️ [主要オプション一覧]

-l : パーミッション、所有者・グループ名、ファイル容量、更新日時などを含む詳細フォーマット(long format)で一覧化します。
-a : 先頭が . で始まるドットファイル(隠しファイル)も漏れなく画面に出力します。
-h : ファイルサイズを可読性の高い単位(K、M、Gなど)に自動換算して表示します(-l と併用)。
-d : 引数にディレクトリを指定した際、内部のコンテンツではなくディレクトリ本体の属性を表示させます。
-R : 下位のディレクトリツリーを再帰的(recursive)に走査し、含まれる全要素を一覧表示します。

ls -l sample.txt

2. 8進数数値モードによるアクセス権の一括指定 (chmod 644, 755)

権限操作のテスト環境を維持するため、あらためて cd ~/chmod_demo を実行して作業フォルダへ移動します。

cd ~/chmod_demo

所有者にフルアクセス(読込 4 + 書込 2 + 実行 1 = 7)を与え、グループおよび他ユーザーには読込と実行のみ(読込 4 + 実行 1 = 5)を許可する定番構成を適用するため、chmod 755 sample.txt を実行します。

chmod 755 sample.txt

意図通り反映されたかを検証するため、ls -l sample.txt を実行します。
パーミッション列が -rwxr-xr-x へと書き換わり、所有者ブロックに rwx、グループおよびその他ブロックにそれぞれ r-x が割り当てられ、実行権限(x)が付与された挙動が確認できます。

ls -l sample.txt

通常のドキュメントや設定ファイルで標準とされる「所有者のみ読み書き可能(6)、外部ユーザーは読み取り専用(4)」の状態へ戻すため、chmod 644 sample.txt を投入します。

chmod 644 sample.txt

再度 ls -l sample.txt を叩いてパーミッションの遷移を追跡します。
属性値が -rw-r--r-- へ巻き戻り、実行ビットがドロップされて純粋なデータ参照・更新用の権限構成に戻ったことが見て取れます。

ls -l sample.txt

3. シンボリック表記(記号モード)を活用した個別権限の加減算

記号を用いたパーミッション制御を試すため、作業場所である ~/chmod_demo に移動する cd ~/chmod_demo を実行します。

cd ~/chmod_demo

実行権限の挙動を確かめるターゲットとして、簡単なシェルスクリプトを echo '#!/bin/bash\necho "Hello Linux"' > test.sh により生成します。

echo ‘#!/bin/bash\necho “Hello Linux”’ > test.sh

作成直後のスクリプトを即座に起動可能とするため、全クラス(所有者・グループ・その他)に対して一括で実行権限を付加する chmod +x test.sh を投入します。

chmod +x test.sh

付与結果を ls -l test.sh でチェックしてみましょう。
アクセス権フィールドが -rwxr-xr-x となり、実行フラグ(x)が過不足なく組み込まれたことが分かります。

ls -l test.sh

続いて、カンマ区切り構文を用いて複数ターゲットの権限を同時に調整します。グループから書き込み権限を剥奪し、その他ユーザーからは読み取り権限を取り去るため、chmod g-w,o-r test.sh を実行します。

chmod g-w,o-r test.sh

更新後のステータスを ls -l test.sh で確認します。
出力が -rwxr-x--x に変化し、グループの書き込み制限に加え、第三者からの読み出し(r)もきれいに遮断された安全な状態が実現できました。

ls -l test.sh

4. 実務で必須の階層的一括パーミッション設定 (-R オプション)

実運用でよく見られるネストされた構造を再現するため、mkdir -p ~/chmod_demo/project/logs を実行してサブディレクトリごと一挙にセットアップします。

mkdir -p ~/chmod_demo/project/logs

ディレクトリ内部に配置するモックファイルとして、アプリケーション本体とログファイルを touch ~/chmod_demo/project/app.py ~/chmod_demo/project/logs/app.log で用意します。

touch ~/chmod_demo/project/app.py ~/chmod_demo/project/logs/app.log

-R オプションを付与することで、project 配下にネストされた全ファイルおよびフォルダへ再帰的に 750 を浸透させる chmod -R 750 ~/chmod_demo/project を実行します。
これにより、「所有者:フル制御(7)」「グループ:参照・実行(5)」「第三者:完全遮断(0)」という堅牢なポリシーがツリー全体へ一斉に適用されます。

chmod -R 750 ~/chmod_demo/project

親ディレクトリ自身のアクセス権を検証するため、ls -ld ~/chmod_demo/project を実行します。
属性が drwxr-x--- となっており、所有者に rwx、グループに r-x、その他には一切の権限(---)が与えられていないことが確認できます。

ls -ld ~/chmod_demo/project

最後に、ツリー内部に存在するファイルやサブフォルダの状態を ls -l ~/chmod_demo/project でチェックします。
スクリプトファイル app.py(-rwxr-x---)および下位の logs ディレクトリ(drwxr-x---)の双方が指定値通りに更新されており、再帰的伝播が成功していることが実証されました。

ls -l ~/chmod_demo/project

本稿では、Linux環境における chmod コマンドの作法をはじめ、8進数数値表現とシンボリック指定の使い分け、さらには -R を用いた一括適用テクニックまでを解説しました。
適切なアクセス権の設計はシステム防衛の第一歩です。用途に応じた最小権限の原則を意識しながら、日々のサーバー運用に役立ててみてください。