純規の暇人趣味ブログ

首を突っ込んで足を洗う

[Raspberry Pi]ユーザ名変更の個人的に「正しい」と思うやり方

      2017/03/10    HimaJyun

みなさんのPi、焦げずに運用できていますか?

Raspberry Piをサーバとして利用する場合のセキュリティ対策などで、決まって「新しいユーザを追加して、Piユーザを削除する」と言う手法が紹介されていますが、個人的にあまり良くないと思うので僕が使っている手法をご紹介しようと思います。

Piユーザを消さないで

なぜ「あまり良くない」と思うのかを手っ取り早く説明しようと思います。

みなさんがインストールしているRaspbianなどは正確には「インストールした」のではなく「インストールされてある物をコピーした」が正しいのです。

そうなると何がマズいかと言うと、「Piユーザが作成したファイルがどこかにあるかも知れない」と言う事です。

その状況でPiユーザを削除してしまうと、そのファイルは所有者が居なくなり、root以外一切触れる事が出来なくなります。

「rootが編集出来るなら良い」と思うかも知れませんが、そのファイルが他のユーザ(例えばWebサーバのwww-dataユーザ)から読み書きされる可能性もある訳です。

じゃあどうするか

デフォルトではユーザ名:Pi、パスワード:raspberry、これをそのまま使うのはセキュリティ的に良くない

だからPiユーザを削除して新しいユーザを追加する、これが今までの手法ですね。

そうでは無く「Piユーザの名前を変更する」様にすれば良いのです(と、言うより「変更」なのでこちらが正しいはずなのですが、なぜか「raspberry pi ユーザ名 変更」でググると削除->新しく追加の方が良くヒットする)

やり方

みなさんのPiがRaspbianで、SSHで接続して操作するとして話を進めましょう。

仮のユーザを追加する

PiユーザとしてログインしつつPiユーザのアカウント名を変更する事は不可能です。

なので、一時的に利用する仮のユーザを追加しようと思います。

とりあえず、いつも通りPiユーザでSSHから接続します。

# 仮のユーザ(tmp)を作成する(-Mオプションが付いているのでホームディレクトリが作成される心配はありません)
sudo useradd -M tmp
# tmpユーザをsudoグループに追加(sudoが使える様に)
sudo gpasswd -a tmp sudo
# (一応)tmpユーザのパスワードを設定
sudo passwd tmp
# 一旦ログアウトする
exit

次は仮ユーザで接続してユーザ名を変更します。

ユーザ名を変更する

次は先程作成した仮ユーザ(tmp)でSSHから接続しましょう。

その後、Piユーザのユーザ名、グループ名を変更します(例としてpi->adminに変更します)

# usermod -lでユーザ名をpiからadminに変更
sudo usermod -l admin pi
# usermod -dでホームディレクトリを/home/piから/home/adminに変更
sudo usermod -d /home/admin -m admin
# groupmod -nでpiグループをadminグループに変更
sudo groupmod -n admin pi
# ログアウト
exit

これでpiユーザはadminユーザに生まれ変わりました(ファイルなどもそのまま引き継がれています)

パスワードを変更

最後に、仮のユーザを削除してパスワードを変更しましょう。

# 仮ユーザを削除(多分警告的なのが出るかと思いますが、構わず削除して下さい)
sudo userdel tmp
# adminユーザのパスワードを変更
sudo passwd admin

これでpiユーザの所有するファイルなどそのままにpi->adminに変更する事が出来ました。

rootのパスワードは触らなくて良さそう

前まで「rootもパスワード変えましょうね」みたいなことを書いたのですが、どうやらその必要はないみたいです。

「/etc/shadow」を見てみたところ、rootのパスワードは「*」、つまりパスワードを設定するまでログイン不可になっていました。

ちなみにUbuntuでは「!(アカウントロック)」になっています、ロックしたければ「sudo passwd -l root」でロック可能

ロックやログイン不可状態でもsudoの動作には関係ないので、変えない方が安全かも知れない。

既に変えてしまった場合は/etc/shadowを開き、rootのパスワード($で始まる長い英数字の所)を*にしてしまえばOK

パスなしsudo禁止

そしてパスワードなしsudoを出来ないようにするには……

追記:いつからかやり方が変わりました

「/etc/sudoers.d/010_pi-nopasswd」を開き、「pi ALL=(ALL) NOPASSWD: ALL」をコメントアウトします。

もしくは「sudo rm /etc/sudoers.d/010_pi-nopasswd」でファイルそのものを消してしまいましょう。

古い方法:「sudo visudo」でファイルを開き、「pi ALL=(ALL) NOPASSWD: ALL」をコメントアウト

これでpiユーザが新しいユーザ名に変更され、最低限のセキュリティの確保は出来ました。

パスワードはより強力な物を設定しておきましょうね。

 - サーバ運営