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