DELOGs
Ubuntuにおけるrootユーザを理解しておく

Ubuntuにおけるrootユーザを理解しておく

初めてUbuntuを触って、あれ? rootは? となったのでその辺を整理

初回公開日

最終更新日

「ああ、sudoコマンドでroot権限でやればいいのね」とUbuntuを触りはじめた頃は、ぼんやりとわかった気でいました。 しかし、恥ずかしい話ですが、デフォルトユーザのubuntu=rootと思っていたり、初心者の私は触っていくほどに混乱していきました。。。
なのでしっかりと「Ubuntu」における「root」についてまとめておきます。

1. デフォルトユーザ「ubuntu」と「root」は別物

私の環境は「さくらのクラウド」で構築していて、デフォルトのユーザがubuntuでした。ubuntuユーザに対して「管理者パスワード」を設定してインスタンスを作成したので、ubuntuユーザ=rootのような変な構図が頭に出来上がってしまいました。 環境によって、デフォルトユーザは異なると思いますので、その辺は置き換えて参照していだければと思います。
Ubuntu では、デフォルトでは root アカウントは無効化されており、代わりにデフォルトのubuntu ユーザーが sudo で管理者権限を持つ仕組みになっている。

ubuntu と root の違い

項目ubuntuユーザrootユーザ
デフォルト状態作成ずみ・使用可能無効化(パスワードなし)
管理権限sudoで管理者権限を使える直接rootとしてログイン可能
パスワード初期設定でパスワードありデフォルトではパスワードなし(ロック状態)
ログイン方法SSHやターミナルデフォルトではSSHログイン不可
  • Ubuntu では root のパスワードは設定されておらず、直接 root でログインできない仕様になっている!
  • その代わりに ubuntu ユーザーが sudo で管理操作を行う!

root アカウントが無効化されているとは?

デフォルトでは、root のパスワードが設定されておらず、以下のようにロックされている
bash
1sudo cat /etc/shadow | grep root
出力例:
bash
1root:!locked:19447:0:99999:7:::
  • 「!locked」になっているため、パスワードでの root ログインはできない!
  • rootでログインするにはパスワードを設定する必要がある

2.なぜ root のパスワードをデフォルトで無効にするのか?

デフォルトでrootのパスワードが設定されていない(lock状態)のは、セキュリティを高めるための措置です。

root のパスワード攻撃を防ぐ

  • root は特権ユーザーなので、攻撃者が root のパスワードを突破すれば、完全にシステムを乗っ取られる 危険がある!
  • そのため 「そもそも root のパスワードを設定しない」ことで、ブルートフォース攻撃(総当たり攻撃)を防ぐ!

代わりにsudoを使わせることで、セキュリティを向上

  • Ubuntu では sudo を使って管理作業を行うのが基本
  • sudo を使うと、以下のメリットがある!
rootで直接作業sudoを使う
誤操作すると即システム破壊のリスクありsudoはパスワード入力が必要なので、慎重になる
すべてのコマンドが無制限に実行可能/var/log/auto.logに履歴が残る(誰がsudoを使ったか分かる)
攻撃者にrootパスワードがバレると全件掌握されるsudoの対象ユーザーを制御可能(特定のユーザーだけsudoを許可できる)
  • つまり「いきなりrootにしないことでシステムを守る」設計になっている

デフォルトのubuntuユーザも危険

「さくらのクラウド」でサーバインスタンスを作成するとデフォルトユーザとしてubuntuユーザが作成ずみになるが、攻撃者に狙われやすいという意味でこれも危険なユーザとなります。
管理者用の別ユーザーを作成し、ubuntu のSSHログインを無効化すれば、より安全な環境が作れます。
ubuntu ユーザーのSSHログインを禁止するには下記のようにします。 まずは、管理者権限を持つ新しいユーザーを作成
bash
1sudo adduser adminuser 2sudo usermod -aG sudo adminuser
ubuntu ユーザーのSSHログインを禁止
bash
1sudo vi /etc/ssh/sshd_config
bash : sshd_config
1DenyUsers ubuntu 2AllowUsers adminuser
設定を反映
bash
1sudo systemctl restart ssh

3.まとめ

  • Ubuntu では root のパスワードをデフォルトで無効化することで、攻撃リスクを減らしている!
  • sudo を使わせることで、操作ログを残し、誤操作のリスクを減らせる!
  • SSH で root ログインを無効にすることで、不正アクセスを防げる!
  • 万が一に備えて root を有効化することもできるが、セキュリティリスクが増えるので慎重に(非推奨なのでやり方は記事にしません)!
という感じです。
この記事の執筆・編集担当
DE

松本 孝太郎

DELOGs編集部/中年新米プログラマー

ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。