<Linux>chmodコマンドでファイル・フォルダ権限のパーミッション設定

#はじめに
chmodをみると、何故か 「ちょ、待てよ」 を連想してしまうのは自分だけでしょうか、、、？(キムタク縛り)

`chmod`: いわゆる *change mode*ですね
>（change mode、チェンジモード）は、UNIXおよびUNIX系オペレーティングシステムにおけるシェルコマンドの一種である。 ファイルやディレクトリのファイルモード（ファイルパーミッションなど）を変更するのに使われる。
[wikipedia引用](https://ja.wikipedia.org/wiki/Chmod)

ふむふむ。
ファイルパーミッション、つまり、ファイルの権限ですねえ

シェルコマンドの一種で、ファイルとディレクトリ、いわゆるフォルダ自体の、**編集権限等を変えられる**ってことですな。

ファイルで、あんなことしたり…こんなことしたり…、ってのが決められるってことみたいです。


#chmodコマンドの解説
一例あげたいと思います。

```shell
$ chmod 400 ~/.ssh/id_github_rsa
```
秘密鍵の権限を、所有者だけ読み取りにしますってものですけど、、

```
#形式
$ チェンジモード 権限設定　ファイルパス
```

翻訳としては、
チェンジモードしてね、権限は400だよ。ファイルはホーム配下の`.ssh`フォルダにある`id_github_rsa`というファイルだよ。

ってことですね。

ただただ、`400`ってなんやねん　って気になります、


#chmodの権限の種類とまとめ

上記の例で、`400`とありますが、それはただの数字ではなく、ちゃんとした意味をもっています。

実際に、数字を使わない、となると、
`rwxr-xr-x`
といったように、指定しないといけません。
実際に上記は`755`を意味するのですが、暗号みたいですねw
某新感覚SNSしか思い出せませんん。

意味としては、
`r:read(読取)` `w:write（書込）` `x:execute（実行）`
ですが、

自分には肌が合わない、かつ、権限には番号指定ができるところが便利なので、
覚えちゃいましょう。

いつも忘れてしまうので、良質なメモとして残せらたらと！

##番号が持つ権限の意味
以下、表にまとめました。
基本は、
`4:read(読取)` `2:write（書込）` `1:execute（実行）`
だけなのですが、足し算することで、いろんな権限が表現できるみたいです。
詳細の列に、足し算も追加してみました。

| 番号 | 権限 | 読取 | 書込 | 実行 | ※アルファベット | 詳細 |
|:-:|:-:|:--:|:-:|:-:|:-:|:-:|
| 7 | すべて許可 | ◎ | ◎ | ◎ | rwx | 4+2+1 |
| 6 | 読取 & 書込 | ◎ | ◎ | × | rw- | 4+2 |
| 5 | 読取 ＆ 実行 | ◎ | × | ◎ | r-x |4+1|
| 4 | 読取のみ | ◎ | × | × | r-- |4|
| 3 | 書込 ＆ 実行 | × | ◎ | ◎ | -wx |2+1|
| 2 | 書込 | × | ◎ | × | -w- |2|
| 1 | 実行のみ | × | × | ◎ | --x |1|
| 0 | すべて禁止 | × | × | × | --- |0|


##番号の桁の意味
```
$chmod 700 ~/index.html
```
上記見てみると、`700`という三桁の数字になっていますが、その桁の部分は、**権限の対象（ターゲット）**を表していて、
**七百ってよりかは、7,0,0みたいな意味合いが強い**ですな。

| 左の番号 | 真ん中の番号 | 右の番号 |
|:-:|:-:|:-:|
| 所有者 | グループ | その他一般 |

と、まあ、こんな感じの対象です。


#グループって何ぞや?って話ですが…

Linuxはもともと、**一つのコンピュータを複数人で扱う**ということが前提とされていて、
だから、ファイルやフォルダに、所有者の権限設定をするのが大切ってことですな。
勝手にいじくられてしまうと、困ってしまうから。

でも、一人ひとり全員に毎度毎度`chmod`を連発しても、それはそれで「ちょっ、待てよ」な状態なので、、、
**グループとして、ファイルもしくはフォルダの権限設定をまとめられる**っていう素晴らしい仕組みがあるってこと。

例えば、仕様書を、グループ内で共有したいという時に、グループだけに閲覧権限をつけて、共有するみたいな、こともできる
よくGoogleドキュメントとかで誰々に閲覧権限を付与するみたいな設定ありましたよね、あれかあれか。

ただ、そのグループからハブられたらめっちゃ悲しい、、、
その他一般人扱いな自分、、、
「権限ください！」って世界の中心で哀を叫びましょう。w

#パーミッション設定の使用例
一般的な使用例は、上述なので、
####※ちなみに、上位ユーザーの7は省略できる

これにフィーチャー(注目)したいです。

```shell
$chmod 64 ファイル名
```
このようなコマンドは、以下の表の通りになります。
驚きは、**所有者が`7`の権限を持っているということ。**

| 対象 | 番号 | 権限 | 読取 | 書込 | 実行 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 所有者 | 7 | 全て許可 | ◎ | ◎ | ◎ |
| グループ | 6 |読取 & 書込 | ◎ | ◎ | × |
| その他　| 4 |読取のみ | ◎ | × | × | 

#####次に、もう一桁分を省略しましょう（所有者とグループ)

```shell
$chmod 4 ファイル名
```
このようなコマンドは、以下の表の通りになります。
驚きは、**所有者とグループに`7`の権限が付与されるということ。**

| 対象 | 番号 | 権限 | 読取 | 書込 | 実行 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 所有者 | 7 | 全て許可 | ◎ | ◎ | ◎ |
| グループ | 7 | 全て許可 | ◎ | ◎ | ◎ |
| その他　| 4 |読取のみ | ◎ | × | × | 

#####全ユーザーに全て許可する場合は、
```shell
$chmod 7 ファイル名
```
これで、全ユーザーに全ての権限を付与されます。
最後の一桁だけは省略できないんですねええ〜〜

なんだか、~~オーシャンズ7みたいな、オシャレな書き方になってしまいましたねえ~~

| 対象 | 番号 | 権限 | 読取 | 書込 | 実行 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 所有者 | 7 | 全て許可 | ◎ | ◎ | ◎ |
| グループ | 7 | 全て許可 | ◎ | ◎ | ◎ |
| その他　| 7 | 全て許可 | ◎ | ◎ | ◎ |

#まとめ
ということで、まとめます。

- `chmod`はチェンジモードの略。
- `chmod`は、各ユーザーに、**ファイル/フォルダのパーミッションを設定できる**コマンドだった
- rwx(read, write, execute)だけでなく、数字(4:read, 2:write, 1:execute)で置き換え可能
- 数字は**足し算**できる
- 全権限は**`7`**
- コマンドで、上位ユーザーに全て許可する場合は、`7`を**省略**できる。


以上です、

ありがとうございました！