Ubuntuのユーザー追加・削除・切り替えコマンドまとめ

コマンド

Ubuntuでユーザーを追加・削除・切り替えするコマンドは、VPSやサーバーを運用する上で最初に覚えるべき基本操作のひとつです。結論から言うと、ユーザー追加は adduser ユーザー名 が最もシンプルで確実な方法です。

この記事では、adduseruseraddusermoduserdelsu を実際に Ubuntu 24.04 の Docker 公式イメージで動かし、コマンドの実出力と違いをまとめました。

この記事のポイント

  • 初心者には adduser(高レベル)がおすすめ。ホームディレクトリや基本設定を自動で行ってくれる
  • useradd は低レベルコマンド。-m -s /bin/bash を忘れるとホームや bash が設定されない
  • Ubuntu 22.04 と 24.04 で adduser の出力形式が変わっている(24.04 は info: プレフィックス付き)
  • sudo グループに追加するには usermod -aG sudo ユーザー名-aG の -a を忘れると既存グループが消える
  • deluser --remove-home でホームごと削除できるが、Ubuntu 24.04 では perl パッケージが必要

目次

  1. 現在のユーザーを確認する
  2. ユーザーを追加する(adduser / useradd)
  3. ユーザーを切り替える(su / sudo)
  4. ユーザー情報を変更する(usermod)
  5. ユーザーを削除する(userdel / deluser)
  6. VPS運用での活用:deployユーザー作成パターン
  7. よくあるエラーと解決策
  8. まとめ

前提環境

本記事のコマンドはすべて以下の環境で実行確認しています。

  • OS:Ubuntu 24.04.4 LTS(Noble Numbat)— Docker 公式イメージ ubuntu:24.04 で実行
  • 実行ユーザー:root(sudo なし。一般ユーザーで実行する場合は各コマンドの頭に sudo をつけてください)
  • adduser パッケージ:3.137ubuntu1
  • passwd(useradd 収録):1:4.13+dfsg1-4ubuntu3.2

注意

Ubuntu の最小インストールイメージ(ubuntu:24.04 の Docker 公式イメージ含む)には adduser パッケージが同梱されていない場合があります。command not found と表示されたら apt-get install adduser でインストールしてください。

現在のユーザーを確認する

まず、今どんなユーザーがシステムにいるかを確認しましょう。使うコマンドは whoamiidgetent passwd の3つです。

①whoami — 現在のユーザー名を確認




ubuntu@myserver: ~
$ whoami
ubuntu

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),27(sudo),100(users)

id コマンドは UID(数値のユーザーID)と所属グループを一覧で表示します。27(sudo) が含まれていれば sudo 権限があります。

②getent passwd — ユーザー一覧を確認

システムに登録されているユーザーを全て確認するには getent passwd を使います。/etc/passwd を直接 cat するより getent のほうが推奨されています(LDAP 等の外部ディレクトリも含めて検索するため)。




ubuntu@myserver: ~
$ getent passwd | awk -F: ‘$3 >= 1000 && $3 < 65534 {print}’
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash

# /etc/passwd のフィールド(参考)
# ユーザー名:パスワード(x):UID:GID:GECOS:ホームdir:シェル
$ getent passwd root
root:x:0:0:root:/root:/bin/bash

UID 1000 以上が通常の一般ユーザー、0〜999 がシステムユーザーです(/etc/login.defsUID_MIN=1000 で定義)。UID 65534 は nobody ユーザーなので除外しています。

Ubuntu 24.04 の login.defs と useradd デフォルト設定(実測)
Ubuntu 24.04 の login.defs と useradd デフォルト設定(実測)

ユーザーを追加する(adduser / useradd)

Ubuntu でユーザーを追加するコマンドは adduseruseradd の2種類あります。どちらも内部では useradd が動きますが、初心者には adduser が断然おすすめです。

①adduser(高レベルコマンド)— 推奨

adduser は Perl スクリプトで書かれた高レベルコマンドです。ホームディレクトリの作成・デフォルトシェルの設定・/etc/skel のコピーを全て自動でやってくれます。




root@myserver: ~
$ adduser taro
info: Adding user `taro’ …
info: Selecting UID/GID from range 1000 to 59999 …
info: Adding new group `taro’ (1001) …
info: Adding new user `taro’ (1001) with group `taro (1001)’ …
info: Creating home directory `/home/taro’ …
info: Copying files from `/etc/skel’ …
New password:
Retype new password:
passwd: password updated successfully
Full Name []: Taro Yamada
Room Number []:

Is the information correct? [Y/n] Y

$ id taro
uid=1001(taro) gid=1001(taro) groups=1001(taro),100(users)
adduser コマンド実行ログ(Ubuntu 24.04 実測)
adduser コマンド実行ログ(Ubuntu 24.04 実測)

実際に Docker コンテナで実行した結果です(上の図)。Ubuntu 24.04(adduser 3.137ubuntu1)では各ステップが info: プレフィックス付きで表示されます。

スクリプトで自動実行する場合は --disabled-password--gecos を使うと対話入力をスキップできます。




root@myserver: ~
# 対話なしでユーザー作成(自動化スクリプト向け)
$ adduser –disabled-password –gecos ‘Taro Yamada’ taro
info: Adding new user `taro’ (1001) with group `taro (1001)’ …
info: Creating home directory `/home/taro’ …

②useradd(低レベルコマンド)— オプション注意

useradd は C で書かれた低レベルコマンドで、出力なし(サイレント)で動きます。-m を忘れるとホームディレクトリが作成されず、-s /bin/bash を忘れるとシェルが /bin/sh になります




root@myserver: ~
# -m でホームdir作成、-s でシェル指定(両方必須)
$ useradd -m -s /bin/bash taro
# (出力なし。これが正常)

$ id taro
uid=1001(taro) gid=1001(taro) groups=1001(taro)

# パスワードを設定(作成直後はロック状態)
$ passwd taro
New password:
Retype new password:
passwd: password updated successfully

useradd で作成したユーザーは users グループに自動追加されません(adduser との違い)。必要であれば usermod -aG users taro で追加します。

adduser と useradd の違い(Ubuntu 24.04 実測比較表)
adduser と useradd の違い(Ubuntu 24.04 実測比較表)

Ubuntu 22.04 と 24.04 の違い

実際に2つのバージョンで adduser を実行してみると、出力形式が変わっていることがわかりました。

Ubuntu 22.04 vs 24.04 の adduser 出力比較(実測)
Ubuntu 22.04 vs 24.04 の adduser 出力比較(実測)

Ubuntu 22.04 では adduser 3.118ubuntu5info: なし)、Ubuntu 24.04 では adduser 3.137ubuntu1info: プレフィックス付き)です。また、24.04 では users グループへの自動追加が行われるようになりました。スクリプトでログをパースしている場合は注意が必要です。

ユーザーを切り替える(su / sudo)

ユーザーの切り替えには su コマンドを使います。Ubuntu では suutil-linux 2.39.3 に含まれています。

①su — 別ユーザーに切り替え




ubuntu@myserver: ~
# ログインシェルとして taro に切り替え(環境変数も引き継ぐ)
$ su – taro
Password:
taro@myserver:~$

# ログインシェルなし(環境変数を引き継がない)
$ su taro
Password:
taro@myserver:/home/ubuntu$

# root に切り替え(パスワードが必要)
$ su –
Password:
root@myserver:~#

su -(ハイフンあり)が推奨です。ハイフンをつけると切り替え先ユーザーのログインシェルとホームディレクトリを正しく引き継ぎます。ハイフンなしでは元のユーザーの環境変数が残り、予期せぬ動作の原因になることがあります。

Ubuntu のデフォルトは root パスワードなし

Ubuntu のデフォルトインストールでは root のパスワードが設定されていないため、su - は失敗します。root 権限が必要な操作は sudo -i または sudo コマンド を使いましょう。

②sudo — root 権限でコマンド実行

sudo グループに属するユーザーは sudo で root 権限のコマンドを実行できます。




ubuntu@myserver: ~
# root シェルを開く
$ sudo -i
[sudo] password for ubuntu:
root@myserver:~#

# 特定のユーザーとしてコマンドを実行
$ sudo -u taro id
uid=1001(taro) gid=1001(taro) groups=1001(taro)

ユーザー情報を変更する(usermod)

既存ユーザーの情報変更には usermod コマンドを使います。

①sudo グループに追加する — usermod -aG

VPS 上で管理者権限を持つユーザーを作る場合、sudo グループへの追加が必要です。




root@myserver: ~
$ usermod -aG sudo taro
# (出力なし。正常)

$ groups taro
taro : taro sudo users

# 確認:/etc/group を直接見ても確認できる
$ grep ‘^sudo:’ /etc/group
sudo:x:27:ubuntu,taro

実際の Docker 環境での実行結果(usermod -aG sudo testuser1 後):testuser1 : testuser1 sudo users と表示されました。

-aG の「-a」を絶対に忘れない

usermod -G sudo taro のように -a を省略すると、既存の全グループが削除され sudo だけになります。ユーザーが adm や cdrom グループに入っていた場合も全て失います。-aG(append + groups)とセットで覚えてください。

②シェルを変更する — usermod -s




root@myserver: ~
# useradd で作ったユーザーのシェルを bash に変更
$ usermod -s /bin/bash taro
# 確認
$ grep taro /etc/passwd
taro:x:1001:1001::/home/taro:/bin/bash

③アカウントをロック・ロック解除する




root@myserver: ~
# パスワードロック(ログイン不可にする)
$ passwd -l taro
passwd: password changed.

# 状態確認(L=Locked)
$ passwd -S taro
taro L 2026-06-13 0 99999 7 -1

# ロック解除
$ passwd -u taro
passwd: password changed.

passwd -S の出力の2番目フィールド:L(Locked)、P(有効なパスワードあり)、NP(パスワードなし)を意味します。

ユーザーを削除する(userdel / deluser)

ユーザーの削除には userdel(低レベル)と deluser(高レベル)があります。

①userdel — ホームは残る




root@myserver: ~
$ ls /home/
deltest1 ubuntu

$ userdel deltest1
# (出力なし)

$ ls /home/
deltest1 ubuntu
# ホームディレクトリが残ったまま!

実際に Docker で実行すると、userdel はユーザーを /etc/passwd から削除しますが、ホームディレクトリは削除しません。ホームも消したい場合は userdel -rdeluser --remove-home を使います。

②deluser –remove-home — ホームごと削除




root@myserver: ~
$ deluser –remove-home taro
info: Looking for files to backup/remove …
info: Removing files …
info: Removing user `taro’ …

$ ls /home/
ubuntu
# /home/taro が削除された

Ubuntu 24.04 の注意:deluser –remove-home には perl が必要

Ubuntu 24.04 の最小インストール環境では deluser --remove-homeperl パッケージが必要です。fatal: In order to use the --remove-home ... you need to install the 'perl' package と表示された場合は apt-get install perl を実行してください。これは実際に Docker 環境で確認したエラーです。

Ubuntuユーザー管理コマンドの全体フロー(実測)
Ubuntuユーザー管理コマンドの全体フロー(実測)

VPS運用での活用:deployユーザー作成パターン

VPS にアプリをデプロイする場合、root 直接操作は避けて専用の deploy ユーザーを作るのが定石です。実際に Ubuntu 24.04 の Docker 環境で実行したフローを紹介します。

deploy ユーザー作成と SSH 鍵設定(Ubuntu 24.04 実測)
deploy ユーザー作成と SSH 鍵設定(Ubuntu 24.04 実測)



root@myserver: ~
# 1. deploy ユーザーを作成(パスワードなし)
$ adduser –disabled-password –gecos ‘Deploy User’ deploy
info: Creating home directory `/home/deploy’ …

# 2. sudo グループに追加(必要な場合)
$ usermod -aG sudo deploy

# 3. .ssh ディレクトリを作成(権限 700 が重要)
$ mkdir -p /home/deploy/.ssh && chmod 700 /home/deploy/.ssh

# 4. ed25519 鍵を生成
$ ssh-keygen -t ed25519 -f /home/deploy/.ssh/id_ed25519 -N ” -C ‘deploy@myserver’
Your public key has been saved in /home/deploy/.ssh/id_ed25519.pub

# 5. オーナーを deploy ユーザーに変更
$ chown -R deploy:deploy /home/deploy/.ssh

# 6. 権限確認
$ stat -c ‘%n: %a (%U:%G)’ /home/deploy/.ssh /home/deploy/.ssh/id_ed25519.pub
/home/deploy/.ssh: 700 (deploy:deploy)
/home/deploy/.ssh/id_ed25519.pub: 644 (deploy:deploy)

実測値:鍵フィンガープリントは SHA256:CjGOEVQIdFcxeHupC7Jrux1eYs9l5NtiBldQ4XQYHU0(ed25519 256bit)、公開鍵サイズは 97 バイトでした。.ssh ディレクトリの権限が 700、秘密鍵が 600 以外だと SSH 接続が拒否されるので注意してください。

よくあるエラーと解決策

①「adduser: command not found」

Ubuntu の最小インストール環境に adduser パッケージが含まれていない場合に発生します。




root@myserver: ~
bash: adduser: command not found

$ apt-get update && apt-get install adduser

②「usermod: user ‘xxx’ does not exist」

ユーザーが作成されていないか、ユーザー名のタイプミスです。getent passwd ユーザー名 でユーザーの存在を確認してから実行してください。

③「deluser –remove-home」が fatal エラーになる

Ubuntu 24.04 の Docker や最小インストール環境で deluser --remove-home を実行すると、fatal: ... you need to install the 'perl' package と表示されます。




root@myserver: ~
fatal: In order to use the –remove-home, –remove-all-files, and –backup
features, you need to install the `perl’ package.

$ apt-get install perl
$ deluser –remove-home taro
info: Removing user `taro’ …

または perl を使わずに手動で削除することもできます。




root@myserver: ~
# userdel -r でユーザーとホームを同時削除(perl 不要)
$ userdel -r taro
# ホームディレクトリも削除される

④「usermod -aG sudo」後に sudo が使えない

グループ変更は次のログイン時に反映されます。現在のセッションで即座に反映させるには newgrp sudo を実行するか、一度ログアウトして再度ログインしてください。




taro@myserver: ~
$ newgrp sudo
# または一度ログアウトして再ログイン
$ groups
taro sudo users

まとめ

Ubuntu のユーザー管理コマンドをまとめます。

操作 コマンド 備考
ユーザー追加(推奨) adduser ユーザー名 ホーム・bash 自動設定。adduser パッケージ必要
ユーザー追加(低レベル) useradd -m -s /bin/bash ユーザー名 -m -s を忘れずに
ユーザー確認 id ユーザー名 / getent passwd UID・GID・グループを確認
ユーザー切り替え su - ユーザー名 ハイフンをつけてログインシェルで切り替え
sudo グループに追加 usermod -aG sudo ユーザー名 -a(append)を忘れると既存グループが消える
シェル変更 usermod -s /bin/bash ユーザー名 useradd で作成したユーザーに必要な場合が多い
アカウントロック passwd -l ユーザー名 解除は passwd -u
ユーザー削除 userdel ユーザー名 ホームは残る。-r でホームも削除
ユーザー削除(高レベル) deluser --remove-home ユーザー名 24.04 では perl 必要

コマンド解説は以上です。VPS を借りてサーバーを運用し始めると、ここで説明した操作は毎日のように使うことになります。特に adduser での deploy ユーザー作成と usermod -aG sudo の組み合わせは、初期セットアップの定番パターンとして身につけておきましょう。

VPS の選び方やサーバー初期設定について詳しく知りたい方は、下記の記事も参考にしてください。

  • Ubuntu サーバーの初期設定まとめ
  • Vultr vs DigitalOcean — VPS 速度・価格比較(2026年実測)
  • Ubuntu の SSH 設定:鍵認証・ポート変更・fail2ban まとめ

コメント

タイトルとURLをコピーしました