サーバーの基本（3．パーミッションについて）

サーバーやネットワークについて勉強したことをまとめます。

1.サーバーとは何か
2.サーバーの種類
3.パーミッションについて
4.RAIDについて
5.TCP/IPについて 

長くなるので、投稿を分けます。
この記事では、３．パーミッションについて記載していきます。

##パーミッションとは

パーミッションとは、ファイルやフォルダのアクセス権のことをいいます。
自分が作成したホームページのデータを、他人に勝手に変えられてしまうと大変です。
そこで、ファイルやフォルダごとに、アクセス権を設定して、定められた人のみが変更できるよう設定することができます。

パーミッションには、３つの権限があります。
1.読み取り権限
2.書き込み権限
3.実行権限

<strong>＜ファイルとディレクトリのパーミッションの違い＞</strong>

| アクセス権 | ファイル | ディレクトリ |
|:-:|:-:|:-:|
|<strong>読み取り権限</strong>|ファイルの内容を<br>読みだすことができる|ディレクトリ内のファイル一覧を読み取れるが、<br>ファイルへのアクセスやcdコマンドによる移動はできない|
|<strong>書き込み権限</strong>|ファイルの内容を<br>変更できる|ディレクトリ内にファイルを作成したり、<br>ディレクトリ内のファイルを削除したりできる|
|<strong>実行権限</strong>|ファイルをプログラムとして<br>実行できる|ディレクトリ内にcdコマンドで移動したり、<br>ディレクトリ内のファイルにアクセスできる|

ディレクトリのパーミッションの場合、あくまで「ディレクトリ」に対するものなので、
その配下のファイルまで権限があるわけではありません。
ファイルはファイルで、ディレクトリはディレクトリで権限の設定が必要です。

例えば、システム内でアクセスログをファイルに書き込み、ダウンロードできる機能があるとします。
その場合、アクセスログを書き込むファイルには、読み取り、書き込み、実行全ての権限が必要となります。

##パーミッションの見方
アルファベットで表される場合と、数値で表される場合があります。

<dt>● アルファベットの表記</dt>


| |読み取り権限|書き込み権限|実行権限|
|:-:|:-:|:-:|:-:|
|アルファベット表記|r|w|x|
|説明|(readのr)|(writeのw)|(executeのx)|
|数値表記|4|2|1|

 ターミナル上では、次のように表されます。

  ```terminal 
  -rw-rw-r--. 1 asaito asaito  193  5月  3 11:17 calender.txt
  -rw-rw-r--. 1 asaito asaito 2114  5月  3 11:15 calender2.txt
  -rw-rw-r--. 1 asaito asaito  220  5月  3 11:23 error.log
  -rw-rw-r--. 1 asaito asaito  122  5月  3 11:23 ls.log
  -rw-r--r--. 1 asaito asaito   14  4月 19 22:23 new_test.php
  -rw-rw-r--. 1 root   root     14  4月 19 22:22 test.php
  drwxrwxr-x. 3 asaito asaito   17  4月 29 23:19 top
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 ダウンロード
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 テンプレート
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 デスクトップ
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 ドキュメント
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 ビデオ
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 音楽
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 画像
  drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 公開
  ```

  この一番左端にあるのが、パーミッションです。
  例えば、一番上のcalender.txtの場合、
  rw-rwr--となっています。3つずつユーザーごとに分けて権限が表示されています。


|rw-|rw-|r--|
|:-:|:-:|:-:|
|所有者|グループ|その他|


この場合、所有者とグループには、読み取り権限・書き込み権限がありますが、実行権限がありません。その他ユーザーには読み取り権限しかありません。という意味になります。
（　-　(ハイフン）は権限がないという意味になります。）

所有者の左側にdと書いてあるものがありますが、これは、ディレクトリを表しています。

<dt>● 数値の表記</dt>
<dd>数値の表記では、各ユーザーごとに、数値を足して表記します。
例えば、上記のcalender.txtの場合、
アルファベット表記では、
-rw-rw-r--となっていましたが、
数値の場合、下記のように表されます。
</dd>

|rw-|rw-|r--|
|:-:|:-:|:-:|
|所有者|グループ|その他|
|4+2|4+2|4|
|6|6|4|


というように、rは4、wは2、xは1で表し、それを足した数値で表します。
上記の場合、664となります。

読み書き実行全ての権限を全てのユーザーが持つ場合は777となります。
この状態を<strong>フルパーミッション</strong>といいます。

##パーミッションの変更方法
パーミッションの変更方法として、コマンドで変更する方法とFTPソフトで変更する方法の2つがあります。

<dt>● コマンドでの変更方法</dt>
<dd>
パーミッションを変更できるのは、ファイル・ディレクトリの所有者、もしくはrootユーザーのみとなります。
パーミッションを変更するには、次のコマンドを使用します。

```
chmod アクセス権　ファイルまたはディレクトリ名
```

＜chmodコマンドで使用できる記号＞

| |記号|説明|
|:-:|:-:|:-:|
|操作対象|u|所有者|
|``|g|所有グループ|
|``|o|その他ユーザー|
|``|a|全てのユーザー|
|権限操作|+|アクセス権の追加|
|``|-|アクセス権の削除|
|``|=|アクセス権の指定|
|アクセス権|r|読み取り可能|
|``|w|書き込み可能|
|``|x|実行可能|


● 実行例<br>
先ほどのcalender.txtに、その他ユーザーにも書き込み権限を付与してみます。

```
[asaito@localhost ~]$ chmod o+w calender.txt
```

- 実行結果

```
-rw-rw-rw-. 1 asaito asaito  193  5月  3 11:17 calender.txt
-rw-rw-r--. 1 asaito asaito 2114  5月  3 11:15 calender2.txt
-rw-rw-r--. 1 asaito asaito  220  5月  3 11:23 error.log
-rw-rw-r--. 1 asaito asaito  122  5月  3 11:23 ls.log
-rw-r--r--. 1 asaito asaito   14  4月 19 22:23 new_test.php
-rw-rw-r--. 1 root   root     14  4月 19 22:22 test.php
drwxrwxr-x. 3 asaito asaito   17  4月 29 23:19 top
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 ダウンロード
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 テンプレート
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 デスクトップ
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 ドキュメント
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 ビデオ
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 音楽
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 画像
drwxr-xr-x. 2 asaito asaito    6  4月  1 12:45 公開
```

また、下のように数値で変更することも可能です。

```
chmod 666 calender.txt
```

実行結果は先ほどと同様になります。
</dd>
<dt>● FTPソフトで変更する方法</dt>
<dd>
ここでは、WinSCPを使用します。

右側のサーバー側で、変更したいファイルを選択し、右クリックを押し、プロパティを選択します。

![パーミッションを変更説明.jpg](https://qiita-image-store.s3.amazonaws.com/0/232451/34fb4e82-279e-abec-0fe7-2c4db1f6ff70.jpeg)

すると、次の画面が出ます。

<img width="279" alt="2018-05-03 (3).png" src="https://qiita-image-store.s3.amazonaws.com/0/232451/05bb9a6b-0536-f7c9-a35a-622c4f86f9bd.png">

下の方にあるパーミッションの部分にチェックを入れると権限が与えられ、外すと権限がなくなります。

##参考資料
・「いちばんやさしいLinuxコマンド入門教室」著：中島能和　株式会社ソーテック社　2018年
・「スラスラわかるネットワーク＆TCP/IPのきほん　第２版」著：リブロワークス　SBクリエイティブ株式会社出版　2018年