Perl開発者のためのLinux入門

Linux基礎知識2 パーミッション

 今日はパーミッションについて解説しますね。Windowsを使っている人にとってはパーミッションという概念はなじみのないものだと思います。それって何って感じですね。

パーミッション

 Linuxにおいてファイルはパーミッションを持ちます。パーミッションというのはファイルに対するアクセス権限のことです。だれがどのような操作ができるのかをパーミッションによって指定することができます。

 たとえば、このファイルに対して所有者は読み書きができて、グループも読み書きができて、それ以外のユーザーは読み込みだけができるという感じです。

 パーミッションを確認するのはlsコマンドでファイルの詳細を表示するのが簡単です。

ls -l
-rw-rw-r-- 1 kimoto kimoto    588  6月 16 13:19 README
drwxrwxr-x 3 kimoto kimoto   4096  6月 16 16:39 lib

 一番左端の1文字を除いた「rw-rw-r--」や「rwxrwxr-x」という部分がパーミッションです。ちなみに一番左端の一文字はファイルの種類を表すものになっています。dとあればそのファイルがディレクトリであることがわかります。(Linuxにおいてはディレクトリのひとつのファイルの種類と考えます。)

所有者ユーザー、所有者グループ、所有者でないユーザー

 パーミッションは三つの部分で構成されます。3文字づつが一つのセットになっています。

 以下のようなパーミッションはまず3つの部分に分かれます。

rw-rw-r--
所有者ユーザー
rw-


所有者グループ
rw-


所有者でないユーザー
r--

 最初の3文字は所有者ユーザーに関するもの、次の3文字は所有者グループに関するもの、最後の三つは所有者でないユーザーに関するものになります。

rは読み込み権限、wは書き込み権限、xは実行権限

 では次にrwxという文字の意味について解説します。読み込み権限がある場合は最初の文字がrに、書き込み権限がある場合は二番目の文字がwに、実行権限がある場合は三つ目の文字がxになります。

 たとえば以下のようになります。

rwx 読み込み権限、書き込み権限、実行権限
rw- 読み込み権限、書き込み権限
r-- 読み込み権限
r-x 読み込み権限、              実行権限

 実行権限というのは、そのファイルをアプリケーションとして実行することができるかを示すフラグです。たとえばプログラムを作成した場合などは、実行権限をつけることになります。また、ディレクトリの場合は実行権限がなければ、ディレクトリに含まれるファイルを読み込むことができないということも覚えておきましょう。

 一般的にいえば、ディレクトリには必ず実行権限xがつくことになります。

所有者の変更 chown

 ファイルの所有者を変更する方法を覚えておきましょう。chownを使います。

chwon ユーザー名 ファイル名

 以下のサンプルはfoo.txtというファイルの所有者ユーザーをkimotoに変更する例です。

chown kimoto foo.txt

 また所有者グループもあわせて変更することができます。

chown ユーザー名:グループ名 ファイル名

 以下のサンプルはfoo.txtというファイルの所有者ユーザーをkimotoに、所有者グループをsomeprojectに変更する例です。

chown kimoto:someproject foo.txt

パーミッションの設定方法 chmod

 パーミッションの設定方法は少しややこしいです。パーミッションの設定は8進数で行います。次の対応を覚えてしまいましょう。とりあえず以下の対応だけは覚えてしまいましょう。

    2進数  8進数
rwx 111    7
rw- 110    6
r-x 101    5
r-- 100    4
--- 000    0

 よーく眺めてみてください。2進数で書いたところのビットが立っている位置が、rwxの位置と対応していますね。これを8進数で表現したものでパーミッションを指定します。

 たとえば以下のようにパーミッションを指定したいとします。

rwxr-xr-x

 このような場合は、chmodコマンドを使って次のようにします。

chmod 755 foo.txt

 rwxというのは7、r-xというのは5、になるので「rwxr-xr-x」は755になりますね。

 もうひとつだけサンプルを。

rw-r--r--

 この場合は次のようになります。

chmod 644 foo.txt

 rw-というのは6、r--というのは4なので「rw-r--r--」は644になります。

 まぁ感覚でだんだんとわかるようになってくると思います。慣れですね。