【Raspberry Pi Zero W】OSインストール直後にやったこと

##前提条件
モデル : Raspberry Pi Zero W
OS : Raspbian Stretch Lite
　　　　Version:March 2018
　　　　Release date:2018-03-13
　　　　Kernel version:4.9

##初期設定（ネットワーク接続前）
raspi-configを実行して、ネットワーク（Wi-fi）やインターフェース（ssh）の設定を実施します。

```Bash:
$ sudo raspi-config

    2 Network Options
        N2 Wi-fi # SSid/passphraseの入力

    4 Localisation Options
        I4 Change Wi-fi Country # JP

    5 Interfacing Options
        P2 SSH # sshを有効化（Enable）
```

##初期設定（ネットワーク接続後）
sshでログインし、raspi-configの続きを実施します。
この辺りは、詳しいサイトがいっぱいあるので省略。

参考サイト：
https://qiita.com/nakkaa/items/9871e0ebe0e8f9bb9c48

```Bash:
$ sudo raspi-config
```

##最低限のセキュリティ設定
raspi-configでWi-fi設定をしましたが、設定ファイルを見るとpassphraseが平文でした。これはよろしくないので暗号化します。

参考サイト：
https://qiita.com/tkyko13/items/1bc472ab777cc9375f06

```Bash:
$ cat /etc/wpa_supplicant/wpa_supplicant.conf # 設定ファイル確認
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="SSid_name" # 設定したSSid
        psk="passphrase" # 設定したpassphrase（平文）
}

$ sudo wpa_passphrase "SSid_name" "passphrase" # passphraseの暗号化
network={
        ssid="SSid_name"
        #psk="passphrase"
        psk=777619be6c78..........(省略)
}

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf # 設定ファイル編集

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="SSid_name"
        psk=777619be6c78..........(省略) # 変更
}
```

sshのポートをデフォルトの22から任意のポート番号（推奨ポート番号は参考サイト参照）に変更し、rootユーザのログインを無効にします。

参考サイト：
http://sawara.me/linux/890/

```Bash:
$ sudo vi /etc/ssh/sshd_config # 設定ファイル編集

    #Port 22
    ↓
    Port xxxxx # 任意のポート番号を設定

    #PermitRootLogin prohibit-password
    ↓
    PermitRootLogin no # rootユーザのログインを拒否

$ sudo service ssh restart # sshサービス再起動
```

設定を間違えると繋がらないので、設定後は接続確認しましょう（手順は省略）。

続いて、piユーザのデフォルトパスワードはバレバレなので、変更します（raspi-configで変更してもOK）。別ユーザ作って、piユーザは削除したほうが安全ですが、それは後回し。

```Bash:
$ sudo passwd pi # コマンド実行後、パスワードを2回入力

$ su - pi # 確認
$ exit
```

~~同様に、rootユーザのパスワードも設定します。~~
パスワードを設定しなければ、そもそもログインできないらしく、設定しないほうが安全らしい（2018/4/16追記）。

```Bash:
$ sudo passwd root # コマンド実行後、パスワードを2回入力

$ su - # 確認
$ exit
```

##新規ユーザ作成とpiユーザ無効化（2018/4/16追記）
参考サイト：
https://qiita.com/rshibasa/items/6cb37878a521a7aecb04
https://jyn.jp/raspberrypi-username-change/

必要に応じてですが、例としてnewpiユーザを追加し、piユーザを無効化します。
最初にnewpiユーザの追加です。

```Bash:
$ groups pi # piユーザが所属しているグループを確認
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio
$ sudo adduser newpi
Adding user `newpi' ...
Adding new group `newpi' (1001) ...
Adding new user `newpi' (1001) with group `newpi' ...
Creating home directory `/home/newpi' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:         # パスワード
Retype new UNIX password:         # パスワード（２回目）
passwd: password updated successfully
Changing the user information for newpi
Enter the new value, or press ENTER for the default
        Full Name []: # 空Enter
        Room Number []: # 空Enter
        Work Phone []: # 空Enter
        Home Phone []: # 空Enter
        Other []: # 空Enter
Is the information correct? [Y/n] Y
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio newpi # 確認したグループの追加
$ sudo cat /etc/passwd # 設定ファイル確認（なんとなくpiと同じ）
$ sudo cat /etc/group # 設定ファイル確認（なんとなくpiと同じ）

$ su - newpi
Password:         # パスワード
$ sudo whoami
[sudo] password for newpi:         # パスワード
root
$ exit
```

次にpiユーザの無効化です。個人的にpiユーザを削除したり、変更したくなかったので、ログイン不可にしました。これで大丈夫だよね？
作業はnewpiユーザで実施してください。設定後、piユーザで接続できないことを確認してください。

```Bash:
$ sudo usermod -s /bin/false pi
[sudo] password for newpi:         # パスワード
$ sudo vi /etc/shadow
pi:*:17637:0:99999:7::: # 暗号化されたパスワードの部分を*に置換
root:*:17603:0:99999:7::: # （参考）同様にrootにもパスワードを設定していたら*に置換
```

sudoコマンドで毎回のパスワード入力がうざい方は、sudoersでググってください。以下は非推奨。

```Bash:
$ sudo cp -p /etc/sudoers.d/010_pi-nopasswd /etc/sudoers.d/020_newpi-nopasswd
$ sudo vi /etc/sudoers.d/020_newpi-nopasswd
newpi ALL=(ALL) NOPASSWD: ALL
```

##ちょっとした設定（2018/4/10追記）
必要に応じて。。。

```Bash:
$ vi .bashrc # エイリアスの設定
alias ll='ls -l'

$ vi .vimrc # viの設定
set nocompatible
```

##ネットワークインターフェース名がいつもと違うとき（2018/4/16追記）
eth0がない？/boot/cmdline.txtにnet.ifnames=0を追記すればいいらしい。
参考サイト：
http://carol-net.co.jp/ikakashi/2017/08/24/raspbian-stretchで今まで通りのinterface名を使うには/

```Bash:
$ sudo vi /boot/cmdline.txt
～～～ net.ifnames=0 # 行末に追記
```

##各種アップデート

```Bash:
$ sudo apt-get update # パッケージリストの更新
$ sudo apt-get upgrade # インストールされてるパッケージの更新
$ sudo apt-get dist-upgrade # ディストリビューションの更新
$ sudo rpi-update # ファームウェアの更新
$ sudo reboot # 再起動
```

##各種インストール（2018/4/10追記）
必要に応じて。。。

```Bash:
$ sudo apt-get install -y vim
$ sudo apt-get install -y samba
```

##再起動

```Bash:
$ sudo reboot # 再起動
```