HWBの「パーミッション」に関する補足

ディレクトリに対するパーミッションはファイルに対するパーミッションと少し異なる意味を持ちます。

コマンド ls-l オプション付きで実行した場合、以下のような情報が得られ、左端の列がパーミッションを表わします。

drwxr-xr-x  6 g999999    student  512 Jul 24 17:30 Wnn6
-rw-------  1 g999999    student 1766 Aug 22 17:39 mbox
drwxr-x--x 10 g999999    student 1024 Aug 29 18:20 WWW

このとき、「rwx」という3つの文字の意味はファイルの場合とディレクトリの場合では、次のようになります。

そのため、少し変わったケースとして、

ディレクトリの一覧を見ることはできないが、中にあるファイルを読むことができる (ただし、ファイル名はあらかじめ知っている必要があります)

という設定などがあり得ます。これは、ディレクトリのパーミッションが「--x」になっていて、その中のファイルのパーミッションがが「r--」となっているときに起こります。

練習 以下の手順でファイルを作り、ディレクトリのパーミッションを理解しよう。

  1. ホームディレクトリにptestというディレクトリを作る。ターミナルウィンドウに以下をタイプする。

     mkdir ptest

  2. 上で作ったディレクトリの中にmemoというファイルを作る。実際には、エディタ(Mule)を使って ptest/memo という名前のファイルを開き、そこに適当な文を書き、保存すればよい。内容はなんでもよい。
  3. ディレクトリptestのパーミッションを変えて、一覧表示ができないようにする。ターミナルウィンドウに以下をタイプする。

     chmod -r ptest

  4. ディレクトリptestのパーミッションを確認する。

     ls -l
    total 100
    ...(略)...
    d-wx--x--x   2 masuhara user          512 May 16 12:05 ptest
    ...(略)...

  5. ディレクトリptestの中の一覧表示をさせてみる。

     ls ptest
    ls: ptest: Permission denied
    パーミッションがないため、エラーになる。

  6. ディレクトリptestの中のファイルmemoの内容を表示する。

     cat ptest/memo
    I am testing permissions of a directory.

    ちゃんと中身が表示される。