なうびるどいんぐ

脳みそ常時-3dB

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

      2018/01/12    HimaJyun

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

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

スポンサーリンク

piユーザを消さないで

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

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

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

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

ファイルの所有者が居なくなる事で不可思議なエラーが出たりすると色々と大変です。

じゃあどうするか

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

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

そうでは無く「piユーザの名前を変更する」ようにすれば良いのです。

と、いうか「変更」なのでこちらが正しいはずなのですが、なぜか「raspberry pi ユーザ名 変更」でググると削除してから新しく追加の方が良くヒットする……

やり方

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

仮のユーザを追加する

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

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

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

これで仮のユーザー(tmp)が出来ました

ユーザ名を変更する

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

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

# 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

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

パスワードを変更

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

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

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

rootのパスワードは変えないで

「sudo passwd root」はしてはいけません。

少しの知識を手に「/etc/shadow」を見れば分かるのですが、rootのパスワードは「*」、つまりパスワードを設定するまでログイン不可になっていました。

これはつまり、パスワードを設定しなければrootでログインされる心配はないということ。

逆説的に言えば、「passwd root」してしまうとrootでログイン出来るようになってしまいます(rootでの作業が必要な時はsudoを使うべきであって、rootでログインしない)

ちなみにUbuntuでは「!(アカウントロック)」になっています。Raspbianでも同じようにロックしたければ「sudo passwd -l root」でロック出来ます。

ロックやログイン不可状態でもsudoの動作には関係ないので、rootのパスワードは変えない方が安全というか、変えるべきではありません。

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

パスなしsudo禁止

ユーザー名を変更した時点でパスなしsudoは出来なくなるのですが、piユーザーがパスなしsudo出来る設定が残ったままなので掃除します。

「/etc/sudoers.d/010_pi-nopasswd」に該当の設定があるので、「sudo rm /etc/sudoers.d/010_pi-nopasswd」でファイルそのものを消してしまいましょう。

(もし心配であればファイルを開いてコメントアウトでも構いません)

 - サーバー