Linux基礎

【Linux】ファイルとディレクトリのパーミッション(アクセス権)の挙動

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

ファイルのパーミッションは直感的に分かり易いと思います。

  • r = ファイルの内容を閲覧可
  • w = ファイルの内容を修正・上書き可
  • x = ファイルをProgramやScriptとして実行可

組合せによってできることの一例を以下に示します。

rwxできること
001何もできない
010何もできない
011何もできない
100ファイルの読込可(編集不可・実行不可)
101ファイルの読込可・実行可(編集不可)
110ファイルの読込可・編集可(実行不可)
111ファイルの読込可・編集可・実行可

注意すべき点として、ファイルの削除についてはファイルのアクセス権ではなくディレクトリのアクセス権で管理されています

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

ディレクトリのパーミッションは少し複雑です。

  • r = そのディレクトリに cd することなく ls でファイルリスト閲覧可
  • w = そのディレクトリ内に対するファイル新規作成・削除可
  • x = そのディレクトリに cd 可

組合せによってできることの一例を以下に示します。

rwxできること
001そのディレクトリにcd可 (移動後は何もできない)
010何もできない
011そのディレクトリ配下のファイルの作成・削除可
ただしファイルリスト閲覧は不可なので、ファイル名を
正確に打つ必要がある(タブ補完ができない)
100そのディレクトリにcdすることなくlsでファイルリスト閲覧可
ただしそのファイルのProperty(パーミッションやサイズ等)は閲覧不可
そのディレクトリ配下のファイルの削除は不可
101そのディレクトリ配下のFileのProperty含めリスト閲覧可
そのディレクトリ配下のファイルの作成・削除は不可
110そのディレクトにlsでファイルリスト閲覧可
ただしそのファイルのPropertyは閲覧不可
そのディレクトリ配下のファイルの作成・削除は不可
111そのディレクトリ配下のFileのProperty含めリスト閲覧可
そのディレクトリ配下のファイルの作成・削除可

w は単体では意味がなく、x と組み合わさって初めて使えることが分かります。

また、あるディレクトリのパーミッションが変わることで、どのような影響があるかを具体的な例を示します。

user1 が ディレクトリ /home/user1 に cd しているとします。

/home/user1/test/ というディレクトリのパーミッションの変化で以下のように振る舞いが変わります。

パーミッションが 0 (---) のとき

read が無いので中身すら見れません。

[user1@localhost ~]$ ll test
ls: ディレクトリ test を開くことが出来ません: 許可がありません

パーミッションが 4 (r--) のとき

中身は見ることができますが、Propertyは見れません。

[user1@localhost ~]$ ll test
ls: test/test.txt にアクセスできません: 許可がありません
ls: test/test2.txt にアクセスできません: 許可がありません
合計 0
-????????? ? ? ? ? ? test.txt
-????????? ? ? ? ? ? test2.txt

パーミッションが 6 (rw-) のとき

4 (r--) のときと変わりません。

[user1@localhost ~]$ ll test
ls: test/test.txt にアクセスできません: 許可がありません
ls: test/test2.txt にアクセスできません: 許可がありません
合計 0
-????????? ? ? ? ? ? test.txt
-????????? ? ? ? ? ? test2.txt

パーミッションが 5 (r-x) のとき

Property が見えるようになります。

[user1@localhost ~]$ ll test
合計 8
-rwx------. 1 user1 user1 7 10月 24 08:10 test.txt
-rw-rw-r--. 1 user2 user2 12 10月 24 08:17 test2.txt

ただしこのときはファイルの削除はできません。

[user1@localhost ~]$ rm test/test.txt
rm: `test/test.txt' を削除できません: 許可がありません

パーミッションが 3 (-wx) のとき

ファイルのリストも閲覧不可で、タブ補完もできませんが、ファイル名を正確に知っていれば、ファイルの削除が可能です。例えファイルのパーミッションが 0 (---) であっても削除できます

[user1@localhost ~]$ ll test
ls: ディレクトリ test を開くことが出来ません: 許可がありません
[user1@localhost ~]$ rm test/test.txt
rm: 書き込み保護されたファイル 通常ファイル `test/test.txt' を削除しますか?y
[user1@localhost ~]$

パーミッションが 7 (rwx) のとき

全てが可能です。

コメント

タイトルとURLをコピーしました