sudoとは?権限昇格の仕組みと使い方を解説

sudo_アイキャッチ

今回は、LinuxやUNIX系OSを使っている方なら一度は目にしたことがあるコマンド「sudo」について、初心者でもわかりやすいように解説していきます。
sudoの仕組みや役割、実際の使い方、そしてセキュリティ面で注意すべきポイントまでバッチリ理解できると思います!

入門書とかにしれっと記載されていて、「何の意味があるの?」となっている方もいるかと思います。

目次

そもそも「sudo」って何?

「sudo」の基本的な意味

「sudo(スードゥー、スード)」は、“superuser do”(スーパーユーザーで実行する)の略です。
LinuxやmacOSなど、UNIX系のOSで利用できるコマンドで、「本来は管理者(root)だけが実行できる操作を、一時的に自分のユーザーで実行できるようにする」ためのツールです。

たとえば、システムの設定変更やソフトウェアのインストール、ファイルシステムの操作など、重要な操作は管理者権限(root権限)が必要です。
一般ユーザーで作業していると、そうした操作をしようとした時に「Permission denied(許可がありません)」と表示されてしまいます。
このときに「sudo」を使えば、一時的に自分のユーザーを管理者の権限に昇格させてコマンドを実行できます。

なぜsudoが必要なのか?

そもそも、なぜ「sudo」なんてややこしいものがあるのでしょうか?

これは、セキュリティの観点から考えると非常に重要です。
もし普段からrootユーザー(管理者権限)でログインしていると、

  • 間違って大事なシステムファイルを削除したり
  • ウイルスやマルウェアが勝手にシステムを改変したり
    といった危険性がとても高くなります。

そのため、普段は権限の低い一般ユーザーで作業し、
本当に必要なときだけ「sudo」で一時的に権限を昇格して作業する——
これが、現在のLinuxやmacOSの「安全な使い方」の基本になっているのです。

sudoの仕組みと動作の流れ

sudoはどうやって権限を昇格しているの?

「sudo」は、コマンドの実行時だけ、一時的にroot権限を借りて動作します。
実際の動作の流れはこんな感じです。

  1. ユーザーが「sudo コマンド」を実行
  2. sudoは「このユーザーはsudoを使える設定か?」を確認
  3. 問題なければ「パスワード(自分のユーザーのパスワード)」を入力
  4. 一時的にroot権限でコマンドを実行

ポイントは、「一時的に」「コマンド単位で」権限昇格する、という点です。

sudoersファイルで細かく制御できる

sudoを利用できるユーザーや、実行できるコマンドは「/etc/sudoers」ファイルで管理されています。
ここには、

  • どのユーザーがsudoを使えるか
  • どんなコマンドをsudoで許可するか
  • パスワード入力が必要か
    など、細かい設定が可能です。

これにより、「特定のコマンドだけsudoで許可」「特定のグループだけsudo許可」といった柔軟な運用ができます。

sudoの基本的な使い方

sudoコマンドの書き方

使い方はとてもシンプルです。

sudo 実行したいコマンド

例えば、システムのパッケージをインストールしたい場合

sudo apt install nginx

このように、普段通りコマンドを打つだけでOK!
最初にパスワード入力を求められることがありますが、これは「sudoを使う本人か確認」するためです。

よく使うsudoの例

  • ファイルをroot権限で編集 shコピーする編集する
    sudo nano /etc/hosts
  • サービスを再起動 shコピーする編集する
    sudo systemctl restart apache2
  • ファイルやディレクトリの削除 shコピーする編集する
    sudo rm -rf /var/log/old_logs
  • ユーザーの追加 shコピーする編集する
    sudo adduser newuser

sudoでコマンドをまとめて実行するには?

複数のコマンドをまとめて実行したい場合は、“;”や”&&” でつなげばOK!

sudo sh -c "apt update && apt upgrade -y"

こうすると、「apt update」も「apt upgrade」もroot権限で一気に実行できます。

sudoの便利なオプション

-u オプション:他のユーザーとして実行

sudoはroot以外のユーザーとしてコマンド実行も可能です。

sudo -u username コマンド

例:

sudo -u www-data ls /var/www

-i オプション:ログインシェルを取得

sudo -i

これで、rootとしてシェルを起動できます(rootでログインしたのと同じ状態)。

-s オプション:シェルを起動

sudo -s

環境変数はそのままでrootシェルを使いたい場合などに便利です。

-l オプション:許可されたコマンドを確認

sudo -l

自分がsudoで何を実行できるか確認できます。

sudoとsuの違いって?

「sudo」と似たコマンドに「su」があります。
混同しがちですが、実は役割がちょっと違います

コマンド目的使い方パスワード
sudo一時的に権限昇格してコマンド実行sudo コマンド自分のパスワード
suユーザーを切り替える(主にroot)su –切り替え先のパスワード(rootならrootパスワード)
  • sudoは、「一つのコマンド」だけ権限昇格。
  • suは、「シェルごと」切り替える。

現在は、sudoを使う方が主流です。rootパスワードをユーザーに教える必要がなく、セキュリティ的にも安心です。

sudoを使うときの注意点・セキュリティ

sudoは「超強力」。だからこそ慎重に!

sudoで実行したコマンドは、システム全体を変更できる力を持っています。
rm -rf / なんてやると、システムが全消しなんてことも…。

場合によっては、徹夜くらいで終わりませんね、、

気をつけるポイント

  • コマンドをしっかり確認する
  • sudo権限は本当に必要なユーザーだけに
  • 怪しいスクリプトをsudoで実行しない
  • sudoの実行履歴(sudoコマンドのログ)も定期的にチェック

sudoのログ

sudoで実行した操作は、通常「/var/log/auth.log」などのログファイルに記録されます。
問題発生時は、「誰が、いつ、どんなコマンドをsudoで実行したか」が調査できます。

パスワードなしsudo(NOPASSWD)のリスク

「sudo」を使う時にパスワードを省略する設定(NOPASSWD)もできますが、
便利な反面、セキュリティリスクが高まるので、安易に設定しないよう注意しましょう。


sudoが使えない・エラーの対処法

よくあるエラー

  • hoge is not in the sudoers file. This incident will be reported.
    → 「sudoers」に設定されていないユーザー。管理者に権限追加してもらう必要があります。
  • Sorry, user hoge may not run sudo on...
    → 同上。
  • Permission denied
    → sudoなしで実行している、またはファイル自体に権限がないケース。

対策

  1. 自分がsudoグループ(wheelやsudoなど)に所属しているか確認
  2. 管理者にsudoersファイルの編集を依頼
  3. root権限でusermod -aG sudo ユーザー名でsudo権限追加(※管理者のみ実施可能)

まとめ

いかがでしたか?
今回は「sudo」の基本から、仕組み、実際の使い方、そして気をつけたいセキュリティまで幅広く解説しました。

  • sudoは「一時的に」権限昇格して、必要な操作だけを安全に実行するためのコマンド
  • 普段は一般ユーザーで、安全に作業するのが鉄則
  • 必要なときだけsudoでパワーアップ!
  • sudoersファイルで細かい権限管理も可能
  • コマンドの入力ミスや怪しいファイルには注意!

もし、この記事が好評であれば、「うっかり気軽にsudoを使ってトラブルになった…」「こんな時どうする?」などなど

これからも「きらくにIT」では、IT初心者から中上級者まで役立つ情報を発信していきますのよろしくお願します!

sudo_アイキャッチ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次