【初心者向け】Linuxのchmodコマンド完全ガイド|アクセス権の設定を表と例で解説!

Linux

Linuxでは、ファイルやディレクトリに対して「誰が何をできるか」というアクセス権(パーミッション)を細かく設定できます。

この権限を操作するための基本コマンドがchmod(change mode)です。

「ファイルを実行できない」
「他人に読み取らせたくない」
「セキュリティを強化したい」
などの課題も、chmodを使えば解決できます。

この記事では、chmodコマンドの基本から応用までを表と実例でわかりやすく解説します!

スポンサーリンク
  1. chmodとは?何ができる?
    1. chmodの基本概念
    2. 権限を変更できる対象
    3. 3つの基本権限
    4. 実際の使用場面
  2. chmodの基本構文と使い方
    1. 2つの指定方法
    2. 演算子の種類
    3. オプション
  3. 数値モード(3桁数字)での指定
    1. 権限の数値表現
    2. 数値の組み合わせ
    3. よく使われる数値の組み合わせ
    4. 実例:数値モードでの設定
  4. 記号モード(シンボリック)での指定
    1. 記号モードの利点
    2. 対象の指定
    3. 実例:記号モードでの設定
    4. 数値モードと記号モードの使い分け
  5. chmodの実用例集
    1. Webサーバーでの使用例
    2. 開発環境での使用例
    3. セキュリティ重視の設定例
    4. 共有環境での設定例
    5. 再帰的な権限設定
  6. パーミッションの確認方法
    1. ls -l コマンドでの確認
    2. ディレクトリ内のファイル一覧確認
    3. 数値形式での権限確認
  7. 高度なchmodテクニック
    1. 特殊権限の設定
    2. 複数ファイルの一括処理
    3. 条件付き権限変更
  8. 注意点とトラブル回避
    1. よくある問題と解決法
    2. セキュリティのベストプラクティス
    3. 危険な権限設定
    4. rootユーザーでの操作注意
  9. 実践的なワークフロー
    1. 新しいプロジェクトでの権限設定
    2. サーバー移行時の権限復元
  10. よくある質問と回答
    1. Q: chmodとchownの違いは?
    2. Q: ディレクトリの実行権限(x)の意味は?
    3. Q: 権限を間違えて設定してしまった場合は?
    4. Q: どの権限設定が適切かわからない場合は?
  11. 便利なエイリアスとスクリプト
    1. 便利なエイリアス設定
    2. 権限チェックスクリプト
  12. まとめ:chmodを使いこなせば、Linux管理がもっと安全に!

chmodとは?何ができる?

chmodの基本概念

chmodは「ファイルやディレクトリのアクセス権限(パーミッション)を変更する」コマンドです。

Linuxの権限システム:

  • すべてのファイル・ディレクトリには所有者が存在
  • 3つの権限(読み取り・書き込み・実行)× 3つの対象(所有者・グループ・その他)= 9つの権限設定

権限を変更できる対象

対象記号説明
所有者(user)uファイルの所有者
グループ(group)gファイルが属するグループのメンバー
その他(others)o所有者とグループ以外のすべてのユーザー
全体(all)a上記すべてを含む

3つの基本権限

権限記号ファイルの場合ディレクトリの場合
読み取りrファイル内容の表示ディレクトリ内容の一覧表示
書き込みwファイル内容の変更・削除ディレクトリ内のファイル作成・削除
実行xファイルの実行ディレクトリへの移動(cd)

実際の使用場面

よくあるシチュエーション:

  • スクリプトファイルを実行可能にしたい
  • 機密ファイルを他人から隠したい
  • Webサーバーのファイル権限を適切に設定したい
  • 共有フォルダの権限を調整したい

chmodの基本構文と使い方

2つの指定方法

chmodには2つの権限指定方法があります:

1. 数値モード(8進数)

chmod [パーミッション(3桁数字)] [ファイル名]

2. 記号モード(シンボリック)

chmod [対象][演算子][権限] [ファイル名]

演算子の種類

演算子意味使用例
+権限を追加chmod u+x file.txt
-権限を削除chmod go-r secret.txt
=指定した権限に上書きchmod a=r document.txt

オプション

オプション説明使用例
-R再帰的に適用(ディレクトリ内すべて)chmod -R 755 /home/user/
-v詳細な出力(verbose)chmod -v 644 file.txt
-c変更があった場合のみ出力chmod -c +x script.sh
--helpヘルプ表示chmod --help

数値モード(3桁数字)での指定

権限の数値表現

数値モードでは、各権限を数値で表現します:

権限数値意味
r(読み取り)4ファイル内容を読む
w(書き込み)2ファイル内容を変更
x(実行)1ファイルを実行またはディレクトリに移動

数値の組み合わせ

権限は数値を足し算して表現します:

数字権限の組み合わせ記号表示説明
74+2+1 (r+w+x)rwx読み・書き・実行すべて可能
64+2 (r+w)rw-読み・書き可能、実行不可
54+1 (r+x)r-x読み・実行可能、書き込み不可
44 (r)r--読み取りのみ
32+1 (w+x)-wx書き込み・実行可能、読み取り不可
22 (w)-w-書き込みのみ
11 (x)--x実行のみ
0なし---何も許可しない

よく使われる数値の組み合わせ

パーミッション意味用途
755rwxr-xr-x実行ファイル・ディレクトリの標準設定
644rw-r–r–一般的なファイルの標準設定
600rw——-所有者のみアクセス可能な機密ファイル
700rwx——所有者のみアクセス可能なディレクトリ
777rwxrwxrwx誰でもフルアクセス(セキュリティリスク大)
000———誰もアクセス不可

実例:数値モードでの設定

例1:スクリプトファイルの設定

chmod 755 install.sh
  • 所有者:読み・書き・実行(7)
  • グループ:読み・実行(5)
  • その他:読み・実行(5)

例2:設定ファイルの保護

chmod 600 ~/.ssh/id_rsa
  • 所有者:読み・書き(6)
  • グループ:アクセス不可(0)
  • その他:アクセス不可(0)

例3:Webサイトのファイル設定

chmod 644 index.html
  • 所有者:読み・書き(6)
  • グループ:読み取りのみ(4)
  • その他:読み取りのみ(4)

記号モード(シンボリック)での指定

記号モードの利点

記号モードは部分的な権限変更に適しています:

  • 既存の権限を維持しながら一部だけ変更
  • より直感的で理解しやすい
  • 細かい調整が可能

対象の指定

記号対象説明
uuser(所有者)ファイルの所有者
ggroup(グループ)ファイルが属するグループ
oothers(その他)所有者・グループ以外
aall(全員)すべてのユーザー(省略可)

実例:記号モードでの設定

例1:実行権限の追加

chmod u+x script.sh
# 所有者に実行権限を追加

chmod +x script.sh
# 全員に実行権限を追加(aは省略可能)

例2:権限の削除

chmod go-r secret.txt
# グループとその他から読み取り権限を削除

chmod a-w readonly.txt
# すべてのユーザーから書き込み権限を削除

例3:権限の上書き

chmod u=rwx,go=r file.txt
# 所有者:読み・書き・実行、グループ・その他:読み取りのみ

chmod a=r document.txt
# すべてのユーザーに読み取りのみを許可

例4:複雑な組み合わせ

chmod u+rw,g+r,o-rwx private.txt
# 所有者:読み・書き追加、グループ:読み取り追加、その他:すべて削除

数値モードと記号モードの使い分け

場面推奨モード理由
新規ファイルの権限設定数値モード一括で明確な権限設定
既存権限の微調整記号モード既存設定を維持しながら変更
スクリプトでの自動設定数値モード確実で予測可能
一時的な権限変更記号モード元に戻すのが簡単

chmodの実用例集

Webサーバーでの使用例

Webサイトファイルの標準設定:

# HTMLファイル
chmod 644 *.html

# CSSファイル
chmod 644 *.css

# JavaScriptファイル
chmod 644 *.js

# CGIスクリプト
chmod 755 *.cgi

# ディレクトリ
chmod 755 public_html/

開発環境での使用例

スクリプトファイルの管理:

# 開発中のスクリプト(テスト実行可能)
chmod 754 dev_script.sh

# 本番用スクリプト(グループ実行可能)
chmod 750 prod_script.sh

# ビルドスクリプト(所有者のみ実行)
chmod 700 build.sh

セキュリティ重視の設定例

機密ファイルの保護:

# SSH秘密鍵
chmod 600 ~/.ssh/id_rsa

# パスワードファイル
chmod 600 /etc/shadow

# 設定ファイル
chmod 640 /etc/mysql/my.cnf

# ログファイル
chmod 640 /var/log/application.log

共有環境での設定例

チーム開発での権限設定:

# 共有ドキュメント(チーム読み書き可能)
chmod 664 team_doc.txt

# 共有スクリプト(チーム実行可能)
chmod 775 shared_script.sh

# プロジェクトディレクトリ
chmod 775 project_dir/

# 一時ファイル(全員読み書き可能)
chmod 666 temp_file.txt

再帰的な権限設定

ディレクトリ全体の権限設定:

# Webサイト全体の設定
chmod -R 644 /var/www/html/
find /var/www/html/ -type d -exec chmod 755 {} \;

# ユーザーホームディレクトリの設定
chmod -R 700 /home/username/

# 共有データディレクトリ
chmod -R 775 /shared/data/

注意: -Rオプションは強力ですが、間違って使うと大量のファイルに影響するため、事前にls -laで確認することを推奨します。

パーミッションの確認方法

ls -l コマンドでの確認

基本的な確認方法:

ls -l filename

出力例:

-rwxr-xr-x 1 user group 1234 Oct 15 10:30 script.sh

出力の読み方:

部分意味
最初の文字ファイルタイプ(-:ファイル、d:ディレクトリ、l:リンク)
2-4文字目所有者の権限(rwx
5-7文字目グループの権限(r-x
8-10文字目その他の権限(r-x

ディレクトリ内のファイル一覧確認

# 詳細な一覧表示
ls -la

# 権限のみに注目した表示
ls -l | awk '{print $1, $9}'

# 特定のパターンのファイル確認
ls -l *.sh

数値形式での権限確認

# statコマンドで数値形式の権限確認
stat -c "%a %n" filename

# 例:755 script.sh

高度なchmodテクニック

特殊権限の設定

SUID(Set User ID):

chmod 4755 command
# 実行時に所有者の権限で動作

SGID(Set Group ID):

chmod 2755 directory
# ディレクトリ内で作成されるファイルがディレクトリのグループを継承

スティッキービット:

chmod 1755 /tmp
# ディレクトリ内のファイルを所有者のみが削除可能

複数ファイルの一括処理

findコマンドとの組み合わせ:

# 特定拡張子のファイルに一括適用
find . -name "*.sh" -exec chmod +x {} \;

# ディレクトリのみに権限適用
find . -type d -exec chmod 755 {} \;

# ファイルのみに権限適用
find . -type f -exec chmod 644 {} \;

条件付き権限変更

xargsとの組み合わせ:

# 実行権限のないスクリプトファイルを探して実行可能にする
find . -name "*.sh" ! -perm /111 | xargs chmod +x

# 権限が777のファイルを探して修正
find . -perm 777 | xargs chmod 755

注意点とトラブル回避

よくある問題と解決法

問題症状解決法
ファイルが実行できないPermission deniedchmod +x filename
ディレクトリに入れないcd: Permission deniedchmod +x directory
ファイルが編集できない読み取り専用エラーchmod +w filename
他人にファイルを見られるセキュリティリスクchmod 600 filename
Webページが表示されない403 Forbiddenchmod 644 *.html; chmod 755 directories

セキュリティのベストプラクティス

推奨する権限設定:

ファイルタイプ推奨権限理由
実行ファイル755所有者は編集可能、他は実行のみ
設定ファイル644所有者は編集可能、他は読み取りのみ
ログファイル640所有者は編集可能、グループは読み取りのみ
一時ファイル600所有者のみアクセス
SSH鍵600所有者のみアクセス(セキュリティ必須)

危険な権限設定

避けるべき設定:

権限危険な理由代替案
777誰でもフルアクセス可能755または644
666誰でも編集可能644
目的不明の777設定セキュリティホール最小権限の原則

rootユーザーでの操作注意

# 危険:システム全体に影響
sudo chmod -R 777 /

# 安全:特定ファイルのみ
sudo chmod 644 /etc/specific_config

実践的なワークフロー

新しいプロジェクトでの権限設定

手順1:ディレクトリ構造の作成

mkdir -p project/{src,docs,scripts,config}

手順2:基本権限の設定

# ディレクトリの権限設定
chmod 755 project/
chmod 755 project/*

# ソースファイルの権限
chmod 644 project/src/*

# スクリプトファイルの権限
chmod 755 project/scripts/*

# 設定ファイルの権限
chmod 600 project/config/*

サーバー移行時の権限復元

権限のバックアップ:

# 権限情報をファイルに保存
find /var/www -printf "%m %p\n" > permissions_backup.txt

権限の復元:

# バックアップから権限を復元
while read perm path; do
    chmod "$perm" "$path"
done < permissions_backup.txt

よくある質問と回答

Q: chmodとchownの違いは?

A: 役割が異なります

コマンド変更対象
chmod権限(パーミッション)chmod 755 file
chown所有者・グループchown user:group file

Q: ディレクトリの実行権限(x)の意味は?

A: ディレクトリへの「移動(cd)」権限です

# 実行権限なし:ディレクトリに入れない
chmod 644 mydir  # エラー
cd mydir

# 実行権限あり:ディレクトリに入れる
chmod 755 mydir  # 成功
cd mydir

Q: 権限を間違えて設定してしまった場合は?

A: 段階的に修正しましょう

# 1. 現在の権限を確認
ls -la problematic_file

# 2. 所有者権限を安全な状態に戻す
chmod u+rw problematic_file

# 3. 適切な権限に設定
chmod 644 problematic_file

Q: どの権限設定が適切かわからない場合は?

A: 最小権限の原則に従ってください

  1. 所有者のみアクセスが必要 → 600または700
  2. チームでの共有が必要 → 664または775
  3. 公開が必要 → 644または755

便利なエイリアスとスクリプト

便利なエイリアス設定

# ~/.bashrc に追加
alias ll='ls -la'
alias lh='ls -lah'
alias perm='ls -la | awk "{print \$1, \$9}"'

# 権限確認用
alias checkperm='stat -c "%a %n"'

# よく使う権限設定
alias mkexec='chmod +x'
alias mksafe='chmod 600'
alias mkpublic='chmod 644'

権限チェックスクリプト

#!/bin/bash
# permission_check.sh

echo "=== 権限チェックツール ==="
echo "ファイル/ディレクトリ: $1"

if [ -f "$1" ]; then
    echo "タイプ: ファイル"
elif [ -d "$1" ]; then
    echo "タイプ: ディレクトリ"
else
    echo "エラー: ファイルまたはディレクトリが見つかりません"
    exit 1
fi

echo "権限(記号): $(ls -ld "$1" | cut -d' ' -f1)"
echo "権限(数値): $(stat -c "%a" "$1")"
echo "所有者: $(stat -c "%U" "$1")"
echo "グループ: $(stat -c "%G" "$1")"

まとめ:chmodを使いこなせば、Linux管理がもっと安全に!

今回学んだ重要なポイント:

コマンド例用途
chmod 755 file実行ファイルや公開ディレクトリの標準設定
chmod 644 file一般的なファイルの標準設定
chmod +x fileファイルを実行可能にする
chmod -R 755 dir/ディレクトリ内すべてに再帰的適用
ls -la現在の権限を確認

実際に使ってみよう:

  1. 基本的な権限確認から始める(ls -la
  2. 簡単な権限変更を練習(chmod +x
  3. 数値モードで一括設定を試す(chmod 644
  4. セキュリティを意識した設定を実践

セキュリティのポイント:

  • 最小権限の原則:必要最小限の権限のみ付与
  • 定期的な権限チェック:不適切な権限がないか確認
  • 機密ファイルの保護:600または700で厳重に管理

コメント

タイトルとURLをコピーしました