手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 sudo ユーザーの作成 – 管理ユーザーと sudoers を整える

Ubuntu 26.04 サーバー管理ガイドへ戻る

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/myadminSSH 鍵や作業ファイルの置き場を用意する
sudoers/etc/sudoers.d/admin管理ユーザーに sudo 権限を付与する
検証visudo -cfsudoers の構文ミスで管理不能になる事故を防ぐ

重要なのは、sudo 権限を与えることと、ユーザーを作ることを混同しないことです。ユーザーが存在していても sudoers がなければ管理権限は使えません。逆に sudoers に書いても、対象ユーザーが存在しなければ意味がありません。

現在のユーザーと sudo 状態を確認する

まず、現在ログインしているユーザー、所属グループ、sudo の動作状態を確認します。既存環境を触る場合は、現在の管理経路を壊さないことが大切です。

whoami
id
getent group sudo
sudo -l

sudo -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 myadmin

sudoers 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/sudoers

NOPASSWD: ALL は便利ですが、軽く扱う設定ではありません。管理ネットワーク、SSH 公開鍵認証、ログ監査、管理ユーザーの範囲が整理されていることを前提に使うべき設定です。パスワード確認を残したい場合は、NOPASSWD: を使わず通常の sudo ポリシーにします。

sudo を別セッションで確認する

sudoers を変更したら、現在の管理セッションを閉じる前に、別セッションでログインして sudo が使えることを確認します。SSH 設定と同じく、自分を締め出さないための確認です。

ssh myadmin@10.1.0.10
sudo -l
sudo id
sudo true

sudo 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 の構文ミスは管理不能につながるため、手動作業でも構成管理でも、検証を手順の一部として扱うべきです。

参考書籍
Linux
ストーリーで覚える Linux CLI 入門
sudo、ユーザー、権限、SSH など、Linux サーバー管理の基本を確認したい場合の参考書籍です。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

関連する記事

関連する記事

Ubuntu 26.04 サーバー管理ガイドへ戻る

Ubuntu 26.04 sudo ユーザーの作成 – 管理ユーザーと sudoers を整える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る