責任回避に全力投球!

日々サーバの管理をしていれば、当然ながら操作を誤ることもある。ありがちなのは、うっかりデータを削除してしまうというミスだ。受注データや売上データ、顧客データといった重要な業務データを削除してしまった場合、個人の評価に影響があるだけでなく、会社の経営自体に大打撃を与えかねない。

予期できる危険は、全力で回避しよう。「データをうっかり削除してしまう」のはなぜなのかを考え、あらかじめ対策を立てておくのだ。ここでは、「そもそも、データを削除できてしまうのがいけない」と考えてみよう。たとえ操作を誤ったとしても、データを削除できないのであれば問題は発生しない。

「そんなことができるのか?」と思われるかもしれないが、それができるのだ。やり方はいろいろあるのだが、今回は「削除権限を持ったユーザーによる操作は、必要最小限にする」という方針で進めていこう。

管理者ユーザー「root」と一般ユーザー

Linuxや*BSD(BSD系統のOS群)では、OSを利用する主体を「ユーザー」と呼び、ユーザーを「管理者ユーザー(特権ユーザー)」とそれ以外の「一般ユーザー」に分けている。

管理者ユーザーには、多くの場合「root」という固有の名前が付けられている(OSによって異なる)。rootにはありとあらゆる操作が許可されており、操作を誤るとシステムが壊れることもあるという、とても危険な操作権限を持っている。

管理者ユーザー「root」でログイン

管理者ユーザー「root」でログイン

一方、一般ユーザーは権限が限られている。システムのファイルは削除できないし、読めないファイルもある。rootや所有者が許可を出していなければ、ほかのユーザーのファイルを削除することもできない。

一般ユーザー(ここでは「daichi」)でログイン

一般ユーザー(ここでは「daichi」)でログイン

つまり、サーバを管理する際、できるだけ一般ユーザーでログインして作業するようにすれば、「うっかりデータを削除してしまう」リスクを軽減できるわけだ。

一般ユーザーの”と金化”を実現するsuコマンド

一般ユーザーでの操作は、安全な反面、できないことが多くて不便なところもある。ただし、一般ユーザーから一時的にrootに成り上がるコマンドが存在する。将棋の世界では、「歩」が相手陣に入って行くと「金」と同じ動きをできるようになり、この時の駒を「と金」と呼ぶのだが、Linuxや*BSDにはまさにこの”と金化”を一般ユーザーに施すコマンドが用意されているのだ。それがsuコマンドである。

suコマンドを実行し、rootのパスワードを入力すると、rootに成り上がることができる。

suコマンドで一般ユーザーからrootに成り上がった

suコマンドで一般ユーザーからrootに成り上がった

ここでは、確認のためsuコマンドの実行前後にechoコマンドを使って「UID」という環境変数の値を表示させてみた。suコマンド実行前のUIDの値は「1000」だが、実行後には「0」になっている点に注目してほしい。この「0」こそ、rootのUIDなのである。

rootに成り上がった状態で必要な作業を終えたら、「exit」と入力すれば一般ユーザーに戻ることができる。後は、再び制限された環境で安全に業務を進められるというわけだ。

委任のためのコマンド「sudo」

ただし、suコマンドで一時的にrootに転身している間に操作を誤れば、もともとrootでログインしてミスするのと同じことだ。つまり、このやり方には限界がある。もっと細かく、「この機能だけこのユーザーに特権的に許可する」といったことはできないものか。――実は、可能である。「sudo」というコマンドならば、一般ユーザーに対して、特定の処理の実行だけを許可することができるのだ。

以下の画面は、一般ユーザーでログインし、「/var/log/messages」というログ・ファイルを閲覧しようとしていったん拒否されたものの、sudoコマンドを実行して見られるようになるまでの流れだ。

sudoコマンドを実行することで、ログ・ファイルを閲覧可能になった

sudoコマンドを実行することで、ログ・ファイルを閲覧可能になった

suコマンドの実行時には、rootのパスワードを入力しなければならないが、sudoでは一般ユーザー自身のパスワードを入力すればよい。もちろん、このコマンドのリスクを最小限にするには、sudoの設定ファイルを正しく記述しておく必要があるが、まずはsudoというコマンドの存在を知ってもらえればよいだろう。

今回のおさらい

今回のポイントは、次のとおりだ。

  • Linux系OSのユーザーには、管理者ユーザー「root」と一般ユーザーの2種類がある
  • リスクを回避するために、なるべくrootでログインしない
  • suコマンドで、一般ユーザーからrootに転身できる
  • sudoコマンドを使えば、一部の機能だけ一般ユーザーに特権的に実行させることができる

Linuxの運用に不慣れだと、「パーミッションがうんたら……」と言われるのがうっとうしくて、全部rootで作業したくなるものだ。しかし、ちょっとした操作ミスが命取りになる危険性を秘めている。避けられるリスクは、可能な限り回避していこう。