これでパーミッションの事が理解できる!パーミッションについて分かりやすくまとめてみました。
はじめに
Web上のセキュリティを考慮するうえで、パーミッションの知識は必要不可欠です。
パーミッションを理解して適切な設定にしておくことで、ハッキングによるサイトの改竄(かいざん)などを未然に防ぐことができます。
一度改竄された経験がある方なら分かると思いますが、サイト改竄からの復旧は予想外の多大な労力を費やしますし、また不安感やイライラを募らせる原因にもなります。
そのような問題を未然に防ぐことは非常に重要な事なのです。
しかしながら、パーミッションについて学んでいくと、いまいち理解できない点なども出てきますよね。
今回の記事では、パーミッションの種類や使用例も踏まえてまとめてみました。
パーミッションとは
パーミッションとは、UNIXのシステムにおけるファイルやディレクトリ(※=フォルダ 以下ディレクトリと表記)に対するアクセス権を定義する保護モードの事をいいます。
管理するファイルやディレクトリを他人に勝手に書き換えられたり削除されたりしないようにする為にこの機能があります。
解釈にもよりますが、権限や属性と呼ばれるケースもあります。
所有権
所有権は、「所有者(user)」、「グループ(group)」、「その他のユーザー(other)」という3種類があります。
名称 | 説明 | 類似名称 |
---|---|---|
所有者(user) | 所有者とは、ファイル/ディレクトリをアップロード・生成したユーザー。持ち主。 | オーナーなど |
グループ(group) | 同サーバーを利用できるユーザー | ユーザー/グループなど |
その他のユーザー(other) | その他すべてのユーザー | すべてのユーザー、その他など |
以下、混乱しやすいので少しまとめてみました。
所有者(user)について
・ファイルを修正しても所有者は変更されない。
グループ(group)について
・UNIXには、ユーザー個別認識用のユーザーネーム(ログインネーム)と、ユーザーが所属するグループ(グループネーム)がある。
・パーミッションの設定は、グループに所属する人に対しての各権利を設定する事ができる。
その他のユーザー(other)について
・Web上では一般閲覧者の事を意味する。
実行権
実行権には「読み取り(read)」、「書き込み(write)」、「実行(execute)」の3種類あり、ファイル、ディレクトリに対する実行喧は下記の通りです。
名称 | ファイル | ディレクトリ |
---|---|---|
読み取り(read) | ファイルの表示 | リストの表示 |
書き込み(write) | ファイルの上書き・削除 | ディレクトリに新規ファイルを作成可能 |
実行(execute) | 実行ファイル(プログラム、CGIなど) | カレントディレクトリ(現在場所)にすることができる |
以下、混乱しやすいので少しまとめてみました。
読み取り(read)について
・ファイルを読む権利がなくても、ファイルネームを表示する事は可能である。
・ディレクトリに読む権利がない場合は、そのディレクトリに移動できない。
書き込み(write)について
・ディレクトリに書き込む権利がない場合、そのディレクトリ内で新規ファイルを作成できない。
・書き込む権利がない場合、ファイルまたはディレクトリの削除はできない。
実行(execute)について
・実行する権利を有効にするには、読み取りる権利も必要である。
・CGIのようなサーバーサイドでスクリプトを動作させる事ができる。
・HTMLやCSSなどは、動作しないため、「実行」を設定しても特に意味はない。
UNIXにおけるパーミッションの表現
読み取り、書き込み、実行は、以下の記号と数字で表現されます。
記号 | 数字 | |
---|---|---|
読み取り(read) | r | 4 |
書き込み(write) | w | 2 |
実行(execute) | x | 1 |
何もできない |
– |
0 |
これを各所有権ごとに羅列して表示します。
d | r | w | x | r | w | x | r | w | x |
---|---|---|---|---|---|---|---|---|---|
ディレクトリ | 読み | 書き | 実行 | 読み | 書き | 実行 | 読み | 書き | 実行 |
所有者 | グループ | その他のユーザー |
表現は、主に「属性値」というものを使用します。
属性値とは、それぞれの所有権ごとの数字を足して、それを3桁の数値で表したものです。
上記をもとに、表現例を見てみましょう。
読むだけのファイル(HTML、画像ファイルなど)
「rw-r–r–」
記号 | r | w | – | r | – | – | r | – | – |
数字 | 4 | 2 | 0 |
4 |
0 | 0 | 4 | 0 | 0 |
属性値 | 6 (4+2+0) |
4 (4+0+0) |
4 (4+0+0) |
||||||
所有者 | グループ | その他のユーザー |
この場合、パーミッションは644(rw-r–r–)という表現になります。
FTPでファイルをサーバーにアップする際、多くの場合はデフォルトで604(rw—-r–)となっています。
ディレクトリは、755(rwxr-xr-x)が多くの場合デフォルトです。
主なパーミッション設定例
名称 | 用途 | 具体例 |
---|---|---|
777(rwxrwxrwx) | CGIが格納されているディレクトリ | CGIで必要な場合。※セキュリティ上かなり危険。 |
755(rwxr-xr-x) | CGI実行ファイルや通常のディレクトリなど | アクセスカウンタ等(最近は見かけませんが^^;) |
666(rw-rw-rw-) | データ記録など読み書き可能なファイル | 掲示板等 |
644(rw-r–r-) | 読むだけのファイル |
HTML、CSS、JavaScript、画像ファイル等 |
グループを設定していなければ、2桁目の数字は「0」にしておいた方がセキュリティ上安心です。
ちなみに、777(rwxrwxrwx)は、すべての人に実行権がある事になるため、セキュリティ上ではこの設定は殆どの場合避ける必要があります。
パーミッションを変更するには
パーミッションを変更する場合はFTP機能のついたソフト等で変更できます。
主なFTP機能付きソフトとその表示例は下記をご参照ください。
ソフト名 | 表示 |
---|---|
FFFTP | |
DreamWeaver | |
エクスプローラー(win) | |
Yummy FTP |
パーミッション変更のためには、FTPにてそのサーバーにログインしておく必要があるため、当然ですが接続サーバー名、FTP ID、パスワードが必須となります。
そのほか、SSHシェルアクセス等による方法もあります。レンタルサーバーの場合は、サーバー上でSSHを利用するかどうかの設定を選択できます。下記はエックスサーバーのSSH設定画面です。
そもそも、そのサーバーが所有者であるかどうかを判断するのは、サーバーにアクセスするFTP IDであるため、そのFTP IDとパスワードの管理はしっかりと行う必要があります。
WordPressにおけるパーミッション例
パーミッション例
では、WordPressではどのようなパーミッションにすれば良いのか、例を下記にまとめてみました。
種類 | パーミッション | 説明 |
---|---|---|
wp-config.php | 400 or 600 | 400は共有サーバーで設定できないケースあり |
.htaccess | 604 or 606 | パーマリンク設定が出来るようにするには606 |
その他のファイル | 604 | |
その他のディレクトリ | 705 |
管理画面でテーマ編集やファイルアップロードができない場合は、「theme」や「upload」を707にすると良い。 |
777(rwxrwxrwx)は、すべての人に実行権がある事になるため、この設定は避けましょう!
パーミッション変更後の確認事項
パーミッション変更後、動作に不具合が出る可能性があります。下記の項目をチェックしておきましょう。
・WordPress管理画面へのログイン
・記事の投稿及び画像のアップロード
・プラグインの追加・削除
・テーマ変更
まとめ
今回、このようにパーミッションについてまとめてみたのは、私の知人のレンタルサーバーがハッキングされた事がきっかけでした。
同サーバー上に複数のサイト(WordPressや普通のHTML)を構えていたのですが、それらの殆どがハッキングに遭い、定期的に書き換えられてしまう現象が続いていました。
原因を探っていくにあたり、当然のようにパーミッション設定も見直し要素に挙がるのですが、その知識がものすごく曖昧だったため、今回まとめてみました。
WordPressはファイル数も多く、どのファイルやディレクトリがどのような役割を果たしているのかをある程度理解する必要があります。それらは主にwp-config.phpだったり、wp-contentフォルダだったりするのですが、それらに対してどのようにパーミッション設定をするのか、今回整理できたかなと思います。
参考
ファイルパーミッションの変更(WORDPRESS Codex)
UNIXの基礎知識 パーミッション編(ドルフィンインターネット)
パーミッションの意味と使い分け(MdN DESIGN INTERACTIVE)
公開日:2018年1月29日
最終更新日:2018年2月5日