Rocky Linux 初学者が必ず迷う「sudo と su」の本質的な違いと実務での使い分け

目次

なぜ 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

このコマンドを実行すると、内部では次のようなことが起きています。

  1. あなた自身のパスワードを要求される(rootのパスワードではない)
  2. /etc/sudoers ファイルであなたに権限が与えられているか確認される
  3. 確認が取れたら、そのコマンド「だけ」をroot権限で実行する
  4. コマンドが終わったら、通常のユーザー権限に戻る
  5. ログに「誰が・いつ・何を実行したか」が記録される

この一連の流れで最も重要なのは、「あなたは自分のユーザーのままである」という点です。

sudoは権限だけを一時的に借りる仕組みであり、ユーザーそのものを切り替えているわけではありません。

「なぜ自分のパスワードを入力するのか?」という疑問を持つ初学者は多いのですが、これはあなた本人が操作していることを確認するためです。rootのパスワードを要求してしまうと、結局rootパスワードを複数人で共有することになり、「誰が実行したか」という記録の意味が失われます。

さらにsudoには「15分間は再入力不要」というタイマー機能があります。連続して複数のコマンドを実行する際、毎回パスワードを入力する手間を省くための配慮です。ただしこれは諸刃の剣で、席を離れた隙に他人に操作されるリスクもあります。

su は何を切り替えているのか

一方、suは “switch user” の略で、文字通りユーザーそのものを切り替えるコマンドです。

su -

このコマンドを実行すると・・・

  1. rootユーザーのパスワードを要求される
  2. 認証が通ると、あなたはrootユーザーに完全に切り替わる
  3. プロンプトが # に変わり、以降のすべての操作がrootとして実行される
  4. exit コマンドで明示的に抜けるまで、rootのまま

ここでのポイントは、あなたはもうあなたではなく、rootになっているということです。環境変数、ホームディレクトリ、実行権限、すべてがrootのものに切り替わります。

susu - の違いも重要です。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 -
  1. sudo により、一時的にroot権限を得る
  2. その権限でsuコマンドを実行し、rootユーザーに切り替わる
  3. 結果として、rootパスワードを知らなくてもrootになれる

この方法は、「sudoの監査機能を維持しながら、root環境で連続作業したい」というニーズに応えるものです。

ただし、いったんroot環境に入ってしまえば、その後の操作は個人の識別ができなくなります。


sudo -i

sudo -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運用の面白さであり、インフラエンジニアとしての第一歩です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次