ユーザーの実行権限を柔軟に割り当てるsudoのリスクとメリットLinux Hacks(1/3 ページ)

rootパスワードを公開することなくアクセス範囲を最小限化した上で必要な権限を一般ユーザーに与えられるsudo。ここではsudoについてそのリスクとメリット、そして柔軟なシステム運用に役立てるための幾つかのTIPSを紹介しよう。

» 2008年02月19日 00時00分 公開
[Federico Kereki,Open Tech Press]
SourceForge.JP Magazine

 セキュリティ関連のジョブにいささかでもかかわりを有す者であれば、root権限ないしrootパスワードを一般ユーザーに与えるのは御法度であると心得ているはずだ。しかし、正当な理由があってroot権限下での処理を実行する必要に迫られた一般ユーザーが出てきた場合はどうすればいいのだろうか? そうした問題には非常にシンプルな解答が存在する。sudoを使えば、rootパスワードを公開することなくアクセス範囲を最小限化した上で必要な権限を一般ユーザーに与えることができるのである。

 sudo(superuser doの略)は、管理権限を制限付きでほかのユーザーに与えるためのプログラムで、実際これで許可される権限では事前の指定範囲内のコマンドしか行えないようになっている。またsudoで行われる操作はすべてオーディットトレール(追跡記録)に残されるので、仮にこうしたユーザーが何らかの方法で権限外の処理を行ったとしても、システム管理者がログ記録を確認すれば問題点の特定と修正が行えるはずだ。そのほかにsudo設定を介して複数のホストに与える権限を中央管理するという使い方も可能である。

 sudoのインストールおよびホストの設定が完了すると、指定されたユーザーは「sudo aForbiddenCommand」という構文を用いることで、新たに許可された範囲のコマンドを実行できるようになる。sudoの実行にはroot用とは別のパスワード入力が必要とされているが、これは端末から目を離した隙に第三者が不正使用することを防止するための措置である。またsudoにより本来の権限を越えた操作を許されたユーザーであっても、各自の欲しいままにシステムを自由に操作できるという訳ではなく、あくまでシステム管理者がsudo設定で許可した範囲内でしかコマンドを実行できないため、システムがダメージを受けるリスクは最小限化できると見ていいだろう。

インストールと設定

 sudoは決して最近登場したものではなく、その初期バージョンは1980年代にBSDで使われていたものであり、その後かなりの頻度でアップデートを受け続けてきた長い歴史を有している。もっともディストリビューションによっては標準で装備されていないケースもあるが、通常はリポジトリからインストールすればいいはずだ。

 sudoはフリーソフトウェア形態で提供されており、その配布にはInternet Systems Consortium(ISC)スタイルのライセンスが適用されている。現状で入手できるのは安定版(本稿執筆時点では1月20日リリースの1.6.9p12)および開発版(バージョン1.7b1)の2種類である。sudoの実行はシステムセキュリティに関係してくるため、選択肢としては前者を使用すべきだろう。またソースからインストールをする場合、ソースコードの配布はGratiSoftのWebサイトで行われている。インストール手順に難しい点はなく、ごく一般的なconfigure、make、make installのコマンド処理で実行できる。sudoの動作設定としては、ユーザーがパスワード入力を間違えた場合に侮蔑用のメッセージであざ笑うという設定を施すこともできるので、その辺に興味のあるシステム管理者がおられたら、どのような設定オプションが利用可能かを調べておいても損はしないだろう。

 sudoの設定で使用する/etc/sudoersは、ファイル名が示すとおりにsudoの使用を許可するユーザーを登録しておくためのものである。このファイル自体のアクセス設定は“400”とされており、読み取りはroot権限しか行えず書き込みは全ユーザーができないようになっている。そのため同ファイルの編集にはvisudoというプログラムが必要で、このプログラムはパーミッション関係の処理を行えるほか、複数ユーザーの同時操作を防止する編集ファイルのロックおよび、保存時における設定ミスのチェック機構が装備されている。visudoの実行にはEDITOR環境変数に指定する任意のエディタを使用するが、通常はviを指定しておけばいいはずだ。

 sudoersファイルの構成は単純で、先頭が4種類のオプションセクションで始まり、末尾が個々の使用権限の設定部というフォーマットとなっている。ファイル中には空白行が混在していてもよく、#記号で始まる行はコメント文と見なされる。まず先頭のオプションセクションではそれぞれ後記の指定が行える。

  • Userエイリアス:単一ユーザー(実際の用途はそれほど広くない)または複数ユーザーに対するエイリアスを設定する。1つのユーザーを複数のエイリアスに登録することも可能
  • Run Asエイリアス:sudoユーザーにどのユーザー(複数指定可)の権限を与えるかの指定。デフォルト設定下のsudoではroot権限が与えられてしまうので、通常はここに適切なユーザーを指定しておく
  • Hostエイリアス:権限の適用先ホストを指定する。複数のLinuxマシンを一括で管理するジョブをこなすという場合以外、使う機会はほとんどない。またその際にはほかのホストとの間で本ファイルの同期を取るか、Network Information Service(NIS)などを介したファイルアクセスを確保しておく必要がある
  • Commandエイリアス:特定コマンドにアクセスするための別名を定義する。例えば/usr/sbin/apt-getなどの絶対パスを必要とするコマンドをAPTと入力するだけで指定可能にできる

 これらのエイリアス指定は必須ではないが、将来的な設定作業を簡単化するのに役立てることができる。例えばdonald_duckなるユーザーにmickey_mouseなるユーザーと同等の権利を与えるように後から変更する場合、後者が属する既存のグループが作ってあればそこに前者を追加するだけでよく、個々の設定行を1つずつコピーする場合よりも大幅に手間が省けるはずである。またALLという特殊なエイリアスが用意されており、これは全ユーザーや全ホストなどの意味で使える。

       1|2|3 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ