とりあえず「chmod 777」はなぜ大罪なのか?


結論(BLUF)

システムが動かないからといって、原因調査をせずに chmod 777(全ユーザーに読み書き実行の権限を付与)を実行することは、インフラエンジニアとして絶対にやってはいけない大罪です。常に「最小権限の原則」に従い、適切な所有者とグループを設定してください。

現場のヒヤリハット:動けばいいという悪魔の囁き

新人エンジニアが初めてWebサーバー(NginxやApache)を構築した時、よくこんな壁にぶつかります。 「ファイルは置いたのに、ブラウザで見ると 403 Forbidden(閲覧権限なし)になってしまう…!」

焦った新人は、ネットで検索して見つけた魔法のコマンド chmod -R 777 /var/www/html を叩きます。するとエラーは消え、画面が表示されました。「よし、解決した!」と報告し、そのまま本番公開へ。

数日後、そのサーバーは第三者に悪意のあるスクリプトをアップロードされ、スパムメールの送信台(踏み台)にされてしまいました。 お客様からは大クレーム、システムは即時シャットダウンという大惨事です。

なぜそのミスが起きるのか?(技術的な背景)

Linuxのパーミッション(権限)は、「所有者(User)」「グループ(Group)」「その他全員(Others)」の3つの層に分かれています。

777 という数字は、「その他全員(=インターネット上の見知らぬ誰か)」に対しても、「ファイルを書き換える権限(Write)」と「プログラムとして実行する権限(Execute)」を許可している状態です。つまり、「誰でも自由にこのサーバーにウイルスを置いて、自由に実行していいですよ」とドアを全開にしているのと同じです。

正しい対処法は、権限を緩めることではなく「Webサーバーの実行ユーザー(例: nginxwww-data)が誰なのか」を特定し、chown で正しい所有者を設定することです。

プロの解決策:最小権限の原則

実務において、ファイルやディレクトリに付与すべき基準となるパーミッションは以下の通りです。

  • ディレクトリ(フォルダ): 基本は 755(所有者のみ書き込み可能、他は閲覧と移動のみ)
  • ファイル: 基本は 644(所有者のみ書き込み可能、他は閲覧のみ)

これ以外の特殊な権限(775など)が必要な場合は、必ず「なぜその権限が必要なのか」を設計書に明記します。

「俺の道具箱」で安全に確認しよう

「755って、具体的に誰に何の権限がある状態だっけ?」と不安になった時は、頭で暗算せずに必ずツールで視覚的に確認してください。

👉 Linux パーミッション計算機

このツールを使えば、数字を入れるだけで「誰が何を実行できるのか」が一目で分かり、誤って不要な権限を付与するミスを未然に防ぐことができます。