Linux入門:コマンド操作のきほん

sudo - スーパーユーザーの力

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

sudo とは

sudoコマンドでスーパーユーザー権限を取得し、より強力な操作を行う方法を体験します。本レッスンでは、sudo の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

sudo は「substitute user, do」または「super user do」の略で、一時的に別のユーザー(多くの場合 root)の権限でコマンドを実行する仕組みです。パッケージのインストール、システム設定の変更、サービスの再起動、ログの閲覧。本番サーバーで「管理者作業」と呼ばれるものはほぼすべて sudo 経由で行われます。本演習環境では sudo は使えませんが、現場では毎日触るコマンドなので、安全な使い方と落とし穴を理解しておきましょう。

root とは何か

Linux における root は UID 0 を持つ特別なユーザーで、システムのあらゆる操作が許可されています。ファイルの権限を無視して読み書きできる、他のユーザーのプロセスを停止できる、システム設定を書き換えられる。便利な反面、rm -rf / を一発で実行できる危険な存在でもあります。

なぜ root に直接ログインしないか

現代の Linux 運用では、root でログインせず、一般ユーザーで入って必要なときだけ sudo で権限昇格するのが鉄則です。理由は次の通りです。

  • 誰が何をしたか /var/log/auth.log でトレースできる
  • 操作のたびに権限昇格するので「うっかり破壊」を防げる
  • root パスワード自体を共有せずに済む(権限剥奪も簡単)

sudo の動作モデル

diagram (will load when visible)

sudo コマンド一発ごとに root 権限が貸し出され、終わると元の権限に戻ります。デフォルトでは 5 〜 15 分間はパスワード再入力が省略されます。

主要な使い方

ターミナル

sudo apt update # 単一コマンドを root で実行 sudo -i # root の対話シェルに入る sudo -u www-data ls /var/www # 別ユーザーで実行 sudo !! # 直前のコマンドを sudo 付きで再実行

sudo !! は「権限が足りなくて失敗したコマンドをそのまま sudo で再実行」する便利テクニックで、ターミナル作業で頻出します。

sudoers の設計

sudo を使えるユーザーは /etc/sudoers ファイル(または /etc/sudoers.d/ 配下)で定義されています。Debian 系では sudo グループに所属していること、Red Hat 系では wheel グループに所属していることが条件になるのが慣習です。

ターミナル

# Debian / Ubuntu の例 sudo usermod -aG sudo alice # /etc/sudoers の典型的な行 # %sudo ALL=(ALL:ALL) ALL # sudo グループの全員が全コマンドを実行可能 # alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl # パスワードなしで systemctl だけ許可

NOPASSWD を使うと CI/CD や自動化スクリプトでパスワード入力を回避できますが、付与しすぎると root と同等のリスクになります。

sudo を編集するときは必ず sudo visudo を使ってください。visudo は保存前に構文チェックしてくれます。直接エディタで /etc/sudoers を編集して文法エラーがあると、二度と sudo できなくなり復旧に再起動が必要になります。

演習環境では使えない

本演習の Cloud Functions ベース実行環境には root も sudo もありません。sudo apt install xxx のような操作はすべて開発端末か本番サーバーで行います。サンプルとして「形だけ」見るなら以下のような感じです。

ターミナル

# 本番サーバーでの典型操作(演習環境では sudo not found) sudo apt update sudo apt install -y nginx sudo systemctl enable --now nginx sudo journalctl -u nginx -n 50

安全に使うためのコツ

「root シェルに入って 5 個も 10 個もコマンドを打つ」のではなく、「必要な 1 行だけ sudo を付ける」のが基本です。ミスの被害範囲を最小化できます。

  • 削除系コマンドは必ず 1 段階確認する(ls で対象を見てから rm
  • sudo -i で root シェルに入ったら作業が終わり次第 exit
  • 環境変数や PATH は sudo 経由だと初期化される(sudo env で確認)
  • 本番サーバーでの sudo 履歴は /var/log/auth.log に残る前提で行動する

まとめ

  • sudo は一時的に root 権限を借りる仕組み
  • root 直接ログインは避け、sudo 経由が本番の作法
  • sudoers / visudo で許可ユーザーを管理
  • NOPASSWD は便利だが乱用しない
  • 演習環境では使えないので、本番に出る前に手元 VM で慣れておく

次のレッスン

次は 実行権限とスクリプト で、sudoコマンドでスーパーユーザー権限を取得し、より強力な操作を行う方法を体験します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. sudo と root の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. sudo と root とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

参考リンク