Linuxを使っていると「sudoって何?」「rootユーザーとどう違うの?」という疑問にぶつかります。この記事ではsudoとrootの違いを徹底解説し、安全な使い方・設定方法まで丁寧に解説します。
rootユーザーとは?
rootはLinuxシステムの最高権限を持つ管理者ユーザーです。UID(ユーザーID)が0で、システム上のすべての操作が許可されています。ファイルの読み書き・プロセスの強制終了・システム設定の変更など、一般ユーザーでは拒否される操作もすべて実行できます。
その反面、rootで操作を誤ると取り返しのつかないダメージを与える可能性があります。たとえばrm -rf /を実行するとシステム全体のファイルが削除されます。
sudoとは?
sudo(Superuser Do)は一時的にroot権限でコマンドを実行するためのコマンドです。sudoを使うと、一般ユーザーのままでも特定のコマンドだけroot権限で実行できます。
| 比較項目 | root直接ログイン | sudo使用 |
|---|---|---|
| 権限の範囲 | 全操作が常にroot権限 | 必要なコマンドのみroot権限 |
| 安全性 | 低い(誤操作リスク大) | 高い(一時的な権限昇格) |
| ログ記録 | 基本なし | sudoの実行をログに記録 |
| パスワード | rootのパスワード | 自分のパスワード |
| Ubuntu標準 | rootログイン無効 | sudoを推奨 |
sudoの基本的な使い方
# コマンドの前にsudoを付けるだけ
sudo apt update
# ファイルを管理者権限で編集
sudo nano /etc/hosts
# 管理者権限でファイルをコピー
sudo cp myfile.conf /etc/myapp/
# sudoで実行したコマンドのパスワード入力を一定時間スキップ
# (デフォルト15分間は再入力不要)
# sudo権限のまま別のシェルを開く(注意して使うこと)
sudo -s
# 別のユーザーとしてコマンドを実行
sudo -u www-data ls /var/www/html
su コマンドとの違い
suコマンドはユーザーを切り替えるコマンドです。sudoとの違いを整理します。
# rootに切り替える(rootのパスワードが必要)
su -
# 別ユーザーに切り替える
su - username
# sudoでrootシェルを起動(自分のパスワードでOK)
sudo su -
# sudo -i でもrootシェルを起動できる
sudo -i
sudoの設定(/etc/sudoers)
どのユーザーがsudoを使えるかは/etc/sudoersファイルで管理されています。このファイルは必ずvisudoコマンドで編集してください。通常のエディタで編集すると構文エラーでsudoが使えなくなるリスクがあります。
# sudoersファイルを安全に編集
visudo
# sudoersの主な設定例
# ユーザーを全コマンドのsudoを許可
username ALL=(ALL:ALL) ALL
# パスワードなしでsudoを許可(セキュリティリスクあり)
username ALL=(ALL) NOPASSWD: ALL
# 特定コマンドのみ許可
username ALL=(ALL) /usr/bin/apt, /usr/sbin/service
# グループ単位で設定(%はグループを示す)
%sudo ALL=(ALL:ALL) ALL
%wheel ALL=(ALL:ALL) ALL
ユーザーをsudoグループに追加する
# Ubuntu/Debian系(sudoグループ)
sudo usermod -aG sudo username
# CentOS/RHEL系(wheelグループ)
sudo usermod -aG wheel username
# グループへの追加を即時反映(再ログインが必要な場合も)
groups username
# sudoが使えるか確認
sudo whoami # rootと表示されればOK
sudoのログを確認する
sudoの実行履歴はシステムログに記録されます。誰がいつどのコマンドをsudoで実行したか追跡できます。
# Ubuntu/Debianでsudoのログを確認
grep sudo /var/log/auth.log
# CentOS/RHELでsudoのログを確認
grep sudo /var/log/secure
# journaldを使う場合
journalctl | grep sudo
安全なsudo運用のベストプラクティス
- root直接ログインは無効にする(Ubuntuはデフォルトで無効)
NOPASSWD設定は必要最小限にする- sudoは必要なコマンドのみ実行する(不用意に
sudo -sしない) - 定期的にsudoのログを確認して不審な操作がないか確認する
- sudoグループには必要な人だけ追加する
まとめ
- rootはシステムの最高権限ユーザー・sudoは一時的にroot権限を借りるコマンド
- rootに直接ログインするよりsudoを使う方が安全
- sudoの設定は
visudoでのみ編集すること - ユーザーの追加は
usermod -aG sudoで行う - sudoのログを定期的に確認してセキュリティを維持する



コメント