20
18

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 2017-10-06

ls -lしたときに出てくるパーミッションの一覧。

一部分だけの解説はいくらでも見つかるのだが、全部まとまってるものがどうも見当たらなかったので作った。
以下は特に断らない限りLinuxについて。
それ以外のOSでは異なる場合がある。

以下、ls -lしたときに出てくる項目について↓の表記で解説する。

  d|rwx|rws|rwt|.
  A|BCD|EFG|HIJ|K

[A|---|---|---|-]

d

ディレクトリである。
自分自身.および親ディレクトリ..dになる。

l

シンボリックリンクである。
ハードリンクはlにならない。
というかハードリンクは実ファイルと区別がつかない。

b

ブロックデバイスである。
ブロックデバイスは、HDDやメモリなどブロック単位でデータの読み書きを行う機器のこと。

c

キャラクタデバイスである。
キャラクタデバイスは、コンソールやキーボードなどのバイト単位でデータの読み書きを行う機器のこと。
標準入出力のほか、/dev/null/dev/urandom等のファイルだかなんなんだかよくわからない奴らもだいたいこれのようだ。

p

FIFOである。
FIFOは主にプロセス間通信で使用する名前付きパイプで、|のすごいやつ。

s

ソケットである。
ソケットは主にプロセス間、ネットワーク間でデータをやりとりするためのファイルのようなもの。

-

上記以外、いわゆる普通のファイル。

[-|BCD|---|---|-] / [-|---|EFG|---|-] / [-|---|---|HIJ|-]

それぞれ自分、同じグループ、第三者が持ってる権限。
BEHは読み取り権限、CFIは書き込み権限、DGJは実行権限を表す。

[-|B--|E--|H--|-]

r

読み取り権限がある。

ファイルに読み取り権限がある場合、ファイルの中身を読み込むことができる。
ファイルに読み取り権限があっても、そのディレクトリにも読み取り権限がなければ読み込みはできない。

ディレクトリに読み取り権限がある場合、lsでファイルを一覧表示することができる。

-

読み取り権限がない。

ファイルに読み取り権限がない場合、ファイルの情報は取得できるが中身を読み込むことはできない。

ディレクトリに読み取り権限がない場合、ファイル名一覧を取得することができない。
実行権限があればcdで移動や名指しで情報取得することはできる。

[-|-C-|-F-|-I-|-]

w

書き込み権限がある。

ファイルに書き込み権限がある場合、ファイルの上書きや更新を行える。
書き込みできるが読み込みできないファイルも作成できる。

ディレクトリに書き込み宣言がある場合、ファイルの追加や削除が行える。

-

書き込み権限がない。

ファイルに書き込み権限がない場合は、ファイルの上書きや更新ができなくなる。
ファイルに書き込み権限がなくても、ディレクトリに書き込み権限があればファイルの削除はできる。

ディレクトリに書き込み権限がない場合、ファイルの追加や削除が行えない。
ファイルの書き込み権限があれば編集することは可能。

[-|--D|--G|--J|-]

x

実行権限がある。

ファイルに実行権限がある場合、そのファイルは実行することができる。
読み込み権限がなくても実行はできる。

ディレクトリに実行権限がある場合、ディレクトリにcdls -lを行うことができる。

-

実行権限がない。

ファイルに実行権限がない場合は実行できない。

ディレクトリに実行権限がない場合、ディレクトリ内のファイル名一覧だけは表示できるが、ファイル情報を得ることはできずcdで移動することもできない。

[-|--D|---|---|-]

s

SUID(Set User ID)。

ファイルにSUIDがある場合、実行ユーザがファイル所有者になる。
通常は実行したユーザがコマンドの実行ユーザになるが、SUIDがついている場合はそのファイルの所有者が実行ユーザになる。
例として、/usr/bin/passwdは所有者がrootユーザで実行権限がsであるため、誰が実行してもrootユーザの権限で実行される。
そのためrootユーザしか書き込み権限のない/etc/shadowに書き込める、ということになる。

ディレクトリのSUIDは特に意味がないようだ。

S

実行権限のないファイルにSUIDを付けるとsではなくSになる。
どういう効果があるかはよくわからない。

[-|---|--G|---|-]

s

SGID(Set Group ID)。

ファイルにSGIDがある場合、実行ユーザがファイル所有グループになる。
例として、/usr/bin/wallはグループがttyユーザで実行権限がsであるため、誰が実行してもttyユーザの権限で実行される。

ディレクトリにSGIDがある場合、ディレクトリ内部で作成したファイルの所属グループがディレクトリのグループと同じになる。
所有者は作成したユーザになる。

S

実行権限のないファイルにSGIDを付けるとsではなくSになる。
どういう効果があるかはよくわからない。

[-|---|---|--J|-]

t

スティッキービット

ディレクトリにスティッキービットがある場合、そのディレクトリ内のファイルは所有者本人しか削除・リネームできない。
中身の編集はできる。

ファイルのスティッキービットは特に意味がないようだ。

T

実行権限のないディレクトリにスティッキービットを付けるとtではなくTになる。
どういう効果があるかはよくわからない。

[-|---|---|---|K]

.

セキュリティコンテキスト。

SELinuxによってアクセス制限用のラベルが設定されている。
ls -Zで詳細を閲覧可能。

(何もなし)

セキュリティコンテキストがない。

その他

rootは例外で、書き込み権限のないファイルやスティッキービットのあるファイルを削除したりと、ほぼ何でもできる。

シンボリックリンクのパーミッション表示は特に意味がない。
シンボリックリンクに対してchmodすると、シンボリックリンク自体は変わらず、リンク先ファイルの権限が変更される。

感想

まさかJP1のマニュアル内にほぼ完全なリストがあるとは思わなかった。
ほとんど書き上げた後に見つけてしまったでござるの巻き。

参考

Man page of CHMOD
SELinux コンテキスト - ファイルのラベル付け
Stray Penguin -Linux Memo-
chmod :SUID、GUID、スティッキービットまとめ

20
18
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
20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?