はじめに
「UNIX、LINUX系のシステムにたずさわる人は、ファイルやディレクトリのパーミッションを知らずしてシステム構築はできないよ。」
そう言うと、
「え~、私はブログやってるだけだから関係ないよ~」
なんて声が聞こえてきそうです。
でもね。
ワードプレスでブログ構築しようと思ったら、ワードプレスはPHPというプログラムで主に作られてますからね。
そのPHPが載っているサーバはLINUX系のOSのものがほとんど。
そして、LINUXはUNIXの系譜をついだオープンソースのOSなのです。
そう。したがって、知らず知らずのうちにあなたはUNIX系のシステムを運用しちゃってるんですね。
しかも、ワードプレスのブログを構築していくと、かならずファイルやディレクトリのパーミッション周りでつまづくことがあるはず。
そろそろ「パーミッション」について根本的に理解しちゃいましょう。
パーミッションてなによ?
パーミッションとは、
です。
これだけじゃよくわかんないですね。
ファイルもディレクトリもすべてパーミッションが設定されているんですが、そのファイルやディレクトリに対して、
だれが何をできるか
といったルールが定義されているものなんですね。
これがないと、サーバにおいてある大切なファイルを見ず知らずの第三者に見られてしまったり、改ざんされたりするおそれがあるわけです。
だからセキュリティ的にも非常に重要なのが、このパーミッションなんですね。
ものすご~く重要なんです!
パーミッションの仕組み
ファイルやディレクトリに設定されるパーミッションは、ルール上、以下ユーザーに対して権限を定義する形で作られます。
グループ
その他
上記3種類のユーザーに対して、「読み(read)」「書き(write)」「実行(execute)」のうち、どれを許可するかを決めるわけです。
このファイルやディレクトリに対して設定されるパーミッションの表記は2種類あり、
・八進表記
のいずれかで表されます。
パーミッションの記号表記
記号表記は、「読み(read)」「書き(write)」「実行(execute)」のアルファベットの頭文字の羅列で表現します。
たとえば、あるファイルに対して、
所有者は「読み書き実行すべて」でき、グループのユーザーは「何もできず」、その他のユーザーは「読みと実行」のみできるというパーミッションを設定するとします。
すると、ファイルに設定するパーミッションを記号表記にすると、
となるわけですね。
また、すべてのユーザーがフルに権限を実行できるなら、
となるわけです。
このパーミッションの記号表記は、FTPサーバにアクセスしたり、コマンドで、「ls -l」コマンドを打つことでよく見る、この部分ですね。
ちなみに、パーミッションの前にあるアルファベットはディレクトリやファイルなどを意味します。
例としては、
d : ディレクトリ
l : シンボリックリンク
こんな感じですね。
パーミッションの八進数表記
こんどは八進表記のパーミッションですね。
こちらは、コマンドを叩いてファイルやディレクトリのパーミッションを変更するときによく使いますね。
八進表記でのパーミッションは
のように表現されます。
では、この数字が何を意味しているかというと、
読み、書き、実行の権限ごとに数字が割り振られているんです。
こんな感じです。
読みが4、書き込みが2、実行が1ですね。
この権限を所有者、グループ、その他に割り振ります。
カンタンですね。
あるファイルに
というパーミッションを付けたければ、
グループ:4
その他: 0
結果、「740」になるわけですね。
実際にファイルのパーミッションを変更する場合は、コマンドを叩きます。
たとえば、
index.htmlというファイルのパーミッションがもともと
だったとして、
こちらをグループの権限を無くして、その他のユーザーに閲覧、実行だけを許可するパーミッションに変更したいときは、以下のようなコマンドを書きます。
#sudo chmod 705 index.html
といった感じですね。
こちらの八進表記のほうがよく使うと思いますが、記号表記でコマンドを打つことも可能です。
その時は、以下のような形です。
#sudo chmod o-w index.html #sudo chmod g-rwx index.html
「chmod」の次にアルファベットと+-表記で増減したいパーミッションを記載します。
アルファベットの意味は以下ですね。
g: グループ
o: その他ユーザー
a: 上記3つすべて
こんな感じで八進表記が苦手な人でもパーミッション変更はできますが、まぁ八進表記のほうがシンプルでカンタンだとは思います。
読み書き実行の意味
こんな感じでファイルやディレクトリのパーミッションの仕組みは出来上がっていて、パーミッション変更なんかも簡単にできるってことがわかってもらえたと思います。
でも、そもそも「読み」「書き」「実行」の意味のほうが重要なんですよね。
以下、カンタンにまとめると、
書き(write): ファイル、ディレクトリの書き換え、編集権限。削除もできる
実行(execute): プログラムの実行権限
となっています。
結果、パーミッションを変更してセキュリティ的に強いサイトを作りたい!と思って、本来すべてのユーザーが見れなければならないファイルなのに、
にパーミッションを変更してしまうと、サイトのページが表示されなかったりと予想外の結果が起こりますので、根本的に理解ができてから作業することをおすすめしますよ!!
おわりに
パーミッションの意味と使い方についてでした。
実は非常に奥深いパーミッション。
しっかり理解して、セキュリティにもお作法的にも良いサイト(システム)を作りたいもんですね。
そういう意味じゃ、リス太なんか適当だよな~涙
がんばります…。