ファイルパーミッション(file permissions)の考え方 - rwxとowner/group/otherを直感で掴む
この記事でできるようになること
- rwx と owner / group / other の意味を直感的に読める
- パーミッション表示(例: rwxr-xr-x)を分解して理解できる
前提知識(先に読むと理解しやすい記事)
パーミッションの文字列が呪文に見えていませんか?
ls -l を打ったら、行頭に -rw-r--r-- みたいな文字列が並んでいて、「これ何の暗号…?」と固まった経験はないだろうか。これが パーミッションファイルやディレクトリに対する「読む・書く・実行する」権限の設定。(permission) ——ファイルへのアクセス権を表す表示だ。「パーミッション」「アクセス権」「権限」は、どれも同じものを指す別の呼び方になる。
一見すると呪文だが、仕組みはシンプルだ。「誰が」「何をできるか」という2つの軸を並べただけである。この記事では、owner / group / other という3者と、rwx(読み・書き・実行)の組み合わせを、リナとライニー先輩の会話で整理していく。読み終わるころには、-rwxr-xr-- を見て「ああ、こういう権限か」と一目で読めるようになる。
この記事でわかること
- パーミッションが「誰が」「何を」できるかを決める仕組みであること
owner(所有者)/group(グループ)/other(その他)の3者の意味r(読む)/w(書く)/x(実行)の意味ls -lの先頭10文字の読み方- ファイルとディレクトリファイルをまとめて整理する入れ物。Windows や macOS の「フォルダ」と同じもの。で
rwxの意味が変わること 755644のような数字表記との対応
1. そもそもパーミッションは何のため?
結論: パーミッションは「誰がこのファイルに何をしてよいか」を決めるルール。勝手に読まれたり壊されたりするのを防ぐための仕組み。
ls -l したときの行の最初にある -rw-r--r-- って何ですか? ずっと見ないふりしてました…パーミッション=「誰が」×「何を」の表
パーミッションは難しそうに見えるが、たった2つの軸でできている。
- 誰が:
owner/group/otherの3者 - 何を:
r(読む)/w(書く)/x(実行)の3つ
この「3 × 3」の格子さえ掴めば、どんな表示も読み解ける。
2. owner / group / other の3者とは?
結論: パーミッションは3者に分けて設定する。
owner(持ち主本人)/group(同じグループの仲間)/other(それ以外の全員)。
owner(オーナー)、group(グループ)、other(その他)だよ。owner はそのファイルを作った本人、つまり持ち主。group はそのファイルに割り当てられた「グループ」に属する人たち。other はそのどちらでもない、残り全員だよ。owner は書類を作った自分、group は同じチームのメンバー、other は社外の人。同じ書類でも「自分は編集可」「チームは閲覧可」「社外は触れない」と分けたいでしょ。それと同じだよ。| 区分 | 読み方 | 誰のこと |
|---|---|---|
owner |
オーナー / u | ファイルの持ち主本人 |
group |
グループ / g | ファイルのグループに属するメンバー |
other |
アザー / o | 上のどちらでもない残り全員 |
3者は「u / g / o」と略される
chmod などのコマンドでは owner を u(user)、group を g、other を o と略す。a(all)と書けば3者まとめての意味になる。この略し方は後で chmod u+x のように使うので、頭の片隅に置いておこう。
3. rwx(読む・書く・実行する)の意味は?
結論:
rは読む(read)、wは書く・変更する(write)、xは実行する(execute)。この3つの許可を3者それぞれに与える。
rwx って書いてあるやつ。r は read(読む)、w は write(書く・変更する)、x は execute(実行する)だよ。script.sh を実行したいなら、そのファイルに x が付いていないと動かせない。逆に、ただのメモ帳ファイルに x は普通いらない。| 記号 | 英語 | 意味 |
|---|---|---|
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-- を読めるようになりたい!ls -l の -l は「オプション」——コマンドの動きを変える追加の指定だよ。ハイフンで始まるのが目印で、-l は long(くわしく)の頭文字なんだ。- なら普通のファイル、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のみ
図1: 同じ -rw-r--r-- を「誰が × 何を」の格子に置き換えたもの。緑の文字が許可されている操作、- は許可されていない操作だ。図中の type は本文の「種類」にあたる。
つまり「持ち主は読み書きできるが、それ以外の人は読むだけ」という、設定ファイルなどでよく見る権限だ。
実際に確認してみよう。
ls -l memo.txt
-rw-r--r-- 1 lina lina 42 Jun 6 10:00 memo.txt
10文字の読み方テンプレート
- 1文字目:
-(ファイル)かd(ディレクトリ)か - 2〜4文字目: owner(持ち主)の rwx
- 5〜7文字目: group(グループ)の rwx
- 8〜10文字目: other(その他)の rwx
迷ったら「種類・自分・仲間・他人」と唱えながら3文字ずつ区切ろう。
ls -l の3〜4列目もセットで見る
権限の文字列のあとに出てくる lina lina の部分が、その 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 を消すと「中身があるのに入れない」事故になる
ディレクトリの w は x とセットで初めて働く。w だけ付けても、中に入れないのでファイルは作れない。
ディレクトリから x を外すと、Permission denied で cd できなくなる。「ファイルはあるはずなのに開けない」というトラブルの原因は、ディレクトリ側の x 不足であることが多い。詳しくは Permission denied の直し方 を参照。
chmod 777 は「全員に何でも許す」設定なので避ける
エラーを早く消したくて chmod 777 を打つ例をネットでよく見かける。これは危ない近道だ。
- 何が起きるか: owner / group / other の全員に読み・書き・実行のすべてを許す。他人に書き換えられても Linux は止めてくれない
- 安全な選び方: ファイルは
644、スクリプトやディレクトリは755から始める。足りなければchmod u+xのように、要る分だけ足す - 安心してほしいこと: 本サイトの仮想ターミナル入力したコマンドを解釈してコンピュータに実行させる対話プログラム。は学習用だ。あなたのパソコンは壊れない。
777を打ってしまう失敗も、ここで先に試しておけばいい
6. 755 や 644 みたいな数字は何?
結論:
rwxを数字に置き換えた表記。r=4w=2x=1を足して、owner・group・other の順に3桁で書いたもの。
chmod 755 とか 644 っていう数字も見るんですけど、これは何ですか?rwx を数字で表したものだよ。同じ権限を、文字じゃなく数字で短く書いているだけ。r は4点、w は2点、x は1点。許可されている権限の点数を足すと、その桁の数字になる。rwx なら…?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 |
だから 644 は rw-r--r--(owner=6・group=4・other=4)、755 は rwxr-xr-x(owner=7・group=5・other=5)を意味する。
chmod 644 memo.txt ls -l memo.txt
-rw-r--r-- 1 lina lina 42 Jun 6 10:00 memo.txt
よく使う2つだけ先に覚えればいい
644(rw-r--r--): 普通のファイル。持ち主は読み書き、他は読むだけ755(rwxr-xr-x): スクリプトやディレクトリ。持ち主は全部、他は読む+実行(=入る)
この2つで日常の大半をカバーできる。数字と記号の細かい使い分けは chmod の数字表記と記号表記 で深掘りできる。
7. 手を動かして確かめるには?
結論: ブラウザ上のターミナルで
ls -lとchmodを実際に打つのが、いちばん速い定着方法。
chmod で権限を変えて、ls -l で表示がどう変わるか目で追うと、一度で理解できるよ。ls -l script.sh chmod u+x script.sh ls -l script.sh
-rw-r--r-- 1 lina lina 18 Jun 6 10:05 script.sh -rwxr--r-- 1 lina lina 18 Jun 6 10:05 script.sh
1行目と2行目を見比べると、u+x(owner に実行権を追加)で rw- が rwx に変わったのが分かる。
Penguin Gym Linux のターミナル で ls -l と chmod を何度も打って、表示がどう変化するかを目で確かめよう。「数字を変える → 文字列が変わる」を体感すると、パーミッションは一気に怖くなくなる。
リナ、スクリプトが動かない
結論:
xが付いていないファイルは実行できない。Permission deniedはls -lでxがあるかを確かめるサイン。
echo 'echo "Hello, Penguin Gym"' > hello.sh
./hello.sh と書く。先頭の ./ は「今いる場所のこのファイル」という意味だよ。./hello.sh っと…あれ、断られました。./hello.sh
bash: ./hello.sh: Permission denied
ls -l で今の権限を見てみよう。ls -l hello.sh
-rw-r--r-- 1 lina lina 32 Jun 6 10:20 hello.sh
rw- です。あっ、x がありません。x が要る。chmod u+x で足してみよう。chmod u+x hello.sh ./hello.sh
Hello, Penguin Gym
Permission denied を見たら、まず ls -l で x を確認すればいいんですね。ミニ課題
結論: この記事で出てきた
ls -lとchmodを実際に打って、表示の変化を目で確かめよう。
touch memo.txt echo 'echo "Hello, Penguin Gym"' > script.sh
課題1: ファイルの権限を表示しよう
やること: memo.txt の権限を、先頭の10文字が見える形で出そう。
ヒント1(方向づけ)を見る
一覧を出すコマンドに、くわしく出すオプションを付ける。long(長い)の頭文字だよ。
ヒント2(コマンド名)を見る
ls -l を使うよ。
答えを見る
ls -l memo.txt
-rw-r--r-- 1 lina lina 42 Jun 6 10:00 memo.txt
課題2: owner に実行の許可を足そう
やること: script.sh の owner に x を追加して、表示が変わったか確かめよう。
ヒント1(方向づけ)を見る
権限を変えるコマンドに「誰に・何を・足す」を渡す。owner の略記は u だったね。
ヒント2(コマンド名)を見る
chmod u+x を使い、そのあと ls -l で確認するよ。
答えを見る
chmod u+x script.sh ls -l script.sh
-rwxr--r-- 1 lina lina 18 Jun 6 10:05 script.sh
課題3: 数字表記で 644 に戻そう
やること: script.sh を「持ち主は読み書き、他は読むだけ」に戻そう。
ヒント1(方向づけ)を見る
r=4 w=2 x=1 を足して3桁で書く。持ち主は 4+2、他の2者は 4 だけだよ。
ヒント2(コマンド名)を見る
chmod 644 を使うよ。
答えを見る
chmod 644 script.sh ls -l script.sh
-rw-r--r-- 1 lina lina 18 Jun 6 10:06 script.sh
振り返り
結論: パーミッションは「誰が × 何を」の3×3の格子。
ls -lの10文字を3文字ずつ区切れば読める。
ls -l の10文字は、種類・自分・仲間・他人の順に区切って読めばいいんですね。x は、ファイルなら「実行」、ディレクトリなら「中に入る」に変わるところだけ気をつけよう。644 と 755 も、r=4 w=2 x=1 の足し算だと分かりました。chmod で変えて ls -l で確かめる、を繰り返すだけだよ。今日の3行まとめ
結論: 「誰が × 何を」の格子・10文字の区切り方・数字表記の3点で、パーミッションは読み書きできる。
- パーミッションは「誰が」×「何を」の3×3の格子 -
owner/group/otherにr/w/xを当てはめる ls -lの先頭10文字は「種類+owner+group+other」 - 3文字ずつ区切って読む。ディレクトリのxは「中に入る」- 数字表記は
r=4w=2x=1の足し算 - まず644(普通のファイル)と755(スクリプト・ディレクトリ)を覚える