はじめに
Linux初心者の私が、ファイルやディレクトリの権限について分かりにくかった点をまとめました。
つまづいた点
user_aの所有するファイルを別のユーザー(user_b)から読み取ってみます。
該当ファイルはtemp
ディレクトリにあり、他のユーザーからも読み取れるように権限が設定されています。
user_a@raspberrypi:/home $ ls -l /home/user_a/temp
合計 4
-rw-r--r-- 1 user_a user_a 10 6月 13 19:36 file
temp
ディレクトリにも読み取り権限が設定されています。
user_a@raspberrypi:/home $ ls -l /home/user_a
合計 4
drwxr-xr-- 2 user_a user_a 4096 6月 13 20:08 temp
この状態で、別のユーザー(user_b)から同ファイルを読もうとするとエラーとなります。
user_b@raspberrypi:~ $ cat /home/user_a/temp/file
cat: /home/user_a/temp/file: 許可がありません
何が問題だったのか?
temp
ディレクトリの権限を変更して、別のユーザーに(読み取り権限に加えて)実行権限を与えてみます。
user_a@raspberrypi:/home $ chmod 755 /home/user_a/temp
user_a@raspberrypi:/home $ ls -l /home/user_a
合計 4
drwxr-xr-x 2 user_a user_a 4096 6月 13 20:08 temp
この状態なら、別のユーザー(user_b)から同ファイルを読むことができます。
user_b@raspberrypi:~ $ cat /home/user_a/temp/file
aaabbbccc
つまり、ファイルを読むためには、同ファイルの置かれたディレクトリに実行権限が必要だということになります。
追加で検証
次にtemp
ディレクトリの権限を変更して、別のユーザーには(読み取り権限は与えず)実行権限だけを与えてみます。
user_a@raspberrypi:/home $ chmod 751 /home/user_a/temp
user_a@raspberrypi:/home $ ls -l /home/user_a
合計 4
drwxr-x--x 2 user_a user_a 4096 6月 13 20:08 temp
この状態でも、別のユーザー(user_b)から同ファイルを読むことができます。
user_b@raspberrypi:~ $ cat /home/user_a/temp/file
aaabbbccc
まとめ
ファイルを読み取るためには、同ファイルの読み取り権限に加え、同ファイルの置かれたディレクトリの実行権限が必要です。
また、ファイルへの書き込みについても同様のことが成り立ちます。
ファイルに書き込みをするためには、同ファイルへの書き込み権限に加え、同ファイルの置かれたディレクトリの実行権限が必要です。