|
|
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という特殊なエイリアスが用意されており、これは全ユーザや全ホストなどの意味で使える。