Ubuntu で管理者権限が必要なコマンドを実行するとき、ほぼ必ず登場するのが sudo です。結論から言うと、sudo コマンド名 を前に付けるだけで root 権限でそのコマンドを実行できます。ただし、使えるユーザーが誰で、何ができるかは /etc/sudoers の設定次第です。
この記事では、Ubuntu 24.04 LTS の Docker 公式イメージで実際に sudo を動かし、基本的な使い方から /etc/sudoers の構造、NOPASSWD 設定、よくあるエラーまでを実出力つきでまとめました。VPS を借りてサーバーを運用したい方にも役立てる内容です。
この記事のポイント
- Ubuntu 24.04 の sudo バージョンは
1.9.15p5(Ubuntu 22.04 は1.9.9)— 2026-06-13 実測 sudo コマンドで root 権限実行。sudo -lで自分が使える権限を一覧表示できる- sudo グループへの追加は
usermod -aG sudo ユーザー名。-a を忘れると既存グループが消える - 設定変更は必ず
visudoで行う。直接編集して構文ミスがあるとシステムにログインできなくなる - NOPASSWD 設定は
/etc/sudoers.d/以下に個別ファイルで書くのが安全
目次
- sudo とは何か
- 基本的な使い方
- sudo -l で権限を確認する
- ユーザーを sudo グループに追加する
- /etc/sudoers の構造を理解する
- NOPASSWD — パスワードなしで sudo を使う
- Ubuntu 22.04 と 24.04 の違い
- よくあるエラーと解決策
- まとめ
前提環境
本記事のコマンドはすべて以下の環境で実行確認しています。
- OS:Ubuntu 24.04.4 LTS(Noble Numbat)— Docker 公式イメージ
ubuntu:24.04で実行 - sudo バージョン:1.9.15p5-3ubuntu5.24.04.2(
dpkg -s sudoで確認) - 比較環境:Ubuntu 22.04 LTS(
ubuntu:22.04)— sudo 1.9.9-1ubuntu2.6
注意
本記事のコマンドは Ubuntu 24.04 LTS で検証しています。Ubuntu の最小 Docker イメージには sudo が含まれていない場合があります。その際は apt-get install sudo でインストールしてください。VPS(Vultr・DigitalOcean など)の公式 Ubuntu イメージでは最初から sudo が入っており、作成したユーザーは自動的に sudo グループに追加されています。
sudo とは何か
sudo(Superuser Do)は、一般ユーザーが一時的に root(管理者)権限でコマンドを実行するための仕組みです。Ubuntu では、root アカウントに直接ログインするより sudo を使う設計になっています。
理由は2つあります。1つ目は操作ログが残ること(誰がいつ何を root で実行したか /var/log/auth.log に記録される)、2つ目は誤操作リスクを下げられること(普段は一般ユーザーとして作業し、必要なときだけ sudo をつける習慣が自然とできる)です。
①sudo と su の違い
su(Switch User)は別ユーザーのシェルに切り替えるコマンドです。sudo と混同しがちですが、目的が違います。
$ sudo -i # root のログインシェルを起動(.bash_profile 読み込み)
$ sudo -s # root シェルを起動(現在の環境変数を引き継ぐ)
$ su – username # username のシェルに切り替え(要 username のパスワード)
$ sudo su – # root シェルを起動(自分の sudo パスワードで認証)
VPS 運用では sudo コマンド 形式が基本で、root シェルに入りっぱなしにする習慣は避けましょう。
基本的な使い方
sudo の最も基本的な使い方は、コマンドの前に sudo をつけるだけです。Ubuntu 24.04 の実行結果を見てみましょう。

root
$ sudo id
uid=0(root) gid=0(root) groups=0(root)
$ sudo –version
Sudo version 1.9.15p5
Sudoers policy plugin version 1.9.15p5
$ sudo apt-get update
Hit:1 http://jp.archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
sudo whoami が root を返せば、sudo が正常に動いています。実際に Ubuntu 24.04 の Docker コンテナで確認すると Sudo version 1.9.15p5 と表示されました(2026-06-13 実測)。

②よく使う sudo オプション一覧
$ sudo -v # タイムスタンプを更新(パスワードが聞かれる)
$ sudo -k # タイムスタンプを無効化(次回は必ずパスワード要求)
$ sudo -u username コマンド # username ユーザーとして実行
$ sudo -u www-data ls /var/www # www-data ユーザーとしてディレクトリを確認
$ sudo -i # root のログインシェルを起動
$ sudo -s # root シェルを起動(環境変数を引き継ぐ)
正直、sudo -k は知らない人が多いですが、パスワードを聞かれる状態に戻したいときに便利です。たとえば「ここからは一般ユーザーの権限範囲で作業する」という区切りを明示したいときに使います。
sudo -l で権限を確認する
sudo -l は自分(または指定ユーザー)がどのコマンドを sudo で実行できるか確認するコマンドです。VPS を新しく契約したときや、権限設定を変えたあとの確認に必ず使います。

Matching Defaults entries for ubuntu on hostname:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin,
use_pty
User ubuntu may run the following commands on hostname:
(ALL : ALL) ALL
(ALL : ALL) ALL は「どのホストでも、どのユーザー/グループとしても、すべてのコマンドを実行できる」という意味です。Vultr や DigitalOcean など多くの VPS では、初期ユーザーに最初からこの権限が付与されています。
①sudo -l の出力の読み方
出力の (実行ユーザー:実行グループ) コマンド という書式を覚えておくと、sudoers の設定ファイルを読むのが楽になります。
(ALL : ALL) ALL→ どのユーザー・グループとしても、すべてのコマンドを実行可(ALL) NOPASSWD: ALL→ パスワードなしで全コマンド実行可(ALL) /usr/bin/apt, /sbin/reboot→ apt と reboot のみ実行可
ユーザーを sudo グループに追加する
新しく作ったユーザーに sudo 権限を与えるには、sudo グループへの追加が基本です。Ubuntu 24.04 で実際に操作した結果を見てみます。
手順1:ユーザーを作成する
$ echo ‘deployer:strongpassword123’ | chpasswd
$ id deployer
uid=1001(deployer) gid=1001(deployer) groups=1001(deployer)
手順2:sudo グループに追加する
$ id deployer
uid=1001(deployer) gid=1001(deployer) groups=1001(deployer),27(sudo)
$ getent group sudo
sudo:x:27:ubuntu,deployer
Ubuntu 24.04 の Docker コンテナで実測した結果、usermod -aG sudo deployer 後に id deployer を実行すると groups=1001(deployer),27(sudo) と表示され、正常に sudo グループへの追加が確認できました。
-a を忘れると既存グループが消える!
usermod -G sudo deployer(-a なし)と実行すると、deployer が今まで入っていたグループから全て外れ、sudo グループだけになります。必ず -aG(append + Group)で実行してください。変更を反映させるには、そのユーザーで一度ログアウト → 再ログインが必要です。
/etc/sudoers の構造を理解する
/etc/sudoers は sudo の動作を定義するメインの設定ファイルです。直接 vi や nano で編集してはいけません。構文ミスがあるとシステム全体で sudo が使えなくなります。必ず visudo コマンドを使います。

Ubuntu 24.04 の /etc/sudoers デフォルト内容を実際に確認しました:
# このファイルは必ず visudo で編集すること
Defaults env_reset
Defaults mail_badpass
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin”
Defaults use_pty
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
@includedir /etc/sudoers.d
①sudoers の書式を理解する
%sudo ALL=(ALL:ALL) ALL の各フィールドを分解するとこうなります。
| フィールド | 値 | 意味 |
|---|---|---|
%sudo |
sudo グループ全員 | % をつけるとグループを指定。個人ユーザーは username そのまま |
ALL=(最初の ALL) |
すべてのホスト | 複数台のホストで共有する sudoers 用。単一サーバーなら実質意味なし |
(ALL:ALL) |
任意のユーザー:グループ | sudo -u www-data などで実行ユーザーを切り替えられる |
最後の ALL |
すべてのコマンド | /usr/bin/apt のようにコマンドを制限できる |
②/etc/sudoers.d/ を使う(推奨)
/etc/sudoers 本体を直接編集するよりも、/etc/sudoers.d/ ディレクトリ以下にユーザーごとの設定ファイルを置く方法が推奨されています。
total 16
drwxr-xr-x 2 root root 4096 Jun 13 10:56 .
drwxr-xr-x 1 root root 4096 Jun 13 10:56 ..
-r–r—– 1 root root 1068 Jan 29 2024 README
# 新しい設定ファイルはここに追加する
$ sudo visudo -f /etc/sudoers.d/myconfig
sudoers.d 以下のファイルは ~ で終わるファイルや . を含むファイルは無視されます。必ず visudo -f /etc/sudoers.d/ファイル名 で編集し、構文チェックを通してから保存してください。
③visudo -c で構文チェック
変更後の構文確認は visudo -c が便利です。Ubuntu 24.04 の Docker コンテナで確認した実際の出力です。
/etc/sudoers: parsed OK
/etc/sudoers.d/README: parsed OK
「parsed OK」が全ファイルで出力されれば構文は正常です。
NOPASSWD — パスワードなしで sudo を使う
CI/CD パイプラインや自動化スクリプトで sudo を使いたいとき、パスワード入力を求められると処理が止まります。そんなときに使うのが NOPASSWD オプションです。
VPS でデプロイ用のユーザーを作り、パスワードなしで特定コマンドだけ実行できるようにする設定を実際に Ubuntu 24.04 で確認しました。


手順1:sudoers.d に設定ファイルを作る
$ useradd -m -s /bin/bash deployer && usermod -aG sudo deployer
$ id deployer
uid=1001(deployer) gid=1001(deployer) groups=1001(deployer),27(sudo)
# NOPASSWD 設定ファイルを作成
$ echo ‘deployer ALL=(ALL) NOPASSWD:ALL’ > /etc/sudoers.d/deployer
$ chmod 440 /etc/sudoers.d/deployer
$ visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/README: parsed OK
/etc/sudoers.d/deployer: parsed OK
手順2:動作確認
User deployer may run the following commands on 8bdecd527987:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
$ su -c ‘sudo whoami’ deployer
root
# パスワードなしで root として実行できた
Ubuntu 24.04 の Docker コンテナで実際に検証し、(ALL) NOPASSWD: ALL が sudo -l に表示され、パスワードなしで sudo whoami が root を返すことを確認しました(2026-06-13 実測)。
③NOPASSWD の書き方バリエーション
| 書き方 | 意味 | 用途 |
|---|---|---|
username ALL=(ALL) NOPASSWD:ALL |
全コマンド・パスワード不要 | CI/CD・デプロイ自動化 |
username ALL=(ALL) NOPASSWD:/usr/bin/apt |
apt のみパスワード不要 | apt 自動更新スクリプト |
username ALL=(ALL) NOPASSWD:/sbin/reboot,/sbin/shutdown |
再起動・シャットダウンのみ不要 | 監視スクリプトからの自動再起動 |
%deploy ALL=(ALL) NOPASSWD:ALL |
deploy グループ全員にNOPASSWD | 複数デプロイユーザーへの一括設定 |
NOPASSWD:ALL の使用は最小限に
NOPASSWD:ALL はパスワードなしで全コマンドを root で実行できます。セキュリティ上の影響が大きいため、本番 VPS の管理ユーザーには設定しないことをおすすめします。CI/CD 専用ユーザーや自動化スクリプト専用ユーザーなど、用途が限られたアカウントのみに使用してください。不要になったら rm /etc/sudoers.d/deployer で削除します。
Ubuntu 22.04 と 24.04 の違い
実際に Docker コンテナで Ubuntu 22.04 と 24.04 の両方を動かし、sudo のバージョンと挙動の差を確認しました。

| 項目 | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
|---|---|---|
| sudo バージョン | 1.9.9-1ubuntu2.6 | 1.9.15p5-3ubuntu5.24.04.2 |
use_pty デフォルト |
無効 | 有効(CVE-2005-4890 対策) |
| @includedir 構文 | サポート(#includedir も可) | サポート(#includedir も可) |
| PAM 認証 | あり | あり |
最も注目すべき変更は use_pty です。Ubuntu 24.04 からデフォルトで有効になりました。これは sudo が実行するコマンドに疑似端末(pty)を強制割り当てするセキュリティ設定で、tty からの入出力を分離することで特定の攻撃手法を防ぎます。
Docker コンテナ内で sudo を使ったとき、一部のスクリプトで sudo: a terminal is required エラーが出る場合は、この use_pty が原因です。その場合は Defaults !use_pty を sudoers に追加するか、sudo -S コマンド(stdin からパスワードを読む)を試してください。
よくあるエラーと解決策
①「username is not in the sudoers file. This incident will be reported.」
最も多いエラーです。ユーザーが sudo グループに入っていないか、sudoers に設定がないことが原因です。
# 解決策:root または sudo 権限のあるユーザーで以下を実行
$ usermod -aG sudo deployer
# 変更を反映するには一度ログアウト → 再ログイン
②「sudo: a terminal is required to read the password」
スクリプト内で sudo を使うと発生します。パスワード入力に端末が必要なのに、パイプ等で実行されているときに起こります。
# 解決策1: -S でパスワードを stdin から読む
$ echo “password” | sudo -S apt-get update
# 解決策2: NOPASSWD を設定する(推奨・セキュア)
$ sudo visudo -f /etc/sudoers.d/username
username ALL=(ALL) NOPASSWD:/usr/bin/apt-get
③「visudo: /etc/sudoers is busy, try again later」
別のユーザーや端末で visudo が起動中です。そちらを終了してから再試行してください。
④変更後も sudo が使えない(グループが反映されない)
sudo グループへの追加後、id コマンドでグループが反映されていないことがあります。
uid=1001(ubuntu) gid=1001(ubuntu) groups=1001(ubuntu)
# まだ sudo グループが入っていない → 再ログインが必要
$ exit
# SSH で再接続後
$ id
uid=1001(ubuntu) gid=1001(ubuntu) groups=1001(ubuntu),27(sudo)
newgrp sudo コマンドを使えばログアウトせずに新しいグループを有効にできます(ただし新しいシェルが起動します)。
まとめ
Ubuntu の sudo について、Ubuntu 24.04 の Docker 公式イメージで実際に動かした結果をまとめました。
sudo コマンドで root 権限実行。sudo -lで使える権限を一覧確認できる- sudo グループへの追加は
usermod -aG sudo ユーザー名(-a 必須)。変更後は再ログインが必要 - sudoers の編集は必ず
visudoで行う。変更後はvisudo -cで構文確認 - 個別設定は
/etc/sudoers.d/以下に書くのが安全でメンテナンスしやすい - Ubuntu 24.04 では
use_ptyがデフォルト有効。sudo バージョンは 1.9.15p5 - NOPASSWD は CI/CD・デプロイ自動化に便利だが、本番管理ユーザーには慎重に
sudo の設定を理解すると、VPS での複数ユーザー管理やデプロイ自動化がぐっとやりやすくなります。VPS を借りてサーバー運用を始めたい方は、まず SSH 鍵認証の設定と合わせて sudo の権限設計を考えることをおすすめします。
VPS を借りて本格的にサーバーを運用するなら
- Vultr・DigitalOcean などの VPS では、初期セットアップ時から sudo 設定済みのユーザーが作成される
- 自分のサーバーで sudo・SSH・ファイアウォールを組み合わせた安全な運用環境を構築できる
- 月額 $5〜 から始められる。まずは小さいプランで試すのがおすすめ
本格的にサーバーを運用したい方は、VPS の比較記事も参考にしてみてください。
Ubuntu で使う VPS おすすめ比較【速度・料金・東京リージョン】


コメント