Ubuntu 26.04 をサーバーとして運用する場合、最初に作るべきものの一つが管理ユーザーです。root で直接作業するのではなく、通常ユーザーでログインし、必要な時だけ sudo で管理権限を使う形にしておくと、作業者、認証、ログ、権限の境界を整理しやすくなります。
この記事では、Ubuntu 26.04 で管理ユーザーを作成し、sudo 権限を与える基本手順を整理します。手元の構成では Ansible によってローカルグループ、ローカルユーザー、/etc/sudoers.d/admin を分けて管理していますが、ここでは同じ考え方を手動で行う場合の手順としてまとめます。
sudo ユーザーで分けて考えるもの
sudo ユーザー作成は、単に usermod -aG sudo を実行するだけではありません。管理ユーザーを安定して使うには、グループ、ユーザー、ホームディレクトリ、SSH 鍵、sudoers を分けて確認します。
| 領域 | 見るもの | 役割 |
|---|---|---|
| ローカルグループ | groupadd / getent group | 管理ユーザーの主グループや補助グループを用意する |
| ローカルユーザー | useradd / id | 管理作業に使う通常ユーザーを作成する |
| ホームディレクトリ | /home/myadmin | SSH 鍵や作業ファイルの置き場を用意する |
| sudoers | /etc/sudoers.d/admin | 管理ユーザーに sudo 権限を付与する |
| 検証 | visudo -cf | sudoers の構文ミスで管理不能になる事故を防ぐ |
重要なのは、sudo 権限を与えることと、ユーザーを作ることを混同しないことです。ユーザーが存在していても sudoers がなければ管理権限は使えません。逆に sudoers に書いても、対象ユーザーが存在しなければ意味がありません。
現在のユーザーと sudo 状態を確認する
まず、現在ログインしているユーザー、所属グループ、sudo の動作状態を確認します。既存環境を触る場合は、現在の管理経路を壊さないことが大切です。
whoami
id
getent group sudo
sudo -lsudo -l では、現在のユーザーにどの sudo 権限が与えられているかを確認できます。ここで sudo が使えない状態なら、root コンソール、クラウドのシリアルコンソール、既存管理ユーザーなど、別の管理経路が必要です。
管理グループを作成する
管理ユーザーの主グループを明示的に作る場合は、先にグループを作成します。Ansible 側でも、グループとユーザーは別 role として扱い、ユーザー名や GID の妥当性を検証してから作成する構成にしています。
sudo groupadd --system myadmin 2>/dev/null || true
getent group myadmin既存グループを使う場合は、無理に新規グループを作る必要はありません。重要なのは、主グループと補助グループの意味を曖昧にしないことです。
管理ユーザーを作成する
次に、管理作業に使う通常ユーザーを作成します。ホームディレクトリを作成し、ログインシェルを明示します。ここでは例として myadmin を使います。
sudo useradd -m -s /bin/bash -g myadmin -G sudo myadmin
id myadmin
getent passwd myadmin
ls -ld /home/myadmin既にユーザーが存在する場合は、useradd ではなく usermod で補助グループを追加します。既存の補助グループを消さないように、-aG を使う点に注意します。
sudo usermod -aG sudo myadmin
id myadminsudoers drop-in で sudo 権限を管理する
管理ユーザーに sudo 権限を与える方法はいくつかあります。Ubuntu では sudo グループに所属させるだけでも sudo は使えますが、構成管理では /etc/sudoers.d/ に管理ユーザー用の drop-in を置くと、意図が明確になります。
この構成では、/etc/sudoers.d/admin に管理ユーザーの sudo 権限を定義します。Ansible ではテンプレートを配置する際に visudo -cf %s で検証してから反映しています。手動でも同じ考え方にします。
sudo tee /etc/sudoers.d/admin >/dev/null <<'EOF'
myadmin ALL=(ALL:ALL) NOPASSWD: ALL
EOF
sudo chmod 0440 /etc/sudoers.d/admin
sudo visudo -cf /etc/sudoers.d/admin
sudo visudo -cf /etc/sudoersNOPASSWD: ALL は便利ですが、軽く扱う設定ではありません。管理ネットワーク、SSH 公開鍵認証、ログ監査、管理ユーザーの範囲が整理されていることを前提に使うべき設定です。パスワード確認を残したい場合は、NOPASSWD: を使わず通常の sudo ポリシーにします。
sudo を別セッションで確認する
sudoers を変更したら、現在の管理セッションを閉じる前に、別セッションでログインして sudo が使えることを確認します。SSH 設定と同じく、自分を締め出さないための確認です。
ssh myadmin@10.1.0.10
sudo -l
sudo id
sudo truesudo id で root 権限へ昇格できることを確認できます。sudo true は、コマンドとしての副作用をほぼ持たずに sudo の成否だけを確認したい場合に使えます。
ログと監査の観点
sudo を使う意味は、root で直接ログインしないことだけではありません。誰が sudo を使ったのかをログとして追えることにも意味があります。設定後は、sudo のログが確認できることも見ておきます。
journalctl --since '30 minutes ago' | grep -i sudo || true
grep -i sudo /var/log/auth.log 2>/dev/null || true管理ユーザーを共用アカウントにすると、誰が作業したのかが分かりにくくなります。実運用では、個人ごとの管理ユーザー、SSH 鍵、sudo ログ、監査ログをどこまで分けるかも設計対象になります。
sudo ユーザー作成時の確認観点
| 確認項目 | 確認内容 |
|---|---|
| ユーザー名 | システム上の命名規則に合っているか |
| 主グループ | 意図したグループが存在し、ユーザーに設定されているか |
| 補助グループ | sudo など必要なグループだけに入っているか |
| ホームディレクトリ | 所有者と権限が正しいか |
| sudoers | /etc/sudoers.d/ のファイル権限が 0440 か |
| 構文検証 | visudo -cf で検証してから反映しているか |
| ログ | sudo 実行履歴を追えるか |
まとめ
Ubuntu 26.04 の sudo ユーザー作成は、管理作業の入口を作る作業です。ユーザーを作る、sudo グループに入れる、sudoers を書く、SSH で入れる、ログで追える、という要素を分けて確認すると、構成の意味が見えやすくなります。
特に /etc/sudoers.d/admin のような drop-in で sudo 権限を管理する場合は、必ず visudo -cf で検証してから反映します。sudoers の構文ミスは管理不能につながるため、手動作業でも構成管理でも、検証を手順の一部として扱うべきです。


