パーミッションとは
Linuxではファイルやディレクトリごとに所有者が決まっていて、特定のユーザーしかアクセスできないように設定することができる。これを「パーミッション」と呼ぶ。パーミッションを正しく設定していないと公開するウェブページが表示されなかったり、cgiを実行できなかったりする。また、反対にパーミッションをゆるくすると、インターネットから接続してきた第三者に情報が流出したり、システムを破壊されたりする可能性がある。
パーミッションを確認する
ファイルやディレクトリのパーミッションを確認するにはlsコマンドを使う。ふつうにlsコマンドを実行すると名前しか表示されないが、「ls -l」とすれば所有者やパーミッションなどの情報も表示される。
$ ls -l
-rw-r----- 1 uucp antivir 0 Feb 10 22:55 avmailgate.log
-rw------- 1 root root 0 Feb 13 04:02 boot.log
drwxr-xr-x 2 root root 4096 Jan 19 23:35 canna/
-rw------- 1 root root 25771 Feb 13 23:55 cron
drwxr-xr-x 2 lp sys 4096 Feb 13 04:02 cups/
-rw-r--r-- 1 root root 11419 Feb 11 17:38 dmesg
drwxr-xr-x 2 root root 4096 Jan 19 23:35 gdm/
drwxr-xr-x 2 root root 4096 Feb 13 23:50 httpd/
↑ ↑ ↑
パーミッション 所有者 グループ
パーミッションのところは10桁の英字からできている。先頭の1文字はファイルの種類であり、続く9文字がアクセスの可否を表現している。
パーミッションは3文字の「rwx」が1セットであり、それぞれ「読み出しの許可(r)」「書き込みの許可(w)」「実行の許可(x)」をあらわす。たとえば、「r-x」のファイルでは「読み出しと実行はできるが、書き込みはできない」ようになっている。また、「r--」なら「読み出ししかできず、実行も書き込みもできない」ということだ。
パーミッションの9文字はこのセットが3つ続いている。最初のセットは「所有者」、次のセットは「グループ」、最後のセットが「それ以外のユーザー」を示している。「rwx r-x r-x」のファイルは「所有者はすべての操作ができるが、それ以外のユーザーは書き込みができない」ことを表す。また、「rw- r-- r--」ならば「所有者は読み込みと書き込み、それ以外のユーザーは読み込みのみ」のファイルになる。
rwx r-x r-x
↑ ↑ ↑
所有者 グループ ほかのユーザー
もし自分に許可されていない操作を行おうとすると「許可がありません」というエラーメッセージが表示される。たとえば、読み出しが許可されていないファイルは開くことができないだけでなく、コピーすることもできない。
ディレクトリの場合、読み出しが許可されていないとlsコマンドでファイルの一覧を表示できない。また、実行が許可されていないとcdコマンドでそのディレクトリに入ることができず、書き込みが許可されていないとそのディレクトリにファイルをコピーしたり、削除することができない。
パーミッションを変更する
ファイルやディレクトリのパーミッションはchmodコマンドで変更できる。cgiをインストールするときなどパーミッションを変更が必要になることがある。
chmodコマンドの書式は「chmod パーミッション ファイル名」という書式になっている。変更ができるのは所有者が自分のものだけで、ほかのユーザーが所有者のファイルやディレクトリはスーパーユーザーしか変更ができない。
$ chmod 755 install.pl
ここで覚えなければならないのが、パーミッションを数字であらわす方法だ。上の例にある「755」は「rwx r-x r-x」と同じ。読み出しは「4」、書き込みは「2」、実行は「1」であり、すべて許可するときは4+2+1で7と表記する。読み出しと実行だけを許可するなら4+1で5と表記する。この数字を所有者、グループ、ほかのユーザーの順に並べることで3桁の数字となる。
すべてのユーザーがすべての操作をできるときは「777」、所有者だけがすべての操作ができるなら「700」、所有者はすべての操作ができるがほかのユーザーは読み出ししかできないなら「744」といったかたちになる。
| r | 4 | 読み出しの許可 |
| w | 2 | 書き込みの許可 |
| x | 1 | 実行の許可 |
| - | 0 | 許可しない |