権限

INPUT · スライド

権限を数字で変える(`chmod 755`)

01 / 08

現場で見るのはこっち

前のレッスンで chmod u+x が使えるようになったね。でも人が書いた手順書を見ると、たいていこう書いてあるんだ。

chmod 755 run.shchmod 644 index.htmlchmod 600 ~/.ssh/id_rsa

数字だよ。記号よりこちらのほうが多く見かける。

意味を知らないままだと、これは呪文にしか見えないよね。そして検索して出てきた chmod 777 を打ってしまう。

今日でそれを終わりにしよう。この数字は足し算の答えなんだ。仕組みが分かれば、暗記するものは3つだけになるよ。

02 / 08

r は 4、w は 2、x は 1

暗記するのはこの3つだけだよ。

権限
r(読める)4
w(書ける)2
x(実行できる)1

そして、持っているものを足す

権限計算
rwx4+2+17
rw-4+26
r-x4+15
r--44
-wx2+13
-w-22
--x11
---00

0 から 7 までの8通りしかないよ。3文字の組み合わせは8通りだから、ちょうど1桁で表せるんだ。

03 / 08

なぜ 4・2・1 なのか

不思議な数に見えるけれど、選び方には理由があるよ。足したときに答えがかぶらないからなんだ。

1・2・4 の3つは、どう足しても違う答えになるよ。

4      5      6      7r--    r-x    rw-    rwx

5 を見たら「4 と 1 だから r-x」と、逆算が1通りに決まる。もし 1・2・3 という数を使っていたら、3 が「3」なのか「1+2」なのか分からなくなってしまうよね。

これは2進数の考え方だよ。rwx の3文字を「有る=1/無い=0」の3桁として見ると、r-x101。2進数の 101 は 5 だよ。ITの基礎知識コースで基数変換をやった人は、ここでつながったはずだよ。

04 / 08

3桁を3人に割り当てる

1桁で3文字を表せたので、3桁並べれば9文字ぜんぶを表せるよ。

chmod 6 4 4  memo.txt      ↑ ↑ ↑    持ち主 グループ その他

順番は記号のときと同じ、持ち主 → グループ → その他だよ。

644 を読んでみよう。

権限
持ち主6rw-(4+2)
グループ4r--
その他4r--

つなげると -rw-r--r--。前のレッスンで最初に読んだ形と同じだね。

644rw-r--r-- は同じことを言っている。呼び名が2つあるだけなんだ。

05 / 08

よく使う4つだけ覚える

全部で512通りあるけれど、実際に使うのはほぼこの4つだよ。

数字記号使いどころ
644-rw-r--r--ふつうのファイル(既定)
755-rwxr-xr-x動かすもの・ディレクトリ
600-rw-------秘密のもの(鍵・パスワード)
700-rwx------自分だけの入れ物

見比べると規則が見えるよ。下2桁が同じ数になっていることが多いんだ。グループとその他を同じ扱いにするのがふつうだからだよ。

  • 755 … 自分は全部、他はみんな読んで動かせる
  • 644 … 自分は読み書き、他はみんな読むだけ
  • 600 … 自分だけ。他は何も

この4つを覚えれば、日々の9割は足りるよ。残りは表を見ればいいからね。

06 / 08

777 はなぜ強すぎるのか

検索するとよく出てくる chmod 777これは「世界中の誰でも、読んで書いて実行していい」という意味だよ。

777 = rwx rwx rwx

何が困るんだろう。

1. 誰でも書き換えられる … 中身をすり替えられる
2. 誰でも実行できる … 仕込まれたものが動く
3. 直したい問題に対して強すぎる … 効いたとしても、なぜ効いたか分からない

777 を打つと、たいていの Permission denied は消えるよ。でもそれは鍵が開かないからドアを外したのと同じなんだ。

正しい直し方は、足りない1文字を足すことだよ。前のレッスンでやった u+x のように。あるいは 644755 のような「意味のある形」に合わせる。

この章を通ったあなたは、もう 777 を打たなくて済むよ。どの桁のどの権限が足りないか、読めるようになったからね。

07 / 08

数字と記号、どちらを使うか

両方使えるようになったので、使い分けを決めておこう。

場面向いているほう
足りない1文字を足す記号u+x
決まった形にそろえる数字644
手順書に書く数字(結果が1つに決まる)
いまの状態を知らないとき数字(決め打ちできる)

記号は「いまの状態から動かす」、数字は「いまの状態を無視して決める」だよ。だから手順書には数字が向いているんだ。誰がどんな状態から実行しても、同じ結果になるからね。

読むほうは両方できないと困るよ。他の人が書いた手順は数字が多く、エラーの説明では記号が多いからね。

数字を見たら記号に、記号を見たら数字に、頭の中で変換できるようにしておこう。今日の練習でそれをやるよ。

08 / 08

さあ、打ってみよう

ホームの中身は前のレッスンと同じだよ。

  • run.sh … 動かしたいファイル
  • memo.txt … ふつうのメモ
  • himitsu.txt … 秘密にしたい
  • shorui/ … 入れ物

数字を見たら、頭の中で3つに割って足し算を戻してみて。751 なら「7 = rwx、5 = r-x、1 = --x」だね。

確かめるのに便利な道具を1つ足しておくよ。stat -c %a は権限を数字で出してくれるんだ(%A は記号だったね)。数字で指示して数字で確かめられるので、答え合わせがしやすいよ。