【学習】Linuxコマンド　Day5

# おさらい
前回まで学習したことはこちらです。

- 環境構築 
　→https://qiita.com/imagatasaki/items/4c510cacc6f17556c3b9
- コマンドラインの操作方
- 基本的なコマンド① 
　→https://qiita.com/imagatasaki/items/37a7c12bce015d6bdc4a

- 基本的なコマンド②(ファイル操作)
　→https://qiita.com/imagatasaki/items/7abc96b0afea475077a2
　→https://qiita.com/imagatasaki/items/6ccf0e1cd44ebe1d3e9b

# 今日学ぶこと
- パーミッションについて
- パーミッション表示
- パーミッションの変更
- スーパーユーザーについて

## パーミッションとは
パーミッションとは「ファイルのアクセスの権限をファイルやディレクトリごとに定めること」
複数のユーザーが操作しても安全性を保つための仕組み。
例としてAというユーザーが作成したファイルはAのみ変更ができる。とすることで、Bというユーザーが誤って変更してしまう。といったことを防ぐことができる。
適切な権限をユーザーに与えることが重要である。

### パーミッションの表示(lsコマンド　-l オプション)
パーミッションのr/w/xはそれぞれ
| 記号       |       意味 |      英語 |  
|:-----------------:|:------------------:|:------------------:|
| r             |              書き込み |   read |        
| d           |            読み取り |         write |   
| x             |              実行|      execute |   

を表す。
例
```
$ ls -l /bin/bash
-rwxr-xr-x .1 root root 964536 Apr  1  2020 /bin/bash
```
「-rwxr-xr-x」とあるのがパーミッション。
先頭の「-」はファイル種別を表す。
| 記号       |       種別 |  
|:-----------------:|:------------------:|
| -             |              通常ファイル |      
| d           |            ディレクトリ |       
| l             |              シンボリックリンク |        

そして「rwxr-xr-x」に対して三分割を行う
「rwx」「r-x」「r-x」
左からオーナー権限、所有グループの権限、そのほかのユーザーの権限となる。

- オーナー→ファイルを所有するユーザー
- 所有グループ→ファイルを所有するグループ



ちなみに
```
-rwxr-xr-x .1 root root 964536 Apr  1  2020 /bin/bash
```
こちらの"root root"という部分ではオーナーは左側rootを指し、所有グループは右側rootグループとなる
groupsコマンドを使用することで所属グループを確認することができる。

```
$ groups imagata
imagata : imagata
```
「rwxr-xr-x」はそれぞれ

| 単位       |       読み取り|     書き込み |     実行 |  
|:-----------------:|:------------------:|:------------------:|:------------------:|
| オーナー             |              〇 |   〇 |         〇 |      
| 所有グループ          |            × |         〇 |    〇 |      
| その他のユーザー             |              ×|      × |    〇 |      

となる。

### パーミッションの変更(chmodコマンド)
chmodコマンドを使用することでパーミッションの変更が可能となる。
変更方にはシンボルモードと数値モードの二通り存在する。
例:シングルモードでtestファイルにおいてオーナーに実行権限を付与する。
```
$ touch test
$ chmod u+x test
$ ls -l test 
-rxwrw-r--. 1 imagata imagata 0 Sep 12 13:15 test
```

"u+x"とあるのは"オーナーに実行権限を追加する"という意味だがu部分は"誰に"を意味する
記号の一覧は以下となる。
| 記号       |       意味|   
|:-----------------:|:------------------:|
| u             |              オーナー|  
| g          |            所有グループ|           
| o             |              その他のユーザー|    
| a             |              すべて|    

+部分は"どうする"を意味する
記号の一覧は以下となる。
| 記号       |       意味|   
|:-----------------:|:------------------:|
| +             |            追加|  
| -          |            削除|           
| =             |              等しく設定|    
 
次に数値モード
例:数値モードでtestファイルにおいてオーナーはrwx,所有グループはrw,そのほかのユーザはrxを付与する。
```
$ chmod 765 test
$ ls -l test 
-rxwrw-r-x. 1 imagata imagata 0 Sep 12 13:15 test
```
結果のとおりオーナーはrwx,所有グループはrw,そのほかのユーザはrxとなっていることがわかる。
765は何を指すのかというと
| 数値       |       意味|   
|:-----------------:|:------------------:|
| 4            |            読み取り|  
| 2          |            書き込み|           
| 1             |              実行|

これらの数値をオーナー、所有グループ、そのほかのユーザーの順にそれぞれ足し算した結果となる。
オーナーがrwxのため4+2+1
所有グループはrwのため4+2
そのほかのユーザーはr-xのため4+1
以上の二通りの変更方が存在するが、大きな変更がないかぎりはシンボルモードを使用したほうが安全といえそう。

## スーパーユーザーについて
スーパーユーザーはいわゆる「rootユーザー」で最も強い権限を持つユーザーとなる。
これまで使用してきたimagata(見てる人によって違うけど)は一般ユーザーである。
スーパーユーザーは重要な変更を行うときに使用されがちで、あらゆる操作が可能。
反対にいえばむやみにrootユーザーで操作を行っていると重要なファイルに対して誤った操作を行いかねないので注意が必要である。
普段は一般ユーザーを使い、重要な場面でのみスーパーユーザーに切り替えて使用することが望ましい。

### スーパーユーザーに切り替える(suコマンド)
suコマンドを使用してスーパーユーザーに切り替える
```
$ su -
Password:
```
パスワードを入力すると$が#に置き換わる。
一般ユーザーに戻る場合は
```
# exit
logout
```
ただし、suコマンドはこのように一般ユーザーへ戻る手順を踏まなくてはいけないために戻り忘れの発生の恐れがある。
そこでスーパーユーザーとしてコマンドを実行するために使用されるsudoコマンドの使用が推奨される。
sudoコマンドはスーパーユーザーに切り替える必要はなく、コマンドを実行することができる。

# おつかれまでした
今回はパーミッションの概念についてとスーパーユーザーについて軽く学習を行いました。
どちらも安全性を意識したつくりになっているんだと感じました。
"人間はミスをするものだ"という前提の意識を持っておくこと。それこそが実務においてミスを防ぐはじめの一歩になるのではないかと強く思いました。
あとは学習し始めでなかなか難しいのですが、同じ目的に対して複数の方法がある際、メリットデメリットを覚えておくことが良いかとおもいました。使用するコマンドも多くなってきたため、今一度自分で書いた記事を復習して参ります。