権限エラーが出たらこれ!chown・chmodの基本と安全な直し方

ファイル操作/圧縮

LinuxやWordPress運用で突然の権限エラーに直面したとき、原因を最短で見極めて安全に直す流れを身につければ復旧は早くなります。

この記事ではls -lでの確認からchownchmodによる最小限の修正までを、迷わず実行できる定型手順にまとめます。

詳細な流れを横断的に確認したい場合は Linuxトラブルシューティング総合ハブ から全体像をご覧いただけます。

よくある権限エラーの症状

WordPressでのアップロード失敗や更新エラー

WordPressでは、画像やプラグインをアップロードしようとした際に「アップロードに失敗しました」「ディレクトリを作成できませんでした」と表示されることがあります。これは多くの場合、wp-content/uploads ディレクトリの所有者や権限が正しく設定されていないことが原因です。

Linuxでの「Permission denied」「Operation not permitted」

Linux環境では、シェルでファイル操作をしたときに次のようなエラーが出ることがあります。

$ cat /var/www/html/config.php
cat: /var/www/html/config.php: Permission denied

あるいは削除・移動時に次のように表示されるケースもあります。

$ rm /etc/nginx/nginx.conf
rm: cannot remove '/etc/nginx/nginx.conf': Operation not permitted

これらは権限が不足しているか、所有者が異なっている場合に発生します。

ls -lで権限と所有者を確認する方法

所有者・グループの見方

権限エラーが出たら、まずは ls -l コマンドで対象ファイルやディレクトリの所有者と権限を確認します。

$ ls -l /var/www/html/wp-content
drwxr-xr-x  5 www-data www-data  4096 Oct  2 10:30 uploads
-rw-r--r--  1 www-data www-data   234 Oct  2 10:30 index.php

左から「パーミッション」「リンク数」「所有者」「グループ」「サイズ」「更新日時」「ファイル名」が表示されます。
例では uploads ディレクトリの所有者は www-data、グループも www-data になっています。

読み取り・書き込み・実行権限の確認ポイント

先頭の drwxr-xr-x が権限を表します。

  • 先頭の d はディレクトリを意味します。
  • 続く9文字は3つに分割され、r=読み取り、w=書き込み、x=実行を示します。

例:rw-r--r--

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

書き込みがないディレクトリはアップロードできず、実行権限がないとスクリプトが動かない場合があります。

よくあるエラー原因のパターン

  • 所有者がrootのまま → Webサーバーユーザー(例: www-data)が書き込めずエラー。
  • 権限が狭すぎる → 例:600 に設定されていて他ユーザーが参照できない。
  • 権限が広すぎる → 例:777 にして一時的に動くが、セキュリティリスクが大きい。

この確認を踏まえたうえで、chownchmod で正しく修正します。

chown・chmodでの安全な修正手順

所有者を直す例(chown -R www-data:www-data)

WordPressのファイルは通常、Webサーバー(例:www-data ユーザー)が読み書きできる必要があります。所有者が root のままだとアップロードや更新に失敗します。その場合は以下のように修正します。

# 所有者とグループを www-data に変更(再帰的に)
sudo chown -R www-data:www-data /var/www/html

これで ls -l で確認すると、所有者とグループが揃い、WordPressが正しく動作するようになります。

権限を直す例(chmod 644 / chmod 755)

ファイルやディレクトリの権限が不適切な場合は、以下のように直します。

# ファイルを644に(所有者は読み書き可、他は読み取りのみ)
sudo find /var/www/html -type f -exec chmod 644 {} \;

# ディレクトリを755に(所有者は読み書き実行可、他は読み取り+実行のみ)
sudo find /var/www/html -type d -exec chmod 755 {} \;

これで「必要最小限の権限」に整えることができます。

数値指定と記号指定の違い

権限は数値でも記号でも指定可能です。

  • 数値指定
    • 644 = 所有者にrw、グループとその他にr
    • 755 = 所有者にrwx、グループとその他にrx
  • 記号指定 chmod u+w file.txt # 所有者に書き込み権限を追加 chmod g-r file.txt # グループから読み取り権限を削除 chmod o= file.txt # その他の権限を全て削除

一括修正では数値指定が便利ですが、個別調整には記号指定が直感的です。

まとめ:権限修正の基本ルール

必ず確認してから変更する

権限エラーが出たときは、まず ls -l で所有者と権限を確認してから修正します。原因を見極めずに chmod 777 を多用すると、一時的に動いてもセキュリティリスクを抱え込むだけです。確認 → 修正 → 再確認の流れを徹底することが重要です。

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

WordPressやLinux運用では、

  • ファイルは基本 644
  • ディレクトリは基本 755
    を守れば多くのケースで安定して動作します。特別な要件がある場合のみ例外的に変更し、常に「最小権限の原則」を意識しましょう。

あわせて、サーバーの他のトラブルにも備えておくと安心です。例えば ディスク逼迫の初動対応500エラーの切り分け方法 といった記事も参考になります。

権限エラーは定型対応を覚えておけば慌てず直せます。日常の運用フローに組み込み、トラブルを最短で解決できる体制を整えましょう。

参照リンク

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする