
Linuxのディレクトリにもアクセス権限があるけど、rwxのそれぞれの意味はなんだろう?
Linuxのディレクトリにもファイルと同様にアクセス権限があります。ファイルの権限は「読み」、「書き」、「実行」と直感的でわかりやすいです。しかし、ディレクトリの権限は意外と忘れてたりしませんか?ファイルとディレクトリでは権限の意味が異なってきます。
この記事ではLinuxのディレクトリのアクセス権限について説明をします。この記事を読むことでディレクトリのアクセス権限に悩まなくてすむようになります。
ディレクトリのアクセス権限
Linuxのディレクトリ権限について説明します。
ディレクトリ権限 | 説明 |
---|---|
r | そのディレクトリ内に、どのファイルがあるのか参照できる。 |
w | そのディレクトリ内で、ファイルの追加、削除、リネームができる。 |
x | そのディレクトリ内のファイルにアクセスできる。 |
Read権限

Read権限は、ディレクトリの中を「見る」権限です。
これがないと、ls
コマンドや検索でひっかけることができません。

ディレクトリに中を「見る」ということは、そのディレクトリにどんなファイルがあるかはわかるということだね。

はい、そのとおりです。
ディレクトリの中にあるファイルの中を見たり、実行することはできません。
read権限だけだとファイルにアクセスできません。
- ディレクトリの中を「見る」ことだけはできます。
- ファイルの中を見たり、使うことはできません。
$ mkdir readonly_dir
$ echo 'test text.' > readonly_dir/test.txt
$ chmod 400 readonly_dir/
$ ls -l
合計 4
dr-------- 2 maint maint 4096 2月 14 11:40 readonly_dir
$
$ cd readonly_dir/
-bash: cd: readonly_dir/: 許可がありません
$
$ ls readonly_dir/
ls: 'readonly_dir/test.txt' にアクセスできません: 許可がありません
test.txt
$
$ cat readonly_dir/test.txt
cat: readonly_dir/test.txt: 許可がありません
Write権限

Write権限は、ディレクトリ内にファイルを作ったり、削除する場合に必要になります。

Write権限は、わかりやすいですね。
Execute権限

ディレクトリを実行する、とはどういうことだろう?

Execute権限が、多少わかりづらいでしょうか?
Execute権限は、ファイルを「使う」場合に必要になります。

ファイルを「使う」って、どういうこと?

ファイルの内容を見たり、実行したりすることです。
execute権限だけの場合、ファイルを使うことはできます。ただし、ファイルのフルパスを知っている必要があります。
- Execute権限があるので、ディレクトリに
cd
はできます。 - Read権限がないので、
ls
等でファイル名を調べることはできません。 - パス、ファイル名を知っていれば、Execute権限があるので、ファイルを使うことはできます。ただし、使うファイル自身にも権限が必要です。
$ chmod 100 readonly_dir/
$ ls -l
合計 4
d--x------ 2 maint maint 4096 2月 14 11:40 readonly_dir
$
$ cd readonly_dir/
$
$ ls
ls: ディレクトリ '.' を開くことが出来ません: 許可がありません
$
$ cat test.txt
test text.
$
$ cd ..
$ cat readonly_dir/test.txt
test text.
さいごに
本記事ではLinuxのディレクトリ権限についての説明をしました。ReadやExecuteの権限はファイルの場合と意味が異なることを理解していただけたと思います。
他の人にファイルを共有したり、逆に隠したりしたいときは、ディレクトリの権限に注意してみてください。