長南洋一
cyoic****@maple*****
2012年 5月 6日 (日) 11:06:57 JST
長南です。 ものすごく長い前置きのメールです。肝腎の質問は件名のとおりで、 このメールの最後の 10 行ほどに書いてあります。まず、最後の部分を ご覧になってください。 sudo の公式サイトをのぞいてみたら、開発版が 1.8.5rc3 まで進んで いました(目下のところ、何故かダウンロードできないのですが)。 1.8.4 のマニュアルは、どのディストリビューションも採用しない、幻の バージョンのマニュアルになりそうです。もっとも、1.8.3 のマニュアル として、それなりに役に立つでしょうが。 手元に sudo-1.8.5b4.tar.gz があるので、1.8.4p4 のマニュアルと較べて みました。一目見て気がつく相違は、sudoers.5 のセクション構成が変更・ 整理されたことですが、これは実際にはパラグラフの位置を移動しただけです (今まで SESURITY NOTES が二ヶ所あったのを一ヶ所にまとめたなど)。 重大な変更は一ヶ所だけです。sudo.8 の "PLUGINS" セクションで、今までは Plugin 行に plugin_name と plugin_path しか指定できなかったのが、 1.8.5 では plugin に渡す plugin_options も指定できるようになったと 説明している部分です (sudoers.5 にもそれに対応する増補部分がありますが、 そちらは小手先の対処では足らず、1.8.5 を訳すよりないので、今は取り上げ ません)。 1.8.4: ... Any additional parameters after the path are ignored. 1.8.5: ... Any additional parameters after the path are passed as arguments to the plugin's open function. そこで、1.8.5 のマニュアルを訳すまでは、sudo.8 の「プラグイン」 セクションの訳注を増やすことで、お茶を濁そうと思っています (それで当分は用が足りるのではないか)。具体的には、訳注をこんなふうに 変更します。 [訳注]: sudo-1.8.3 までは、キーワードに Plugin と Path しか使用できな かった。 sudo-1.8.4 以上では、上記書式にもあるように、Debug や Set で始 まる行も有効である。「デバッグ・フラグ」や 「セキュリティに関す る注意点」セクションも参照していただきたい。 また、sudo-1.8.5 以上では、path の後ろにパラメータを続けて書く ことで (複数個あるときは空白で区切る)、それをオプションとして プラグインに渡すことが可能になっている。たとえば、以下のように だ。 Plugin sudoers_policy sudoers.so sudoers_file=/etc/sudoers sudoers_uid=0 sudoers_gid=0 sudoers_mode=0440 実は、ここまでは前置きです。今回うかがおうとしているのは、1.8.5 の マニュアルにあった上記の実例を見て (sudoers.5 の "PLUGIN OPTIONS" に 書いてあった example です)、気がついてしまったことなのです。 Plugin 行の書式は (1.8.5 流に書くと)、 Plugin plugin_name plugin_path plugin_options ... ですが、上記の例では plugin_name を sudoers_policy と書いています。 ところが、1.8.4 でも 1.8.5 でも、sudo.8 の "PLUGINS" セクションにある 実例では、 Plugin policy_plugin sudoers.so Plugin io_plugin sudoers.so となっているのです。plugin_name は policy_plugin なのか、sudoers_policy なのか? 実際に試してみました。結論を言うと、sudoers_policy が正しい。 policy_plugin ではエラーになります。 また、sudo-1.8.4p4/doc/sample.sudo.conf でもこうなっています。 Plugin sudoers_policy sudoers.so Plugin sudoers_io sudoers.so policy_plugin というのは、構造体のタグ名で、sudoers_policy は 構造体変数名なのです。 sudo.8 の "PLUGINS" セクションにある実例は、おそらく著者の勘違い なのでしょう。あるいは、わざとぼかした書き方をしているのかもしれません。 わたしとしては、実例中の policy_plugin を sudoers_policy に 書き換えてしまおうと思っています。 やっと質問にたどりつけました。こういう原文があります。 A Plugin line consists of the Plugin keyword, followed by the symbol_name and the path to the shared object containing the plugin. The symbol_name is the name of the struct policy_plugin or struct io_plugin in the plugin shared object. policy_plugin や io_plugin が構造体のタグ名であるとき、"the name of the struct policy_plugin" や "the name of the struct io_plugin" は どう訳すべきなのでしょうか。現在は、「構造体 policy_plugin の名前」など と訳していますが、「policy_plugin 構造体の名前」などの方がよいのではないか と思っています。普通は、どういう言い方をするのでしょうか。 -- 長南洋一