Linuxのchmod 777とは?意味と危険性、正しい使い方をわかりやすく解説

Linux

Linuxでファイルやディレクトリのパーミッション(権限)を設定するとき、よく出てくるコマンドが chmod 777 です。

でも実は、多くの初心者が疑問に思っています:

「777ってそもそもどういう意味?」
「とりあえず777にすれば動くって言われたけど大丈夫?」
「なぜ危険だと言われるの?」
「正しい権限設定の方法は?」

この記事では、chmod 777 の意味をわかりやすく解説し、危険性や安全な運用方法についても詳しく紹介します。

スポンサーリンク

chmod 777 の意味を理解しよう

パーミッション(権限)とは

まず、Linuxのパーミッションについて基本から説明します。

Linuxでは、すべてのファイルやディレクトリに「誰がどんなことをできるか」を決める権限設定があります。

数字の内訳と仕組み

chmod 777777 は、**「ユーザー」「グループ」「その他」**に対する権限を数字で表したものです。

3つの桁の意味

  • 最初の7 → 所有者(owner/user)の権限
  • 2番目の7 → 所有グループ(group)の権限
  • 3番目の7 → その他のユーザー(other)の権限

数字と権限の対応表

それぞれの数字は、3つの基本権限の組み合わせを表しています:

数字権限の内容文字表記説明
7読み取り+書き込み+実行rwxすべての操作が可能
6読み取り+書き込みrw-ファイルの閲覧と編集が可能
5読み取り+実行r-xファイルの閲覧と実行が可能
4読み取りのみr–ファイルの閲覧のみ可能
3書き込み+実行-wx特殊な用途(あまり使わない)
2書き込みのみ-w-特殊な用途(あまり使わない)
1実行のみ–xプログラムの実行のみ可能
0権限なし何もできない

数字の計算方法

権限の数字は、次のように計算されます:

  • 読み取り権限(read) = 4
  • 書き込み権限(write) = 2
  • 実行権限(execute) = 1

例えば、「読み取り + 書き込み + 実行」なら 4+2+1=7 になります。

つまり chmod 777「すべてのユーザー(所有者、グループ、その他)に読み・書き・実行をすべて許可する」 という意味になります。

実例:chmod 777 の使い方

ファイルに適用する場合

chmod 777 sample.txt

これで sample.txt は誰でも読み書き実行できる状態になります。

ディレクトリに適用する場合

chmod 777 /var/www/html

ディレクトリに適用すると、そのディレクトリ内でのファイル作成、削除、実行がすべてのユーザーに許可されます。

複数ファイルに一括適用

chmod 777 *.txt

現在のディレクトリ内のすべての .txt ファイルに同じ権限を設定できます。

再帰的に適用(サブディレクトリにも適用)

chmod -R 777 /path/to/directory

-R オプションを使うと、指定したディレクトリ以下のすべてのファイルとディレクトリに同じ権限が適用されます。

chmod 777 の危険性

一時的に「動かないから777にしたら動いた」という話はよくあります。しかし、これはセキュリティ上とても危険です。

具体的なリスク

不正ファイルの設置 サーバー上で誰でも書き込み・実行できると、悪意のあるユーザーに不正なプログラムやスクリプトを置かれるリスクが高まります。

Webサイトの改ざん Webサーバーのディレクトリを777にすると、第三者にWebページを書き換えられる恐れがあります。

データの漏洩や削除 重要なファイルが誰でもアクセス可能になり、機密情報の漏洩や意図しないファイル削除が起こる可能性があります。

システムの乗っ取り 実行権限を与えすぎると、システム全体が乗っ取られるリスクもあります。

実際の被害例

  • Webサイトに悪意のあるコードを埋め込まれる
  • 顧客データベースへの不正アクセス
  • サーバーリソースの不正利用(暗号通貨マイニングなど)
  • フィッシングサイトの踏み台として悪用

chmodの安全な使い方

最小権限の原則

Linuxでは「最小権限の原則」が基本です。必要最小限の権限だけを与えることで、セキュリティリスクを大幅に減らせます。

一般的な安全な権限設定

通常のファイル

chmod 644 file.txt
  • 所有者:読み書き可能
  • グループ・その他:読み取りのみ

実行ファイル・スクリプト

chmod 755 script.sh
  • 所有者:読み書き実行可能
  • グループ・その他:読み取り実行可能

ディレクトリ

chmod 755 /path/to/dir
  • 所有者:すべての操作可能
  • グループ・その他:閲覧と移動のみ

設定ファイル(機密情報あり)

chmod 600 config.conf
  • 所有者のみ:読み書き可能
  • グループ・その他:アクセス不可

用途別の推奨権限設定

Webサーバーのファイル

  • HTMLファイル:644
  • PHPスクリプト:644
  • 画像ファイル:644
  • アップロード用ディレクトリ:755(必要に応じて775)

システム管理用

  • ログファイル:644
  • 実行可能なスクリプト:755
  • 設定ファイル:600

共同作業する場合

chmod 664 shared_document.txt
chmod 775 shared_directory

グループメンバーにも編集権限を与える場合の設定です。

権限を確認する方法

ls -l コマンドで確認

ls -l filename

結果の見方:

-rw-r--r-- 1 user group 1024 Jan 1 12:00 filename

最初の部分 -rw-r--r-- が権限を表しています:

  • 最初の文字:ファイルタイプ(- はファイル、d はディレクトリ)
  • 次の3文字:所有者の権限(rw-)
  • 次の3文字:グループの権限(r–)
  • 最後の3文字:その他の権限(r–)

stat コマンドでより詳しく確認

stat filename

数字形式でも権限が表示されるため、chmod コマンドで設定した値を確認できます。

トラブルシューティング

権限設定後にアクセスできない場合

原因 権限を厳しくしすぎて、必要なアクセスができなくなった場合です。

対処法

# 所有者に読み書き権限を戻す
chmod 644 filename

# ディレクトリの場合
chmod 755 directory

Webアプリケーションが動かない場合

原因 アプリケーションがファイル書き込みを必要としているのに、権限が不足している場合です。

安全な対処法

# 特定のディレクトリのみ書き込み権限を付与
chmod 775 /var/www/uploads

# ファイル所有者をWebサーバーに変更
chown www-data:www-data /var/www/uploads

777にする前に、本当に必要な権限だけを段階的に付与しましょう。

よく使うchmodコマンド例

コマンド説明用途
chmod 777 fileすべてのユーザーにフル権限(危険)最後の手段のみ
chmod 755 dir所有者が書き込み可、他は閲覧実行可ディレクトリの標準設定
chmod 644 file所有者が書き込み可、他は閲覧のみファイルの標準設定
chmod 600 file所有者のみアクセス可機密ファイル
chmod +x script実行権限を追加スクリプトファイル
chmod -w file書き込み権限を削除誤編集防止

まとめ

chmod 777の重要なポイント

  • chmod 777 はすべてのユーザーにフル権限を与える設定
  • 便利だが非常に危険なので、最後の手段として使用
  • セキュリティリスクが高く、本番環境では避けるべき

安全な権限管理のコツ

  • 最小権限の原則を守る
  • ファイルは644、ディレクトリは755が基本
  • 機密ファイルは600で所有者のみアクセス可能に設定
  • 権限変更前後は ls -l で確認する

トラブル時の対応

  • いきなり777にせず、段階的に権限を調整
  • 本当に必要な権限だけを付与
  • 定期的に権限設定を見直す

コメント

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