ユーザーの作成と sudo 権限の設定方法
Ubuntu 26.04 LTS Server で一般ユーザーを作成し、管理コマンドを実行できる sudo 権限を付与・削除する手順を解説します。Ubuntu では root にパスワードが設定されておらず root で直接ログインできないため、管理作業は一般ユーザーが sudo を付けて実行します。
本記事の実行例は、cloud-init で作成した初期ユーザー kazulog でログインし、新しいユーザー taro を作成する流れになっています。
sudo は Rust で書き直された sudo-rs です(本記事の環境は sudo-rs 0.2.13)。基本的な使い方と /etc/sudoers の書式は従来の sudo と同じですが、パスワードのプロンプトが [sudo: authenticate] Password: になり、入力中の文字数が * で表示されるなど、画面の表示が一部異なります。現在のユーザーと sudo 権限の確認方法
ログイン中のユーザーと所属グループは id コマンドで確認できます。sudo グループ(GID 27)に入っているユーザーが sudo を実行できます。
idkazulog@sv1:~$ id
uid=1000(kazulog) gid=1000(kazulog) groups=1000(kazulog),4(adm),24(cdrom),27(sudo),30(dip),102(lxd)
kazulog@sv1:~$自分が sudo で実行できるコマンドは sudo -l で確認できます。
sudo -lkazulog@sv1:~$ sudo -l
User kazulog may run the following commands on sv1:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
kazulog@sv1:~$上記は sudo グループの設定((ALL : ALL) ALL)に加え、cloud-init が /etc/sudoers.d/90-cloud-init-users に書いたパスワード不要の設定((ALL) NOPASSWD: ALL)が有効になっている例です。
ユーザーの作成方法(adduser コマンド)
sudo adduser [NAME]| 入力箇所 | 入力内容 |
|---|---|
| [NAME] | 作成するユーザー名を指定 |
adduser は対話形式で、パスワードと氏名などの情報を順に聞いてきます。氏名以降の項目は Enter キーで省略できます。
kazulog@sv1:~$ sudo adduser taro
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for taro
Enter the new value, or press ENTER for the default
Full Name []: Taro Yamada
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
kazulog@sv1:~$上記はユーザー taro を作成した実行例です。ホームディレクトリ /home/taro が作られ、シェルは /bin/bash になります。
adduser は対話形式のため、スクリプトの中など対話できない場面では使えません。その場合は次の useradd を使います。作成したユーザーは id コマンドや getent passwd コマンドで確認できます。
kazulog@sv1:~$ id taro
uid=1001(taro) gid=1001(taro) groups=1001(taro),100(users)
kazulog@sv1:~$ getent passwd taro
taro:x:1001:1001:Taro Yamada,,,:/home/taro:/bin/bash
kazulog@sv1:~$ ls -ld /home/taro
drwxr-x--- 2 taro taro 4096 Sep 10 13:31 /home/taro
kazulog@sv1:~$ユーザーの作成方法(useradd コマンド・1行で作成する)
useradd は対話を伴わないコマンドで、オプションを指定して1行でユーザーを作成できます。スクリプトから実行する場合や、まとめて複数のユーザーを作成する場合に使います。
sudo useradd -m -s /bin/bash -c "[COMMENT]" -G [GROUP] [NAME]| オプション | 内容 |
|---|---|
-m | ホームディレクトリを作成する(指定しないと作成されない) |
-s | ログインシェルを指定する(指定しないと /bin/sh になる) |
-c | コメント欄(氏名など)を指定する |
-G | 追加する補助グループを指定する(sudo を指定すれば作成と同時に sudo 権限が付く) |
| [NAME] | 作成するユーザー名を指定 |
パスワードは useradd では設定されないため、passwd で設定するか、chpasswd に ユーザー名:パスワード を渡して1行で設定します。
echo '[NAME]:[PASSWORD]' | sudo chpasswdkazulog@sv1:~$ sudo useradd -m -s /bin/bash -c 'Hanako Suzuki' -G sudo hanako
kazulog@sv1:~$ id hanako
uid=1001(hanako) gid=1001(hanako) groups=1001(hanako),27(sudo)
kazulog@sv1:~$ getent passwd hanako
hanako:x:1001:1001:Hanako Suzuki:/home/hanako:/bin/bash
kazulog@sv1:~$ ls -ld /home/hanako
drwxr-x--- 2 hanako hanako 4096 Sep 10 13:57 /home/hanako
kazulog@sv1:~$ sudo passwd -S hanako
hanako L 2026-09-10 0 99999 7 -1
kazulog@sv1:~$ echo 'hanako:hanako-pass-2026' | sudo chpasswd
kazulog@sv1:~$ sudo passwd -S hanako
hanako P 2026-09-10 0 99999 7 -1
kazulog@sv1:~$ su - hanako
Password:
hanako@sv1:~$ id
uid=1001(hanako) gid=1001(hanako) groups=1001(hanako),27(sudo)
hanako@sv1:~$ sudo whoami
[sudo: authenticate] Password: ****************
root
hanako@sv1:~$ exit
logoutuseradd はパスワードを設定するまで、passwd -S の2列目が L(ロック)のままでログインできません。上記の実行例では chpasswd でパスワードを設定した後に P へ変わっています。
なお、オプションを付けずに sudo useradd [NAME] とだけ実行すると、ホームディレクトリが作られず、ログインシェルも /bin/sh になります。-m と -s は忘れずに指定してください。
kazulog@sv1:~$ sudo useradd jiro
kazulog@sv1:~$ getent passwd jiro
jiro:x:1001:1001::/home/jiro:/bin/sh
kazulog@sv1:~$ sudo passwd -S jiro
jiro L 2026-09-10 0 99999 7 -1
kazulog@sv1:~$ ls -ld /home/jiro
ls: cannot access '/home/jiro': No such file or directory
kazulog@sv1:~$useradd で作成したユーザーを削除する場合は userdel -r を使います(-r でホームディレクトリも削除。deluser --remove-home と同じ動作です)。
kazulog@sv1:~$ sudo userdel -r hanako
userdel: hanako mail spool (/var/mail/hanako) not found
kazulog@sv1:~$ id hanako
id: 'hanako': no such user
kazulog@sv1:~$ ls -ld /home/hanako
ls: cannot access '/home/hanako': No such file or directorysudo 権限の付与方法(sudo グループへの追加)
作成したユーザーに管理コマンドの実行を許可するには、sudo グループに追加します。
sudo usermod -aG sudo [NAME]| 入力箇所 | 入力内容 |
|---|---|
| [NAME] | sudo 権限を付与するユーザー名を指定 |
-a(append)オプションを付け忘れると、指定した sudo グループ以外の補助グループ(adm や users など。プライマリグループは残ります)がすべて外れてしまいます。必ず -aG の形で実行してください。kazulog@sv1:~$ sudo usermod -aG sudo taro
kazulog@sv1:~$ id taro
uid=1001(taro) gid=1001(taro) groups=1001(taro),27(sudo),100(users)
kazulog@sv1:~$グループの追加は次回ログインから有効になります。su - [NAME] で新しくログインし、sudo -l と sudo whoami で sudo が使えることを確認します。
kazulog@sv1:~$ su - taro
Password:
taro@sv1:~$ id
uid=1001(taro) gid=1001(taro) groups=1001(taro),27(sudo),100(users)
taro@sv1:~$ sudo -l
[sudo: authenticate] Password: **************
User taro may run the following commands on sv1:
(ALL : ALL) ALL
taro@sv1:~$ sudo whoami
root
taro@sv1:~$ exit
logout
kazulog@sv1:~$sudo whoami の結果が root になっていれば、sudo 権限が正しく付与されています。なお、sudo -l で一度認証すると一定時間はパスワードを聞かれないため、続く sudo whoami ではプロンプトが出ていません。
sudo 権限の削除方法(sudo グループからの削除)
sudo gpasswd -d [NAME] sudo| 入力箇所 | 入力内容 |
|---|---|
| [NAME] | sudo 権限を削除するユーザー名を指定 |
kazulog@sv1:~$ sudo gpasswd -d taro sudo
Removing user taro from group sudo
kazulog@sv1:~$ id taro
uid=1001(taro) gid=1001(taro) groups=1001(taro),100(users)
kazulog@sv1:~$ su - taro
Password:
taro@sv1:~$ sudo whoami
sudo: I'm sorry taro. I'm afraid I can't do that
taro@sv1:~$ exit
logout
kazulog@sv1:~$上記は taro から sudo 権限を削除した実行例です。削除後に sudo を実行すると、パスワードを聞かれることなく sudo: I'm sorry taro. I'm afraid I can't do that と表示されて拒否されます(従来の sudo では taro is not in the sudoers file というメッセージでした)。
パスワード入力なしで sudo を実行する設定方法
自動化スクリプトなどで、パスワードの入力なしに sudo を実行したい場合は、/etc/sudoers.d/ 配下に設定ファイルを追加します。/etc/sudoers 本体は編集せず、visudo コマンドで構文チェックしながら作成します。
sudo visudo -f /etc/sudoers.d/[NAME]| 入力箇所 | 入力内容 |
|---|---|
| [NAME] | 設定対象のユーザー名(ファイル名は任意。ただし . を含む名前と ~ で終わる名前のファイルは読み込まれない) |
エディタ(既定では nano)が開くので、次の1行を記述して保存します。
[NAME] ALL=(ALL) NOPASSWD:ALLエディタを使わずに1行だけ書き込む場合は、次のように標準入力から visudo に渡すこともできます。以下の実行例はこの方法でファイルを作成しています。
echo 'taro ALL=(ALL) NOPASSWD:ALL' | sudo EDITOR=tee visudo -f /etc/sudoers.d/taro設定ファイルの構文は visudo -c で確認できます。/etc/sudoers.d/ 配下のファイルも検査対象で、誤りがあるとファイル名と行番号付きでエラーが表示されます。
kazulog@sv1:~$ sudo visudo -c
/etc/sudoers: parsed OK
kazulog@sv1:~$ sudo ls -l /etc/sudoers.d/
total 12
-r--r----- 1 root root 141 Sep 10 13:30 90-cloud-init-users
-r--r----- 1 root root 863 Jan 15 2026 README
-rw-r----- 1 root root 28 Sep 10 13:31 taro
kazulog@sv1:~$ sudo cat /etc/sudoers.d/taro
taro ALL=(ALL) NOPASSWD:ALL
kazulog@sv1:~$kazulog@sv1:~$ su - taro
Password:
taro@sv1:~$ sudo -l
User taro may run the following commands on sv1:
(ALL) NOPASSWD: ALL
taro@sv1:~$ sudo whoami
root
taro@sv1:~$ exit
logout
kazulog@sv1:~$NOPASSWD:ALL はすべてのコマンドをパスワードなしで許可する設定です。特定のコマンドだけを許可する場合は、ALL の代わりにコマンドを絶対パスで列挙します(例: taro ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart nginx)。パスワードの変更方法(passwd コマンド)
自分のパスワードは passwd、他のユーザーのパスワードは sudo passwd [NAME] で変更します。以下の実行例では、変更後に su - taro で新しいパスワードを使ってログインできることを確認しています。
sudo passwd [NAME]| 入力箇所 | 入力内容 |
|---|---|
| [NAME] | パスワードを変更するユーザー名を指定(省略時は自分自身) |
kazulog@sv1:~$ sudo passwd taro
New password:
Retype new password:
passwd: password updated successfully
kazulog@sv1:~$ su - taro
Password:
taro@sv1:~$ whoami
taro
taro@sv1:~$ exit
logout
kazulog@sv1:~$ユーザーの削除方法(deluser コマンド)
sudo deluser --remove-home [NAME]| 入力箇所 | 入力内容 |
|---|---|
| [NAME] | 削除するユーザー名を指定 |
--remove-home を付けるとホームディレクトリも削除されます。付けない場合、ユーザーは削除されますがホームディレクトリは残ります。deluser は正常に完了しても何も表示しません。
/etc/sudoers.d/ に作成した設定ファイルは deluser では削除されないため、先に rm で削除しておきます。
kazulog@sv1:~$ sudo rm /etc/sudoers.d/taro
kazulog@sv1:~$ sudo visudo -c
/etc/sudoers: parsed OK
kazulog@sv1:~$ sudo deluser --remove-home taro
kazulog@sv1:~$ id taro
id: 'taro': no such user
kazulog@sv1:~$ ls -ld /home/taro
ls: cannot access '/home/taro': No such file or directory
kazulog@sv1:~$root ユーザーについて
Ubuntu の root アカウントは存在しますが、インストール時にパスワードが設定されず、/etc/shadow のパスワード欄にはどの値にも一致しない * が入っています。そのため、既定では root のパスワードで直接ログイン(コンソールのログイン、su -)することができません。passwd -S root の2列目が L(ロック)になっているのがこの状態です。
kazulog@sv1:~$ sudo passwd -S root
root L 2026-08-23 0 99999 7 -1
kazulog@sv1:~$ sudo grep '^root:' /etc/shadow
root:*:20688:0:99999:7:::
kazulog@sv1:~$ su -
Password:
su: Authentication failure
kazulog@sv1:~$root の権限で作業する場合は、sudo で root のシェルを起動します。
sudo -i| コマンド | 動作 |
|---|---|
sudo -i | root のログインシェルを起動する(カレントディレクトリは /root に移る) |
sudo -s | カレントディレクトリを引き継いだまま root のシェルを起動する(ログイン処理は行わない。ホームディレクトリは /root になる) |
kazulog@sv1:~$ cd /tmp
kazulog@sv1:/tmp$ sudo -s
root@sv1:/tmp# whoami
root
root@sv1:/tmp# pwd
/tmp
root@sv1:/tmp# echo $HOME
/root
root@sv1:/tmp# exit
exit
kazulog@sv1:/tmp$ sudo -i
root@sv1:~# whoami
root
root@sv1:~# pwd
/root
root@sv1:~# echo $HOME
/root
root@sv1:~# exit
logout
kazulog@sv1:/tmp$root で直接ログインできるようにしたい場合は、sudo passwd root で root にパスワードを設定します。設定後は passwd -S が P になり、コンソールや su - から root でログインできます。
sudo passwd rootkazulog@sv1:~$ sudo passwd root
New password:
Retype new password:
passwd: password updated successfully
kazulog@sv1:~$ sudo passwd -S root
root P 2026-09-10 0 99999 7 -1
kazulog@sv1:~$ su -
Password:
root@sv1:~# whoami
root
root@sv1:~# exit
logout
kazulog@sv1:~$sudo で作業してください。なお、root のパスワードを設定しても SSH で root にログインできるとは限りません。SSH 側の設定はUbuntu 26.04 LTS Server の SSH サーバー設定で解説しています。元の状態に戻す(root のパスワードをロックする)には sudo passwd -l root を実行します。
sudo passwd -l rootkazulog@sv1:~$ sudo passwd -l root
passwd: password changed.
kazulog@sv1:~$ sudo passwd -S root
root L 2026-09-10 0 99999 7 -1
kazulog@sv1:~$ sudo grep '^root:' /etc/shadow
root:!$y$j9T$ZwiZAHFi9TMLave282yGC.$h.9O6DniClLZm3k/ot2dm8kKDhq6EbgbuhIIWiTUBvA:20706:0:99999:7:::
kazulog@sv1:~$ su -
Password:
su: Authentication failure
kazulog@sv1:~$passwd -l はハッシュの先頭に ! を付けてロックするため、/etc/shadow にはパスワードのハッシュが残ります。インストール直後と同じ * に戻したい場合は sudo usermod -p '*' root を実行します。
検証環境と実行ログ
本記事の実行例は、CML 上の Ubuntu 26.04 LTS Server(cloud image、cloud-init で初期ユーザー kazulog を作成)で採取したものです。各手順の実行ログ(プロンプトから最後の出力行まで)を以下からダウンロードできます。
| STEP | 操作 | 実行ログ |
|---|---|---|
| 0 | 初期状態の確認 | log |
| 1 | ユーザーの作成(adduser) | log |
| 11 | 1行でのユーザー作成(useradd + chpasswd)と削除(userdel -r) | log |
| 11 | オプションなしの useradd の既定 | log |
| 2 | sudo 権限の付与(usermod -aG sudo) | log |
| 3 | sudo 権限の削除(gpasswd -d) | log |
| 4 | パスワード入力なしの sudo(/etc/sudoers.d/) | log |
| 5 | パスワードの変更(passwd) | log |
| 6 | ユーザーの削除(deluser --remove-home) | log |
| 7 | root のパスワード状態の確認と sudo -i | log |
| 8 | sudo -s / sudo -i の違い、root のパスワード設定と su - | log |
| 9 | root のパスワードのロック(passwd -l) | log |
| 10 | login コマンドで root ログイン、パスワード欄を * に戻す | log |
参考リンク
Ubuntu Server documentation: User management
関連記事
- ホスト名の変更 Ubuntu 26.04 LTS Server
- Ubuntu 26.04 LTS Server システム最適化 apt update/upgrade
- タイムゾーンの日本時間(JST)への変更 Ubuntu 26.04 LTS Server
- Ubuntu 26.04 LTS Server のユーザー作成と sudo 権限の設定
- Ubuntu 26.04 LTS Server の SSH サーバー設定(公開鍵認証)
- Ubuntu 26.04 LTS Server のサービス管理(systemctl)とログ確認(journalctl)
- Ubuntu 26.04 LTS Server の自動更新設定(unattended-upgrades)
- neovim 公式サイトから最新バージョンをインストールする手順 Ubuntu 26.04 LTS Server
- Ubuntu 26.04 LTS Server ネットワークの設定