Linuxのファイルのパーミッション
ファイルのパーミッションは直感的に分かり易いと思います。
- r = ファイルの内容を閲覧可
- w = ファイルの内容を修正・上書き可
- x = ファイルをProgramやScriptとして実行可
組合せによってできることの一例を以下に示します。
r | w | x | できること |
---|---|---|---|
0 | 0 | 1 | 何もできない |
0 | 1 | 0 | 何もできない |
0 | 1 | 1 | 何もできない |
1 | 0 | 0 | ファイルの読込可(編集不可・実行不可) |
1 | 0 | 1 | ファイルの読込可・実行可(編集不可) |
1 | 1 | 0 | ファイルの読込可・編集可(実行不可) |
1 | 1 | 1 | ファイルの読込可・編集可・実行可 |
注意すべき点として、ファイルの削除についてはファイルのアクセス権ではなくディレクトリのアクセス権で管理されています。
Linuxのディレクトリのパーミッション
ディレクトリのパーミッションは少し複雑です。
- r = そのディレクトリに cd することなく ls でファイルリスト閲覧可
- w = そのディレクトリ内に対するファイル新規作成・削除可
- x = そのディレクトリに cd 可
組合せによってできることの一例を以下に示します。
r | w | x | できること |
---|---|---|---|
0 | 0 | 1 | そのディレクトリにcd可 (移動後は何もできない) |
0 | 1 | 0 | 何もできない |
0 | 1 | 1 | そのディレクトリ配下のファイルの作成・削除可 ただしファイルリスト閲覧は不可なので、ファイル名を 正確に打つ必要がある(タブ補完ができない) |
1 | 0 | 0 | そのディレクトリにcdすることなくlsでファイルリスト閲覧可 ただしそのファイルのProperty(パーミッションやサイズ等)は閲覧不可 そのディレクトリ配下のファイルの削除は不可 |
1 | 0 | 1 | そのディレクトリ配下のFileのProperty含めリスト閲覧可 そのディレクトリ配下のファイルの作成・削除は不可 |
1 | 1 | 0 | そのディレクトにlsでファイルリスト閲覧可 ただしそのファイルのPropertyは閲覧不可 そのディレクトリ配下のファイルの作成・削除は不可 |
1 | 1 | 1 | そのディレクトリ配下の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) のとき
全てが可能です。
コメント