【Linux】パーミッション(rwx)の意外な落とし穴と覚え方Tips

はじめに

Linuxを触り始めた頃に誰もが一度はつまずくのが「パーミッション(権限)」です。
rwx = 読み取り(Read)、書き込み(Write)、実行(eXecute)…と暗記はできても、「実際にどう効いてくるのか」 がややこしいんですよね。

僕自身ワードの意味だけで、

  • 「実行権限があるとファイルを削除できる」

  • 「読み取り権限があればディレクトリを移動できる」

…みたいな勘違いをしていました。
この記事では、そういった「よくある誤解」を整理しながら、パーミッションを理解するためのTipsをまとめます。


rwx の基本

まず大前提。パーミッションは「ファイル」と「ディレクトリ」で意味が違います。

ファイルの場合

  • r (read) … ファイルの中身を読む

  • w (write) … ファイルの中身を変更する

  • x (execute) … ファイルをプログラムとして実行する

ディレクトリの場合

  • r (read) … ディレクトリの中に「何があるか」を見る(ls可能)

  • w (write) … ディレクトリ内でファイル作成・削除・名前変更ができる

  • x (execute) … ディレクトリに「入れる」(cdで移動できる)、中のファイルにアクセスできる

ここでポイントは「ディレクトリのwは中身のファイルに影響する」ということです。


よくある勘違いと実際の動き

① 実行権限があるとファイル削除できる?

違います!
ファイルの削除可否は「そのファイル自身のw」ではなく「親ディレクトリのw」に依存します。

例:

$ ls -ld testdir
drwxr-xr-x  2 user user 4096 Sep 17 12:00 testdir
$ ls -l testdir/file.txt
-r-xr-xr-x 1 user user 123 Sep 17 12:00 testdir/file.txt

この場合、file.txt に w がなくても、ディレクトリ testdir に w があれば削除できちゃいます。
つまり「削除」はファイル内容ではなく、ディレクトリの管理権限の話なんです。


② 読み取り権限があればディレクトリに移動できる?

これも違います!

見に行くからrかなと思ってました!
ですが、ディレクトリに移動できるかどうかは「x(実行権限)」に依存します。

  • r がある … lsで中身を見られる

  • x がある … cdで入れる

なので r だけあって x がないと、中身の一覧は見えるけど中には入れない、という不思議な状態になります。


③ ファイルに x があるけど r がない場合は?

→ 実行できるけど中身は読めない、という状態です。
たとえばバイナリプログラムなどでよくあります。
「実行はできるけどソースを見せない」みたいな制御ですね。


まとめ

Linuxのパーミッションは「ファイル」と「ディレクトリ」で意味が違うため、慣れないうちはごちゃごちゃになります。

僕が昔やっていた勘違いを整理すると:

  • 実行権限があるからといって削除できるわけじゃない(親ディレクトリのw次第)

  • 読み取り権限があってもディレクトリに入れるとは限らない(xが必要)

こういった細かい違いを押さえておくと、パーミッション関連のトラブルで「なぜこれができない?」と迷子にならなくなります。

コメント

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