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
NetworkManager
とwicd
を使用してネットワークにアクセスできる
- spi
- SPI デバイスにアクセスできる
- i2c
- I²C デバイスにアクセスできる
- gpio
- GPIO (ラズパイにたくさん付いているピンのあれ) が利用できる
ユーザ名の変更
考えられる方法
調べてみると、以下の三通りのパターンがあるようです。
- 新規にユーザを作成し、既存のユーザ
pi
を削除- まったく新しいユーザなので変な設定もなく、使用しないユーザが残ることもない
- 新規にユーザを作成し、ユーザ
pi
は名称を変更しておき使用しない- デフォルトのユーザを削除することで問題が発生することを懸念
- ただし使用しないユーザが残る
- 既存の
pi
ユーザの名称を変更する- デフォルトのユーザを削除することで問題が発生することを懸念
- 色々なグループに入っていたりするなど、人によってはデフォルトの設定を好ましく思わない
- 参考: [Raspberry Pi]ユーザ名変更の個人的に「正しい」と思うやり方 | 純規の暇人趣味ブログ
新規にユーザを作成するのが最も安全でしょう。また、特にデフォルトのユーザ pi
が何かをしている訳ではなさそうですから、これを削除してしまっても問題はなさそうです。
その一方で、デフォルトのユーザには一通りのグループに追加されており,Raspberry Pi の機能を手っ取り早く利用するのに楽なように設定されているとも言えます。そのため以下ではユーザ名を変更する場合について書いておきます。
変更方法
流れは次の通りです。
- 一時的に使う他のユーザについて
- ユーザディレクトリを作らずに作成
sudo
できるように、sudo
グループに追加- パスワードを設定
- そのユーザに切り替えてログイン
- 初期ユーザ
pi
について- 名前を変更
- ユーザディレクトリを変更
- pi グループのグループ名を変更
- 元のユーザに切り替えてログイン
- 一時的なユーザを削除
まず初期ユーザ pi
で次のように実行します。useradd
コマンドの M
オプションは、ホームディレクトリを作成しないようにするものです。gpasswd
はグループを管理するコマンドで、a
オプションは指定したユーザをグループに追加します。
sudo useradd -M tmp sudo gpasswd sudo -a tmp sudo passwd tmp
つぎに、その tmp
ユーザに切り替えて次を実行します。usermod
の l
オプションは、ユーザ名を指定した名称に変更します。また、d
オプションはホームディレクトリの場所を移動、m
オプションは同時にディレクトリの中身も移動します。groupmod
の n
オプションは、グループ名を指定した名称に変更します。
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
も出来ないようになっているので、ここであえて設定する必要はないかと思います。