なぜ sudo と su は混乱されやすいのか
Rocky Linux をインストールして最初に戸惑うのが、「管理者権限で作業するにはどうすればいいのか」という問題です。調べてみると「sudo を使え」という記事もあれば、「su – でroot になれ」という説明もある。さらに「sudo su -」なんてコマンドまで出てきて、頭が混乱してしまう――これは初学者が必ず通る道です。
混乱の原因は、どちらも「結果的に管理者権限で作業できる」という点では同じに見えるからです。
しかし内部で起きていることは全く違います。sudoは「一時的に権限だけを借りる仕組み」であり、suは「別のユーザーに完全に成り代わる仕組み」です。この根本的な違いを理解しないまま使っていると、思わぬトラブルや混乱を招きます。
重要なのは「どちらが便利か」ではなく、「それぞれが何をしているのか」を正しく理解することです。この理解があれば、状況に応じて適切に使い分けられるようになります。
Linux における「権限」と「ユーザー」の考え方
Linux の権限管理を理解するには、まず「root権限」と「rootユーザー」を分けて考える必要があります。
root権限とは、システムの設定変更やパッケージインストールなど、管理作業を行うための「特権」そのものです。
一方、rootユーザーとは、UID 0 という特別な識別番号を持つ「ユーザーアカウント」です。このrootユーザーとしてログインしている状態では、あらゆる操作が無制限に許可されます。
ここで理解すべきは、Linux は常に「誰がその操作を実行したか」を記録しているという点です。これはセキュリティと監査の基本です。もし複数の管理者が全員rootユーザーとしてログインして作業していたら、誰が何をしたのか区別がつきません。設定ミスが起きたとき、誰の操作が原因なのか追跡できなくなります。
だからこそ、現代のLinux運用では「各自が自分のアカウントでログインし、必要な時だけroot権限を使う」という考え方が主流になっています。この思想を実現するのがsudoであり、古典的なユーザー切替の仕組みがsuなのです。
sudo は何をしているコマンドなのか
sudo という名前は “superuser do” の略です。直訳すれば「特権ユーザーとして実行する」という意味ですが、実際の動作はもう少し複雑です。
sudo systemctl restart httpdこのコマンドを実行すると、内部では次のようなことが起きています。
- あなた自身のパスワードを要求される(rootのパスワードではない)
/etc/sudoersファイルであなたに権限が与えられているか確認される- 確認が取れたら、そのコマンド「だけ」をroot権限で実行する
- コマンドが終わったら、通常のユーザー権限に戻る
- ログに「誰が・いつ・何を実行したか」が記録される
この一連の流れで最も重要なのは、「あなたは自分のユーザーのままである」という点です。
sudoは権限だけを一時的に借りる仕組みであり、ユーザーそのものを切り替えているわけではありません。
「なぜ自分のパスワードを入力するのか?」という疑問を持つ初学者は多いのですが、これはあなた本人が操作していることを確認するためです。rootのパスワードを要求してしまうと、結局rootパスワードを複数人で共有することになり、「誰が実行したか」という記録の意味が失われます。
さらにsudoには「15分間は再入力不要」というタイマー機能があります。連続して複数のコマンドを実行する際、毎回パスワードを入力する手間を省くための配慮です。ただしこれは諸刃の剣で、席を離れた隙に他人に操作されるリスクもあります。
su は何を切り替えているのか
一方、suは “switch user” の略で、文字通りユーザーそのものを切り替えるコマンドです。
su -このコマンドを実行すると・・・
- rootユーザーのパスワードを要求される
- 認証が通ると、あなたはrootユーザーに完全に切り替わる
- プロンプトが
#に変わり、以降のすべての操作がrootとして実行される exitコマンドで明示的に抜けるまで、rootのまま
ここでのポイントは、あなたはもうあなたではなく、rootになっているということです。環境変数、ホームディレクトリ、実行権限、すべてがrootのものに切り替わります。
su と su - の違いも重要です。su だけだと、rootになってもカレントディレクトリや一部の環境変数が元のユーザーのまま残ります。
一方、su - はログインシェルとして起動するため、完全にrootとしてログインし直したのと同じ状態になります。実務では su - を使うのが基本です。
ここで問題になるのが、rootパスワードの管理です。suを使う運用では、管理者全員がrootパスワードを知っている必要があります。誰かが退職したらrootパスワードを変更し、全員に通知しなければなりません。また、ログには「誰かがsuを使った」という記録は残りますが、その後の操作は全部「rootがやった」としか記録されません。
sudo su / sudo -i の正体
初心者が最も混乱するのが、sudo su - や sudo -i といったコマンドです。「sudoとsuを一緒に使うってどういうこと?」と思うのは当然です。
これは「sudoの権限を使って、suコマンドを実行する」という意味です。つまり・・
sudo su -- sudo により、一時的にroot権限を得る
- その権限でsuコマンドを実行し、rootユーザーに切り替わる
- 結果として、rootパスワードを知らなくてもrootになれる
この方法は、「sudoの監査機能を維持しながら、root環境で連続作業したい」というニーズに応えるものです。
ただし、いったんroot環境に入ってしまえば、その後の操作は個人の識別ができなくなります。
sudo -isudo -i はこれを一発で実現するコマンドです。内部的にはrootのログインシェルを起動しており、sudo su - とほぼ同じ結果になります。環境変数やカレントディレクトリがrootのホームディレクトリに完全に切り替わります。
一方、sudo -s はrootのシェルを起動しますが、環境変数は元のユーザーのものを一部引き継ぎます。この微妙な違いが、初心者にとっては混乱の元です。
実務では、短時間の単発作業ならsudo、連続した管理作業なら sudo -i という使い分けが一般的です。
Rocky Linux での実務的な考え方
Rocky Linux をインストールすると、デフォルトで作成される初期ユーザーはwheel グループに所属しており、sudo が使える状態になっています。これはRHEL系ディストリビューションの標準設計です。
一方、rootユーザーでの直接ログインは、セキュリティ上のベストプラクティスとして推奨されていません。
多くの企業環境では、SSH設定で PermitRootLogin no としてroot直接ログインを禁止しています。
この設計思想の背景には
- 誰が何をしたか追跡可能にする
- rootパスワードの共有リスクを減らす
- 誤操作による致命的なミスを防ぐ
- コンプライアンス要件(監査ログの保持)に対応する
といった実務的な要請があります。
初学者が自宅サーバーや検証環境で学習する場合、「root直接ログインの方が楽では?」と思うかもしれません。
確かに学習段階では手間が少ないのですが、最初から sudo を使う習慣をつけておくべきです。理由は、本番環境や業務環境では必ず sudo が求められるからです。
また、sudoには「うっかりミス」を防ぐ効果もあります。rootに切り替えたまま作業していると、重要なファイルを誤って削除したり、設定を壊してしまうリスクが高まります。sudo であれば「この操作は本当に管理者権限が必要か?」と意識的に考える機会が生まれます。
初心者がやりがちなミスと対処法
実際にRocky Linux を使い始めると、以下のようなミスに遭遇します。
- 1. sudo の付け忘れ
systemctl restart httpd Failed to restart httpd.service: Access denied初心者は「なぜ動かないんだ?」と焦りますが、単に権限がないだけです。エラーメッセージに “Permission denied” や “Access denied” と出たら、まずsudoを付けて再実行してみましょう。
- 2. su後の作業ミス
rootに切り替えた後、プロンプトが
#になっているのを見落として、通常ユーザーのつもりで作業してしまうケースです。特にsu - cd /home/normaluser vi important-file.txt # rootが編集するので所有者がrootになるこのように、一般ユーザーのファイルをroot権限で編集すると、ファイルの所有者がrootに変わってしまい、元のユーザーが編集できなくなります。初心者がハマりやすい罠です。
- 3. root から戻り忘れる
su -でrootになった後、exitせずにそのまま作業を続けてしまうミスです。作業途中で席を離れると、誰でもroot権限で操作できてしまいます。rootでの作業が終わったら必ずexitでログアウトする習慣をつけましょう。ターミナルのプロンプト設定を工夫して、rootの時は色を変えたり表示を目立たせるのも有効な対策です。
【結論】どちらをどう使えばいいのか
では、結局どちらを使えばいいのでしょうか。答えは「状況による」ですが、指針は明確です。
- 学習環境・自宅サーバーでの指針
- 基本は sudo を使う習慣をつける
- 設定ファイル1つ編集するなら
sudo vi /etc/httpd/conf/httpd.conf - 複数の管理作業を連続で行うなら
sudo -iで作業環境に入る - 終わったら必ず
exitで抜ける
- 業務環境での指針
- sudo が大前提。su は使わない方針の組織も多い
- sudoersファイルで実行可能なコマンドが制限されている場合がある
- root直接ログインは禁止されていることがほとんど
- すべての操作がログに残ることを意識する
個人的には、初学者こそ最初から 「sudo + 必要なコマンド」という使い方を身につけるべきだと考えています。
suに頼ると、「とりあえずrootになってから考える」という悪習慣がつきやすく、実務で苦労することになります。
ただし、カーネルの再構築やシステム全体のメンテナンスなど、長時間にわたってroot権限が必要な作業では、sudo -i で作業環境を整えた方が現実的です。この使い分けができるようになれば、あなたはもう初心者ではありません。
まとめ
sudo と su の違いは、単なるコマンドの使い方の問題ではなく、Linux における権限管理の思想の違いです。
- sudo は「権限だけを一時的に借りる」仕組みで、ユーザーの識別を保ったまま管理作業ができる
- su は「別のユーザーに完全に成り代わる」仕組みで、以降の操作はすべてそのユーザーとして記録される
- Rocky Linux では sudo が標準設計であり、実務でも sudo 中心の運用が主流
- root直接ログインは避け、sudo または sudo -i を使う習慣をつける
初学者のうちは「面倒だからrootで作業したい」と思うかもしれませんが、セキュリティ・監査・運用の観点から、sudoを使う意味は大きいのです。この理解があれば、Rocky Linux だけでなく、他のLinux環境でも自信を持って作業できるようになります。
最初は戸惑うかもしれませんが、「なぜこういう仕組みになっているのか」を理解しながら手を動かせば、必ず腹落ちする瞬間が来ます。それがLinux運用の面白さであり、インフラエンジニアとしての第一歩です。

コメント