01 / 07
足りない1文字を足す
前のレッスンで、run.sh が動かない理由まで分かったね。
-rw-r--r-- run.sh ↑ ここが - になっている持ち主の3文字目、つまり実行の印が無い。だから足せばいいんだ。
chmod u+x run.shこれで動くようになるよ。読み方はそのまま「u(持ち主)に + (足す)x(実行)」だよ。
英語の文のように読めるのが、記号で書くやり方のいいところだよ。
権限
INPUT · スライド
01 / 07
前のレッスンで、run.sh が動かない理由まで分かったね。
-rw-r--r-- run.sh ↑ ここが - になっている持ち主の3文字目、つまり実行の印が無い。だから足せばいいんだ。
chmod u+x run.shこれで動くようになるよ。読み方はそのまま「u(持ち主)に + (足す)x(実行)」だよ。
英語の文のように読めるのが、記号で書くやり方のいいところだよ。
02 / 07
chmod に渡す3つの部品chmod の指示は3つの部品をくっつけて作るよ。
chmod u + x run.sh ↑ ↑ ↑ 誰に どうする 何を順番はいつも「誰に・どうする・何を」だよ。バラバラに覚えるより、3つの表を1回だけ見るのが早いよ。
| 誰に | 意味 |
|---|---|
u | 持ち主(user) |
g | グループ(group) |
o | その他みんな(other) |
a | 全員(all)。ugo と同じ |
chmod は change mode(権限を変える)の略だよ。mode という言葉は「権限のかたまり」を指す呼び名で、これから何度も出てくるよ。
03 / 07
+ と - と =「どうする」は3つあるよ。
| 記号 | 意味 |
|---|---|
+ | 足す(いま有るものは残す) |
- | 引く(いま有るものから消す) |
= | これだけにする(残りは消す) |
+ と - は分かりやすいね。気をつけるのは = だよ。
chmod u=r memo.txtこれは「持ち主は読むだけ」という意味で、書ける権限があっても消えるんだ。+ や - が「いまの状態から動かす」のに対して、= は「いまの状態を無視して決め打ちする」んだよ。
迷ったら + と - を使うといいよ。いまの状態を壊さないので安全だからね。
04 / 07
カンマで区切ると、いくつもまとめて指示できるよ。
chmod u=rw,go= himitsu.txt読んでみよう。「持ち主は読み書きだけ、グループとその他は何も無し」。go= のうしろに何も書かないのが「全部消す」という意味なんだ。
結果は -rw------- になるよ。前のレッスンで見た /etc/shadow と同じ、秘密のファイルの形だね。
カンマの前後に空白を入れてはいけないよ。空白があると、シェルがそこで区切って別のファイル名だと思ってしまうからね。章10の「展開」でその仕組みをやるよ。
~ $ chmod u=rw,go= himitsu.txt~ $ stat -c %A himitsu.txt-rw-------05 / 07
ファイルはいくつ並べてもいいよ。
chmod a-w memo.txt himitsu.txt2つとも「誰も書けない」状態になるよ。
ワイルドカードも使えるよ。
chmod u+x *.sh.sh で終わるファイル全部に実行の印を立てる、という意味だね。スクリプトをまとめて作ったあとによく使う形だよ。
ここでも「並べたものを全部処理する」という Unix のやり方が出てきているね。rm も cp も grep も同じだったのを思い出してね。
06 / 07
権限を引くと、できなくなることが目に見えて増えるよ。ここはわざと失敗してみるのが一番わかりやすいんだ。
| やったこと | 結果 | 打つと |
|---|---|---|
chmod u-w memo.txt | -r--r--r-- | >> で足せない |
chmod a-r himitsu.txt | --w------- | cat で読めない |
chmod a-x run.sh | -rw-r--r-- | ./run.sh が動かない |
エラーの言葉も見ておこう。誰が言っているかで文が違うんだ。
cat: can not open himitsu.txt: Permission denied-sh: can not create memo.txt: Permission denied1つめは cat が言っている。2つめの -sh はシェルだよ。>> はシェルの仕事だったから、断られるのもシェルなんだ。章4でやった「> はコマンドではなくシェルがやっている」がここで効いてくるね。
07 / 07
ホームには3つのファイルと1つの入れ物があるよ。
run.sh … 動かしたい(echo うごいた と書いてある)memo.txt … ふつうのメモhimitsu.txt … 秘密にしたいshorui/ … 入れ物(このレッスンでは触らない)どの問題も変えたら ls -l か stat -c %A で確かめるのを忘れないでね。権限は目に見えないところで効くので、確かめる癖が身を守るよ。
1つだけ約束。chmod 777 は打たない。この章の最後まで来たら、なぜそれが強すぎるのか自分で説明できるようになっているはずだよ。