ファイルパーミッション(file permissions)の考え方 - rwxとowner/group/otherを直感で掴む

ファイルパーミッション(file permissions)の考え方 - rwxとowner/group/otherを直感で掴む

パーミッションの文字列が呪文に見えていませんか?

ls -l を打ったら、行頭に -rw-r--r-- みたいな文字列が並んでいて、「これ何の暗号…?」と固まった経験はないだろうか。これが パーミッション(permission) ——ファイルへのアクセス権を表す表示だ。

一見すると呪文だが、実は「誰が」「何をできるか」という2つの軸を並べただけのシンプルな仕組みだ。この記事では、owner / group / other という3者と、rwx(読み・書き・実行)の組み合わせを、ライナとライニー先輩の会話で直感的に整理していく。読み終わるころには、-rwxr-xr-- を見て「ああ、こういう権限か」と一目で読めるようになる。

この記事でわかること

  • パーミッションが「誰が」「何を」できるかを決める仕組みであること
  • owner(所有者)/ group(グループ)/ other(その他)の3者の意味
  • r(読む)/ w(書く)/ x(実行)の意味
  • ls -l の先頭10文字の読み方
  • ファイルとディレクトリで rwx の意味が変わること
  • 755 644 のような数字表記との対応

1. そもそもパーミッションは何のため?

結論: パーミッションは「誰がこのファイルに何をしてよいか」を決めるルール。勝手に読まれたり壊されたりするのを防ぐための仕組み。

リナ: ライニー先輩、ls -l したときの行の最初にある -rw-r--r-- って何ですか? ずっと見ないふりしてました…
ライニー先輩: それは「パーミッション」だよ。日本語だと「アクセス権」。そのファイルに対して「誰が」「何をしていいか」を決めているんだ。
リナ: 誰が何を、ですか?
ライニー先輩: そう。Linux は一台のマシンを複数の人が共有して使うことを前提に作られている。だから「自分のファイルは他人に勝手に書き換えられたくない」「でも読むだけなら許す」みたいな細かい設定が必要なんだ。その設定がパーミッション。
リナ: なるほど。鍵のかかり具合みたいなものですね。

パーミッション=「誰が」×「何を」の表

パーミッションは難しそうに見えるが、たった2つの軸でできている。

  • 誰が: owner / group / other の3者
  • 何を: r(読む)/ w(書く)/ x(実行)の3つ

この「3 × 3」の格子さえ掴めば、どんな表示も読み解ける。

2. owner / group / other の3者とは?

結論: パーミッションは3者に分けて設定する。owner(持ち主本人)/ group(同じグループの仲間)/ other(それ以外の全員)。

リナ: まず「誰が」のほうから教えてください。
ライニー先輩: 「誰が」は3つのグループに分かれる。owner(オーナー)、group(グループ)、other(その他)だよ。
リナ: 3人の登場人物がいる感じですか?
ライニー先輩: いいたとえだね。owner はそのファイルを作った本人、つまり持ち主。group はそのファイルに割り当てられた「グループ」に属する人たち。other はそのどちらでもない、残り全員だよ。
リナ: 会社の書類でいうと…?
ライニー先輩: そう、まさにそんな感じ。owner は書類を作った自分、group は同じチームのメンバー、other は社外の人。同じ書類でも「自分は編集可」「チームは閲覧可」「社外は触れない」と分けたいでしょ。それと同じだよ。
区分 読み方 誰のこと
owner オーナー / u ファイルの持ち主本人
group グループ / g ファイルのグループに属するメンバー
other アザー / o 上のどちらでもない残り全員

3者は「u / g / o」と略される

chmod などのコマンドでは owneru(user)、groupgothero と略す。a(all)と書けば3者まとめての意味になる。この略記は後で chmod u+x のように使うので頭の片隅に置いておこう。

3. rwx(読む・書く・実行する)の意味は?

結論: r は読む(read)、w は書く・変更する(write)、x は実行する(execute)。この3つの許可を3者それぞれに与える。

リナ: 次は「何を」のほうですね。rwx って書いてあるやつ。
ライニー先輩: そう。3文字それぞれが1つの操作を表している。r は read(読む)、w は write(書く・変更する)、x は execute(実行する)だよ。
リナ: 実行する、っていうのは?
ライニー先輩: プログラムやスクリプトを「動かす」権限のことだね。たとえば script.sh を実行したいなら、そのファイルに x が付いていないと動かせない。逆に、ただのメモ帳ファイルに x は普通いらない。
リナ: 読む・書く・動かす。3つだけなら覚えられそう。
記号 英語 意味
r read 中身を読む / 一覧を見る
w write 中身を変更する / 追加・削除
x execute 実行する / 中に入る

権限が無いところは - で埋める

rwx のうち許可されていないものは、その位置が -(ハイフン)で表示される。たとえば r-- なら「読むだけOK、書く・実行はNG」。rw- なら「読み書きOK、実行はNG」。- は「ここの権限は無い」という空席のしるしだと思えばいい。

4. ls -l の先頭10文字はどう読む?

結論: 先頭の10文字は「1文字(種類)+ owner の rwx + group の rwx + other の rwx」。3文字ずつ区切って読む。

リナ: いよいよ本題です。-rw-r--r-- を読めるようになりたい!
ライニー先輩: よし、分解してみよう。この10文字は、最初の1文字とそのあとの「3文字 × 3ブロック」でできているんだ。
リナ: 3文字ずつ区切るんですね。
ライニー先輩: そう。最初の1文字はファイルの種類(- なら普通のファイル、d ならディレクトリ)。残りの9文字を3つに割ると、左から owner の権限・group の権限・other の権限になる。さっきの「誰が × 何を」の格子そのものだよ。

-rw-r--r-- を区切って読むと、こうなる。

-  rw-  r--  r--
↑   ↑    ↑    ↑
種類 owner group other
  • 先頭 -: 普通のファイル(d ならディレクトリ)
  • rw-: owner は 読みr 書きw 実行なし-
  • r--: group は 読みr のみ
  • r--: other も 読みr のみ

つまり「持ち主は読み書きできるが、それ以外の人は読むだけ」という、設定ファイルなどでよく見る権限だ。

実際に確認してみよう。

ls -l memo.txt
-rw-r--r-- 1 lina staff 42 Jun  6 10:00 memo.txt

10文字の読み方テンプレート

  1. 1文字目: -(ファイル)か d(ディレクトリ)か
  2. 2〜4文字目: owner(持ち主)の rwx
  3. 5〜7文字目: group(グループ)の rwx
  4. 8〜10文字目: other(その他)の rwx

迷ったら「種類・自分・仲間・他人」と唱えながら3文字ずつ区切ろう。

ls -l の3〜4列目もセットで見る

権限の文字列のあとに出てくる lina staff の部分が、その owner 名と group 名だ。-rw-r--r-- が「誰にとっての権限か」は、この所有者・グループ表示と合わせて初めて意味を持つ。権限文字列だけでなく、隣の名前も一緒に見るクセをつけよう。

5. ファイルとディレクトリで rwx の意味は変わる?

結論: 変わる。ディレクトリでは r=中身を一覧、w=ファイルの追加削除、x=中に入る(cd できる)を意味する。

リナ: ディレクトリにも rwx が付いてますけど、ファイルと同じ意味ですか?
ライニー先輩: いい着眼点。実は微妙に意味が変わるんだ。ディレクトリは「ファイルを入れる箱」だから、操作の対象が「箱そのもの」になる。
リナ: 箱に対する読む・書く・実行…?
ライニー先輩: 順番に言うと、r は「箱の中のファイル名を一覧できる」、w は「箱にファイルを足したり消したりできる」、x は「箱の中に入れる(cd できる)」だよ。
リナ: x が「実行」じゃなくて「中に入る」になるんですね。
ライニー先輩: そこがつまずきポイント。ディレクトリに x が無いと、たとえ中身があっても cd で入れないし、その中のファイルにもアクセスできない。だからディレクトリには x が付いていることが多いんだ。
権限 ファイルでは ディレクトリでは
r 中身を読む 中のファイル名を一覧する
w 中身を書き換える ファイルを追加・削除する
x プログラムを実行する 中に入る(cd)・中身へアクセス

ディレクトリの x を消すと「中身があるのに入れない」事故になる

ディレクトリから x を外すと、Permission deniedcd できなくなる。「ファイルはあるはずなのに開けない」というトラブルの原因は、ディレクトリ側の x 不足であることが多い。詳しくは Permission denied の直し方 を参照。

6. 755 や 644 みたいな数字は何?

結論: rwx を数字に置き換えた表記。r=4 w=2 x=1 を足して、owner・group・other の順に3桁で書いたもの。

リナ: chmod 755 とか 644 っていう数字も見るんですけど、これは何ですか?
ライニー先輩: それは rwx を数字で表したものだよ。同じ権限を、文字じゃなく数字で短く書いているだけ。
リナ: どう変換するんですか?
ライニー先輩: それぞれの権限に点数を付けるんだ。r は4点、w は2点、x は1点。許可されている権限の点数を足すと、その桁の数字になる。
リナ: たとえば rwx なら…?
ライニー先輩: 4 + 2 + 1 = 7。rw- なら 4 + 2 = 6。r-- なら 4 だね。これを owner・group・other の順に3つ並べると 644 みたいな3桁になる。
rwx 計算 数字
rwx 4 + 2 + 1 7
rw- 4 + 2 6
r-x 4 + 1 5
r-- 4 4
--- 0 0

だから 644rw-r--r--(owner=6・group=4・other=4)、755rwxr-xr-x(owner=7・group=5・other=5)を意味する。

chmod 644 memo.txt
ls -l memo.txt
-rw-r--r-- 1 lina staff 42 Jun  6 10:00 memo.txt

よく使う2つだけ先に覚えればいい

  • 644rw-r--r--): 普通のファイル。持ち主は読み書き、他は読むだけ
  • 755rwxr-xr-x): スクリプトやディレクトリ。持ち主は全部、他は読む+実行(=入る)

この2つで日常の大半をカバーできる。数字と記号の細かい使い分けは chmod の数字表記と記号表記 で深掘りできる。

7. 手を動かして確かめるには?

結論: ブラウザ上のターミナルで ls -lchmod を実際に打つのが、いちばん速い定着方法。

リナ: 頭では分かった気がするんですけど、まだ自信がないです…
ライニー先輩: パーミッションは「見て覚える」より「変えて確かめる」のが早い。chmod で権限を変えて、ls -l で表示がどう変わるか目で追うと、一気に腑に落ちるよ。
リナ: 自分の環境で壊したら怖くないですか?
ライニー先輩: 練習用のファイルを作ってやれば大丈夫。それも不安なら、ブラウザで試せる練習場を使うといい。
chmod u+x script.sh
ls -l script.sh
-rwxr--r-- 1 lina staff 18 Jun  6 10:05 script.sh

u+x(owner に実行権を追加)で rw-rwx に変わったのが分かる。

Penguin Gym Linux のターミナルls -lchmod を何度も打って、表示がどう変化するかを目で確かめよう。「数字を変える → 文字列が変わる」を体感すると、パーミッションは一気に怖くなくなる。

まとめ

  • パーミッションは「誰が」×「何を」できるかを決める仕組み
  • 誰が: owner(持ち主)/ group(仲間)/ other(その他)の3者
  • 何を: r(読む)/ w(書く)/ x(実行・ディレクトリは入る)
  • ls -l の先頭10文字は「種類+ owner + group + other」を3文字ずつ
  • 数字表記は r=4 w=2 x=1 を足したもの。644755 をまず覚える

次に読む