Linuxでのパーミッション変更に役立つ！片手で31まで数える方法。

## 今回やること
2進数を用いて、片手で31まで数える方法を解説します。
Linux上でファイルのパーミッションを変更する際に役立つので、ぜひ覚えてみてください。

## 2進数とは
2進数とは、2で桁が上がる数字のことです。
私たちが普段使用しているのは10で桁上がりするため10進数となります。
我ながら大変わかりづらい説明なので、以下に2進数と10進数の対応表を用意しました。
2進数では数字が2になるときに桁数が増えてますね。
10進数も同様に10になるときに桁数が増えています

| 2進数      |       10進数 |
|:-----------------|------------------:|
|        0     | 0             |
|        1     | 1             |
|        10     |     2         |
|        11     |    3          |
|        100     |    4          |
|        101     |   5           |
|         110    |      6        |
|       111      |      7        |
|        1000    |      8        |
|        1001     |      9        |
|        1010     |      10        |

## 指で2進数を数える方法
まず拳をグーの状態にしてください。
そうすると全ての指が折り畳まれている状態になります。
この状態から、以下のようにして2進数を数えていきます。
折り畳まれている指=0
立っている指=1

この状態では2進数で0なので10進数でも0です。
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/f1e60bfd-dae5-af53-4089-f5445c45dd17.jpeg">

2進数で1、10進数でも1
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/1874d6a9-8ed1-0649-580b-0a57298f4dc8.jpeg">

2進数で10、10進数では２
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/d5fa9267-f773-18ea-9611-203f622f7402.jpeg">

2進数で11、10進数では3
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/0a5d5d60-5114-b581-169a-e502c2353e91.jpeg">

2進数で100、10進数では4(f◯ckではありません)
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/3a32f61e-cb00-f1d5-f504-db0c26b1c1be.jpeg">

2進数で101、10進数では5
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/1842f8d3-3cda-08c9-9b3f-8e71d86adb5a.jpeg">

2進数で110、10進数では6
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/062d066d-a139-61e2-ac28-e714a5c79cc0.jpeg">

2進数で111、10進数では7
<img width="300" alt="0" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/e69e6601-a163-6ebc-7fca-9d4e69309c10.jpeg">

２のn乗-1(nは指の本数)まで数えられるので、両手の指を使えば2の10乗-1で1023まで数えられます。（実用性は皆無ですが...）

## パーミッションの読み方
linuxサーバー上にテスト用のファイルを用意しました。
lsコマンドの実行結果の左端に -rwxr--r-- という記載がありますね。
これがパーミッションを表しており、以下のような意味を持ちます。
r = 参照権限
w = ファイルの編集権限
x = ファイルの実行権限

パーミッションの2桁目から４行目 = ルートユーザーが出来ること
パーミッションの5桁目から7行目 = ファイルの所有者が出来ること
パーミッションの8桁目から10行目 = 指定のグループに所属しているユーザーが出来ること

つまり、以下の例では
ルートユーザー 参照、編集、実行が出来る。つまりなんでも出来る。
ファイルの所有者　参照だけできる
グループに所属しているユーザー　参照だけできる
ということになります。

```
# ls -l
-rwxr--r--. 1 yoshida users    0  5月  6 03:35 test.txt
```

## 実践
それではパーミッションの変更を行ってみましょう。
今回はファイルの所有者に編集の権限を付けたいと思います。
結論から言うと以下のコマンドでパーミッションを変更することが出来ます。
ここで重要な部分が"764"です。これがパーミッションを表しています。
1桁目の7は2進数で111なので、ルートユーザーにrwxの権限を付与することが出来ます。（つまり変更無し）
2桁目の6は2進数で110なので、所有者にrwの権限を付与することが出来ます。
2桁目の4は2進数で100なので、所有者にrの権限を付与することが出来ます。(つまり変更無し)

```
# chmod 764 test.txt
```
```
# ls -l
-rwxrw-r--. 1 yoshida users    0  5月  6 03:35 test.txt
```

頭の中での流れを以下に示します。
1.ファイルの所有者のパーミッションを変更するから5桁目〜7桁目を編集する
2.編集権限を付与するので、「r--」から「rw-」にする
3.「rw-」と言うことは2進数で110(ここで指を動かして110が10進数でいくつなのか数える)
4.2進数の110は6だ！
となるため、「chmod 764」で所有者に編集権限が付与できると言うわけです。

## 終わりに
今回の記事は以上となります。
簡単にできることなのでAWSのEC2上でやってみるか、私が以前書いた記事を参考にLinuxサーバーを立ち上げるなりして試してみてください！
・参考
 [VMware vSphereで仮想サーバーを作ってみた](https://qiita.com/ysda/items/fbfc90ba0161f2e65257)
 [仮想マシンにCentOSをインストールしてみた](https://qiita.com/ysda/items/aef462ae350a17d0daed)