sudoの設定で注意すべき点は、想定の範囲外の権限を与えないようにすることである。当然ながらsuの実行を許してしまうと、実質的にそのユーザーにroot権限を与えたのと同じになってしまう。ある意味こうしたものは明白な設定ミスと見なせなくもないが、それよりも厄介なのは、ある程度の経験を積まないと気づきにくい形で微妙な罠が隠されていることだ。例えば「sudo less」を実行できるユーザーが!コマンドを使うと、そのほかのコマンドをroot権限で実行可能となってしまう場合がある(何故こうしたリスクが生じるかがピンと来ない読者は、lessのmanページにあるこの問題の解説を参照してほしい)。いずれにせよコマンドへのアクセス設定に関しては“転ばぬ先のつえ”的な姿勢で対処するのが肝要であり、SANS Instituteなどのセキュリティ問題を扱ったサイトを参考にして、この種のリスクにおいてどのような脆弱性や手口が確認されているかをチェックしておくべきである。
そのほかに犯しやすい単純なミスとしてコマンドを相対パスで指定するというものがあり、ある程度の知識を有すユーザーであれば、これを糸口にしてすべての権限を取得されかねない。例えばFOOというエイリアスにbin/fooと設定したとしよう。その状況下においてあるユーザーが適当な場所にbinディレクトリを作成して、その中に自分が実行したいコマンドを格納しておくと(ここでの重要なポイントはその名称をfooとしておくこと)、これをroot権限下で実行することであらゆる操作が行えるようになってしまう。
残念ながら、一般のユーザーがいわゆる特権昇格(privilege escalation)を行う手口を見つけて不正にroot権限を取得してしまうような事態はあり得ないと保証することはできないのだが、特定ユーザーにのみ上位のアクセス権限を必要とする一部の操作だけを許可するという処理を簡単に実行できる現実的な手法は、sudoのほかに存在していないのである。
このようにsudoの使用にはある程度のリスクが伴うが(その大部分は設定時のミスで余分な権限まで与えることに関連している)、指定ユーザーに通常以上の権限を与えて特定タスクの実行を許すといった柔軟なシステム運用を可能にしてくれる存在という点には間違いがないのだ。
Federico Kerekiはウルグアイ出身のシステムエンジニアで、20年以上に渡るシステム開発、コンサルティング、大学講師の経験を有している。
Copyright © 2010 OSDN Corporation, All Rights Reserved.