図1

ラズパイOSの初期設定がしたい!

はじめに

ラズパイにOSを、そのまま使うのはセキュリティが低いとか不便とかいろいろあるそうです。というわけでやった方がよさそうな初期設定をまとめました。

やること概要

・Wifi接続できるようにする
・(動的じゃなくて)静的IPアドレスにする
・とりあえずやっておいた方がよさそうなセキュリティ対策をする
 ー ホスト名を変更する
 ー piユーザのユーザ名とパスワードを変更する
・Windowsとファイル共有できるようにする(samba)

前提の条件

・ラズパイOSをインストールしている
・WindowsパソコンからSSH接続できる
 ※参考※
 インストールの手順はこっちにまとめています。

モニタ/キーボードを接続しないでラズパイにOSをインストールする

初期設定の手順

1. 動的IPアドレスを静的IPアドレスにします。(*1)
/etc/dhcpcd.conf ファイルに、静的IPアドレス、デフォルトゲートウェイ、DNSサーバを設定します。(sudo nano /etc/dhcpcd.conf で編集できます)

#静的IPアドレス
static ip_address=192.163.33.101/24
#デフォルトゲートウェイ
static routers=192.163.33.1
#DNSサーバ
static domain_name_servers=192.163.33.1

2. Wifi接続を設定します。(*2)
Wifiアクセスポイントのssidと暗号キー(PSK-AES)を/etc/wpa_supplicant/wpa_supplicant.conf に記載します。この設定は、後で行うOS再起動の後に有効になります。

$ cat /etc/wpa_supplicant/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="{SSID}"
psk="{暗号キー}"
key_mgmt=WPA-PSK
}

3. ホスト名を変更します。
/etc/hostname と /etc/hostsファイルを編集し、ホスト名を変更します。raspi-hoge とする場合は以下のように編集します。

$ cat /etc/hostname
raspi-hoge  <-- ここ
$
$ cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       raspi-hoge  <-- ここ

4. 起動モードをGUI→CLIに変更します。
SSH接続経由でしかラズパイを操作しないのであれば、CLIモードでも問題ありません。また、GUIだと、「piユーザのユーザ名の変更ができない」という問題が発生する場合があります(*3)。

CLIに変更するには、sudo raspi-config を実行します。

『3 Boot Options』 を選択します。

『B1 Desktop / CLI』を選択します。

『B1 Console』を選択します。

他にも設定することありますが、とりあえず 『<Finish> -> ラズパイ再起動』します。

5. ラズパイに再接続します。
無線LANが有効になっているはずなので、ラズパイから有線LANを外します。またSSH 接続するときは、設定した静的IPアドレスを指定します。

ssh pi@{静的IPアドレス}

6. 仮のユーザを追加します。
piユーザのユーザ名を変更するために、仮ユーザを追加します。

# 仮のユーザ(tmp)を作成
sudo useradd -M tmp
# tmpユーザをsudoグループに追加(そうしないとsudoが使えない)
sudo gpasswd -a tmp sudo
# tmpユーザのパスワードを設定
sudo passwd tmp
# ログアウト
exit

7. piユーザのユーザ名とパスワードを変更する。
仮のtmpユーザでSSH接続し、piユーザのユーザ名とパスワードを変更します。(ユーザ名の変更に失敗したら、トラブルシュートの(*3)を確認してみてください)

# tmpユーザでssh接続
ssh tmp@{静的IPアドレス}
# usermod -lでユーザ名をpiからnewpiに変更
sudo usermod -l newpi pi
# usermod -dでホームディレクトリを/home/piから/home/newpiに変更
sudo usermod -d /home/newpi -m newpi
# groupmod -nでpiグループをnewpiグループに変更
sudo groupmod -n newpi pi
# ログアウト
exit

8. 名前の変わったpiユーザのパスワード変更

※ssh newpi@{IPアドレス} で接続

newpi@raspi-hoge:~ $ passwd
Changing password for newpi.
(current) UNIX password: ※現在のパスワード
Enter new UNIX password: ※新パスワード
Retype new UNIX password: ※再度 新パスワード
passwd: password updated successfully

9. (オプション)パスなしのsudoを禁止します。
これを実施するとsudo を実行際のパスワード入力が必要になり面倒です。セキュリティを更に高めるならやっておいた方がいいです。
/etc/sudoers.d/010_pi-nopasswd の以下のように # でコメントアウトします。

$ sudo cat /etc/sudoers.d/010_pi-nopasswd
#pi ALL=(ALL) NOPASSWD: ALL

10. 仮ユーザを削除します。
piユーザのユーザ名を変更したら仮ユーザ tmp は必要ないので削除します。piユーザ(変更したのでnewpiユーザ)でssh接続し、以下コマンドを実行します。

sudo userdel tmp

11. avahi-daemon を入れます。
(よくわからんが、入れた方がいいらしいのでとりあえず入れます。)

sudo apt-get install avahi-daemon

12. パッケージ更新とpipのバージョンアップをします。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
# pip のバージョンアップ
sudo pip install --upgrade pip

13. ファームウェアを更新します。

sudo rpi-update

14. raspi-config でいろいろ設定します。
sudo raspi-config を実行して、ロケール、Timezone、Wifiロケールを設定します。
14.1 ロケールを設定します。
[raspi-config]->[Change Locale]->[ja_JP.UTF-8] を選択します。

14.2 Timezoneを設定します。
[raspi-config]->[4 Localisation Options]->[I2 Change Timezone]->[Asia]->[Tokyo] を選択します。

14.3 Wfiロケールを設定します。
Wifiロケールを設定しておくと位置情報の精度が高くなるなどの効果があるそうです。
[raspi-config]->[4 Localisation Options]->[I4 Change Wi-fi Country]->[JP Japan]

15. Windwosパソコンとファイル共有できるようにsambaを設定します。
sambaをインストールします。

sudo apt-get update
sudo apt-get install samba
cd /etc/samba
sudo cp -pi smb.conf smb.conf.org
sudo nano smb.conf

/etc/samba/smb.confの最後に以下を追記します。
!注意! path , hosts allow は、自分の環境に合わせた値に変更してください。

[pi]
comment = raspi-hoge-common
path = home/newpi
public = Yes
read only = No
writable = Yes
guest ok = Yes
force user = pi
directory mode = 0777
create mode = 0666
hosts allow = 192.163.33.

サービスを再起動するとファイル共有ができるようになります。

sudo service smbd restart
sudo service nmbd restart

Windowsパソコンから ¥¥{IPアドレス} でアクセスできます。(*4)

これで初期設定は完了です。お疲れさまでした。

トラブルシュート

(*1) デフォルトゲートウェイやDNSサーバがわからない
Windowsのコマンドプロンプト(cmd.exe)を開き、ipconfing コマンドを実行すると↓のように確認できます。

Wireless LAN adapter Wi-Fi:
 接続固有の DNS サフィックス . . . . .:
 リンクローカル IPv6 アドレス. . . . .: fe80::XXXX:XXXX:XXXX:XXXX
 IPv4 アドレス . . . . . . . . . . . .: 192.163.33.14
 サブネット マスク . . . . . . . . . .: 255.255.255.0
 デフォルト ゲートウェイ . . . . . . .: 192.163.33.1

(*2) 無線LAN通信ができない

・ラズパイに登録したSSID,暗号キーに誤りがある
・無線LANの設定がまだ反映されていない(→ラズパイ再起動してみる)
・5GHz帯を使用している(2.4GHz帯で試してみる)
※ ラズパイで5GHz帯を認識させるには一工夫が必要みたいです

(*3) GUIにしているとpiユーザのユーザ名変更ができない
GUIの場合、ラズパイOS起動時にpiユーザでログイン(?)する。その状況では以下のようにユーザ名を変更できません。

$ sudo usermod -l newpi pi
[sudo] password for py:
usermod: user pi is currently used by process 495

(*4) Windowsパソコンからアクセスできない

エラーコード: 0x80070035 ネットワークパスがみつかりません。と表示されファイル共有にアクセスできない

考えられることとして、/etc/samba/smb.conf の設定ミスがあります。
手順では、piユーザのデフォルトのカレントディレクトリを /home/pi -> /home/newpi と変更したため、path を↓のように設定しています。/home/newpi 以外にした場合はそちらに合わせてください。

[pi]
 :
path = home/newpi

あと、hosts allowの設定も自分の環境に合わせてください。
(hosts allow は、アクセスを許可するホスト名 or IPアドレスです。以下の場合は、192.163.33.xxx を持つIPアドレスのアクセスを許可しています)

[pi]
 :
hosts allow = 192.163.33.

参考

参考にさせて頂いたサイトを紹介します。(他にもあるのですが、メモなくした)
[Raspbian]ユーザ名変更の個人的に「正しい」と思うやり方
Raspberry piで先にやること
Raspberry Piにホスト名の設定をしたメモ

こんな弱小ブログでもサポートしてくれる人がいることに感謝です。