1
1

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-03-22

Linux上でのファイルとディレクトリの権限ごとの挙動を忘れがちなのでざっと説明用にまとめてみる。
chmod で変更するやつ

権限のみかた

$ ls -l

で、カレントディレクトリにあるファイルやディレクトリの権限を見れる

drwxrwxrwx. 2 core core 4096 Mar 22 11:02 dir
-rwxrwxrwx. 1 core core    0 Mar 22 11:02 file

一番ひだりの d がディレクトリか否かを表してて、
その後ろの rwx は3文字で1セット。
左から順番に、
所有権のあるユーザの権限、所有権のあるグループに所属するグループの権限、その他のユーザの権限
を表している。

r は読み
w は書き
x は実行
の権限で

-rw-r--r--. 1 core core 0 Mar 22 11:05 foo

上記のようになっている場合は
foo というファイルに対しては
core というユーザが rw (読み書き)の権限があって、
それ以外のユーザは r (読み)の権限しかないことを表す。
なお、rootユーザは問答無用ですべての権限を持つ。

ファイル

特定のユーザ(グループ)以外には読ませたくないようなファイルや、特定のユーザ(グループ)からしか更新できないようなファイルを作りたいときに使用することが多い。

デフォルトの権限

ターミナルでファイルを作成すると 0644 の権限になる

core@dev ~/work $ touch file
core@dev ~/work $ ls -l
total 4
-rw-r--r--. 1 core core 0 Mar 22 11:08 file

書き込み権限

core@dev ~/work $ chmod 444 ./file
core@dev ~/work $ ls -l
total 4
-r--r--r--. 1 core core 0 Mar 22 11:08 file
core@dev ~/work $ echo "hogehoge" > file
-bash: file: Permission denied

特定のユーザ以外に書き込みをさせたくないファイルを扱うときに使う。
下手に書き込むと壊れるようなファイルとか。
書き込み権限がないファイルを削除しようとすると警告がでる。

core@dev ~/work $ touch file
core@dev ~/work $ chmod 400 file
core@dev ~/work $ ls -l
total 4
-r--------. 1 core core 0 Mar 22 11:20 file
core@dev ~/work $ rm file
rm: remove write-protected regular empty file 'file'?

読み込み権限

core@dev ~/work $ chmod 000 ./file
core@dev ~/work $ ls -l
total 4
----------. 1 core core 0 Mar 22 11:08 file
core@dev ~/work $ cat file
cat: file: Permission denied

特定にユーザ以外に読み込みさせたくないファイルを扱うときに使う。
秘匿情報を含む情報を扱うときとか。

実行権限

ファイルを実行する権限
スクリプトとかバイナリに使う

実行できないようなただのテキストファイルに付与しても意味ない

core@dev ~/work $ echo "hogehoge" > file
core@dev ~/work $ chmod 700 ./file
core@dev ~/work $ ls -l
total 8
-rwx------. 1 core core 9 Mar 22 11:22 file
core@dev ~/work $ ./file
./file: line 1: hogehoge: command not found

bashで実行した場合

core@dev ~/work $ echo "echo hogehoge" > file
core@dev ~/work $ chmod 700 ./file
core@dev ~/work $ ls -l
total 8
-rwx------. 1 core core 14 Mar 22 11:22 file
core@dev ~/work $ ./file
hogehoge

ターミナルやプロセスとして実行できるように付与することがほとんど

ディレクトリ

デフォルトの権限

core@dev ~/work $ mkdir foo
core@dev ~/work $ ls -l
total 8
drwxr-xr-x. 2 core core 4096 Mar 22 11:25 foo

デフォルトはファイルと違って先頭を除くと
rwxr-xr-x になるので、ディレクトリの場合は
所有権のあるユーザは rwx の権限で
それ以外のユーザは r-x の権限になる

書き込み権限

core@dev ~/work $ mkdir foo
core@dev ~/work $ ls -l
total 8
drwxr-xr-x. 2 core core 4096 Mar 22 11:38 foo
core@dev ~/work $ chmod 500 ./foo/
core@dev ~/work $ ls -l
total 8
dr-x------. 2 core core 4096 Mar 22 11:38 foo
core@dev ~/work $ touch foo/test
touch: cannot touch 'foo/test': Permission denied

書き込み権限がない場合はディレクトリ以下にファイルを配置できなくなる
ファイル単位ではなくディレクトリ単位で保護したいときに使う。

読み込み権限

core@dev ~/work $ mkdir foo
core@dev ~/work $ chmod 000 ./foo/
core@dev ~/work $ ls -l foo/
ls: cannot open directory 'foo/': Permission denied

ディレクトリにアクセスできないので ls などで参照できなくなる

実行権限

core@dev ~/work $ mkdir foo
core@dev ~/work $ touch foo/bar
core@dev ~/work $ chmod 600 ./foo/
core@dev ~/work $ ls -l foo/
ls: cannot access 'foo/bar': Permission denied
total 0
-????????? ? ? ? ?            ? bar

ディレクトリに実行権限がない場合は、配下のファイルへのアクセス権がなくなる。
そのためファイルの情報自体にアクセスができなくなる。
ファイルの情報にアクセスできず権限が不明なため、読み書きもできなくなる。
ディレクトリへの読み書きの権限はあるので、 chmod でディレクトリの権限を書き換えることはできる。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?