本文へスキップ
BecomeCoder

Linuxコマンドコース · 第4章 ユーザーと権限 · レッスン24

su と sudo ― 管理者権限を安全に借りる

ブラウザで完結

導入

システム全体に関わる作業(設定変更・サービス再起動・ファイアウォール操作など)には、管理者 root の権限が必要です。その権限の借り方が2つあります。丸ごと root に切り替える su と、1コマンドだけ root で実行する sudo です。現代のサーバーでは sudo が主役です。

説明

まず今のユーザーを確認します。プロンプト左側の名前と一致しているはずです。

whoami

su ― ユーザーを切り替えるsu - で root に切り替わります。切り替わるとプロンプトの記号が $ から # に変わります。# は「今は管理者だよ」という目印です。

su -
whoami

作業が終わったら exit で元のユーザーに戻ります。記号も # から $ に戻ります。この行き来を、記号が教えてくれます。

flowchart LR
    A["user@host:~$<br/>(一般ユーザー)"] -->|"su -"| B["root@host:~#<br/>(管理者)"]
    B -->|"exit"| A
exit
whoami

sudo ― 1コマンドだけ管理者として実行する。root に居座り続けると、うっかり危険な操作をしがちです。そこで「この1コマンドだけを管理者として実行する」sudo(superuser do)を使います。頭に付けるだけです。

sudo whoami

sudo whoamiroot を返しますが、実行が終われば自分は一般ユーザーのまま。必要な操作だけをピンポイントで昇格できるので、su で居座るより安全です。たとえばサービスの再起動はこう書きます(※サーバーコースで扱います)。

sudo systemctl restart nginx

su(丸ごと切り替え)と sudo(1回だけ)の違いは、この図が分かりやすいでしょう。

flowchart TD
    S1["su -"] --> S2["root に切り替わり<br/>exit するまでずっと管理者"]
    S2 --> S3["便利だが、居座ると危険"]
    D1["sudo コマンド"] --> D2["そのコマンドだけ管理者<br/>終われば一般ユーザーに戻る"]
    D2 --> D3["必要最小限で安全(現代の主流)"]

su --(ハイフン)は「そのユーザーの環境を丸ごと読み込んでログインし直す」という意味です。root 権限は強力なので、必要なときだけ使い、sudo で最小限に借りるのが安全な習慣です。「なぜ root が必要か分からないコマンドに、むやみに sudo を付けない」ことも大切です。

やってみよう

whoami(=user)→ su -whoami(=root、プロンプトが #)→ exitwhoami(=user に戻る)で、切り替えと復帰を体験しましょう。次に sudo whoami を打つと、切り替えずにその1回だけ root として実行され、root が返ることを確かめてください。

演習

いったん root に切り替えてください(ログインし直す形の書き方を使います)。

ヒント1を見る

「ログインし直す」形は - を付けます。

ヒント2を見る

su - と打つと、プロンプトが # に変わります。

実際に動かしてみよう

下の端末にコマンドを打って Enter を押すと、その場で結果が返ります。本文で出てきたコマンドを実際に試しながら進めましょう(ファイルを消しても「最初からやり直す」で元に戻ります)。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。