導入
システム全体に関わる作業(設定変更・サービス再起動・ファイアウォール操作など)には、管理者 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 whoami は root を返しますが、実行が終われば自分は一般ユーザーのまま。必要な操作だけをピンポイントで昇格できるので、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、プロンプトが #)→ exit → whoami(=user に戻る)で、切り替えと復帰を体験しましょう。次に sudo whoami を打つと、切り替えずにその1回だけ root として実行され、root が返ることを確かめてください。
演習
いったん root に切り替えてください(ログインし直す形の書き方を使います)。
ヒント1を見る
「ログインし直す」形は - を付けます。
ヒント2を見る
su - と打つと、プロンプトが # に変わります。