【つづき】つるのおんがえしで学ぶLinuxコマンド「決して、この部屋をのぞかないで」〜chmodとchown〜

![20180403135544.jpg](https://qiita-image-store.s3.amazonaws.com/0/74851/4de3ff72-cb4a-d3fc-afd0-9a3f8dae7a8e.jpeg)


# この記事のゴール

```bash
chmod 705 tsuru
```

```bash
chown root:root tsuru
```
というコマンドで何を行っているのか、わかるようになる（はず）。


# 前回の記事

今回の記事は、以下の記事の続きです。

[つるのおんがえし「決して、この部屋をのぞかないで」〜LinuxのPermission deniedについて真剣に考える〜](https://qiita.com/carotene555/items/2972c68027fb29086378)

↑　こちらとあわせてご覧くださいませ。


# あらすじ

おじいさんが罠にかかっているつるを見つけて、助けてやりました。

夜、一人のおんながおじいさんの家にやってきて、一晩泊めてほしいといいます。

やさしいやさしいおじいさんはおんなを家に招き入れ、

おんなはいろいろ良くしてもらったお礼に、はた（美しい布）をおりたいといいました。

おんな「はたをおりあげるまで、決してのぞかないでください」

しかしおじいさんは、好奇心から部屋をのぞこうとしてしまいます。

# つづき

おじいさんは、おんなの部屋の前でしばらくたたずんでいましたが、

決心がついたのか、

おじいさんはおもむろにrootユーザになりました。

```
[jiisan@ie ~] $ su
パスワード: 
[root@ie ~] #
[root@ie ~] # cd /home
```

おじいさん「ばあさんや、、、わしの不徳を許しておくれ。。。」

おじいさんは天国にいるおばあさんに言い訳をしながら、

節くれだった手をHHKB （すごく高いキーボード）に走らせます。

```
[root@ie home] # chmod 705 tsuru
```
つるの部屋の「パーミッション」を705に変更。

管理者おじいさんは、悲しそうにつぶやきます。

管理者おじいさん「わしはもう、」

```
[root@ie home] # exit
[jiisan@ie ~] $ cd /home
```
おじいさん「もどれないのじゃ。。。」

```
[jiisan@ie home] $ cd tsuru
```

おじいさんは、ついにおんなの部屋に入ってしまいました。

# 部屋の中には、おんなではなく美しいつるがいました

そこには、美しい羽を持ったつるが、自らの羽を使って布を織っていました。

おどろきとかなしみの入り混じった表情を浮かべるつる。

つる「私との約束を、破られてしまったのですね。。。」

かなしそうに、つるはつぶやきます。

おじいさん「な、、、なんとおまえさんは、、、」

驚愕の表情を浮かべるおじいさん。

つるは伏し目がちに、真実を告白します。

つる「だまっていてもうしわけありません。実は、私はつr「知っておった」


つる「………え…？」

おじいさん「……知っておったのじゃ」

# そのときつるは思い出した

![ZtYw4fjT6L5iTEB1523181380_1523181384.png](https://qiita-image-store.s3.amazonaws.com/0/74851/546950b2-e4e4-c7ea-acb5-b1197d4e2ddc.png)

つる「まさかあなたははじめから……！」

やさしそうな表情から一転、

**おじいさんは壮絶な笑みを浮かべました。**




おじいさん「どれだけ童話の主人公をやってきたとおもっているのじゃ」

おじいさん「あんたをつると見抜くなど、造作も無いこと」

**おじいさんはつるににじり寄っていきます。**

おじいさん「お主に与えられた部屋が『tsuru』の時点で気付かないとは」

おじいさん「おろかな、おろかな、つるだこと」

つる「…！」

# つるは命の危機を感じました。

つるはとっさに、shellで組んだはた織り機を実行しました。

```
[tsuru@ie tsuru] $ sh hataori.sh
```

鋭い鳥の羽根がおじいさんに向かって矢のようにとんでいきます。

その数、数千本。


おじいさん「ちぃっ！」

おじいさんはギリギリのところでそれをよけました。

床をゴロゴロ転がりながら、おじいさんは再びroot userに。

```
[jiisan@ie ~] $ su
パスワード: 
[root@ie ~] #
```
lsではた織り機のパーミッションを確認。

```
[root@ie tsuru] # ls -l
-rw-rw-r-x. 1 tsuru tsuru 0  4月  8 18:09 2018 hataori.sh
```
管理者おじいさん「ぬるいな」

そのままhataori.shの所有権・グループ・パーミッションを

目に止まらぬ速さで変更してしまいました。

```
[root@ie tsuru] # chown root:root hataori.sh
[root@ie tsuru] # chmod 700 hataori.sh
```


あまりの速さに、何が起こったかわからないつる。

再び反撃。はたおり機を実行します。

```
[tsuru@ie tsuru] $ sh hataori.sh
sh: hataori.sh: 許可がありません
```

つる「…！」

はたおり機は、動きませんでした。

管理者おじいさん「もうお前さんにできることはなにもない」


管理者おじいさん「鳥かごの中で」

管理者おじいさん「永久にはたを織り続けるが良い」

超高速の指さばき。

ありえない速さで書き換わる、サーバの設定値。


# すべてがおわったあと、つるは囚われの身となっていました

```
[tsuru@ie /] $
```

つる「え……！？」

つる「どうして、わたしはrootディレクトリにいるの…？」

```
[tsuru@ie /] $ ls
hataori.sh
```
つる「でも、はた織り機がある。。。」

```
[tsuru@ie /] $ cd ..
[tsuru@ie /] $ 
```
つる「homeディレクトリにいけない…」

つる「まさか…！」

なんということでしょう。

管理者おじいさんはOpenSSHのchroot設定をいじり、

つるをtsuruディレクトリよりも上のディレクトリにいけなくしてしまいました。

これでもう、つるはtsuruの部屋から出ることができません。


# つるは何が起こったのか理解した

つる「あなた、なんてことを・・・！」

絶望の声をあげるつる。

管理者おじいさんはつるに背中をむけ、言い放ちます。

管理者おじいさん「おまえさんにはあとで、はた織り機の実行権だけあげよう」

管理者おじいさん「永久に、このtsuruディレクトリではたを織り続けるのだ」

管理者おじいさん「永久にな」

そういっておじいさんは、部屋を出ていきました。

```
[root@ie tsuru] # cd ..
[root@ie home] # 
```

# その後

背後から甲高い鶴の鳴き声が聞こえましたが、

おじいさんにはもう聞こえていませんでした。

管理者おじいさん「……今回はなかなかてこずったわい」

おじいさんは一息つきました。

そして、おじいさんは、

端末に「ls」と打ち込みました。

```
[root@ie home] # ls
jiisan baasan tsuru tsuru1 tsuru2 tsuru3 … tsuru979
```
………そこには大量の「tsuruディレクトリ」が存在していました。

おじいさんはlsの結果をみて、にやりと笑います。

管理者おじいさん「さて、次はどこに罠をしかけようかの」

（おしまい）

# 解説

## おじいさんがつるの部屋に入る前のパーミッションの変更

### 概要

```bash
chmod 705 tsuru
```
chmodは前回解説した「パーミッション」を変更するコマンドです。

### 7, 0, 5はなんなの？

では、この7とか0とか5とかの数字は何でしょうか？

これは、「rwx」「---」「r-x」のパーミッションを、数字で表したものです。

![Untitled(4) (3).png](https://qiita-image-store.s3.amazonaws.com/0/74851/4f625551-0dc0-e085-9fbe-05d0ef343a24.png)

どうして7,0,5という数字なのでしょうか？

じつは、r, w, xには以下のように数字が割り当てられていて、

![Untitled(4) (2).png](https://qiita-image-store.s3.amazonaws.com/0/74851/d8eb2e89-a84d-84b4-76cd-fafc62055f28.png)

「書ける」＆「読める」＆「実行できる」という上の状態は、

![Untitled(5) (4).png](https://qiita-image-store.s3.amazonaws.com/0/74851/c7da03b4-eab8-ea86-e843-a550846f95ba.png)

7、という数字に置き換えることができるのです。

なお、書けない場合は、

![Untitled(5) (5).png](https://qiita-image-store.s3.amazonaws.com/0/74851/512844ab-a4d0-523b-9eed-2e2b3af52961.png)

5という数字に置き換えることが出来ます。

つまり、こういうことですね。

![Untitled(4) (5).png](https://qiita-image-store.s3.amazonaws.com/0/74851/da912bb5-b2eb-aafb-5eae-4463ab84a1b3.png)


このことを踏まえると、前回のこの図は、

![Untitled(2) (8).png](https://qiita-image-store.s3.amazonaws.com/0/74851/bd37ae1a-2dac-4714-70e0-b1324db551e1.png)

こうなるわけですね。

![Untitled(2) (9).png](https://qiita-image-store.s3.amazonaws.com/0/74851/fbcfaa34-63a6-3174-9cc7-c95dc73acd45.png)

### chmod 705 tsuru はなんなの？

さきほどの700のパーミッションを

![Untitled(2) (10).png](https://qiita-image-store.s3.amazonaws.com/0/74851/e442def0-2126-c875-b8ad-7503f6cf4800.png)

とした、ということですね。

つまり、tsuruディレクトリを

他人が「読めて」「実行できる（入れる）」状態にしたことにより、

他人であったおじいさんもtsuruディレクトリに入ることができるようになりました。


## はた織り機を使用不可にしたコマンド

```bash
chown root:root hataori.sh
chmod 700 hataori.sh
```
この２つですね。

### chownとは何か

ファイルの所有権・グループを変更するコマンドです。

今回の場合、

![Untitled(2) (11).png](https://qiita-image-store.s3.amazonaws.com/0/74851/09bab1f4-5064-4e24-7d95-92736d6dabd4.png)

つるの所有物だったこのファイルを、

```bash
chown root:root hataori.sh
```
を行い、

![Untitled(2) (12).png](https://qiita-image-store.s3.amazonaws.com/0/74851/1c2833c3-ed15-6643-3917-8205e8f7338c.png)

完全にrootの所有物にしてしまいました。

これにより、所有者だったつるはotherになってしまい、

otherには書き込み権限がないため、

パーミッションを変更するのが不可能になりました。


### chmod 700 hataori.sh

ただし、まだotherには「x(実行権限)」が残っています。

このままではつるにはた織り機を実行されてしまいます。

なので、おじいさんはさらにつづけてchmodを行い、

![Untitled(2) (13).png](https://qiita-image-store.s3.amazonaws.com/0/74851/e53e7d8a-efd3-2711-fb9d-b19db31f54c1.png)

所有者だけが「読める」「書ける」「実行する」状態になり、

つるははた織り機を実行もできなくなりました。

これでつるは

「パーミッションも変更できない」

「読み取りも書き込みも実行もできない」

という、完全に追い詰められた状態になるわけです。

それでつるは負けてしまったのですね。


# まとめ１

だれかに見られたくないファイルや、

実行されたくないファイルがあったときは、

所有権と権限をしっかりと変更しておきましょう。

# まとめ２

おじいさんは、

つるをわざと罠にはめ、

恩返ししてきたところをつかまえて

永久にはたを織らせ続けるサイコパス。


# 備考

chrootについては次回、解説させていただきます。

[chroot参考](http://wa3.i-3-i.info/word13814.html)