Linuxでファイルやディレクトリのパーミッション(権限)を設定するとき、よく出てくるコマンドが chmod 777
です。
でも実は、多くの初心者が疑問に思っています:
「777ってそもそもどういう意味?」
「とりあえず777にすれば動くって言われたけど大丈夫?」
「なぜ危険だと言われるの?」
「正しい権限設定の方法は?」
この記事では、chmod 777
の意味をわかりやすく解説し、危険性や安全な運用方法についても詳しく紹介します。
chmod 777 の意味を理解しよう
パーミッション(権限)とは
まず、Linuxのパーミッションについて基本から説明します。
Linuxでは、すべてのファイルやディレクトリに「誰がどんなことをできるか」を決める権限設定があります。
数字の内訳と仕組み
chmod 777
の 777
は、**「ユーザー」「グループ」「その他」**に対する権限を数字で表したものです。
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にせず、段階的に権限を調整
- 本当に必要な権限だけを付与
- 定期的に権限設定を見直す
コメント