①Linux入門

sudoとrootの違い・安全な使い方

①Linux入門
記事内に広告が含まれています。

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のログを定期的に確認してセキュリティを維持する

コメント

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