WordPressを移行する際、長い道のりを経てやっと終わった・・・!と思ったら
管理画面にログインできなかったり、メディアをアップロードできなかったりするときって、ありませんか?
そういうときは大抵の場合、「パーミッション」というヤツが悪さをしているんです!
今回は、パーミッションってそもそもなに?どういう役割を果たしているの?
rwx---r-xといった謎の英数字の正体から、パーミッションの変更方法まで、ご紹介していきたいと思います。
目次
パーミッションとは?
permission(英):「許可・権限」といった意味を持ちますが、その名の通り「許可されているかどうか」を示します。要は「ファイルやフォルダへのアクセス権」のことですね。
ここで重要になってくるのが「誰」に「どういう」許可(パーミッション)を与えているのかです。
WordPressで画像をアップロードできなかったりするのは、「自分」に「画像をアップロードする」許可・権限がなかったということになります。
パーミッションはどこで確認できるの?
WinSCPなどのFTPソフトで、簡単に確認できます。
また、各ディレクトリ・ファイルのプロパティでも、それぞれのパーミッションを確認することができます。
謎の暗号1、”rwx---r-x”
実は、この宇宙人にしか読めないような暗号が「誰に」「どんな」許可を与えているのか、を表しています。
まずは、「どんな」許可を与えているのか解読していきましょう!
「どんな」許可を与えているのか
ウェブ上では、基本的に以下の3つの動作が可能です。
「読み取り」「書き込み」「実行」
これらのそれぞれの頭文字をとって、「どんな」許可を与えているのかを表しています。
(readのr, writeのw, execのx)
それぞれの意味は以下の通り。
「書き込み」・・・ファイルの中身を変更する権限
「実行」・・・ファイルを実行する(プログラムを実行する)権限
これで、英数字の表す意味を理解できました。
次に「誰に」の部分を見ていきましょう!
「誰に」与えているのか
ウェブ上の「誰に」という概念は、3種類に分けることができます。
の3つです。この「グループ」という概念がちょっと分かりづらいかなと思いますが、もしこの概念がなければ
複数人でファイルを管理したりすることができなくなってしまいます。これは結構不便ですよね。
なので「自分が属する」グループを設定しているのです。
“rwx---r-x”は、“rwx、---、r-x”の3つのブロックに分かれ、それぞれ「自分」「自分が属すグループ」「全員」のパーミッションを示しています。
(-はその権限はないという意味です)
なので、”rwx---r-x”は
自分が属すグループ:権限なし(---)
その他全員:「読み取り」と「実行」の2つの権限がある(r-x)
のようになります。
以上「誰に」「どんな」許可を与えているのかを、”rwx---r-x”から読み取ることができました!
謎の暗号2、”0705”
プロパティにみられる謎の数字”0705”などは、このよく分からないアルファベットのみで示された”rwx---r-x”を
人間が見やすいものに置き換えたものになります。
(確かにアルファベットとハイフンよりは、数字のほうが目に優しい気がします・・・(?))
どのような法則で数字に置き換えているかというと、「2進数」を「8進数」に変換した数字を使っています。
読み込み | 書き込み | 実行 | 8進数 |
---|---|---|---|
1 | 1 | 1 | 7 |
1 | 1 | 0 | 6 |
1 | 0 | 1 | 5 |
1 | 0 | 0 | 4 |
0 | 1 | 1 | 3 |
0 | 1 | 0 | 2 |
0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 |
パーミッションがある場合は1、ない場合は0です。
それでは、先ほど挙げた”rwx、---、r-x”を数字で表すと
ユーザー | 読み込み | 書き込み | 実行 | 8進数 |
---|---|---|---|---|
自分 | 1 | 1 | 1 | 7 |
グループ | 0 | 0 | 0 | 0 |
全員 | 1 | 0 | 1 | 5 |
よって、705となります。
さらに4桁で表す決まりなので、最初に0を付けて”0705”となります。
ちなみに!
なぜ「自分が属すグループ」でなく「全員」に権限を与えているかというと、
共用サーバーの場合、他人と同じグループに設定されている可能性があるため、他人から「プログラムを盗み見されてしまう」のを防ぐためなのです。
では「全員」からは「盗み見」されないのか?と思うかもしれませんが、phpファイルは「全員」からは中身が見えないような設定になっています。
パーミッションの変更方法
パーミッションの意味・読み方が分かったところで、本題のパーミッションの変更方法を見ていきましょう!
WinSCPのプロパティで直接変えられるのですが、この方法では「パーミッション」のみの変更で「ユーザー」を変更することはできません。
例えばパーミッションを777に変更すると、一見解決したように見えますが、
この設定では誰でもアクセス&書き込み&実行ができてしまいますので、セキュリティ的に脆弱性があります。
ですので、ユーザーを変更できるプロンプトでの方法をお勧めします。
叩くコマンドは以下の通り。
1 | chown -R apache:apache 実行させるディレクトリのパス |
chownというのは、オーナー(ユーザー)を変更するコマンドです。
-R で、ディレクトリだけでなくディレクトリに含まれる全ファイルを指定することができます。
サーバーに書き込むのはapache(webサーバーのソフトウェア)の仕事なので、apacheをユーザーに変更してあげます。
ここで注意したいのは、特定のディレクトリ・ファイルに対して何かを実行したいときにはそのディレクトリ・ファイルのある階層まで移動するということ!
普段使っているWindowsなどの身近なOSでも、やっていることはおんなじです。
例えば、WordPressの管理画面に
というようなエラー文が出ている場合、まずuploadsのあるディレクトリまでコマンドcdで移動し、先ほどのコマンドを叩きます。
1 | chown -R apache:apache uploads |
この方法で、CAPTCHA認証の画像が表示されない!メディアがアップロードできない!
といった問題が解決できるかと思います。
まとめ
以上、パーミッションの意味と変更方法をご紹介しました。
暗号のようなサーバー言語を理解できると、またひとつサーバー君と近しくなれた気がしますね。
パーミッションはセキュリティの観点からとても重要なものなので、ここを抑えることでWordPressの安全性を高めることができます。
またサーバーならではの「ユーザー」の概念など、Webに携わる者として知っておいて損はない情報も学ぶことができたのではないでしょうか。
今回の記事がご参考になりましたら幸いです。