17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxのディレクトリのパーミッションの意味

Last updated at Posted at 2020-04-23

はじめに

Linuxのファイルやディレクトリには「誰に、どのような操作を許可するか」という権限の情報が設定されていて、これをパーミッションと呼ぶ。

ファイルにパーミッションがあることは知っていたが、ディレクトにも設定されていることを知らなかったので、まとめることにする。

ファイルのパーミッション

まず、ls -l /bin/catcatコマンドの情報を表示する。

$ ls -l /bin/cat
-rwxr-xr-x 1 root root 35064 Jan 18  2018 /bin/cat

ファイルタイプ

行頭の-はファイルタイプを表す。

記号 意味
- 通常ファイル
d ディレクトリ
l シンボリックリンク

ファイルモード

ファイルタイプの後ろの9文字(rwxr-xr-x)はファイルモードと呼ばれ、これによりファイルのパーミッションを表している。

9文字は3文字ごとに1つのブロックになっており、それぞれ「オーナー」「グループ」「その他のグループ」に分けられる。

オーナー グループ その他のグループ
rwx r-x r-x

「rwx」の意味

rwxはそれぞれ「読み取り」「書き込み」「実行」の意味である。

記号 意味
r 読み取り(read)
w 書き込み(write)
x 実行(excute)

/bin/cat再確認

$ ls -l /bin/cat
-rwxr-xr-x 1 root root 35064 Jan 18  2018 /bin/cat

上記/bin/catだが、rootユーザー以外の書き込みが禁止されている。
書き込もうとしたら'readonly' option is set (add ! to override)上書きするなと怒られた。

ディレクトリのパーミッション

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

lsコマンドでディレクトリのパーミッションを確認するためには-lオプションに加えてディレクトリ自身の情報を表示する-dオプションを使う必要がある。

$ ls -ld Code/
drwxrwxr-x 4 vagrant vagrant 4096 Apr  8 14:54 Code/

ディレクトリのパーミッションの意味

ディレクトリのパーミッションもファイルと同じように「r」「w」「x」という記号を利用するが、それぞれの記号の意味は、ファイルの場合とは異なることがある(特に「x」)。 全く違う意味を持つ。 
@angel_p_57様のご指摘により修正しています。コメント欄をご確認ください。

記号 意味
r 読み取り(ディレクトリに含まれるファイル一覧の取得)
w 書き込み(ディレクトリの下にあるファイル・ディレクトリの作成、削除)
x 実行(ディレクトリをカレントディレクトリにする)

「r」読み取り(ディレクトリに含まれるファイル一覧の取得)の確認

ここで一度ファイルを作ってテストしてみる。

$ mkdir permissionTest            //permissionTestというディレクトリ作成
$ touch permissionTest/file1.txt  //permissionTest配下にfile1.txtというファイルを作成
$ ls -ld permissionTest/          //permissionTestのディレクトリを確認

drwxrwxr-x 2 vagrant vagrant 4096 Apr 23 11:50 permissionTest/

$ ls -l permissionTest/        //permissionTest配下のファイルを確認

-rw-rw-r--  1 vagrant vagrant    0 Apr 23 11:50 file1.txt     //成功

permissionTestディレクトリのパーミッションを読み取り不可にし、アクセスしてみる。

$ chmod a-r permissionTest/  //全てのユーザーの読み取り禁止
$ ls -ld permissionTest/     

d-wx-wx--x 2 vagrant vagrant 4096 Apr 23 11:50 permissionTest/    //読み取り禁止になった。

$ ls  permissionTest/
ls: cannot open directory 'permissionTest/': Permission denied

許可がないのでアクセスできない。

「w」書き込み(ディレクトリの下にあるファイル・ディレクトリの作成、削除)の確認

ディレクトリに書き込み(w)が設定されている場合、その配下のファイルに書き込み制限があっても、作成・削除ができる。

これは、ファイルが削除できるかどうかはディレクトリのパーミッションで決まり、ファイルのパーミッションは関係ないことを意味する。

ファイルの書き込み制限を行い、ファイルを削除できるか確認してみる。

$ chmod a-w file1.txt  //ファイルの書き込み権限を削除
$ ll file.txt          //ファイルのパーミッションを確認

-r--r--r--  1 vagrant vagrant    0 Apr 23 11:50 file1.txt  //書き込み権限削除の確認

$ rm  file1.txt  //ファイル削除
rm: remove write-protected regular empty file 'file1.txt'?  yes 削除しますか?

もちろん削除できてしまう。

「x」実行(ディレクトリをカレントディレクトリにする) の確認

「x」実行が設定されていないディレクトリにはアクセスできないことを確認する。

$ chmod a-x permissionTest/  //permissionTestの実行権限を制限
$ ls -ld permissionTest/     //permissionTestのパーミッションを確認

drw-rw-r-- 2 vagrant vagrant 4096 Apr 23 11:50 permissionTest/ //確認

v$ cd permissionTest/                           //permissionTest/へアクセス
-bash: cd: permissionTest/: Permission denied   //できない。

まとめ

記号 ファイルの場合 ディレクトリの場合
r ファイルの読み取り ディレクトリに含まれるファイル一覧の取得
w ファイルへの書き込み ディレクトリの下にあるファイル・ディレクトリの作成、削除
x ファイルの実行 ディレクトリをカレントディレクトリにする

参考

新しいLinuxの教科書

17
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?