流れ1の9語目 / 10

sudo

Linux

設定ファイルが root の持ち物で、一般ユーザーでは書き換えられないと分かったあと

「そのファイルはrootのものだから、頭に sudo をつけて編集して。でも、何でもかんでも sudo はだめだよ」
「sudo」って、何のことだろう…?

sudo(スードゥー)は、許可された一般ユーザーが、コマンドの頭につけて、そのコマンドだけを管理者(root)として実行するしくみです。

このページで分かること読む 約4分・問題 2問
  • root は、サーバーで何でもできる管理者のユーザー
  • sudo は、許可された一般ユーザーが、コマンドの頭につけて、そのコマンドだけを管理者(root)として実行するしくみ
  • sudo で聞かれるのは、ふつう自分のパスワード
  • 何でもかんでも sudo、ずっと root で作業、はしない

身近な例えで理解する

職場の備品倉庫の鍵は総務が管理していて、名簿にのっている人だけが借りられます。借りるときは貸出簿に名前と時間を書き、用が済んだらすぐ返します。

  • 備品倉庫root でないと触れない設定ファイルなど
  • 鍵を借りられる人の名簿sudo を使ってよい人の設定(sudoers)
  • 貸出簿に名前と時間を書くsudo を使った記録が残る
  • 用が済んだらすぐ返すsudo はそのコマンド1つだけに効く

名簿にない人は鍵を借りられません。sudo も、許可されていないユーザーが使うと断られます。

ちょっと確認

Q1同期のひとこと
同期「毎回 sudo つけるの面倒だから、ずっと root で作業してるよ」

この作業のしかたの問題は何ですか?

例えを外して、実際のしくみ

ここからは実際のしくみ
root と一般ユーザー

root は、サーバーのすべてのファイルや設定を変えられる管理者のユーザーです(→46 rootユーザー)。何でもできるぶん、間違えたときの被害も大きくなります。だから、ふだんは一般ユーザーで作業します

sudo のしくみ

sudo をコマンドの頭につけると、そのコマンドだけが root として動きます(例:sudo vi /etc/example.conf。vi はファイルを編集するコマンドです)。誰が・どのコマンドを使ってよいかは、/etc/sudoers などの設定(sudoers)で決まっています。許可されていない人が使うと断られ、その試みも記録されます

実行例(練習用に用意した Ubuntu 24.04 で、sudo を許可されていない user2 が使った結果):
user2@vm:~$ sudo cat /etc/sampleapp/app.conf
[sudo] password for user2:
user2 is not in the sudoers file.

パスワードは打っても画面に出ません。user2 は sudoers にのっていないので、正しいパスワードを打っても断られました。

聞かれるのは自分のパスワード

sudo で聞かれるのは、ふつう root のパスワードではなく、実行する本人のパスワードです。初期設定では、一度入れると5分間は聞き直されません。聞き直されないのはパスワードの入力だけで、root として動くのは、そのつど sudo をつけたコマンドだけです。成功も失敗も記録に残るので、誰がいつ管理者の操作をしたかを後から確かめられます(→11 ログ)。なお、クラウドのインスタンスで最初から用意されているユーザーは、パスワードを聞かれずに sudo できる設定になっていることがあります(OSやイメージによって違います)

必要なときだけ使う

ずっと root で作業したり、何にでも sudo をつけたりすると、打ち間違い1つでサーバー全体を壊しかねません。Permission denied をなくすために chmod 777 で誰でも書ける状態にするのもよくありません(→08 パーミッション)。「必要な操作に、必要な分だけ管理者の権限を使う」が基本です(→65 最小権限)

このページのまとめ

root
サーバーで何でもできる管理者のユーザー
sudo
許可されたユーザーが、そのコマンドだけを root として実行するしくみ
sudoers
sudo を誰が・何に使ってよいかを決める設定
sudo で聞かれるパスワード
ふつうは自分のパスワード。しばらくは聞き直されません(聞かれない設定のこともあります)

先輩のひとことの意味

先輩「そのファイルはrootのものだから、頭に sudo をつけて編集して。でも、何でもかんでも sudo はだめだよ」

「その設定ファイルは root しか書き換えられないから、編集するコマンドにだけ sudo をつけて、管理者として実行して。でも、Permission denied が出るたびに考えずに sudo をつけるのはやめてね。本当に管理者の権限が必要な操作かを考えてから使って」という意味です。

練習問題で確かめる

Q24択

root の持ち物の設定ファイルを書き換えようとして、Permission denied と出ました。よい対応はどれですか?

参考資料

ご意見・「これで例えて!」を募集しています

ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。

  • 説明してほしいITの言葉
  • 例えてほしい場面(部活・アルバイト・家事など)
  • 分かりにくかったところ・間違いのご指摘

意見箱は準備中です。

解説・例え・練習問題はすべてオリジナルです。参考にしているのは公式ドキュメントのみです。ご意見・ご感想・間違いのご指摘など、何でもお寄せください。確認してすぐに直します。

LinuCはLPI-Japanの登録商標です。当サイトはLPI-Japanおよび他の企業・団体とは関係ありません。

運営:core