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つの文字の意味はファイルの場合とディレクトリの場合では、次のようになります。
- ファイルの場合
- 「r」 ― そのファイルの内容を読むことができる (read権)
- 「w」 ― そのファイルの内容を変更することができる (write権)
- 「x」 ― そのファイルをプログラムとして実行できる (execute権)
- ディレクトリの場合
- 「r」 ― そのディレクトリの中にあるファイルの一覧を見ることができる(例えばコマンド ls を使って一覧が表示できる)
- 「w」 ― そのディレクトリの中に、ファイルを作ったり、消したり、名前を変更することができる
- 「x」 ― そのディレクトリの中にあるファイルに対して操作ができる
そのため、少し変わったケースとして、
ディレクトリの一覧を見ることはできないが、中にあるファイルを読むことができる (ただし、ファイル名はあらかじめ知っている必要があります)
という設定などがあり得ます。これは、ディレクトリのパーミッションが「--x」になっていて、その中のファイルのパーミッションがが「r--」となっているときに起こります。
練習 以下の手順でファイルを作り、ディレクトリのパーミッションを理解しよう。
- ホームディレクトリにptestというディレクトリを作る。ターミナルウィンドウに以下をタイプする。
mkdir ptest
|
- 上で作ったディレクトリの中にmemoというファイルを作る。実際には、エディタ(Mule)を使って ptest/memo という名前のファイルを開き、そこに適当な文を書き、保存すればよい。内容はなんでもよい。
- ディレクトリptestのパーミッションを変えて、一覧表示ができないようにする。ターミナルウィンドウに以下をタイプする。
chmod -r ptest
|
- ディレクトリptestのパーミッションを確認する。
ls -l
total 100
...(略)...
d-wx--x--x 2 masuhara user 512 May 16 12:05 ptest
...(略)...
|
- ディレクトリptestの中の一覧表示をさせてみる。
ls ptest
ls: ptest: Permission denied
|
パーミッションがないため、エラーになる。
- ディレクトリptestの中のファイルmemoの内容を表示する。
cat ptest/memo
I am testing permissions of a directory.
|
ちゃんと中身が表示される。