Raspbian のデフォルトユーザ pi について調べる

Raspberry Pi の標準 OS である Raspbian は、既にユーザの作成等が一通り終えた状態のイメージで配布されています。そのためはじめはユーザ pi に対してパスワード raspberry でログインします。

しかしながら、初期から用意されているユーザをそのまま使うのは場合によってはセキュリティ的に問題が発生することがあります。また、自分の好きなユーザ名で使用したいという要求もあります。そのため、Raspberry Pi 導入の手順では、ユーザを新規で作成したり、ユーザ名を変更して使用する方法がよく解説されています。

しかし、そのまま使うにしろ、ユーザ名を変更したり削除したりするにしろ、このユーザがそもそもどんな物なのか気になるところです。そのため、このデフォルトユーザ pi がそもそもどんなものなのかを調べ、またユーザの変更方法について考えました。

pi ユーザについて調べる

ファイルの所有

ないとは思いますが、とりあえず pi  が何かしらのファイルを所有しているかを調べてみます。find コマンドで調べて見ると、/home/pi 以下のファイルを除いてユーザ pi が所有しているファイルはないようです。

グループ

また、pi ユーザが所属しているグループについて調べると、

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

のようです。

グループの目的は、Rasbian の元になった Debian の wiki (SystemGroups – Debian Wiki) 等を参考にしてすると以下のようになっています。

  • adm
    • /var/log にあるログを見ることができる
  • dialout
    • シリアルポートへダイレクトアクセスができる
  • cdrom
    • CD ドライブやその他光学ドライブを利用できる
  • sudo
    • sudo ができる
    • Debian では /etc/sudoers に “%sudo ALL=(ALL:ALL) ALL” と記述されているため、このグループに入れるだけで sudo ができるようになっている(wheel ではない)
  • audio
    • オーディオデバイスにアクセスできる
      • サウンドカードやマイク等
  • video
    • ビデオデバイスにアクセス出来る
      • フレームバッファやビデオカード、ウェブカメラ等
  • plugdev
    • パッケージ pmount を使用してリムーバブルデバイスを mount, umount できる
  • games
    • ゲームを使えるようにする
    • 「多くのゲームではハイスコアを記録するために SETGID を利用しているため」らしい
  • users
    • ユーザープライベートグループと別に追加する、一般ユーザを登録するためのグループ
  • input
    • 詳しくはわからないがその名の通り入力系デバイスへのアクセス許可?
    • このグループに属していないことで cannot open the device と出るものソフトウェアもあるらしい
    • 他ディストリビューションにおいては、ユーザーとグループ – ArchWiki によれば、systemd が導入されたことによって使われなくなったグループでユーザがログインしていない状態で使用する場合に追加する必要がでてくることがある、ということらしいが……
  • netdev
    • NetworkManagerwicd を使用してネットワークにアクセスできる
  • spi
    • SPI デバイスにアクセスできる
  • i2c
    • I²C デバイスにアクセスできる
  • gpio
    • GPIO (ラズパイにたくさん付いているピンのあれ) が利用できる

ユーザ名の変更

考えられる方法

調べてみると、以下の三通りのパターンがあるようです。

  1. 新規にユーザを作成し、既存のユーザ pi を削除
    • まったく新しいユーザなので変な設定もなく、使用しないユーザが残ることもない
  2. 新規にユーザを作成し、ユーザ pi は名称を変更しておき使用しない
    • デフォルトのユーザを削除することで問題が発生することを懸念
    • ただし使用しないユーザが残る
  3. 既存の pi ユーザの名称を変更する

新規にユーザを作成するのが最も安全でしょう。また、特にデフォルトのユーザ pi が何かをしている訳ではなさそうですから、これを削除してしまっても問題はなさそうです。

その一方で、デフォルトのユーザには一通りのグループに追加されており,Raspberry Pi の機能を手っ取り早く利用するのに楽なように設定されているとも言えます。そのため以下ではユーザ名を変更する場合について書いておきます。

変更方法

流れは次の通りです。

  1. 一時的に使う他のユーザについて
    1. ユーザディレクトリを作らずに作成
    2. sudo できるように、sudo グループに追加
    3. パスワードを設定
  2. そのユーザに切り替えてログイン
  3. 初期ユーザ pi について
    1. 名前を変更
    2. ユーザディレクトリを変更
    3. pi グループのグループ名を変更
  4. 元のユーザに切り替えてログイン
  5. 一時的なユーザを削除

まず初期ユーザ pi で次のように実行します。useradd コマンドの M オプションは、ホームディレクトリを作成しないようにするものです。gpasswd はグループを管理するコマンドで、a オプションは指定したユーザをグループに追加します。

sudo useradd -M tmp
sudo gpasswd sudo -a tmp
sudo passwd tmp

つぎに、その tmp ユーザに切り替えて次を実行します。usermodl オプションは、ユーザ名を指定した名称に変更します。また、d オプションはホームディレクトリの場所を移動、m オプションは同時にディレクトリの中身も移動します。groupmodn オプションは、グループ名を指定した名称に変更します。

echo {新ユーザ名} | xargs -I{} sh -c "sudo usermod -l {} -d /home/{} -m pi; sudo groupmod pi -n {}"

最後に、その pi だったユーザに切り替えて

sudo userdel tmp

で完了です。

このとき、(当然ですが)su コマンドではなく一旦ログアウトする必要があります。さもなくば次のようなエラーが発生します。

usermod: user pi is currently used by process 20066

ユーザの設定 (sudoers)

初期状態で、ユーザ pi はパスワード無しで sudo が出来てしいますが、これは /etc/sudoers.d/010_pi-nopasswd の中でユーザ pi について pi ALL=(ALL) NOPASSWD: ALL と直接指定されているためです。他のユーザ名で指定されているため、先ほどユーザ名を変更して以降は sudo にパスワードが必要になっています。もはや使わないのでこのファイルは削除してしまって良いかと思います。

ところで、root にはパスワードが設定されていませんが、デフォルトでは root にパスワードが設定されていなければログインも su も出来ないようになっているので、ここであえて設定する必要はないかと思います。