本文へスキップ
BecomeCoder

サーバーコース · 第3章 サーバーを安全に整える · レッスン14

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

ブラウザで完結

導入

前のレッスンで「root への直接ログインは禁止」しました。では、サービスの再起動やソフトのインストールなど、管理者にしかできない作業はどうやるのでしょうか。答えは「必要な1コマンドだけ、一時的に権限を借りる」——それが sudo です。

説明

Linux には、あらゆる操作を許された特別なユーザー root(管理者)と、それ以外の一般ユーザーがいます。一般ユーザーのままでは、システムに影響する操作(ソフトの追加・サービスの操作・設定変更など)は基本的にできません。

管理者権限を借りる方法は主に2つです。

  • su(switch user) … 別のユーザー(既定は root)に切り替える。切り替えたあとは、ずっと root のまま作業してしまう
  • sudo(superuser do)そのコマンド1つだけを root として実行し、終わればすぐ元のユーザーに戻る
flowchart LR
    A["一般ユーザー user"] -->|"su -<br/>ずっと root に切り替え"| B["root として作業し続ける"]
    A -->|"sudo コマンド<br/>その1行だけ root"| C["実行後は<br/>すぐ user に戻る"]

現場で推奨されるのは断然 sudo です。「今この瞬間、なぜ管理者権限が必要だったか」が1コマンドごとに記録され、うっかり root のまま余計な操作をしてしまう事故も防げます。

誰でも sudo を使えるわけではなく、sudo グループに所属しているユーザーだけが許可されます。自分がそのグループに入っているかは id で確認できます。

id
uid=1000(user) gid=1000(user) groups=1000(user),27(sudo),100(users)

groups の中に 27(sudo) があれば、sudo を使う資格があります。実際に管理者権限が必要なコマンドには、頭に sudo を付けるだけです。

sudo apt update

whoamisudo whoami を見比べると、権限の借り方の違いがよく分かります。

whoami
sudo whoami

whoamiusersudo whoami はそのコマンドだけ root として実行されるので root と返ります。しかしその後にもう一度 whoami を打つと、また user に戻っています——その1行だけ昇格する sudo の性質そのものです。

「必要なときに、必要な操作だけ、権限を借りる」——これを 最小権限の原則 と呼びます。ずっと管理者のまま作業すると、タイプミス1つでシステムを壊しかねません。sudo は、安全に強い権限を使うための「一時的な鍵の貸し出し」の仕組みです。

やってみよう

id を打って、groups27(sudo) が含まれている(= sudo が使える)ことを確認しましょう。whoamisudo whoami を続けて打ち、返ってくるユーザー名が userroot → (もう一度 whoami で)user と変わることを見てください。sudo apt update のように、管理者権限が必要な操作には sudo を付ける形も試しましょう。

演習

自分が sudo を使えるユーザーグループに所属しているかどうかを確認してください。

ヒント1を見る

ユーザーの UID・GID・所属グループをまとめて見せてくれるコマンドです。

ヒント2を見る

id(出力の groups=27(sudo) があれば sudo が使えます)

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

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

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