権限

INPUT · スライド

`ls -l` の9文字を読む

01 / 07

Permission denied の正体

端末で最初に心が折れるのがこの一言だよ。

~ $ ./run.sh-sh: ./run.sh: Permission denied

「許可がありません」。でも誰が誰に許可していないのかが書いていない。だから直しようがなくて、検索して出てきた chmod 777 を打ってしまう。

この章はそこを終わらせる回だよ。まず今日は読めるようになるだけ。何も変えない。

読めるようになると、Permission denied が「謎のエラー」から「ここが足りていません」という具体的な報告に変わるからね。

02 / 07

ls -l は7つの列

-l(long)を付けると、名前だけでなく細かい情報が出るよ。

~ $ ls -l memo.txt-rw-r--r--  1 manabiya manabiya  52 Aug 21 08:47 memo.txt

左から順にこうだよ。

位置中身
-rw-r--r--種類と権限(今日の主役)
1リンクの数
manabiya持ち主
manabiyaグループ
52大きさ(バイト)
Aug 21 08:47最後に変えた時刻
memo.txt名前

覚えるのは1列目だけでいいよ。残りは見れば分かるからね。

03 / 07

1文字目は「種類」

1列目は全部で10文字あるけれど、最初の1文字だけは仲間外れだよ。権限ではなく種類を表しているんだ。

文字種類
-ふつうのファイル
dディレクトリ(directory)
lシンボリックリンク(link)
c文字を1つずつ扱う装置
bまとめて扱う装置

最初の2つを覚えれば十分だよ。d で始まっていたら入れ物、- で始まっていたらファイル。

ls -l の代わりに ls -ld を使うと、ディレクトリを中身ではなくそれ自体として見られるよ。ls -l shorui は中身の一覧が出てしまうので、入れ物の権限を見たいときは -d が要るんだ。

~ $ ls -ld shoruidrwxr-xr-x    2 manabiya manabiya        60 Aug 21 08:47 shorui

04 / 07

残りの9文字を、3つずつ区切る

ここが今日の山場だよ。でも仕組みはとても単純だよ。

-  rw-  r--  r--↑   ↑    ↑    ↑種類 持ち主 グループ その他

9文字を3文字ずつ、3つに区切る。区切ったそれぞれが「誰の権限か」を表しているんだ。

区切り誰のこと
1〜3文字目持ち主(user)
4〜6文字目グループ(group)
7〜9文字目その他みんな(other)

-rw-r--r-- なら「持ち主は rw-、グループは r--、その他は r--」と読むよ。

区切りが見えるようになると、この記号列はもう怖くないよ。

05 / 07

r・w・x の意味

3文字の中身は、いつも同じ順番で同じ意味だよ。

文字意味
r読める(read)
w書ける(write)
x実行できる(execute)
-その権限が無い

順番は必ず rwx で固定だよ。だから2文字目が - なら「書けない」、3文字目が - なら「実行できない」と、位置だけで判断できるんだ。

さっきの ./run.sh に戻ろう。

-rw-r--r--  run.sh

持ち主の3文字が rw- で、3文字目が - になっているね。実行の印が立っていない。だから「動かして」と頼んでも断られたんだ。

謎のエラーではなく、ちゃんと理由があったんだよ。

06 / 07

本物を読んでみよう

この Linux に元から入っているファイルを読むと、権限の使い分けが見えてくるよ。

ファイル権限読み方
/etc/passwd-rw-r--r--誰でも読めるが、書けるのは持ち主だけ
/etc/shadow-rw-------持ち主以外は何もできない(パスワードだから)
/rootdrwx------管理者の部屋。他の人は覗けない
/bin/shlrwxrwxrwxl なのでリンク(近道)

/etc/shadow を見てほしいな。9文字のうち後ろ6文字が全部 -。これが「秘密のファイル」の形だよ。パスワードが入っているので、持ち主(root)以外には1文字も見せない。

こうやって、大事なものほど権限が狭い。逆に言うと、権限を読めば「これは大事なファイルなのか」が分かるんだ。

07 / 07

さあ、打ってみよう

ホームには4つ置いてあるよ。

  • memo.txt … ふつうのメモ
  • run.sh … 動かしたいのに動かないファイル
  • himitsu.txt … 秘密にしたいファイル
  • shorui/ … ディレクトリ

今日は変えない。読むだけだよ。chmod は次のレッスンから使うからね。

読むための道具は2つあるよ。ls -l(一覧の形で見る)と stat -c %A(権限の9文字だけを出す)。stat のほうは、あとでファイルに書き出したいときに便利だよ。