前書き:piユーザは脆弱

Raspberry Piのデフォルトユーザであるpiユーザ(管理者権限あり)は、パスワードがraspberryに設定されています。この情報は悪意のあるユーザも当然知っているため、近年ではpiユーザを狙い撃ちにしたマルウェアが増えています。

一般的には、piユーザのパスワードを変更する事によって、セキュリティリスクを減らします。本記事では、もう一歩踏み込んで、piユーザ以外に管理者権限を付与した後に、piユーザを削除する方法を紹介します。

新規ユーザの追加

新規ユーザ名は任意ですが、本記事では新規ユーザをantonとして以下の手順を進めます。なお、antonの元ネタは、シリコンバレー(海外ドラマ)の登場人物であるギルフォイルが構築したサーバ名です。

新規ユーザの追加にはuseraddコマンドを使用し、パスワードの設定にはpasswdコマンドを使用します。

$ sudo useradd -m -d /home/anton -s /bin/bash anton
$ sudo passwd anton

useraddのオプションについて補足すると、

  • -m:ユーザのホームディレクトリがない場合は作成
  • -d:ユーザのホームディレクトリPATH
  • -s:ログインシェルの指定。

ログインシェルをBash以外に変更したい場合は/etc/shellsファイルを確認し、使用したいシェルを探してからユーザを作成してください。もしくは、ユーザ作成後にchshコマンドでシェルを変更する方法があります。

(注釈):dashを使う場合
$ cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash  ※ 絶対PATHを確認

$ sudo useradd -m -d /home/anton -s /bin/dash anton

(注釈):ユーザ作成後にシェルを変更
 $ chsh -s /bin/dash

新規ユーザに管理者権限を付与

各ユーザの管理者権限の有無は、/etc/sudoersファイルで管理されています。/etc/sudoersファイルの書式を間違うと、sudoコマンドが使用できなくなる落とし穴があります。

一般的には、書式チェック機能があるvisudoコマンドで/etc/sudoersファイルを編集する場合が多いです(私は愚か者なので、直接vimで編集します!)。

本記事では、書き間違えが発生しない方法で、新規ユーザ(=anton)がsudoコマンドを使えるようにします。具体的には、新規ユーザをsudoグループに所属させます。

$ sudo gpasswd -a anton sudo

「piユーザ所属グループ」と「新規ユーザの所属グループ」を一致させる

管理者権限があるので、細かい権限を一致させる必要性薄いのですが、「新規ユーザ(=anton)」と「piユーザの所属グループ」を一致させます。

まずは、piユーザのグループを確認した後に、usermodコマンドで新規ユーザのグループ情報をpiユーザに合わせます。usermodコマンドは、-Gオプションの後に追加したいグループ名をカンマ区切りで記載します。後ほど削除するpiグループは、追加不要です。

$ groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio

$ sudo usermod -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio anton

所属グループ情報が正しく更新されているかどうかは、groupsコマンドで確認できます。      

$ groups anton
anton : anton adm dialout cdrom sudo audio video plugdev games users input netdev pi spi i2c gpio

piユーザの自動ログインを解除

Raspberry Piは、CLIもしくはGUI環境にpiユーザで自動ログインするかどうかを設定できます。piユーザは後ほど削除するため、自動ログイン設定を変更しておきます。

$ sudo raspi-config

※ 以下の順番で画面を移動してください。
[3 Boot Options] 
 ⇓
[B1 Desktop / CLI]
 ⇓
CLI環境にする場合:[B1 Console]を選択
GUI環境にする場合:[B3 Desktop]を選択

piユーザの削除

この段階で、piユーザは不要になったので、削除します。何か起こった時のため、piユーザのホームディレクトリは残しておきます。

userdelコマンドの実行時にエラーが発生する場合は、piユーザでログインしている可能性が高いです。piユーザがログアウトしている状態で、以下の手順を新規ユーザ(=anton)で実行してください。

$ sudo userdel  pi

※ ホームディレクトリを消す場合
[方法1]
$ sudo userdel -r pi

[方法2]
$ sudo userdel  pi
$ sudo rm -rf /home/pi