rootとsudoの考え方 - なぜrootで作業しないのか

rootとsudoの考え方 - なぜrootで作業しないのか

sudo を付けろと言われたけど、root って結局なに?

ネットの手順をなぞっていると、sudo apt update のように先頭に sudo が付いたコマンドをよく見かける。「とりあえず付けておけば動く呪文」くらいの認識で使っていないだろうか。さらに調べると「root で作業するな」「最小権限で」といった注意書きにぶつかって、余計に混乱する。

root は Linux で 何でもできる最強の管理者アカウントsudoその権限を1コマンドだけ一時的に借りる仕組みだ。この記事では、なぜ普段は root を使わず sudo を使うのかを、ライナとライニー先輩の会話で直感的に整理していく。読み終わるころには、sudo を「呪文」ではなく「意味の分かる安全装置」として使えるようになる。

この記事でわかること

  • root(スーパーユーザー)が「何でもできる」特別なアカウントであること
  • なぜ root で作業し続けると危険なのか
  • sudo が「1コマンドだけ権限を借りる」仕組みであること
  • susudo の違い
  • sudo command という基本の使い方
  • 「最小権限の原則」という考え方

1. そもそも root とは何か?

結論: root は Linux で唯一すべての操作が許された特別な管理者アカウント。権限チェックを一切受けず、システムのどんなファイルでも読み書き・削除できる。

リナ: ライニー先輩、コマンドの前に付ける sudo ってよく見るんですけど、そもそも root って何ですか?
ライニー先輩: root(ルート)は、Linux の中で「何でもできる」一番えらいアカウントだよ。日本語だと「スーパーユーザー」とか「管理者」と呼ばれる。
リナ: 何でもできる、というのは?
ライニー先輩: 文字どおり全部だね。普通のユーザーが触れないシステムの設定ファイルを書き換えたり、ソフトを全体にインストールしたり、他人のファイルすら消せる。Linux の権限チェックは root には適用されないんだ。
リナ: えっ、じゃあ最強じゃないですか。普段から root を使えば全部解決するのでは…?
ライニー先輩: そう思うよね。でもそれが一番やってはいけないことなんだ。理由はこのあと順番に話すよ。

root = 権限チェックを免除された特別アカウント

  • ユーザー名は root、ユーザー ID(UID)は 0
  • ファイルのパーミッション(rwx)に関係なく、すべて読み書き・削除できる
  • システム全体に影響する操作(パッケージ導入・サービス再起動・ユーザー追加など)ができる

「強い」のではなく「制限が外れている」と捉えるのが正確だ。パーミッションそのものについては パーミッションの考え方 を参照。

2. なぜ root で作業し続けると危険なのか?

結論: root は権限チェックが効かないため、打ち間違い1つでシステム全体を壊せる。ミスやマルウェアの被害が「全領域」に及ぶのが危険の本質。

リナ: 何でもできて便利なのに、なぜ root を普段使いしちゃダメなんですか?
ライニー先輩: 「何でもできる」は「何でも壊せる」と同じ意味だからだよ。一般ユーザーなら、うっかり大事なファイルを消そうとしても「権限がありません(Permission denied)」で止めてもらえる。でも root にはそのブレーキが無い。
リナ: ブレーキが無い…?
ライニー先輩: たとえば消すディレクトリを打ち間違えても、root なら警告なしでそのまま実行されてしまう。一般ユーザーなら権限の壁で守られていた領域まで、まるごと消えてしまうんだ。
リナ: こわい…。でも自分は気をつければ大丈夫じゃないですか?
ライニー先輩: 人間は必ずミスするし、それだけじゃない。もし root で動かしたプログラムに不正なコードが混じっていたら、その被害も root の権限で実行される。つまりシステム全体が乗っ取られる。だから「普段は権限を絞っておく」のが鉄則なんだ。

3. sudo は何をするコマンドなのか?

結論: sudo は「この1コマンドだけ root の権限で実行する」ための仕組み。普段は一般ユーザーのまま、必要なときだけ一時的に権限を借りられる。

リナ: じゃあ管理者権限が必要なときは、どうすればいいんですか?
ライニー先輩: そこで sudo(スードゥ / sudo)の出番。sudo は "superuser do" の略で、「この1回だけ管理者として実行して」とお願いするコマンドなんだ。
リナ: 1回だけ、というのがポイントですか?
ライニー先輩: そう。sudo apt update と打つと、その apt update というコマンドだけが root の権限で動く。終わればすぐ普段の一般ユーザーに戻る。ずっと root でいるわけじゃない。
リナ: なるほど。必要なときだけ権限を借りて、すぐ返す感じですね。
ライニー先輩: まさにそれ。しかも誰がいつ何を sudo で実行したかは記録(ログ)に残る。「いつでも root」と違って、責任の所在もはっきりするんだ。

sudo = 権限を「1コマンドだけ」借りる仕組み

  • sudo を付けたコマンドだけが root 権限で実行される
  • 実行後はすぐ元の一般ユーザーに戻る(root に居続けない)
  • 初回などはログイン中ユーザー自身のパスワードを聞かれる(root のパスワードではない)
  • 誰がいつ何を実行したかがログに残る

「ずっと管理者」ではなく「必要な一瞬だけ管理者」。これが安全の核心だ。

4. su と sudo はどう違うのか?

結論: su は root に「成り代わって居座る」コマンド、sudo は権限を「1コマンドだけ借りて即返す」コマンド。普段使いで安全なのは sudo。

リナ: 似た名前で su っていうコマンドも見かけました。これは sudo と何が違うんですか?
ライニー先輩: いい質問。su(switch user)は「ユーザーを切り替える」コマンドで、引数なしで使うと root に切り替わる。一度切り替えると、exit するまでずっと root のまま作業することになる。
リナ: ずっと root のまま…さっき危ないって言ってたやつですね。
ライニー先輩: そう。su で root になると、そのあと打つコマンドは全部 root 権限。ブレーキの無い状態が続く。一方 sudo はコマンド単位だから、危険な状態にいる時間が一瞬で済む。
リナ: だから sudo のほうが推奨されるんですね。
ライニー先輩: そのとおり。最近の Ubuntu などは、そもそも root に直接ログインできない設定が標準。日常の管理作業は sudo で済ませるのが現代の作法だよ。
項目 su sudo
何をする root に切り替わって居座る 1コマンドだけ権限を借りる
権限の範囲 exit するまでずっと root そのコマンド実行中だけ
聞かれるパス root のパスワード 自分(実行ユーザー)のパスワード
ログ 残りにくい 誰が何をしたか残る
普段使い 非推奨 推奨

sudo su という形も使われるが、まずは sudo command から

sudo susudo -i で「sudo 経由で root シェルに入る」操作も存在する。連続して管理作業をしたい場面では使われるが、root シェルに居座る点では su と同じリスクがある。初心者のうちは「コマンドごとに sudo を付ける」基本形に慣れるのが安全。

5. sudo はどう使う?(基本の形)

結論: 管理者権限が要るコマンドの前に sudo を付けるだけ。sudo <コマンド> が基本形で、初回などは自分のパスワードを聞かれる。

リナ: 実際の使い方を教えてください。
ライニー先輩: 簡単だよ。管理者権限が必要なコマンドのsudo を付けるだけ。たとえばパッケージ一覧を更新するなら、こう打つ。
リナ: コマンドの頭に付けるだけなんですね。
ライニー先輩: そう。最初に1回、自分のパスワードを聞かれる(画面には何も表示されないけど入力はできている)。一度通れば、しばらくは聞かれずに続けて使えるよ。
sudo apt update
[sudo] password for lina:
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
...

今の自分が誰なのかは whoami で確認できる。

whoami
lina

sudo を付けたコマンドの中だけ root として動き、終われば lina に戻っている。

自分に何が許されているか sudo -l で確認

sudo を使えるユーザーや実行できるコマンドは、/etc/sudoers という設定で管理されている。自分にどんな sudo 操作が許可されているかは、次のコマンドで一覧できる。

sudo -l

「自分は何を管理者権限で実行できるのか」を把握しておくと、Permission denied で詰まったときの切り分けが速くなる。

6. 最小権限の原則とは?

結論: 「作業に必要な最小限の権限だけを持つ」という考え方。普段は一般ユーザーで過ごし、管理者権限は必要な瞬間だけ借りることで事故と被害を減らせる。

リナ: ここまでの話、ひとことでまとめると何になりますか?
ライニー先輩: 「最小権限の原則」だね。英語だと least privilege。必要最小限の権限しか持たないようにする、という考え方だよ。
リナ: 普段は弱いまま、必要なときだけ強くなる、みたいな?
ライニー先輩: まさにそう。普段から最強(root)でいると、ミスやウイルスの被害も最強になる。でも普段は一般ユーザーでいれば、被害は自分の届く範囲で止まる。そして root が要る一瞬だけ sudo で借りる。
リナ: なるほど。だから「root で作業しない」「sudo を使う」がセットで言われるんですね。
ライニー先輩: その通り。これは Linux だけの話じゃなくて、セキュリティの世界では共通の鉄則。覚えておくとずっと役に立つよ。

最小権限の原則は習慣で身につく

  • 普段のログインは一般ユーザーで行う(root で常用しない)
  • 管理者権限が要るコマンドだけ sudo を付ける
  • sudo を付ける前に「このコマンドは本当に管理者権限が必要か」を一度考える
  • 何を実行しようとしているか分からない sudo コマンドは、コピペで実行しない

「強い権限はすぐ返す」を習慣にすれば、事故の大半は防げる。

7. 手を動かして確かめるには?

結論: whoami で今の自分を確かめ、sudo 付き/なしでコマンドの通り方がどう変わるかを実際に打つのが、いちばん速い理解の近道。

リナ: 頭では分かった気がしますが、まだ実感がないです…
ライニー先輩: こういうのは打って確かめるのが一番。whoami で今の自分を確認して、権限が要る操作を sudo あり・なしで試すと、「あ、ここで権限が必要なんだ」と体でわかるよ。
リナ: 自分のマシンで管理者コマンドを試すのはちょっと怖いです。
ライニー先輩: それなら、ブラウザで安全に試せる練習場を使うといい。壊す心配なく whoami や権限の感覚を確かめられるよ。
whoami
id
lina
uid=1000(lina) gid=1000(lina) groups=1000(lina),27(sudo)

id の出力に sudo グループが含まれていれば、そのユーザーは sudo を使える。uid=1000 のように 0 以外なら、今は root ではなく一般ユーザーだ。

Penguin Gym Linux のターミナルwhoamiid を打って、「今の自分が誰か」を確かめてみよう。権限の感覚をつかむと、sudo を付ける/付けない の判断が自然にできるようになる。

まとめ

  • root は権限チェックを免除された 何でもできる管理者アカウント
  • root を常用すると、ミスやマルウェアの被害が システム全体に及ぶ
  • sudo1コマンドだけ権限を借りて即返す仕組み(責任もログに残る)
  • su は root に居座る、sudo はコマンド単位 —— 普段使いは sudo
  • 基本形は sudo <コマンド>、自分に許された操作は sudo -l で確認
  • 根底にあるのは 最小権限の原則: 普段は一般ユーザー、必要な一瞬だけ管理者

次に読む