【超初心者さん向け】パーミッションの意味と使い方

なんで?な女の子 サーバ・ソフト

はじめに

「UNIX、LINUX系のシステムにたずさわる人は、ファイルやディレクトリのパーミッションを知らずしてシステム構築はできないよ。」

そう言うと、

「え~、私はブログやってるだけだから関係ないよ~」

なんて声が聞こえてきそうです。

でもね。

ワードプレスでブログ構築しようと思ったら、ワードプレスはPHPというプログラムで主に作られてますからね。
そのPHPが載っているサーバはLINUX系のOSのものがほとんど。
そして、LINUXはUNIXの系譜をついだオープンソースのOSなのです。

そう。したがって、知らず知らずのうちにあなたはUNIX系のシステムを運用しちゃってるんですね。

しかも、ワードプレスのブログを構築していくと、かならずファイルやディレクトリのパーミッション周りでつまづくことがあるはず。

そろそろ「パーミッション」について根本的に理解しちゃいましょう。

スポンサーリンク

パーミッションてなによ?

悩む女の子

パーミッションとは、

ファイルやディレクトリごとに定義された「読み(read)」「書き(write)」「実行(execute)」といった権限のこと

です。

これだけじゃよくわかんないですね。

ファイルもディレクトリもすべてパーミッションが設定されているんですが、そのファイルやディレクトリに対して、

だれが何をできるか

といったルールが定義されているものなんですね。

これがないと、サーバにおいてある大切なファイルを見ず知らずの第三者に見られてしまったり、改ざんされたりするおそれがあるわけです。

だからセキュリティ的にも非常に重要なのが、このパーミッションなんですね。

リス太
リス太

ものすご~く重要なんです!

パーミッションの仕組み

そうなんだ女子

ファイルやディレクトリに設定されるパーミッションは、ルール上、以下ユーザーに対して権限を定義する形で作られます。

所有者
グループ
その他

上記3種類のユーザーに対して、「読み(read)」「書き(write)」「実行(execute)」のうち、どれを許可するかを決めるわけです。

このファイルやディレクトリに対して設定されるパーミッションの表記は2種類あり、

・記号表記
・八進表記

のいずれかで表されます。

パーミッションの記号表記

1の女子

記号表記は、「読み(read)」「書き(write)」「実行(execute)」のアルファベットの頭文字の羅列で表現します。

パーミッション1

たとえば、あるファイルに対して、

所有者は「読み書き実行すべて」でき、グループのユーザーは「何もできず」、その他のユーザーは「読みと実行」のみできるというパーミッションを設定するとします。

すると、ファイルに設定するパーミッションを記号表記にすると、

rwx—r-x

となるわけですね。

また、すべてのユーザーがフルに権限を実行できるなら、

rwxrwxrwx

となるわけです。

このパーミッションの記号表記は、FTPサーバにアクセスしたり、コマンドで、「ls -l」コマンドを打つことでよく見る、この部分ですね。

パーミッション3

パーミッション4

ちなみに、パーミッションの前にあるアルファベットはディレクトリやファイルなどを意味します。

例としては、

- : ファイル
d : ディレクトリ
l : シンボリックリンク

パーミッション2

こんな感じですね。

スポンサーリンク

パーミッションの八進数表記

2の女子

こんどは八進表記のパーミッションですね。

こちらは、コマンドを叩いてファイルやディレクトリのパーミッションを変更するときによく使いますね。

八進表記でのパーミッションは

644

のように表現されます。

では、この数字が何を意味しているかというと、

読み、書き、実行の権限ごとに数字が割り振られているんです。

こんな感じです。

パーミッション5

読みが4、書き込みが2、実行が1ですね。

この権限を所有者、グループ、その他に割り振ります。

パーミッション6

カンタンですね。

あるファイルに

所有者に全権限、グループには書き込みのみ、その他は権限無し

というパーミッションを付けたければ、

所有者: 4+2+1=7
グループ:4
その他: 0

結果、「740」になるわけですね。

実際にファイルのパーミッションを変更する場合は、コマンドを叩きます。

たとえば、

index.htmlというファイルのパーミッションがもともと

-rwxrwxrwx(777)

だったとして、

こちらをグループの権限を無くして、その他のユーザーに閲覧、実行だけを許可するパーミッションに変更したいときは、以下のようなコマンドを書きます。

#sudo chmod 705 index.html

といった感じですね。

こちらの八進表記のほうがよく使うと思いますが、記号表記でコマンドを打つことも可能です。

その時は、以下のような形です。

#sudo chmod o-w index.html
#sudo chmod g-rwx index.html

「chmod」の次にアルファベットと+-表記で増減したいパーミッションを記載します。

リス太
リス太

アルファベットの意味は以下ですね。

u: 所有者
g: グループ
o: その他ユーザー
a: 上記3つすべて

こんな感じで八進表記が苦手な人でもパーミッション変更はできますが、まぁ八進表記のほうがシンプルでカンタンだとは思います。

読み書き実行の意味

わからない

こんな感じでファイルやディレクトリのパーミッションの仕組みは出来上がっていて、パーミッション変更なんかも簡単にできるってことがわかってもらえたと思います。

でも、そもそも「読み」「書き」「実行」の意味のほうが重要なんですよね。

以下、カンタンにまとめると、

読み(read): 文字通りファイル、ディレクトリを読むこと
書き(write): ファイル、ディレクトリの書き換え、編集権限。削除もできる
実行(execute): プログラムの実行権限

となっています。

結果、パーミッションを変更してセキュリティ的に強いサイトを作りたい!と思って、本来すべてのユーザーが見れなければならないファイルなのに、

-rw——-(600)

にパーミッションを変更してしまうと、サイトのページが表示されなかったりと予想外の結果が起こりますので、根本的に理解ができてから作業することをおすすめしますよ!!

スポンサーリンク

おわりに

パーミッションの意味と使い方についてでした。

実は非常に奥深いパーミッション。
しっかり理解して、セキュリティにもお作法的にも良いサイト(システム)を作りたいもんですね。

そういう意味じゃ、リス太なんか適当だよな~涙
がんばります…。