OSDN Git Service

sudo: update to version 1.8.17
authorcyoichi <cyoichi@users.sourceforge.jp>
Tue, 20 Sep 2016 02:51:38 +0000 (11:51 +0900)
committercyoichi <cyoichi@users.sourceforge.jp>
Tue, 20 Sep 2016 02:51:38 +0000 (11:51 +0900)
* sudo.conf.5 is added.

43 files changed:
manual/sudo/ChangeLog
manual/sudo/draft/man5/sudo.conf.5 [new file with mode: 0644]
manual/sudo/draft/man5/sudoers.5
manual/sudo/draft/man5/sudoers.ldap.5
manual/sudo/draft/man8/sudo.8
manual/sudo/draft/man8/sudoreplay.8
manual/sudo/draft/man8/visudo.8
manual/sudo/original/README
manual/sudo/original/README.JM
manual/sudo/original/man5/sudo.conf.5 [new file with mode: 0644]
manual/sudo/original/man5/sudo_plugin.5 [new file with mode: 0644]
manual/sudo/original/man5/sudoers.5
manual/sudo/original/man5/sudoers.ldap.5
manual/sudo/original/man8/sudo.8
manual/sudo/original/man8/sudo_plugin.8 [deleted file]
manual/sudo/original/man8/sudoreplay.8
manual/sudo/original/man8/visudo.8
manual/sudo/po4a/README.4po [new file with mode: 0644]
manual/sudo/po4a/sudo.8/add_ja/add0.txt [new file with mode: 0644]
manual/sudo/po4a/sudo.8/sudo.ja.po [new file with mode: 0644]
manual/sudo/po4a/sudo.conf.5/add_ja/add0.txt [new file with mode: 0644]
manual/sudo/po4a/sudo.conf.5/add_ja/add1.txt [new file with mode: 0644]
manual/sudo/po4a/sudo.conf.5/sudo.conf.ja.po [new file with mode: 0644]
manual/sudo/po4a/sudoers.5/add_ja/add0.txt [new file with mode: 0644]
manual/sudo/po4a/sudoers.5/add_ja/add1.txt [new file with mode: 0644]
manual/sudo/po4a/sudoers.5/add_ja/add2.txt [new file with mode: 0644]
manual/sudo/po4a/sudoers.5/sudoers.ja.po [new file with mode: 0644]
manual/sudo/po4a/sudoers.ldap.5/add_ja/add0.txt [new file with mode: 0644]
manual/sudo/po4a/sudoers.ldap.5/add_ja/add1.txt [new file with mode: 0644]
manual/sudo/po4a/sudoers.ldap.5/add_ja/add2.txt [new file with mode: 0644]
manual/sudo/po4a/sudoers.ldap.5/sudoers.ldap.ja.po [new file with mode: 0644]
manual/sudo/po4a/sudoreplay.8/add_ja/add0.txt [new file with mode: 0644]
manual/sudo/po4a/sudoreplay.8/add_ja/add1.txt [new file with mode: 0644]
manual/sudo/po4a/sudoreplay.8/sudoreplay.ja.po [new file with mode: 0644]
manual/sudo/po4a/visudo.8/add_ja/add0.txt [new file with mode: 0644]
manual/sudo/po4a/visudo.8/visudo.ja.po [new file with mode: 0644]
manual/sudo/release/man5/sudo.conf.5 [new file with mode: 0644]
manual/sudo/release/man5/sudoers.5
manual/sudo/release/man5/sudoers.ldap.5
manual/sudo/release/man8/sudo.8
manual/sudo/release/man8/sudoreplay.8
manual/sudo/release/man8/visudo.8
manual/sudo/translation_list

index 739e2df..174ccaa 100644 (file)
@@ -1,3 +1,9 @@
+Tue Sep 20 10:03:40 JST 2016  pushed by cyoichi
+
+       * update the translation_list (add sudo.conf.5)
+       * now we use po4a.
+       * create and update po4a,original,draft and release contents.
+
 Wed May  9 23:35:58 JST 2012  JM ML to Git Gateway
 
        * translation_list: [JM:00654]
diff --git a/manual/sudo/draft/man5/sudo.conf.5 b/manual/sudo/draft/man5/sudo.conf.5
new file mode 100644 (file)
index 0000000..9fb50ad
--- /dev/null
@@ -0,0 +1,534 @@
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo.conf.mdoc.in
+.\"
+.\" Copyright (c) 2010-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
+.\" Japanese Version Copyright (c) 2016 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\"
+.TH SUDO.CONF 5 "June 15, 2016" "Sudo 1.8.17" "File Formats Manual"
+.nh
+.if  n .ad l
+.SH 名前
+\fBsudo.conf\fP \- sudo フロントエンドの設定
+.SH 説明
+\fBsudo.conf\fP ファイルは、\fBsudo\fP フロントエンドの設定に使用される。
+セキュリティポリシー・プラグイン、入出力ロギング・プラグイン、
+デバッグ・フラグの指定をはじめ、
+プラグインが何かにはかかわりののない (プログラムやライブラリの) パス名や、
+\fBsudo\fP フロントエンドのその他の設定も、ここで指定することができる。
+.IP "[\fB訳注\fP]:" 8
+sudoers ファイルが、誰が何を実行できるかなどの 
+\fBsudoers\fP セキュリティポリシーの設定に使用されるのに対して、
+sudo.conf ファイルは、
+\fBsudo\fP コマンドが使用するセキュリティポリシー・プラグインを特定したり、
+どんなデバッグ情報を記録するかを指定したりするなど、\fBsudo\fP フロントエンド、
+すなわち \fBsudo\fP コマンドそのものの動作の設定に使用される。
+.PP
+\fBsudo.conf\fP では、次の命令 (directive) が使用できる。各命令については、
+以下で詳しく説明する。
+.TP  10n
+Plugin
+セキュリティポリシー・プラグインや入出力ロギング・プラグインを指定する
+.TP  10n
+Path
+プラグインが何かにはかかわりのない (プログラムやライブラリの) パス
+.TP  10n
+Set
+\fIdisable_coredump\fP や \fIgroup_source\fP のようなフロントエンドの設定
+.TP  10n
+Debug
+\fBsudo\fP, \fBsudoreplay\fP, \fBvisudo\fP、及び \fBsudoers\fP
+プラグインのデバッグに使用するデバッグ・フラグ
+.PP
+パウンド記号 ('#') は、コメントであることを示すために使用される。
+コメントを示す記号とそれに続くテキストは、行末に至るまで無視される。
+.PP
+長い行は、行末にバックスラッシュ ('\e') を置くことで、継続することができる。
+行頭にあるホワイト・スペースは、行の継続を示す記号が使われている場合でも、
+行頭から取り除かれることに注意していただきたい。
+.PP
+コメント行以外でも、Plugin, Path, Debug, Set で始まっていない行は、無視される。
+エラーや警告メッセージを出すこともない。
+.PP
+\fBsudo.conf\fP ファイルの解析は、常に "C" ロケールで行われる。
+.SS プラグインの設定
+\fBsudo\fP はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサポートしている。
+従って、サードパーティは、\fBsudo\fP のフロントエンドとシームレスに協働するポリシー・プラグインや、
+入出力ロギング・プラグインを独自に開発して、配布することができる。
+プラグインは、\fBsudo.conf\fP の記述に基づいて、動的にロードされる。
+.PP
+Plugin 行は、キーワード Plugin に始まり、\fIsymbol_name\fP と \fIpath\fP が続く。
+\fIpath\fP は、プラグインを含む動的共有オブジェクトへのパスである。
+\fIsymbol_name\fP は、プラグインに含まれる policy_plugin 構造体や
+io_plugin 構造体のシンボル名である。\fIpath\fP は絶対パスでも相対パスでもよい。
+相対パスの場合は、Path 命令の \fIplugin_dir\fP で指定したディレクトリを基点とする相対パスであり、
+デフォルトの基点は \fI/usr/local/libexec/sudo\fP である。すなわち、
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+.RE
+.fi
+.PP
+は、次のものと同じだということだ。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so
+.RE
+.fi
+.PP
+プラグインが動的な共有オブジェクトとしてインストールされているのではなく、
+\fBsudo\fP のバイナリに静的に組み込まれている場合は、
+\fIpath\fP にディレクトリまで指定してはいけない。
+ファイルシステム中に実際に存在するわけではないからだ。
+すなわち、こんなふうに指定する。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+.RE
+.fi
+.PP
+\fBsudo\fP 1.8.5 以降では、\fIpath\fP の後ろにパラメータを付けると、それは、
+プラグインの \fIopen\fP 関数に引き数として渡されるようになっている。たとえば、
+コンパイル時に指定した sudoers ファイルのデフォルトのモードを変更するには、
+次のようにする。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0440
+.RE
+.fi
+.PP
+使用できる引き数のリストについては、sudoers(5) のマニュアルをご覧いただきたい。
+.PP
+一つの動的な共有オブジェクトが、
+それぞれ違ったシンボル名を持つ複数のプラグインを含んでいても構わない。
+共有オブジェクト・ファイルは、uid 0 の所有でなければならず、
+また、所有者のみ書き込み可能でなければならない。
+同時に複数のポリシーがあると、曖昧さが生じるので、
+ポリシー・プラグインは一つしか指定できない。
+この制限は 入出力プラグインには当てはまらない。
+.PP
+\fBsudo.conf\fP ファイルが存在しない場合や、存在しても Plugin 行を含まない場合は、
+デフォルトのセキュリティポリシーとして \fBsudoers\fP プラグインが使用されることになる。
+入出力ロギングにも (ポリシーによって有効になっていれば)、
+\fBsudoers\fP プラグインが使用される。これは次の記述と同じことである。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+.RE
+.fi
+.PP
+\fBsudo\fP プラグインの仕組みについてもっと詳しい情報が必要なら、
+sudo_plugin(5) のマニュアルをご覧になっていただきたい。
+.SS パスの設定
+Path 行は、キーワード Path に始まり、設定するパスの名称とその値が続く。
+たとえば、次のようにだ。
+.nf
+.sp
+.RS 6n
+Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+Path askpass /usr/X11R6/bin/ssh\-askpass
+.RE
+.fi
+.PP
+パス名が (訳注: パスの名称ではなく、パスの値が) 指定されていない場合は、
+その設定に依存する機能を無効化することになる。
+パス設定の無効化をサポートしているのは、バージョン 1.8.16 以上の \fBsudo\fP だけである。
+.PP
+以下に挙げるような、
+プラグインが何かにはかかわりのない (プログラムやライブラリの) パスを
+\fI/etc/sudo.conf\fP で設定することができる。
+.TP  10n
+askpass
+端末が利用できないときに、ユーザのパスワードを読み込むのに使用するヘルパー・プログラムの絶対パス。
+たとえば、\fBsudo\fP がグラフィカルな (つまり、テキストベースではない)
+アプリケーションから実行される場合がこれに当たる。
+\fIaskpass\fP で指定されたプログラムは、自分に渡された引き数をプロンプトとして表示し、
+ユーザのパスワードを標準出力に書き出すべきである。\fIaskpass\fP の値は、
+環境変数 SUDO_ASKPASS によって上書きすることができる。
+.TP  10n
+noexec
+ライブラリ関数 \fBexecl\fP(), \fBexecle\fP(), \fBexeclp\fP(), \fBexect\fP(), \fBexecv\fP(),
+\fBexecve\fP(), \fBexecvP\fP(), \fBexecvp\fP(), \fBexecvpe\fP(), \fBfexecve\fP(),
+\fBpopen\fP(), \fBposix_spawn\fP(), \fBposix_spawnp\fP(), \fBsystem\fP() のダミー版
+(単にエラーを返すだけの関数) が入っている共有ライブラリの絶対パス。
+これは LD_PRELOAD やそれに相当するものをサポートするシステムで
+\fInoexec\fP 機能を実現するために使用される。デフォルトの値は
+\fI/usr/local/libexec/sudo/sudo_noexec.so\fP である。
+.TP  10n
+plugin_dir
+絶対パスで指定されていないプラグインを捜すときに使用されるデフォルトのディレクトリ。
+デフォルトの値は \fI/usr/local/libexec/sudo\fP である
+.TP  10n
+sesh
+\fBsesh\fP バイナリの絶対パス。この設定は、\fBsudo\fP が SELinux
+サポートを有効にしてビルドされたときにのみ、使用される。
+デフォルトの値は \fI/usr/local/libexec/sudo/sesh\fP である。
+.SS その他の設定
+\fBsudo.conf\fP ファイルでは、以下に挙げるフロントエンドの設定も行うことができる。
+.TP  10n
+disable_coredump
+デフォルトでは、セキュリティ上問題になるかもしれない情報を漏洩しないように、
+\fBsudo\fP 自体のコアダンプは無効になっている。
+\fBsudo\fP そのもののクラッシュをデバッグするためにコアダンプを有効に戻したいならば、
+次のように、\fBsudo.conf\fP で "disable_coredump" を false にすればよい。
+.nf
+.sp
+.RS 16n
+Set disable_coredump false
+.RE
+.fi
+.RS 10n
+.sp
+最近のオペレーティング・システムでは、どのシステムでも、
+\fBsudo\fP のような setuid プロセスのコアダンプについて各種の制限を設けているので、
+このオプションを有効にしても、セキュリティが弱体化することはない。
+\fBsudo\fP のコアファイルを実際に得るためには、
+たぶん setuid プロセスに対するコアダンプを有効にする必要があるだろう。
+BSD や Linux のシステムでは、それは sysctl コマンドで行われる。
+Solaris では、coreadm コマンドがコアダンプの動作設定に使用される。
+.sp
+この設定は、バージョン 1.8.4 以降の \fBsudo\fP でしか使用できない。
+.RE
+.TP  10n
+group_source
+\fBsudo\fP は、起動したユーザが所属するグループのリストをポリシー・プラグインと
+入出力プラグインに引き渡す。ほとんどのシステムでは、
+一人のユーザが同時に所属することのできるグループの数に上限がある (NFS
+との互換性のために、たいていは 16)。システムに getconf(1)
+ユーティリティ・コマンドが存在するなら、
+.RS 16n
+getconf NGROUPS_MAX
+.RE
+.RS 10n
+を実行すれば、グループの最大数がわかる。
+.sp
+しかしながら、ユーザが上限を越える数のグループのメンバーになることも可能である \-\-
+上限を越えた分は、そのユーザについてカーネルが返すグループのリストに含まれないだけのことだ。
+バージョン 1.8.7 以降の \fBsudo\fP では、
+ユーザについてカーネルが返すグループのリストが所属グループの最大数に達しているときは、
+\fBsudo\fP はグループ・データベースを直接調べて、グループのリストを決定するようになっている。
+そうすることによって、ユーザが所属グループの最大数よりも多くのグループのメンバーであるときも、
+セキュリティポリシーがグループ名によるマッチングを行うことができるようにしているのである。
+.sp
+\fIgroup_source\fP の設定によって、管理者がこのデフォルトの動作を変更することができる。
+\fIgroup_source\fP に対して使用できる値は以下のものである。
+.TP  10n
+static
+カーネルが返す static なグループ・リストを使用する。
+グループ・リストをこの方法で取得するのは迅速だが、上で述べた上限を課されることになる。
+この方法が "static (静的)" だというのは、ユーザがログインした後で行った、
+グループ・データベースに対する変更を反映しないからである。
+これは、\fBsudo\fP 1.8.7 以前のデフォルトの動作だった。
+.TP  10n
+dynamic
+常にグループ・データベースに問い合わせる。この方法が "dynamic (動的)"
+だというのは、ユーザがログインした後でグループ・データベースに行った変更が、
+グループのリストに反映するからである。システムによっては、
+グループ・データベースにユーザが所属するすべてのグループを問い合わせると、
+非常に時間がかかることがある。
+ネットワーク・ベースのグループ・データベースに問い合わせる場合などがそうだ。
+もっとも、たいていのオペレーティング・システムは、
+そうした問い合わせを効率的に行う方法を用意している。現在のところ、
+\fBsudo\fP は、AIX, BSD, HP\-UX, Linux, Solaris
+で効率的なグループの問い合わせをサポートしている。
+.TP  10n
+adaptive
+カーネルが返す static なグループのリストが、所属グループの最大数に達しているときにのみ、
+グループ・データベースに問い合わせる。これが \fBsudo\fP 1.8.7 以降のデフォルトの動作である。
+.PP
+たとえば、\fBsudo\fP が、ユーザについてカーネルが返す static
+なグループのリストのみを使うようにしたかったら、以下のように指定する。
+.nf
+.sp
+.RS 16n
+Set group_source static
+.RE
+.fi
+.sp
+この設定は、バージョン 1.8.7 以降の \fBsudo\fP でしか使用できない。
+.RE
+.TP  10n
+max_groups
+グループ・データベースから取得するユーザの所属グループの最大数。
+1 未満の値は無視されることになる。この設定が使用されるのは、
+グループ・データベースに直接問い合わせるときだけである。
+グループのリストを入れることになっている配列が十分な大きさを持っていない場合にも、
+それを検出できないシステムが存在する。
+この設定は、そうしたシステムで使用することを目的にしている。
+デフォルトでは、\fBsudo\fP はシステムが規定しているグループの最大数の (上記参照)
+4 倍の配列を割り当て、グループ・データベースへの問い合わせが失敗した場合は、
+その数をさらに倍にして再実行することになっている。しかしながら、
+システムの中には、配列に納まる数のグループを返すだけで、
+スペースが不足していてもエラーを知らせないものがあるのだ。
+.sp
+この設定は、バージョン 1.8.7 以降の \fBsudo\fP でしか使用できない。
+.TP  10n
+probe_interfaces
+デフォルトでは、\fBsudo\fP はシステムのネットワーク・インターフェースを調べて、
+有効になっている各インターフェースの IP アドレスをポリシー・プラグインに伝える。
+そのため、プラグインは、DNS に問い合わせるまでもなく、
+ルールを適用するかどうかを IP アドレスに基づいて決めることができるわけだ。
+Linux のシステムで多数のバーチャル・インターフェースを使用している場合は、
+この作業に無視できない時間がかかるかもしれない。
+IP アドレスに基づいたルールのマッチングが必要ないならば、
+ネットワーク・インターフェースの検査を次のようにして無効にすることができる。
+.nf
+.sp
+.RS 16n
+Set probe_interfaces false
+.RE
+.fi
+.RS 10n
+.sp
+この設定は、バージョン 1.8.10 以降の \fBsudo\fP でしか使用できない。
+.RE
+.SS デバッグ・フラグ
+バージョン 1.8.4 以上の \fBsudo\fP は、デバッグのための柔軟な枠組みに対応しており、
+問題が生じたときに、\fBsudo\fP の内部で何が起きているかを突き止めるために、
+それを利用することができる。
+.PP
+デバッグ行の構成は、Debug というキーワードに始まり、
+デバッグ対象 (\fBsudo\fP, \fBvisudo\fP, \fBsudoreplay\fP, \fBsudoers\fP)
+のプログラム名、またはプラグイン名と、デバッグファイル名がそれに続き、
+最後にコンマで区切ったデバッグ・フラグのリストが来るという形になっている。
+デバッグ・フラグのシンタクスは、\fBsudo\fP と \fBsudoers\fP プラグインでは、
+\fIsubsystem\fP@\fIpriority\fP という書式を用いるが、コンマ ('\&,')
+を含まないかぎり、別の書式を使用するプラグインがあっても構わない。
+.PP
+一例を挙げよう。
+.nf
+.sp
+.RS 6n
+Debug sudo /var/log/sudo_debug all@warn,plugin@info
+.RE
+.fi
+.PP
+上記のように指定すると、\fIwarn\fP レベル以上のすべてのデバッグ情報に加えて、
+プラグイン・サブシステムについては、\fIinfo\fP レベル以上の情報もログに記録することになる。
+.PP
+\fBsudo\fP 1.8.12 以来、一つのプログラムについて複数の
+Debug 行が指定できるようになっている。
+\fBsudo\fP のそれ以前のバージョンでは、1 プログラムにつき
+1 行の Debug 行しかサポートしていなかった。\fBsudo\fP 1.8.12 からは、
+プラグイン独自の Debug 行もサポートされるようになり、そうした行のマッチングは、
+ロードされているプラグインのベースネーム (たとえば、sudoers.so)、
+またはプラグインの絶対パス名によって行われる (訳注: 言い換えれば、
+プラグイン独自の Debug 行では、プログラム名/プラグイン名の位置に
+Plugin 行における \fIpath\fP の部分を指定するということだろう)。以前のバージョンでは、
+\fBsudoers\fP プラグインは、\fBsudo\fP フロントエンドと同じ
+Debug 行を共有しており、別の設定をすることができなかった。
+.PP
+次の priority (重大度) が使用できる。深刻なものから挙げると、
+\fIcrit\fP, \fIerr\fP, \fIwarn\fP, \fInotice\fP, \fIdiag\fP, \fIinfo\fP, \fItrace\fP, \fIdebug\fP
+である。
+ある priority を指定すると、それよりも深刻なすべての priority も指定したことになる。
+たとえば、\fInotice\fP という priority を指定すれば、
+\fInotice\fP レベル以上のデバッグ情報がログに記録されるわけである。
+.PP
+\fItrace\fP と \fIdebug\fP の priority では、ファンクション・コールのトレースも行われ、
+関数に入ったときと関数から戻ったときのログも記録される。たとえば、
+次のトレースは、src/sudo.c にある get_user_groups() 関数に対するものである。
+.nf
+.sp
+.RS 6n
+sudo[123] \-> get_user_groups @ src/sudo.c:385
+sudo[123] <\- get_user_groups @ src/sudo.c:429 := groups=10,0,5
+.RE
+.fi
+.PP
+関数に入ったときは、右矢印 '\->' で示され、プログラム名、プロセス ID、
+関数名、ソースファイルと行番号が記録される。
+関数から戻ったときは、左矢印 '<\-' で示され、同じ情報に加えて、
+返り値が記録される。上記の場合、返り値は文字列である。
+.PP
+\fBsudo\fP フロントエンドでは、以下のサブシステムが使用できる。
+.TP  12n
+\fIall\fP
+すべてのサブシステムにマッチする
+.TP  12n
+\fIargs\fP
+コマンドライン引き数の処理
+.TP  12n
+\fIconv\fP
+ユーザとのやりとり
+.TP  12n
+\fIedit\fP
+sudoedit
+.TP  12n
+\fIevent\fP
+event サブシステム
+.TP  12n
+\fIexec\fP
+コマンドの実行
+.TP  12n
+\fImain\fP
+\fBsudo\fP のメイン関数
+.TP  12n
+\fInetif\fP
+ネットワーク・インターフェースの取扱い
+.TP  12n
+\fIpcomm\fP
+プラグインとのやりとり
+.TP  12n
+\fIplugin\fP
+プラグインの設定
+.TP  12n
+\fIpty\fP
+擬似 tty 関連コード
+.TP  12n
+\fIselinux\fP
+SELInux 特有の取扱い
+.TP  12n
+\fIutil\fP
+ユーティリティ関数群
+.TP  12n
+\fIutmp\fP
+utmp の取扱い
+.PP
+sudoers(5) プラグインがサポートしているサブシステムには、これ以外のものもある。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+\fBsudo\fP フロントエンドの設定ファイル
+.SH 用例
+.nf
+.RS 0n
+#
+# Default /etc/sudo.conf file
+#
+# Format:
+#   Plugin plugin_name plugin_path plugin_options ...
+#   Path askpass /path/to/askpass
+#   Path noexec /path/to/sudo_noexec.so
+#   Debug sudo /var/log/sudo_debug all@warn
+#   Set disable_coredump true
+#
+# plugin_path が絶対パスでない場合は、/usr/local/libexec/sudo からの
+#   相対パスである。
+# plugin_name は、プラグイン中の、プラグインのインターフェース構造を
+#   含むグローバル・シンボルと同じものである。
+# plugin_options を指定するかしないかは、任意である。
+#
+# Plugin 行が存在しない場合、デフォルトの sudoers プラグインが
+# 使用される。
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+
+#
+# Sudo askpass:
+#
+# askpass ヘルパー・プログラムを指定すると、sudo の "\-A" オプションで
+# 使用できるように、グラフィカルなパスワード・プロンプトを用意する
+# ことができる。sudo は、自前の askpass プログラムを配布していないが、
+# たとえば、OpenSSH の askpass を使用することが可能だ。
+#
+# OpenSSH askpass を使用する。
+#Path askpass /usr/X11R6/bin/ssh\-askpass
+#
+# Gnome の OpenSSH askpass を使用する。
+#Path askpass /usr/libexec/openssh/gnome\-ssh\-askpass
+
+#
+# Sudo noexec:
+#
+# ライブラリ関数 execv(), execve(), fexecve() のダミー版 (単にエラー
+# を返すだけの関数) が入っている共有ライブラリのパス。この指定は、
+# <LD_PRELOAD> やそれに相当するものをサポートしているシステムで
+# "noexec" 機能を実現するために使用される。たいていの場合、
+# コンパイル時に組み込まれた値で十分であり、変更するのは、
+# sudo_noexec.so ファイルをリネームしたり、移動したりしたときのみに
+# するべきである。
+#
+#Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+
+#
+# Core dumps:
+#
+# sudo はデフォルトでは、自己を実行中のコアダンプを抑止している
+# (指定されたコマンドを実行するときに、コアダンプを有効にし直す
+# のだ)。sudo 自体の問題をデバッグするために、コアダンプを有効に
+# 戻したいならば、"disable_coredump" を false にすればよい。
+#
+#Set disable_coredump false
+
+#
+# User groups:
+#
+# sudo は、ユーザが属するグループのリストをポリシー・プラグインに
+# 引き渡す。ユーザの所属グループが、所属グループの最大数 (たいていは
+# 16) に達している場合は、sudo は、そのユーザが所属するグループを
+# すべて取得するため、直接グループ・データベースに問い合わせを行う。
+#
+# システムによっては、この動作は負担がかかることがあるので、設定に
+# よって変更できるようになっている。"group_source" で設定できる
+# 値には、三つのものがある。
+#   static   \- ユーザが属するグループのリストにカーネルが返したものを
+#              使用する。
+#   dynamic  \- グループのリストを知るために、グループ・データベースに
+#              問い合わせる。
+#   adaptive \- ユーザの所属グループが、所属グループの最大数より少ない
+#              ときは、カーネルの返すリストを使う。さもなければ、
+#              グループ・データベースに問い合わせる。
+#
+#Set group_source static
+.RE
+.fi
+.SH 関連項目
+sudoers(5), sudo(8), sudo_plugin(5)
+.SH 履歴
+sudo の簡単な履歴については、\fBsudo\fP の配布に含まれている
+HISTORY ファイルをご覧いただきたい。
+(https://www.sudo.ws/history.html)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://www.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
+商品性や特定目的への適合性についての黙示的な保証を含め、
+またそれのみに止まらず、これを否認する。詳細な全文については、
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index 37c9bed..0e76ac4 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoers.mdoc.in
+.\"
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\" 
 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
 .\"   and 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated Sat Oct  7 14:39:18 JST 2000
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002 by Yuichi SATO
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\" Modified Tue Nov 24 20:00:00 JST 2009 by Yoichi Chonan
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.nr SL 0
-.nr BA 0
-.nr LC 0
-.\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDOERS 5"
-.TH SUDOERS 5 "February  5, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDOERS 5 "January 20, 2016" "Sudo 1.8.17" "File Formats Manual"
 .nh
-.\"O .SH "NAME"
-.SH "名前"
-.\"O sudoers \- default sudo security policy module
-sudoers \- デフォルトの sudo 用セキュリティ・ポリシー・モジュール
-.\"O .SH "DESCRIPTION"
-.SH "説明"
-.IX Header "DESCRIPTION"
-.\"O The \fIsudoers\fR policy module determines a user's \fBsudo\fR privileges.
-.\"O It is the default \fBsudo\fR policy plugin.  The policy is driven by
-.\"O the \fI/etc/sudoers\fR file or, optionally in \s-1LDAP\s0.  The policy
-.\"O format is described in detail in the \*(L"\s-1SUDOERS\s0 \s-1FILE\s0 \s-1FORMAT\s0\*(R"
-.\"O section.  For information on storing \fIsudoers\fR policy information
-.\"O in \s-1LDAP\s0, please see \fIsudoers.ldap\fR\|(5).
-\&\fIsudoers\fR ポリシー・モジュールは、デフォルトの \fBsudo\fR
-用ポリシー・プラグインであり、このモジュールによってユーザがどんな
-\&\fBsudo\fR 権限を持っているかの判定が行われる。ポリシーの運用は
-\&\fI/etc/sudoers\fR ファイルによって行われるが、
-\&\s-1LDAP\s0 を使用することも可能である。ポリシーを設定するときの書式は、
+.if  n .ad l
+.SH 名前
+\fBsudoers\fP \- デフォルトの sudo 用セキュリティポリシー・プラグイン
+.SH 説明
+\fBsudoers\fP ポリシー・プラグインは、デフォルトの \fBsudo\fP 用ポリシー・プラグインであり、
+このポリシー・プラグインによってユーザがどんな \fBsudo\fP 権限を持つかの制御が行われる。
+ポリシーの運用は \fI/etc/sudoers\fP ファイルによって行われるが、
+LDAP を使用することも可能である。ポリシーを設定するときの書式は、
 「SUDOERS ファイルの書式」セクションで詳しく説明している。
-\&\fIsudoers\fR ポリシーの情報を \s-1LDAP\s0 に格納することについては、
-\&\fIsudoers.ldap\fR\|(5) をご覧になるとよい。
-.\"O .SS "Authentication and Logging"
-.SS "認証とロギング"
-.IX Subsection "Authentication and Logging"
-.\"O The \fIsudoers\fR security policy requires that most users authenticate
-.\"O themselves before they can use \fBsudo\fR.  A password is not required
-.\"O if the invoking user is root, if the target user is the same as the
-.\"O invoking user, or if the policy has disabled authentication for the
-.\"O user or command.  Unlike \fIsu\fR\|(1), when \fIsudoers\fR requires
-.\"O authentication, it validates the invoking user's credentials, not
-.\"O the target user's (or root's) credentials.  This can be changed via
-.\"O the \fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags, described later.
-.\"O .PP
-\&\fIsudoers\fR セキュリティ・ポリシーでは、ユーザはたいていの場合、
-\&\fBsudo\fR を使用できるようになる前に、本人であることを証明する必要がある。ただし、
-\&\fBsudo\fR を実行するユーザが root だったり、変身対象ユーザが
-\&\fBsudo\fR を実行するユーザと同一であったり、
-ポリシーによってそのユーザやコマンドに対する認証が免除されている場合は、
-パスワードは要求されない。\fIsu\fR\|(1) とは違って、
-\&\fIsudoers\fR  ポリシーによる認証でチェックされるのは、
-\&\fBsudo\fR を実行するユーザの認証情報 (訳注: 通常はパスワード)
-であって、変身対象ユーザの (あるいは、root の) 認証情報ではない。
-この動作は、後述する \fIrootpw\fR, \fItargetpw\fR, \fIrunaspw\fR
-フラグによって変更することができる。
-.PP
-.\"O If a user who is not listed in the policy tries to run a command
-.\"O via \fBsudo\fR, mail is sent to the proper authorities.  The address
-.\"O used for such mail is configurable via the \fImailto\fR Defaults entry
-.\"O (described later) and defaults to \f(CW\*(C`root\*(C'\fR.
-.\"O .PP
-ポリシーに登録されていないユーザが \fBsudo\fR
-を使ってコマンドを実行しようとすると、しかるべき権威者にメールが送付される。
-そうしたメールの宛先は、
-後述する「デフォルト設定」の \fImailto\fR によって設定できるが、
-デフォルトでは \f(CW\*(C`root\*(C'\fR になっている。
-.PP
-.\"O Note that mail will not be sent if an unauthorized user tries to
-.\"O run \fBsudo\fR with the \fB\-l\fR or \fB\-v\fR option.  This allows users to
-.\"O determine for themselves whether or not they are allowed to use
-.\"O \&\fBsudo\fR.
-.\"O .PP
-\&\fBsudo\fR を使用する権限のないユーザが、\fB\-l\fR や \fB\-v\fR
-オプションを付けて \fBsudo\fR の実行を試みても、
-メールは送付されないことに注意してほしい。これによって、
-自分が \fBsudo\fR を使用できるかどうか、
-ユーザが自分で判断できるようになっているのである。
-.PP
-.\"O If \fBsudo\fR is run by root and the \f(CW\*(C`SUDO_USER\*(C'\fR environment variable
-.\"O is set, the \fIsudoers\fR policy will use this value to determine who
-.\"O the actual user is.  This can be used by a user to log commands 
-.\"O through sudo even when a root shell has been invoked.  It also
-.\"O allows the \fB\-e\fR option to remain useful even when invoked via a
-.\"O sudo-run script or program.  Note, however, that the \fIsudoers\fR
-.\"O lookup is still done for root, not the user specified by \f(CW\*(C`SUDO_USER\*(C'\fR.
-.\"O .PP
-\&\fBsudo\fR が root によって実行されたとき、環境変数
-\&\f(CW\*(C`SUDO_USER\*(C'\fR が設定されていると、
-\&\fIsudoers\fR ポリシーは実際のユーザが誰かを判定するのに、
-その値を使用する。ユーザとしては、この動作を利用することで、
-すでに root シェルが起動されている場合でも、
-自分が \fBsudo\fR を介して実行したコマンドのログを取ることができる。
-また、この動作のおかげで、
-\&\fBsudo\fR で実行したスクリプトやプログラムから呼び出される場合でさえ、
-\&\fB\-e\fR オプションが役に立つものになっている。とは言え、そうした場合でも、
-\&\fIsudoers\fR の参照はやはり root に対してなされるのであって、
-\&\f(CW\*(C`SUDO_USER\*(C'\fR が指定しているユーザに対してではないことに気をつけてほしい。
-.PP
-.\"O \&\fIsudoers\fR uses time stamp files for credential caching.  Once a
-.\"O user has been authenticated, a time stamp is updated and the user
-.\"O may then use sudo without a password for a short period of time
-.\"O (\f(CW\*(C`5\*(C'\fR minutes unless overridden by the \fItimeout\fR option.
-.\"O By default, \fIsudoers\fR uses a tty-based time stamp which means that
-.\"O there is a separate time stamp for each of a user's login sessions.
-.\"O The \fItty_tickets\fR option can be disabled to force the use of a
-.\"O single time stamp for all of a user's sessions.
-.\"O .PP
-\&\fIsudoers\fR は認証情報の一時保存 (credential caching) のために
-タイムスタンプ・ファイルを使用する。ユーザの認証が済むと、
-タイムスタンプが更新され、ユーザはしばらくの間 (\fItimeout\fR
-オプションによって変更されていなければ、\f(CW\*(C`5\*(C'\fR 分間)
-パスワードなしで \fBsudo\fR を使うことができる。デフォルトでは、
-\&\fIsudoers\fR は tty ごとのタイムスタンプを使用する。すなわち、
-ユーザの各ログイン・セッションごとに別のタイムスタンプが存在するわけだ。
-\&\fItty_tickets\fR オプションを無効にすれば、
-あるユーザのすべてのセッションに対して、
-単一のタイムスタンプの使用を強制することができる。
+\fBsudoers\fP ポリシーの情報を LDAP に格納することについては、
+sudoers.ldap(5) をご覧いただきたい。
+.SS "sudoers ポリシー・プラグインを使うための sudo.conf の設定"
+\fBsudo\fP は sudo.conf(5) ファイルを参照して、
+どのポリシー・プラグインと入出力ロギング・プラグインをロードするかを決める。
+sudo.conf(5) ファイルが存在しない場合や、存在しても Plugin 行を含まない場合は、
+\fBsudoers\fP プラグインがポリシーの決定や 入出力ロギングに使用されることになる。
+\fBsudoers\fP プラグインを使用するように明示的に設定するには、
+sudo.conf(5) に次のよう書き込めばよい。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+.RE
+.fi
 .PP
-.\"O \&\fIsudoers\fR can log both successful and unsuccessful attempts (as well
-.\"O as errors) to \fIsyslog\fR\|(3), a log file, or both.  By default, \fIsudoers\fR
-.\"O will log via \fIsyslog\fR\|(3) but this is changeable via the \fIsyslog\fR
-.\"O and \fIlogfile\fR Defaults settings.
-.\"O .PP
-\&\fIsudoers\fR は \fBsudo\fR の実行が成功したときも失敗したときも、
-その事実を (エラー内容とともに)  \fIsyslog\fR\|(3) や 独自のログファイル、
-あるいはその両方に記録することができる。\fIsudoers\fR はデフォルトでは、
-\&\fIsyslog\fR\|(3) 経由でログを記録することになっているが、
-この動作はデフォルト設定の \fIsyslog\fR と \fIlogfile\fR
-を使って変更することが可能だ。
-.PP
-.\"O \&\fIsudoers\fR also supports logging a command's input and output
-.\"O streams.  I/O logging is not on by default but can be enabled using
-.\"O the \fIlog_input\fR and \fIlog_output\fR Defaults flags as well as the
-.\"O \&\f(CW\*(C`LOG_INPUT\*(C'\fR and \f(CW\*(C`LOG_OUTPUT\*(C'\fR command tags.
-\&\fIsudoers\fR はコマンドの入出力ストリームのロギングもサポートしている。
-入出力ロギングは、デフォルトでは ON になっていないが、デフォルト設定の
-\&\fIlog_input\fR や \fIlog_output\fR フラグを使って有効にすることができる。
-コマンド・タグの \f(CW\*(C`LOG_INPUT\*(C'\fR や \f(CW\*(C`LOG_OUTPUT\*(C'\fR
-を使って有効にすることも可能だ。
-.\"O .SS "Command Environment"
-.SS "コマンド環境"
-.IX Subsection "Command Environment"
-.\"O Since environment variables can influence program behavior, \fIsudoers\fR
-.\"O provides a means to restrict which variables from the user's
-.\"O environment are inherited by the command to be run.  There are two
-.\"O distinct ways \fIsudoers\fR can deal with environment variables.
-.\"O .PP
-環境変数はプログラムの動作に影響を与えることがあるので、\fIsudoers\fR は、
+\fBsudo\fP 1.8.5 以来、\fBsudoers\fP プラグインに対する任意の引き数を
+sudo.conf(5) で指定することが可能になっている。
+そうした引き数が存在する場合は、プラグインのパスの後ろに続けることになる
+(すなわち、\fIsudoers.so\fP の後ろだ)。
+引き数がいくつもあるときは、ホワイトスペースで区切って指定すればよい。
+一例を挙げる。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0400
+.RE
+.fi
+.PP
+以下のプラグインに対する引き数が使用できる。
+.TP  10n
+ldap_conf=pathname
+\fIldap_conf\fP 引き数を使用すると、
+\fIldap_conf\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+ldap_secret=pathname
+\fIldap_secret\fP 引き数を使用すると、
+\fIldap_secret\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+sudoers_file=pathname
+\fIsudoers_file\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+sudoers_uid=uid
+\fIsudoers_uid\fP 引き数を使用すると、
+sudoers ファイルの所有者をデフォルトのものから変更することができる。
+指定には、ユーザ ID 番号を使うべきである。
+.TP  10n
+sudoers_gid=gid
+\fIsudoers_gid\fP 引き数を使用すると、
+sudoers ファイルのグループをデフォルトのものから変更することができる。
+指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。
+.TP  10n
+sudoers_mode=mode
+\fIsudoers_mode\fP 引き数を使用すると、
+sudoers ファイルのファイル・モードをデフォルトのものから変更することができる。
+指定には、8 進数の値を使うべきである。
+.PP
+sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
+sudo.conf(5) のマニュアルをご覧になっていただきたい。
+.SS ユーザの認証
+\fBsudoers\fP セキュリティポリシーでは、ユーザはたいていの場合、
+本人であることを証明してからでなければ。\fBsudo\fP を使用できない。ただし、
+\fBsudo\fP の実行者が root だったり、変身対象ユーザが \fBsudo\fP の実行者と同一であったり、
+ポリシーがその実行者やコマンドに対して認証を免除している場合は、パスワードが要求されることはない。
+su(1) とは違って、\fBsudoers\fP ポリシーが認証に当たってチェックするのは、
+\fBsudo\fP を実行するユーザの認証情報 (訳注: 通常はパスワード) であって、
+変身対象ユーザの (あるいは、root の) 認証情報ではない。この動作は、後述する
+\fIrootpw\fP, \fItargetpw\fP, \fIrunaspw\fP フラグによって変更することができる。
+.PP
+ポリシーに登録されていないユーザが \fBsudo\fP を使って、コマンドを実行しようとすると、
+しかるべき権威者にメールが送付される。そうしたメールの宛先は、
+後述する「デフォルト設定」の \fImailto\fP 行によって設定できるが、
+デフォルトでは root になっている。
+.PP
+\fBsudo\fP を使用する権限のないユーザが、\fB\-l\fP や \fB\-v\fP オプションを付けて
+\fBsudo\fP の実行を試みても、認証に失敗し、しかも \fImail_always\fP または
+\fImail_badpass\fP フラグが有効になっている場合を除いて、
+メールは送付されないことに注意していただきたい。
+そうした動作になっていることで、ユーザとしては、
+自分が \fBsudo\fP を使用できるかどうか、自分で判断できるわけである。
+\fBsudo\fP 実行の試みは (成功、失敗にかかわらず)、すべてログに記録される。
+メールが送られるかどうかには関係がない。
+.PP
+\fBsudo\fP が root によって実行されたとき、環境変数 SUDO_USER が設定されていると、
+\fBsudoers\fP ポリシーは、実際のユーザが誰かを判断するのに、その値を使用することになる。
+ユーザとしては、この動作を利用することで、すでにルートシェルを起動している場合でも、
+自分が \fBsudo\fP を介して実行したコマンドのログを取ることができる。
+また、この動作のおかげで、\fBsudo\fP で実行するスクリプトやプログラムから呼び出される場合でさえ、
+\fB\-e\fP オプションが役に立つものになっている。ただし、そうした場合でも、
+\fIsudoers\fP ファイルの参照はやはり root に対してなされるのであって、
+SUDO_USER が指定しているユーザに対してではないことに注意していただきたい。
+.PP
+\fBsudoers\fP は、認証情報の一時保存 (credential caching) にユーザごとのタイムスタンプ・ファイルを使用する。
+ユーザの認証が済むと、記録が書き込まれるが、それには、認証に使用された uid、
+端末セッション ID、タイムスタンプ (利用できるならば、単調増加時計 (monotonic clock)
+を使用する) が含まれている。ユーザは、その後しばらくの間 (\fItimestamp_timeout\fP
+オプションによって変更されていなければ、5 分間)、パスワードなしで \fBsudo\fP を使うことができる。
+\fBsudoers\fP はデフォルトでは、各 tty ごとに別の記録を使用する。
+そこで、認証は、ユーザのログイン・セッションごとに独立して行われることになる。
+\fItty_tickets\fP オプションを無効にすれば、あるユーザのすべてのセッションに対して、
+単一のタイムスタンプの使用を強制することができる。
+.SS ロギング
+\fBsudoers\fP は \fBsudo\fP の実行が成功したときも失敗したときも、
+その旨を (エラーの内容とともに) syslog(3) や独自のファイル、
+あるいはその両方に記録することができる。\fBsudoers\fP はデフォルトでは、
+syslog(3) 経由でログを記録することになっているが、この動作はデフォルト設定の
+\fIsyslog\fP と \fIlogfile\fP を使って変更することができる。
+ログファイルの書式については、「ログの書式」セクションの説明をご覧いただきたい。
+.PP
+また \fBsudoers\fP は、擬似 tty でコマンドを実行して、
+すべての入力や出力をログに記録することもできる。
+標準入力、標準出力、標準エラーを、それが端末と結びついていない場合でも、
+ログに記録することができるのだ。入出力ロギングは、デフォルトでは ON になっていないが、
+\fIlog_input\fP や \fIlog_output\fP オプションを使って有効にすることができる。
+コマンド・タグの LOG_INPUT や LOG_OUTPUT を使用して有効にすることも可能だ。
+入出力ログファイルがどんなふうに格納されるかについては、
+「入出力ログファイル」セクションに詳細な説明がある。
+.SS コマンド環境
+環境変数はプログラムの動作に影響を与えることがあるので、\fBsudoers\fP は、
 実行されるコマンドがユーザの環境からどんな変数を引き継ぐかについて、
-制御する手段を用意している。すなわち、\fIsudoers\fR は二つの異なった方法で、
+制御する手段を用意している。すなわち、\fBsudoers\fP は二つの異なった方法で、
 環境変数を処理することができる。
 .PP
-.\"O By default, the \fIenv_reset\fR option is enabled.  This causes commands
-.\"O to be executed with a minimal environment containing the \f(CW\*(C`TERM\*(C'\fR,
-.\"O \&\f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR, \f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR, \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR
-.\"O and \f(CW\*(C`SUDO_*\*(C'\fR variables in addition to variables from the
-.\"O invoking process permitted by the \fIenv_check\fR and \fIenv_keep\fR
-.\"O options.  This is effectively a whitelist for environment variables.
-.\"O .PP
-デフォルトでは \fIenv_reset\fR オプションが有効になっている。
-この場合、コマンドは最小限の環境で実行されることになるが、その環境には、
-\&\f(CW\*(C`TERM\*(C'\fR, \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR,
-\&\f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR, \f(CW\*(C`LOGNAME\*(C'\fR,
-\&\f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR、
-及び \f(CW\*(C`SUDO_*\*(C'\fR という変数、
-それに、呼び出し側のプロセスから来た変数で、\fIenv_check\fR や
-\&\fIenv_keep\fR オプションによって許可されたものが含まれている。
-これは、言わば、環境変数のホワイトリストである。
-.PP
-.\"O If, however, the \fIenv_reset\fR option is disabled, any variables not
-.\"O explicitly denied by the \fIenv_check\fR and \fIenv_delete\fR options are
-.\"O inherited from the invoking process.  In this case, \fIenv_check\fR
-.\"O and \fIenv_delete\fR behave like a blacklist.  Since it is not possible
-.\"O to blacklist all potentially dangerous environment variables, use
-.\"O of the default \fIenv_reset\fR behavior is encouraged.
-.\"O .PP
-これに対して、\fIenv_reset\fR オプションが無効になっている場合は、
-\&\fIenv_check\fR や \fIenv_delete\fR オプションによって明示的に拒否されていないかぎり、
-いかなる環境変数も呼び出し側のプロセスから継承される。この場合、
-\&\fIenv_check\fR や \fIenv_delete\fR はブラックリストのように振舞うわけだ。
-危険性のある環境変数のすべてをブラックリストに載せることは不可能なので、
-\&\fIenv_reset\fR を有効にしておくデフォルトの動作を採用することをお勧めする。
-.PP
-.\"O In all cases, environment variables with a value beginning with
-.\"O \&\f(CW\*(C`()\*(C'\fR are removed as they could be interpreted as \fBbash\fR functions.
-.\"O The list of environment variables that \fBsudo\fR allows or denies is
-.\"O contained in the output of \f(CW\*(C`sudo \-V\*(C'\fR when run as root.
-.\"O .PP
-どんな場合でも、値が \f(CW\*(C`()\*(C'\fR で始まる変数は除去されるが、
-それは \fBbash\fR の関数として解釈される恐れがあるからである。
-\&\fBsudo\fR が許可、または拒否する環境変数のリストは、
-\&\f(CW\*(C`sudo \-V\*(C'\fR を root の資格で実行したときの出力中に表示される。
-.PP
-.\"O Note that the dynamic linker on most operating systems will remove
-.\"O variables that can control dynamic linking from the environment of
-.\"O setuid executables, including \fBsudo\fR.  Depending on the operating 
-.\"O system this may include \f(CW\*(C`_RLD*\*(C'\fR, \f(CW\*(C`DYLD_*\*(C'\fR, \f(CW\*(C`LD_*\*(C'\fR, \f(CW\*(C`LDR_*\*(C'\fR,
-.\"O \&\f(CW\*(C`LIBPATH\*(C'\fR, \f(CW\*(C`SHLIB_PATH\*(C'\fR, and others.  These type of variables are
-.\"O removed from the environment before \fBsudo\fR even begins execution
-.\"O and, as such, it is not possible for \fBsudo\fR to preserve them.
-.\"O .PP
+デフォルトでは \fIenv_reset\fP オプションが有効になっている。
+この場合、コマンドは新しい、最小の環境で実行されることになる。
+ATX (及び PAM を使用していない Linux システム) では、\fI/etc/environment\fP
+ファイルの内容で環境が初期化される。新しい環境には、TERM, PATH,
+HOME, MAIL, SHELL, LOGNAME, USER, USERNAME, 及び SUDO_* という変数、
+それに、呼び出し側のプロセスから来た変数で、\fIenv_check\fP や \fIenv_keep\fP
+オプションによって許可されたものが含まれている。これは、言わば、
+環境変数のホワイトリストである。値が () で始まる環境変数は、
+変数名と値の両方が \fIenv_keep\fP や \fIenv_check\fP の指定にマッチしないかぎり、
+除去されるが、それは、\fBbash\fP シェルの古いバージョンでは関数と解釈されることになるからである。
+1.8.11 より前のバージョンでは、そうした変数は無条件で除去されていた。
+.PP
+これに対して、\fIenv_reset\fP オプションが無効になっている場合は、
+\fIenv_check\fP や \fIenv_delete\fP オプションによって明示的に拒否されていないかぎり、
+いかなる環境変数も呼び出し側のプロセスから継承される。
+この場合、\fIenv_check\fP や \fIenv_delete\fP は、ブラックリストのように振る舞うわけだ。
+値が () で始まる環境変数は、ブラックリストの一つにマッチしない場合でも、
+必ず除去される。危険性のある環境変数のすべてをブラックリストに載せることは不可能なので、
+\fIenv_reset\fP を有効にしておくデフォルトの動作を採用することをお勧めする。
+.PP
+デフォルトでは、環境変数のマッチは変数名によって行われる。
+しかしながら、マッチに使われるパターンに等号 ('=') が含まれる場合は、
+変数名と値の両方がマッチしなければならない。たとえば、旧式の
+(shellshock 問題以前の export 方法による)
+\fBbash\fP のシェル関数にマッチさせるならば、次のように指定すればよいだろう。
+.nf
+.sp
+.RS 4n
+env_keep += "my_func=()*"
+.RE
+.fi
+.PP
+旧式の \fBbash\fP のシェル関数は、デフォルトでは保存されないので、
+"=()*" という後続部分がなかったら、こうした環境変数はマッチしないことになる。
+.IP "[\fB訳注\fP]:" 8
+shellshock 以前の bash では、たとえば "my_func='() { ls \-F; }'"
+といったシェル変数を export することで、
+my_func という関数をサブシェルに渡すことができた。
+shellshock 以後の bash では、この方法による関数の継承はできなくなり、
+値が "() { ls \-F; }" である my_func という変数が、
+渡されるだけになっている。だから、
+sudoers ファイルの Defaults 行に上のように書いても、
+shellshock 以後の bash を使っているかぎり、
+my_func という環境変数が保存されるだけで、関数が渡されるわけではない。
+.PP
+\fBsudo\fP が許可、または拒否する環境変数すべてのリストは、"sudo \-V" を
+root の資格で実行したときの出力中に含まれている。このリストは、
+\fBsudo\fP が実行されるオペレーティングシステムによって異なることに気をつけていただきたい。
+.PP
+PAM をサポートしているシステムで、\fBpam_env\fP モジュールが
+\fBsudo\fP に対して有効になっていると、
+PAM の管理する環境にある変数が、環境にマージされることになるだろう。
+ただし、PAM 環境にある変数がユーザの環境にすでに存在している場合に、
+その値が上書きされることになるのは、
+その変数が \fBsudoers\fP によって保存されていないときだけである。
+すなわち、\fIenv_reset\fP が有効になっているときは、
+\fIenv_keep\fP のリストによって \fBsudo\fP を実行するユーザの環境から保存された変数が、
+PAM 環境にある変数より優先される。また、
+\fIenv_reset\fP が無効になっているときは、
+\fBsudo\fP を実行するユーザの環境にある変数が、
+\fIenv_delete\fP のリストのパターンにマッチしていないかぎり、
+PAM 環境にある変数よりも優先されるのである。
+.PP
 たいていのオペレーティングシステムのダイナミック・リンカは、
-ダイナミック・リンキングを制御する働きがある環境変数を、\fBsudo\fR もその一つである
-setuid プログラムの環境から除去するようになっていることに注意してほしい。
-オペレーティングシステムによって名前は様々だが、
-\&\f(CW\*(C`_RLD*\*(C'\fR, \f(CW\*(C`DYLD_*\*(C'\fR, \f(CW\*(C`LD_*\*(C'\fR, 
-\&\f(CW\*(C`LDR_*\*(C'\fR, \f(CW\*(C`LIBPATH\*(C'\fR,
-\&\f(CW\*(C`SHLIB_PATH\*(C'\fR などが、この範疇に含まれるだろう。
-こうした変数は、\fBsudo\fR の実行が始まるよりも前に、環境から除去されるので、
-\&\fBsudo\fR がそうした変数を保持することは不可能である。
-.PP
-.\"O As a special case, if \fBsudo\fR's \fB\-i\fR option (initial login) is
-.\"O specified, \fIsudoers\fR will initialize the environment regardless
-.\"O of the value of \fIenv_reset\fR.  The \fI\s-1DISPLAY\s0\fR, \fI\s-1PATH\s0\fR and \fI\s-1TERM\s0\fR
-.\"O variables remain unchanged; \fI\s-1HOME\s0\fR, \fI\s-1MAIL\s0\fR, \fI\s-1SHELL\s0\fR, \fI\s-1USER\s0\fR,
-.\"O and \fI\s-1LOGNAME\s0\fR are set based on the target user.  On Linux and \s-1AIX\s0
-.\"O systems the contents of \fI/etc/environment\fR are also included.  All
-.\"O other environment variables are removed.
-特例として、\fBsudo\fR に \fB\-i\fR オプション (initial login)
-が指定されている場合は、\fIsudoers\fR は \fIenv_reset\fR
-の有効・無効にかかわらず、環境を初期化する。
-環境変数 \fI\s-1DISPLAY\s0\fR, \fI\s-1PATH\s0\fR,
-\&\fI\s-1TERM\s0\fR は変更されないが、\fI\s-1HOME\s0\fR, \fI\s-1MAIL\s0\fR,
-\&\fI\s-1SHELL\s0\fR, \fI\s-1USER\s0\fR, \fI\s-1LOGNAME\s0\fR は、
-変身対象ユーザのそれにセットされるのである。Linux や \s-1AIX\s0 システムでは、
-\&\fI/etc/environment\fR の内容も取り込まれる。
+ダイナミック・リンキングを制御する働きがある環境変数を、
+\fBsudo\fP もその一つである setuid 実行ファイルの環境から除去するようになっていることに注意していただきたい。
+オペレーティングシステムによって名前は様々だが、_RLD*, DYLD_*, LD_*,
+LDR_*, LIBPATH, SHLIB_PATH などが、この範疇に含まれるだろう。
+そうした変数は、\fBsudo\fP の実行が始まるよりも前に、環境から除去されるので、
+\fBsudo\fP がそうした変数を保存することは不可能である。
+.PP
+特例として、\fBsudo\fP に \fB\-i\fP (initial login) オプションが指定されている場合は、
+\fBsudoers\fP は \fIenv_reset\fP の有効・無効にかかわらず、環境を初期化する。
+環境変数 DISPLAY, PATH, TERM は変更されないが、HOME, MAIL, SHELL, USER, LOGNAME
+は、変身対象ユーザのそれにセットされる。ATX (及び PAM を使用していない
+Linux システム) では、\fI/etc/environment\fP の内容も取り込まれる。
 それ以外の環境変数はすべて捨てられる。
-.\"O .PP
-.\"O Lastly, if the \fIenv_file\fR option is defined, any variables present
-.\"O in that file will be set to their specified values.
 .PP
-最後に。\fIenv_file\fR が設定されている場合は、
-そのファイルに記載されたいかなる変数も、そこで指定されている値にセットされることになる。
-.\"O .SH "SUDOERS FILE FORMAT"
+最後に、\fIenv_file\fP オプションが設定されている場合は、
+そのファイルに記載されたいかなる変数も、
+すでに存在している環境変数と衝突しないかぎり、
+そこで指定されている値にセットされることになる。
 .SH "SUDOERS ファイルの書式"
-.IX Header "SUDOERS FILE FORMAT"
-.\"O The \fIsudoers\fR file is composed of two types of entries: aliases
-.\"O (basically variables) and user specifications (which specify who
-.\"O may run what).
-.\"O .PP
-\&\fIsudoers\fR ファイルは二種類のエントリから構成されている。
-(要するに変数である) エイリアスと (誰が何を実行できるかを指定している)
-ユーザ設定だ。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1"
-訳者としては、「エイリアス、デフォルト設定、ユーザ設定の三種類の
-エントリから構成されている」と言った方が実態に合っているのではないかと思う。
-.PP
-.\"O When multiple entries match for a user, they are applied in order.
-.\"O Where there are multiple matches, the last match is used (which is
-.\"O not necessarily the most specific match).
-.\"O .PP
+\fIsudoers\fP ファイルは二種類のエントリから構成されている。
+(要するに変数である) エイリアスと (誰が何を実行できるかを指定している) ユーザ設定だ。
+(訳注: 訳者としては、「エイリアス、デフォルト設定、ユーザ設定の三種類のエントリから構成されている」と言った方が、
+現在の実態に合っているのではないかと思う。)
+.PP
 一人のユーザに複数のエントリがマッチするときは、順番に適用される。
 複数の指定がマッチしている箇所については、最後にマッチしたものが使用される
 (それが一番明示的なマッチだとはかぎらないが)。
 .PP
-.\"O The \fIsudoers\fR grammar will be described below in Extended Backus-Naur
-.\"O Form (\s-1EBNF\s0).  Don't despair if you don't know what \s-1EBNF\s0 is; it is
-.\"O fairly simple, and the definitions below are annotated.
-以下では \fIsudoers\fR の文法を拡張 Backus-Naur 記法 (\s-1EBNF\s0)
-を用いて記述する。\s-1EBNF\s0 がどんなものか御存じないからといって、
-あきらめないでいただきたい。わりと簡単なものだし、
-以下に出てくる定義には詳しい説明を付けておきますから。
-.\"O .SS "Quick guide to \s-1EBNF\s0"
-.SS "\s-1EBNF\s0 の基礎の基礎"
-.IX Subsection "Quick guide to EBNF"
-.\"O \&\s-1EBNF\s0 is a concise and exact way of describing the grammar of a language.
-.\"O Each \s-1EBNF\s0 definition is made up of \fIproduction rules\fR.  E.g.,
-.\"O .PP
-\&\s-1EBNF\s0 は言語の文法を記述する簡潔で厳密な方法である。
-\&\s-1EBNF\s0 の個々の定義は生成規則からできている。たとえば、
-.PP
-.Vb 1
-.\"O \& symbol ::= definition | alternate1 | alternate2 ...
-\& シンボル ::= 定義 | 別の定義 1 | 別の定義 2 ...
-.Ve
-.PP
-.\"O Each \fIproduction rule\fR references others and thus makes up a
-.\"O grammar for the language.  \s-1EBNF\s0 also contains the following
-.\"O operators, which many readers will recognize from regular
-.\"O expressions.  Do not, however, confuse them with \*(L"wildcard\*(R"
-.\"O characters, which have different meanings.
+以下では \fIsudoers\fP ファイルの文法を拡張 Backus\-Naur 記法 (EBNF) を用いて記述する。
+EBNF を御存じないからといって、あきらめないでいただきたい。
+わりと簡単なものだし、以下に出てくる定義には詳しい説明をつけておきますから。
+.SS "EBNF の基礎の基礎"
+EBNF は言語の文法を記述する簡潔で厳密な方法である。
+EBNF の個々の定義は生成規則からできている。たとえば、
+.PP
+シンボル ::= 定義 | 別の定義 1 | 別の定義 2 ...
+.PP
 個々の生成規則は、ほかの生成規則を参照し、そのようにして言語の文法を作り上げている。
-また \s-1EBNF\s0 には以下の演算子が含まれるが、
-正規表現で御存じの読者も多いだろう。
+また EBNF には以下の演算子が含まれるが、正規表現で御存じの読者も多いだろう。
 だが、いわゆる「ワイルドカード」文字と混同しないでいただきたい。
 あれは別の意味を持っている。
-.ie n .IP "\*(C`?\*(C'" 4
-.el .IP "\f(CW\*(C`?\*(C'\fR" 4
-.IX Item "?"
-.\"O Means that the preceding symbol (or group of symbols) is optional.
-.\"O That is, it may appear once or not at all.
+.TP  6n
+\&?
 直前のシンボル (または、シンボルのグループ) が、あってもなくてもよいことを意味する。
 すなわちそのシンボルは、1 回現れてもよいし、1 回も現れないでもよい。
-.ie n .IP "\*(C`*\*(C'" 4
-.el .IP "\f(CW\*(C`*\*(C'\fR" 4
-.IX Item "*"
-.\"O Means that the preceding symbol (or group of symbols) may appear
-.\"O zero or more times.
+.TP  6n
+*
 直前のシンボル (または、シンボルのグループ) が 0 回以上現れる。
-.ie n .IP "\*(C`+\*(C'" 4
-.el .IP "\f(CW\*(C`+\*(C'\fR" 4
-.IX Item "+"
-.\"O Means that the preceding symbol (or group of symbols) may appear
-.\"O one or more times.
-.\"O .PP
+.TP  6n
++
 直前のシンボル (または、シンボルのグループ) が 1 回以上現れる。
 .PP
-.\"O Parentheses may be used to group symbols together.  For clarity,
-.\"O we will use single quotes ('') to designate what is a verbatim character
-.\"O string (as opposed to a symbol name).
 丸カッコを使うと、複数のシンボルをグループにまとめることができる。
-なお混乱を避けるため、以下の定義で (シンボル名ではなく)
-文字どおりの文字列や記号を示す場合は、それをシングルクォート ('')
-で囲むことにする。
-.\"O .SS "Aliases"
-.SS "エイリアス"
-.IX Subsection "Aliases"
-.\"O There are four kinds of aliases: \f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR,
-.\"O \&\f(CW\*(C`Host_Alias\*(C'\fR and \f(CW\*(C`Cmnd_Alias\*(C'\fR.
-.\"O .PP
-エイリアスには四種類ある。\f(CW\*(C`User_Alias\*(C'\fR,
-\&\f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR,
-\&\f(CW\*(C`Cmnd_Alias\*(C'\fR である。
-.PP
-.Vb 4
-\& Alias ::= \*(AqUser_Alias\*(Aq  User_Alias (\*(Aq:\*(Aq User_Alias)* |
-\&           \*(AqRunas_Alias\*(Aq Runas_Alias (\*(Aq:\*(Aq Runas_Alias)* |
-\&           \*(AqHost_Alias\*(Aq  Host_Alias (\*(Aq:\*(Aq Host_Alias)* |
-\&           \*(AqCmnd_Alias\*(Aq  Cmnd_Alias (\*(Aq:\*(Aq Cmnd_Alias)*
-\&
-\& User_Alias ::= NAME \*(Aq=\*(Aq User_List
-\&
-\& Runas_Alias ::= NAME \*(Aq=\*(Aq Runas_List
-\&
-\& Host_Alias ::= NAME \*(Aq=\*(Aq Host_List
-\&
-\& Cmnd_Alias ::= NAME \*(Aq=\*(Aq Cmnd_List
-\&
-\& NAME ::= [A\-Z]([A\-Z][0\-9]_)*
-.Ve
-.PP
-.\"O Each \fIalias\fR definition is of the form
-.\"O .PP
+なお、混乱を避けるため、以下の定義では、それが (シンボル名ではなく)
+文字どおりの文字列や記号であることを示す場合には、シングルクォート
+(' ') で囲むことにする。
+.SS エイリアス
+エイリアスには四種類ある。User_Alias, Runas_Alias, Host_Alias,
+Cmnd_Alias である。
+.nf
+.sp
+.RS 0n
+Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |
+          'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
+          'Host_Alias'  Host_Alias (':' Host_Alias)* |
+          'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*
+
+User_Alias ::= NAME '=' User_List
+
+Runas_Alias ::= NAME '=' Runas_List
+
+Host_Alias ::= NAME '=' Host_List
+
+Cmnd_Alias ::= NAME '=' Cmnd_List
+
+NAME ::= [A\-Z]([A\-Z][0\-9]_)*
+.RE
+.fi
+.PP
 個々のエイリアスの定義は、次の形をとる。
+.nf
+.sp
+.RS 0n
+Alias_Type NAME = item1, item2, ...
+.RE
+.fi
 .PP
-.Vb 1
-\& Alias_Type NAME = item1, item2, ...
-.Ve
-.PP
-.\"O where \fIAlias_Type\fR is one of \f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR,
-.\"O or \f(CW\*(C`Cmnd_Alias\*(C'\fR.  A \f(CW\*(C`NAME\*(C'\fR is a string of uppercase letters, numbers,
-.\"O and underscore characters ('_').  A \f(CW\*(C`NAME\*(C'\fR \fBmust\fR start with an
-.\"O uppercase letter.  It is possible to put several alias definitions
-.\"O of the same type on a single line, joined by a colon (':').  E.g.,
-.\"O .PP
-上記において、\fIAlias_Type\fR は \f(CW\*(C`User_Alias\*(C'\fR,
-\&\f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR,
-\&\f(CW\*(C`Cmnd_Alias\*(C'\fR のうちの一つである。
-\&\f(CW\*(C`NAME\*(C'\fR はアルファベットの大文字、数字、
+上記において \fIAlias_Type\fP は、User_Alias, Runas_Alias, Host_Alias,
+Cmnd_Alias のうちの一つである。NAME は、アルファベットの大文字、数字、
 アンダースコア ('_') からなる文字列であるが、
-\&\fB先頭の文字は大文字\fRでなければならない。同じタイプのエイリアス定義を、
-コロンで (':') つないで、
-一行に複数書くこともできる。たとえば、
-.PP
-.Vb 1
-\& Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
-.Ve
-.PP
-.\"O The definitions of what constitutes a valid \fIalias\fR member follow.
-.\"O .PP
-以下では、エイリアスの有効な要素となるものを定義する。
-.PP
-.Vb 2
-\& User_List ::= User |
-\&               User \*(Aq,\*(Aq User_List
-\&
-\& User ::= \*(Aq!\*(Aq* user name |
-\&          \*(Aq!\*(Aq* #uid |
-\&          \*(Aq!\*(Aq* %group |
-\&          \*(Aq!\*(Aq* %#gid |
-\&          \*(Aq!\*(Aq* +netgroup |
-\&          \*(Aq!\*(Aq* %:nonunix_group |
-\&          \*(Aq!\*(Aq* %:#nonunix_gid |
-\&          \*(Aq!\*(Aq* User_Alias
-.Ve
-.PP
-.\"O A \f(CW\*(C`User_List\*(C'\fR is made up of one or more user names, user ids
-.\"O (prefixed with '#'), system group names and ids (prefixed with '%'
-.\"O and '%#' respectively), netgroups (prefixed with '+'), non-Unix
-.\"O group names and IDs (prefixed with '%:' and '%:#' respectively) and
-.\"O \&\f(CW\*(C`User_Alias\*(C'\fRes.  Each list item may be prefixed with zero or more
-.\"O \&'!' operators.  An odd number of '!' operators negate the value of
-.\"O the item; an even number just cancel each other out.
-.\"O .PP
-\&\f(CW\*(C`User_List\*(C'\fR を構成するのは、一個以上の次のものである。
-ユーザ名、ユーザ ID (接頭辞 '#' が付く)、システムグループ名やその ID
-(それぞれ、接頭辞 '%' と '%#' が付く)、ネットグループ名 (接頭辞 '+' が付く)、
-非 Unix グループ名やその ID (それぞれ、接頭辞 '%:' と '%:#' が付く)、
-それに \f(CW\*(C`User_Alias\*(C'\fR。
-リストの各項目の前には一個以上の '!' 演算子を付けてもよい。 
-奇数個の '!' はその項目の値を否定する。偶数個の場合は互い相殺されるだけだ。
+先頭の文字はアルファベットの大文字でなければならない。
+同じタイプのエイリアス定義を、コロンで (':') つないで、一行に複数書くこともできる。
+たとえば、
+.nf
+.sp
+.RS 0n
+Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
+.RE
+.fi
 .PP
-.\"O A \f(CW\*(C`user name\*(C'\fR, \f(CW\*(C`uid\*(C'\fR, \f(CW\*(C`group\*(C'\fR, \f(CW\*(C`gid\*(C'\fR, \f(CW\*(C`netgroup\*(C'\fR, \f(CW\*(C`nonunix_group\*(C'\fR
-.\"O or \f(CW\*(C`nonunix_gid\*(C'\fR may be enclosed in double quotes to avoid the
-.\"O need for escaping special characters.  Alternately, special characters
-.\"O may be specified in escaped hex mode, e.g. \ex20 for space.  When
-.\"O using double quotes, any prefix characters must be included inside
-.\"O the quotes.
-.\"O .PP
-ユーザ名、\f(CW\*(C`uid\*(C'\fR、グループ名、\f(CW\*(C`gid\*(C'\fR、
-ネットグループ名、非 Unix グループ名、非 Unix グループ の
-\&\f(CW\*(C`gid\*(C'\fR は、ダブルクォートで囲めば、
-特殊文字をエスケープしないですむ。
-ダブルクォートで囲まずに特殊文字を使いたいなら、
-エスケープした 16 進数を指定してやればよい。たとえば、
-スペースなら \ex20 という具合だ。ダブルクォートを使用する場合は、
-接頭辞があれば、それをダブルクォートの内側に入れなければならない。
-.PP
-.\"O The actual \f(CW\*(C`nonunix_group\*(C'\fR and \f(CW\*(C`nonunix_gid\*(C'\fR syntax depends on
-.\"O the underlying group provider plugin (see the \fIgroup_plugin\fR
-.\"O description below).  For instance, the \s-1QAS\s0 \s-1AD\s0 plugin supports the
-.\"O following formats:
-非 Unix グループやその \f(CW\*(C`gid\*(C'\fR の書式が、
-実際にどんなものになるかは、利用するグループ・プロバイダ・プラグイン
-(group provider plugin) 次第である (後述する \fIgroup_plugin\fR
-オプションの説明も見てほしい)。たとえば、
-\&\s-1QAS\s0 (\s-1Quest Authentication Services\s0) の \s-1AD\s0 プラグインは、
+既存のエイリアスを再定義するのは、文法エラーである。
+異なるタイプのエイリアスに対して同じ名前を使用することはできるが、
+お薦めできることではない。
+.PP
+エイリアスの有効な要素となるものの定義は、以下のようになる。
+.nf
+.sp
+.RS 0n
+User_List ::= User |
+              User ',' User_List
+
+User ::= '!'* user name |
+         '!'* #uid |
+         '!'* %group |
+         '!'* %#gid |
+         '!'* +netgroup |
+         '!'* %:nonunix_group |
+         '!'* %:#nonunix_gid |
+         '!'* User_Alias
+.RE
+.fi
+.PP
+User_List を構成するのは、一個以上の次のものである。
+ユーザ名、ユーザID (接頭辞 '#' が付く)、
+システムグループ名やその ID (それぞれ、接頭辞 '%' と '%#' が付く)、
+ネットグループ名 (接頭辞 '+' が付く)、
+non\-Unix グループ名やその ID (それぞれ、接頭辞 '%:' と '%:#' が付く)、
+それに User_Alias。
+リストの各項目の前には一個以上の '!' 演算子を付けてもよい。
+奇数個の '!' はその項目の値を否定する。偶数個の場合は互い相殺されるだけだ。
+なお、ユーザのネットグループについては、
+ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行われる。
+ホストの要素はマッチングに使用されない。
+.PP
+ユーザ名、uid、グループ名、gid、ネットグループ名、non\-Unix グループ名、
+non\-Unix グループ の gid は、ダブルクォートで囲めば、特殊文字をエスープしないですむ。
+ダブルクォートで囲まずに特殊文字を使いたいなら、エスケープした 16 進数を指定してやればよい。
+たとえば、スペースなら \ex20 という具合だ。
+ダブルクォートを使用する場合は、接頭辞があれば、それをダブルクォートの内側に入れなければならない。
+.PP
+non\-Unix グループやその gid を指定するときのの書式が、
+実際にどんなものになるかは、
+利用するグループ・プロバイダー・プラグイン (group provider plugin) 次第である。
+たとえば、QAS (Quest Authentication Services) の AD プラグインは、
 以下の書式をサポートしている。
-.IP "\(bu" 4
-.\"O Group in the same domain: \*(L"Group Name\*(R"
-同じドメインのグループ: \*(L"Group Name\*(R"
-.IP "\(bu" 4
-.\"O Group in any domain: \*(L"Group Name@FULLY.QUALIFIED.DOMAIN\*(R"
-任意のドメインのグループ: \*(L"Group Name@FULLY.QUALIFIED.DOMAIN\*(R"
-.IP "\(bu" 4
-.\"O Group \s-1SID:\s0 \*(L"S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567\*(R"
-グループ \s-1SID:\s0 \*(L"S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567\*(R"
-.PP
-.\"O Note that quotes around group names are optional.  Unquoted strings
-.\"O must use a backslash (\e) to escape spaces and special characters.
-.\"O See \*(L"Other special characters and reserved words\*(R" for a list of
-.\"O characters that need to be escaped.
-.\"O .PP
-グループ名を囲む引用符は任意であることに注意してほしい。
-文字列を引用符で囲まない場合は、スペースや特殊文字をエスケープするために、
-バックスラッシュ (\e) を使わなければならない。
+.TP  6n
+\fB\(bu\fP
+同じドメインのグループ: "%:Group Name"
+.TP  6n
+\fB\(bu\fP
+任意のドメインのグループ: "%:Group Name@FULLY.QUALIFIED.DOMAIN"
+.TP  6n
+\fB\(bu\fP
+グループ SID: "%:S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567"
+.PP
+詳細については、
+「グループ・プロバイダー・プラグイン」セクションをご覧いただきたい。
+.PP
+グループ名を囲む引用符は任意であることに注意していただきたい。
+文字列を引用符で囲まない場合は、バックスラッシュ ('\e') を使って、
+スペースや特殊文字をエスケープしなければならない。
 エスケープする必要がある文字のリストについては、
-「ほかの特殊文字と予約語」のセクションをご覧になってほしい。
-.PP
-.Vb 2
-\& Runas_List ::= Runas_Member |
-\&                Runas_Member \*(Aq,\*(Aq Runas_List
-\&
-\& Runas_Member ::= \*(Aq!\*(Aq* user name |
-\&                  \*(Aq!\*(Aq* #uid |
-\&                  \*(Aq!\*(Aq* %group |
-\&                  \*(Aq!\*(Aq* %#gid |
-\&                  \*(Aq!\*(Aq* %:nonunix_group |
-\&                  \*(Aq!\*(Aq* %:#nonunix_gid |
-\&                  \*(Aq!\*(Aq* +netgroup |
-\&                  \*(Aq!\*(Aq* Runas_Alias
-.Ve
-.PP
-.\"O A \f(CW\*(C`Runas_List\*(C'\fR is similar to a \f(CW\*(C`User_List\*(C'\fR except that instead
-.\"O of \f(CW\*(C`User_Alias\*(C'\fRes it can contain \f(CW\*(C`Runas_Alias\*(C'\fRes.  Note that
-.\"O user names and groups are matched as strings.  In other words, two
-.\"O users (groups) with the same uid (gid) are considered to be distinct.
-.\"O If you wish to match all user names with the same uid (e.g.\ root
-.\"O and toor), you can use a uid instead (#0 in the example given).
-.\"O .PP
-\&\f(CW\*(C`Runas_List\*(C'\fR は \f(CW\*(C`User_List\*(C'\fR に似ている。
-違うのは、\f(CW\*(C`User_Alias\*(C'\fR ではなく、
-\&\f(CW\*(C`Runas_Alias\*(C'\fR が使えることだ。
-ユーザ名やグループ名のマッチは文字列として行われることに気を付けてほしい。
-言い換えると、二つのユーザ名 (あるいはグループ名) は、かりに同じ uid (gid)
-を持っていても、別個のものと見なされるのである。
-だから、もし同じ uid を持ったすべてのユーザ名にマッチさせたかったら 
-(たとえば、root と toor がそうだとしよう)、ユーザ名の代わりに
-uid を使えばよい (この例なら、#0 である)。
-.PP
-.Vb 2
-\& Host_List ::= Host |
-\&               Host \*(Aq,\*(Aq Host_List
-\&
-\& Host ::= \*(Aq!\*(Aq* host name |
-\&          \*(Aq!\*(Aq* ip_addr |
-\&          \*(Aq!\*(Aq* network(/netmask)? |
-\&          \*(Aq!\*(Aq* +netgroup |
-\&          \*(Aq!\*(Aq* Host_Alias
-.Ve
-.PP
-.\"O A \f(CW\*(C`Host_List\*(C'\fR is made up of one or more host names, \s-1IP\s0 addresses,
-.\"O network numbers, netgroups (prefixed with '+') and other aliases.
-.\"O Again, the value of an item may be negated with the '!' operator.
-.\"O If you do not specify a netmask along with the network number,
-.\"O \&\fBsudo\fR will query each of the local host's network interfaces and,
-.\"O if the network number corresponds to one of the hosts's network
-.\"O interfaces, the corresponding netmask will be used.  The netmask
-.\"O may be specified either in standard \s-1IP\s0 address notation
-.\"O (e.g.\ 255.255.255.0 or ffff:ffff:ffff:ffff::),
-.\"O or \s-1CIDR\s0 notation (number of bits, e.g.\ 24 or 64).  A host name may
-.\"O include shell-style wildcards (see the Wildcards section below),
-.\"O but unless the \f(CW\*(C`host name\*(C'\fR command on your machine returns the fully
-.\"O qualified host name, you'll need to use the \fIfqdn\fR option for
-.\"O wildcards to be useful.  Note \fBsudo\fR only inspects actual network
-.\"O interfaces; this means that \s-1IP\s0 address 127.0.0.1 (localhost) will
-.\"O never match.  Also, the host name \*(L"localhost\*(R" will only match if
-.\"O that is the actual host name, which is usually only the case for
-.\"O non-networked systems.
-.\"O .PP
-\&\f(CW\*(C`Host_List\*(C'\fR は一個以上の、ホスト名、\s-1IP\s0 アドレス、
-ネットワークアドレス、ネットグループ名 (接頭辞 '+' が付く)、
-および他のエイリアスからなる。ここでもまた、'!' 演算子を付けて、
-項目の値を否定することができる。
-ネットワークアドレスにネットマスクを指定しなかった場合は、
-\&\fBsudo\fR がローカルホストのネットワークインターフェースを一つ一つ参照し、
+「ほかの特殊文字と予約語」のセクションを参照していただきたい。
+.nf
+.sp
+.RS 0n
+Runas_List ::= Runas_Member |
+               Runas_Member ',' Runas_List
+
+Runas_Member ::= '!'* user name |
+                 '!'* #uid |
+                 '!'* %group |
+                 '!'* %#gid |
+                 '!'* %:nonunix_group |
+                 '!'* %:#nonunix_gid |
+                 '!'* +netgroup |
+                 '!'* Runas_Alias
+.RE
+.fi
+.PP
+Runas_List は User_List に似ている。違うのは、User_Alias ではなく、
+Runas_Alias が使えることだ。ユーザ名やグループ名のマッチは、
+文字列として行われることに気を付けていただきたい。
+言い換えると、二つのユーザ名 (あるいは、グループ名) は、
+仮に同じ uid (gid) を持っていても、別個のものと見なされるのである。
+だから、もし同じ uid を持ったすべてのユーザ名にマッチさせたかったら
+(たとえば、root と toor がそうだとしよう)、ユーザ名の代わりに uid を使えばよい
+(この例なら、#0 である)。
+.nf
+.sp
+.RS 0n
+Host_List ::= Host |
+              Host ',' Host_List
+
+Host ::= '!'* host name |
+         '!'* ip_addr |
+         '!'* network(/netmask)? |
+         '!'* +netgroup |
+         '!'* Host_Alias
+.RE
+.fi
+.PP
+Host_List を構成するのは、一個以上の次のものである。
+ホスト名、IP アドレス、ネットワークアドレス、
+ネットグループ名 (接頭辞 '+' が付く)、および他のエイリアス。
+ここでもまた、項目の値は、'!' 演算子によって否定することができる。なお、
+ホストのネットグループについては、ネットグループの成員中のホスト
+(完全修飾名とそうでないもののどちらでも) とドメインの要素のみを使って、
+マッチングが行われる。ユーザの要素はマッチングに使用されない。
+ネットワークアドレスをネットマスクなしで指定した場合は、
+\fBsudo\fP はローカルホストのネットワークインターフェースを一つ一つ参照し、
 指定されたネットワークアドレスと同じアドレスを持つインターフェースがあれば、
 そのネットマスクを使用することになる。ネットマスクの指定は、
-標準の \s-1IP\s0 アドレス表記 (たとえば 255.255.255.0 とか 
-ffff:ffff:ffff:ffff:: とか) でもよく、\&\s-1CIDR\s0 表記 (ビット数、
-たとえば 24 とか 64 とか) でもよい。
+標準の IP アドレス表記 (たとえば 255.255.255.0 や ffff:ffff:ffff:ffff::) でもよく、
+CIDR 表記 (ビット数、たとえば 24 や 64) でもよい。
 ホスト名の一部にシェル風のワイルドカードを使用することができるが
-(下記の「ワイルドカード」セクションを参照)、使用マシンの
-\&\f(CW\*(C`hostname\*(C'\fR コマンドが完全修飾ドメイン名 (FQDN) を返さない場合、
-ワイルドカードを利用するには \fIfqdn\fR オプションを使う必要がある。
-なお、\fBsudo\fR がチェックするのは、
+(下記の「ワイルドカード」セクションを参照)、
+ご使用のマシンの hostname コマンドが完全修飾ドメイン名 (FQDN) を返さない場合、
+ワイルドカードを利用するには \fIfqdn\fP オプションを使う必要がある。
+なお、\fBsudo\fP がチェックするのは、
 実在のネットワークインターフェースだけだということに留意してほしい。
-すなわち、\s-1IP\s0 アドレス 127.0.0.1 (localhost)
-がマッチすることは、絶対にないのである。
-また、\*(L"localhost\*(R" というホスト名がマッチするのは、
+すなわち、IP アドレス 127.0.0.1 (localhost) がマッチすることは、絶対にないのである。
+また、"localhost" というホスト名がマッチするのは、
 それが実際のホスト名であるときだけであり、
 それは通常、ネットワークにつながっていないシステムの場合にしか当てはまらない。
+.nf
+.sp
+.RS 0n
+digest ::= [A\-Fa\-f0\-9]+ |
+          [[A\-Za\-z0\-9\+/=]+
+
+Digest_Spec ::= "sha224" ':' digest |
+               "sha256" ':' digest |
+               "sha384" ':' digest |
+               "sha512" ':' digest
+
+Cmnd_List ::= Cmnd |
+              Cmnd ',' Cmnd_List
+
+command name ::= file name |
+                 file name args |
+                 file name '""'
+
+Cmnd ::= Digest_Spec? '!'* command name |
+         '!'* directory |
+         '!'* "sudoedit" |
+         '!'* Cmnd_Alias
+.RE
+.fi
 .PP
-.Vb 2
-\& Cmnd_List ::= Cmnd |
-\&               Cmnd \*(Aq,\*(Aq Cmnd_List
-\&
-\& commandname ::= file name |
-\&                 file name args |
-\&                 file name \*(Aq""\*(Aq
-\&
-\& Cmnd ::= \*(Aq!\*(Aq* commandname |
-\&          \*(Aq!\*(Aq* directory |
-\&          \*(Aq!\*(Aq* "sudoedit" |
-\&          \*(Aq!\*(Aq* Cmnd_Alias
-.Ve
-.PP
-.\"O A \f(CW\*(C`Cmnd_List\*(C'\fR is a list of one or more commandnames, directories, and other
-.\"O aliases.  A commandname is a fully qualified file name which may include
-.\"O shell-style wildcards (see the Wildcards section below).  A simple
-.\"O file name allows the user to run the command with any arguments he/she
-.\"O wishes.  However, you may also specify command line arguments (including
-.\"O wildcards).  Alternately, you can specify \f(CW""\fR to indicate that the command
-.\"O may only be run \fBwithout\fR command line arguments.  A directory is a
-.\"O fully qualified path name ending in a '/'.  When you specify a directory
-.\"O in a \f(CW\*(C`Cmnd_List\*(C'\fR, the user will be able to run any file within that directory
-.\"O (but not in any subdirectories therein).
-.\"O .PP
-\&\f(CW\*(C`Cmnd_List\*(C'\fR は一個以上の、コマンド名、ディレクトリ、
+Cmnd_List は一個以上の、コマンド名、ディレクトリ、
 他のエイリアスからなるリストである。コマンド名は絶対パスのファイル名であり、
-シェル風のワイルドカードを含んでいても構わない
-(下記の「ワイルドカード」セクションを参照)。単にファイル名だけ指定した場合、
+シェル風のワイルドカードを含んでいても構わない(下記の「ワイルドカード」セクションを参照)。
+単にファイル名だけ指定した場合、
 ユーザはお望みのどんな引き数でも付けてそのコマンドを実行することができる。
 とは言え、コマンドライン引き数を (ワイルドカードを含めて)
-指定しても構わないし、また、引き数に \f(CW""\fR を指定して、そのコマンドは
-\&\fBコマンドライン引き数なし\fRの実行のみが可能だと指示することもできる。
+指定しても構わないし、また、引き数に "\&" を指定して、そのコマンドは、
+コマンドライン引き数を付けずに実行することしかできないと指示することもできる。
 ディレクトリは '/' で終わる絶対パス名である。
-\&\f(CW\*(C`Cmnd_List\*(C'\fR にディレクトリを指定すると、
+Cmnd_List にディレクトリを指定すると、
 ユーザーはそのディレクトリ内の任意のファイルを実行できるようになる
 (だが、そのサブディレクトリにあるファイルは実行できない)。
 .PP
-.\"O If a \f(CW\*(C`Cmnd\*(C'\fR has associated command line arguments, then the arguments
-.\"O in the \f(CW\*(C`Cmnd\*(C'\fR must match exactly those given by the user on the command line
-.\"O (or match the wildcards if there are any).  Note that the following
-.\"O characters must be escaped with a '\e' if they are used in command
-.\"O arguments: ',', ':', '=', '\e'.  The special command \f(CW"sudoedit"\fR
-.\"O is used to permit a user to run \fBsudo\fR with the \fB\-e\fR option (or
-.\"O as \fBsudoedit\fR).  It may take command line arguments just as
-.\"O a normal command does.
-\&\f(CW\*(C`Cmnd\*(C'\fR がコマンドライン引き数を伴っている場合は、
-\&\f(CW\*(C`Cmnd\*(C'\fR 中の引き数は、
-ユーザがコマンドラインに打ち込む引き数と正確に一致しなければならない
+Cmnd がコマンドライン引き数を伴っている場合は、 Cmnd 中の引き数は、
+ユーザがコマンドラインで打ち込む引き数と正確に一致しなければならない
 (Cmnd 中の引き数にワイルドカードがあるならば、
 それがコマンドラインの引き数とマッチしなければならない)。
 以下に挙げる文字をコマンド引き数の中で用いるときは、
-\&'\e' によってエスケープしなければならないことに注意してほしい。
-\&',', ':', '=', '\e' がそれである。
-\&\f(CW"sudoedit"\fR という特別なコマンド名は、ユーザが \fBsudo\fR を
-\&\fB-e\fR オプション付きで (あるいは、\fBsudoedit\fR というコマンド名で)
-実行することを許可するために使用される。この場合、
-コマンドライン引き数を取ることができるのは、普通のコマンドとまったく同様である。
-.\"O .SS "Defaults"
+\&'\e' によってエスケープしなければならないことに注意していただきたい。
+\&',\&', ':\&', '=\&', '\e' がそれである。
+Cmnd に "sudoedit" という \fBsudo\fP の組み込みコマンドを指定すると、
+ユーザに \fBsudo\fP を \fB\-e\fP オプション付きで
+(あるいは、\fBsudoedit\fP というコマンド名で) 実行することを許可することになる。
+この場合、コマンドライン引き数も指定することができるのは、
+普通のコマンドとまったく同様だ。
+"sudoedit" は、\fBsudo\fP そのものに組み込まれたコマンドなので、\fIsudoers\fP
+ファイルではパスを前に付けずに指定しなければならないことに注意していただきたい。
+.PP
+コマンド名の前に Digest_Spec が付いている場合、コマンドのマッチに成功するのは、
+指定された SHA\-2 ダイジェストを使って照合できたときだけである。
+ダイジェストのフォーマットとしては、
+sha224, sha256, sha384, sha512 をサポートしている。
+文字列は、16 進数形式でも base64 形式でも指定できる (base64 の方が短くて済む)。
+SHA\-2 ダイジェストを 16 進数形式で生成できるユーティリティはいくつかある。
+openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum
+といったものがそうだ。
+.PP
+たとえば、openssl を使うなら、
+.nf
+.sp
+.RS 0n
+$ openssl dgst \-sha224 /bin/ls
+SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25
+.RE
+.fi
+.PP
+openssl を使って、base64 の出力を生成することもできる。
+.nf
+.sp
+.RS 0n
+$ openssl dgst \-binary \-sha224 /bin/ls | openssl base64
+EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==
+.RE
+.fi
+.PP
+注意: もしユーザがコマンドそのものに対して (直接であれ、\fBsudo\fP コマンドを通してであれ)
+書き込み権限を持っているならば、そのユーザは、ダイジェストチェックが済み、
+コマンドが実行されるまでの間に、コマンドを別のものに置き換えることができるかもしれない。
+同様の競合状態が、fexecve(2) システムコールを持っていないシステムでは、
+コマンドが存在するディレクトリがユーザによって書き込み可能であるときに起こりえる。
+.PP
+コマンド・ダイジェストをサポートしているのは、バージョン 1.8.7 以上だけである。
 .SS "デフォルト設定 (Defaults)"
-.IX Subsection "Defaults"
-.\"O Certain configuration options may be changed from their default
-.\"O values at runtime via one or more \f(CW\*(C`Default_Entry\*(C'\fR lines.  These
-.\"O may affect all users on any host, all users on a specific host, a
-.\"O specific user, a specific command, or commands being run as a specific user.
-.\"O Note that per-command entries may not include command line arguments.
-.\"O If you need to specify arguments, define a \f(CW\*(C`Cmnd_Alias\*(C'\fR and reference
-.\"O that instead.
-.\"O .PP
-かなりの設定オプションが、一行以上の \f(CW\*(C`Default_Entry\*(C'\fR
-行を使うことで実行時にデフォルトの値から変更可能だ。その効果の及ぶ範囲は、
-任意のホストのすべてのユーザにすることもできるし、
+かなりの設定オプションが、
+一行以上の Default_Entry 行を指定することで実行時にデフォルトの値から変更可能だ。
+その効果の及ぶ範囲は、あらゆるホストのすべてのユーザにすることもできるし、
 ある特定のホストのすべてのユーザ、ある特定のユーザ、ある特定のコマンド、
 ある特定のユーザとして実行するコマンドなどに限定することもできる。
-気を付けてほしいのは、コマンドに限定した
-Defaults 行にコマンドライン引き数まで書くことができないことだ。
-引き数を指定する必要がある場合は、\f(CW\*(C`Cmnd_Alias\*(C'\fR を定義して、
-代わりにそれを参照すればよい。
-.PP
-.Vb 5
-\& Default_Type ::= \*(AqDefaults\*(Aq |
-\&                  \*(AqDefaults\*(Aq \*(Aq@\*(Aq Host_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq:\*(Aq User_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq!\*(Aq Cmnd_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq>\*(Aq Runas_List
-\&
-\& Default_Entry ::= Default_Type Parameter_List
-\&
-\& Parameter_List ::= Parameter |
-\&                    Parameter \*(Aq,\*(Aq Parameter_List
-\&
-\& Parameter ::= Parameter \*(Aq=\*(Aq Value |
-\&               Parameter \*(Aq+=\*(Aq Value |
-\&               Parameter \*(Aq\-=\*(Aq Value |
-\&               \*(Aq!\*(Aq* Parameter
-.Ve
-.PP
-.\"O Parameters may be \fBflags\fR, \fBinteger\fR values, \fBstrings\fR, or \fBlists\fR.
-.\"O Flags are implicitly boolean and can be turned off via the '!'
-.\"O operator.  Some integer, string and list parameters may also be
-.\"O used in a boolean context to disable them.  Values may be enclosed
-.\"O in double quotes (\f(CW\*(C`"\*(C'\fR) when they contain multiple words.  Special
-.\"O characters may be escaped with a backslash (\f(CW\*(C`\e\*(C'\fR).
-.\"O .PP
-パラメータは\fBフラグ\fR、\fB整数値\fR、\fB文字列\fR、
-\&\fBリスト\fRのどれでもよい。フラグは要するにブーリアン (真偽値) であり、
-\&'!' 演算子で off にできる。整数値、文字列、リストのパラメータにも、
-真偽値として使用して、それを無効にできるものがいくつか存在する。
-パラメータの値が複数の単語を含むときは、値をダブルクオート
-(\f(CW\*(C`"\*(C'\fR) で囲むとよい。特殊文字はバックスラッシュ
-(\f(CW\*(C`\e\*(C'\fR) でエスケープすることができる。
-.PP
-.\"O Lists have two additional assignment operators, \f(CW\*(C`+=\*(C'\fR and \f(CW\*(C`\-=\*(C'\fR.
-.\"O These operators are used to add to and delete from a list respectively.
-.\"O It is not an error to use the \f(CW\*(C`\-=\*(C'\fR operator to remove an element
-.\"O that does not exist in a list.
-.\"O .PP
-リストには代入演算子が \f(CW\*(C`\=\*(C'\fR のほかにもう二つある。
-\&\f(CW\*(C`+=\*(C'\fR と \f(CW\*(C`\-=\*(C'\fR である。こうした演算子は、
-それぞれ、リストに付け加えたり、リストから削除したりするのに使用する。
-\&\f(CW\*(C`\-=\*(C'\fR 演算子を使って、
-リストに存在しない要素を消去しようとしても、エラーにはならない。
-.PP
-.\"O Defaults entries are parsed in the following order: generic, host
-.\"O and user Defaults first, then runas Defaults and finally command
-.\"O defaults.
-.\"O .PP
-Defaults 行の解析は、次の順序で行われる。最初に汎用、Host、
-User の Defaults が解析され、それから Runas の Defaults、最後にコマンドの
-Defaults の順番になる。
-.PP
-.\"O See \*(L"\s-1SUDOERS\s0 \s-1OPTIONS\s0\*(R" for a list of supported Defaults parameters.
+気を付けてほしいのは、コマンドに限定した Defaults 行にコマンドライン引き数まで書くことができないことだ。
+引き数を指定する必要がある場合は、Cmnd_Alias を定義して、代わりにそれを参照すればよい。
+.nf
+.sp
+.RS 0n
+Default_Type ::= 'Defaults' |
+                 'Defaults' '@' Host_List |
+                 'Defaults' ':' User_List |
+                 'Defaults' '!' Cmnd_List |
+                 'Defaults' '>' Runas_List
+
+Default_Entry ::= Default_Type Parameter_List
+
+Parameter_List ::= Parameter |
+                   Parameter ',' Parameter_List
+
+Parameter ::= Parameter '=' Value |
+              Parameter '+=' Value |
+              Parameter '\-=' Value |
+              '!'* Parameter
+.RE
+.fi
+.PP
+パラメータは\fBフラグ\fP、\fB整数値\fP、\fB文字列\fP、\fBリスト\fPのどれであってもよい。
+フラグは要するにブーリアン (真偽値) であり、'\&!' 演算子で off にできる。
+整数値、文字列、リストのパラメータにも、真偽値として使用して、
+それを無効にできるものがいくつか存在する。
+パラメータの値が複数の単語を含むときは、
+値をダブルクオート (\&"") で囲むとよい。
+特殊文字はバックスラッシュ ('\e') でエスケープすることができる。
+.PP
+リストには代入演算子が = のほかにもう二つある。+= と \-= である。
+こうした演算子は、それぞれ、リストに付け加えたり、リストから削除したりするのに使用する。
+\-= 演算子を使って、リストに存在しない要素を消去しようとしても、エラーにはならない。
+.PP
+Defaults 行の解析は、次の順序で行われる。まず、汎用、Host、User の Defaults
+が解析され、それから Runas の Defaults、最後にコマンドの Defaults の順番になる。
+.PP
 Defaults 行で使用できるパラメータのリストについては、
 「SUDOERS のオプション」を御覧いただきたい。
-.\"O .SS "User Specification"
 .SS "ユーザ設定 (User Specification)"
-.IX Subsection "User Specification"
-.Vb 2
-\& User_Spec ::= User_List Host_List \*(Aq=\*(Aq Cmnd_Spec_List \e
-\&               (\*(Aq:\*(Aq Host_List \*(Aq=\*(Aq Cmnd_Spec_List)*
-\&
-\& Cmnd_Spec_List ::= Cmnd_Spec |
-\&                    Cmnd_Spec \*(Aq,\*(Aq Cmnd_Spec_List
-\&
-.ie \n(SL \& Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
-.el \& Cmnd_Spec ::= Runas_Spec? Tag_Spec* Cmnd
-\&
-\& Runas_Spec ::= \*(Aq(\*(Aq Runas_List? (\*(Aq:\*(Aq Runas_List)? \*(Aq)\*(Aq
-\&
-.if \n(SL \{\
-\& SELinux_Spec ::= (\*(AqROLE=role\*(Aq | \*(AqTYPE=type\*(Aq)
-\&
-\}
-\& Tag_Spec ::= (\*(AqNOPASSWD:\*(Aq | \*(AqPASSWD:\*(Aq | \*(AqNOEXEC:\*(Aq | \*(AqEXEC:\*(Aq |
-\&               \*(AqSETENV:\*(Aq | \*(AqNOSETENV:\*(Aq | \*(AqLOG_INPUT:\*(Aq | \*(AqNOLOG_INPUT:\*(Aq |
-\&               \*(AqLOG_OUTPUT:\*(Aq | \*(AqNOLOG_OUTPUT:\*(Aq)
-.Ve
-.PP
-.\"O A \fBuser specification\fR determines which commands a user may run
-.\"O (and as what user) on specified hosts.  By default, commands are
-.\"O run as \fBroot\fR, but this can be changed on a per-command basis.
-.\"O .PP
-\&\fBユーザ設定\fRは、あるユーザが、指定されたホストで (どのユーザに変身して)
-どのコマンドを実行できるかを決定する。デフォルトでは、コマンドは \fBroot\fR
+.nf
+.RS 0n
+User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \e
+              (':' Host_List '=' Cmnd_Spec_List)*
+
+Cmnd_Spec_List ::= Cmnd_Spec |
+                   Cmnd_Spec ',' Cmnd_Spec_List
+
+Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
+
+Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
+
+SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
+
+Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
+              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
+              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
+              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')
+.RE
+.fi
+.PP
+\fBユーザ設定\fPは、あるユーザが、指定されたホストで (どのユーザに変身して)
+どのコマンドを実行できるかを決定する。デフォルトでは、コマンドは \fBroot\fP
 に変身して実行されるが、これはコマンドごとに変更することができる。
 .PP
-.\"O The basic structure of a user specification is `who where = (as_whom)
-.\"O what'.  Let's break that down into its constituent parts:
-ユーザ設定の基本構造は、
-.PP
-.Vb 2
-\&      who     where     = (as_whom)      what 
-\&     [誰が どのホストで = (誰に変身して) 何を]
-.Ve
-.PP
-である。構成部分に分けて説明しよう。
-.\"O .SS "Runas_Spec"
-.SS "Runas_Spec (どのユーザやグループに変身できるか)"
-.IX Subsection "Runas_Spec"
-.\"O A \f(CW\*(C`Runas_Spec\*(C'\fR determines the user and/or the group that a command
-.\"O may be run as.  A fully-specified \f(CW\*(C`Runas_Spec\*(C'\fR consists of two
-.\"O \&\f(CW\*(C`Runas_List\*(C'\fRs (as defined above) separated by a colon (':') and
-.\"O enclosed in a set of parentheses.  The first \f(CW\*(C`Runas_List\*(C'\fR indicates
-.\"O which users the command may be run as via \fBsudo\fR's \fB\-u\fR option.
-.\"O The second defines a list of groups that can be specified via
-.\"O \&\fBsudo\fR's \fB\-g\fR option.  If both \f(CW\*(C`Runas_List\*(C'\fRs are specified, the
-.\"O command may be run with any combination of users and groups listed
-.\"O in their respective \f(CW\*(C`Runas_List\*(C'\fRs.  If only the first is specified,
-.\"O the command may be run as any user in the list but no \fB\-g\fR option
-.\"O may be specified.  If the first \f(CW\*(C`Runas_List\*(C'\fR is empty but the
-.\"O second is specified, the command may be run as the invoking user
-.\"O with the group set to any listed in the \f(CW\*(C`Runas_List\*(C'\fR.  If no
-.\"O \&\f(CW\*(C`Runas_Spec\*(C'\fR is specified the command may be run as \fBroot\fR and
-.\"O no group may be specified.
-.\"O .PP
-\&\f(CW\*(C`Runas_Spec\*(C'\fR は変身の対象となるユーザやグループを規定している。
-完全な形の \f(CW\*(C`Runas_Spec\*(C'\fR は、(上で定義しているように)
-コロン (':') で区切られ、
-カッコで囲まれた、二つの \f(CW\*(C`Runas_List\*(C'\fR からなっている。
-一つ目の \f(CW\*(C`Runas_List\*(C'\fR は、\fBsudo\fR で
-\&\fB\-u\fR オプションを使ったときに変身できるユーザを指している。
-二番目の方が規定しているのは、\fBsudo\fR の \fB\-g\fR
-オプションによって指定できるグループのリストだ。
-両方の \f(CW\*(C`Runas_List\*(C'\fR が指定されている場合は、
-それぞれの \f(CW\*(C`Runas_List\*(C'\fR
+ユーザ設定の基本構造は、"who where = (as_whom) what" である
+("誰が どのホストで = (誰に変身して) 何を")。構成部分に分けて説明しよう。
+.SS Runas_Spec
+Runas_Spec は変身の対象となるユーザやグループを規定している。
+完全な形の Runas_Spec は、(上で定義しているように) コロン (':\&') で区切られ、
+カッコで囲まれた、二つの Runas_List からなっている。一つ目の Runas_List は、
+\fBsudo\fP で \fB\-u\fP オプションを使ったときに変身できるユーザを指している。
+二番目の方が規定しているのは、\fBsudo\fP の \fB\-g\fP オプションによって指定できるグループのリストだ。
+両方の Runas_List が指定されている場合は、それぞれの Runas_List
 にリストされているユーザとグループの任意の組み合わせで、
-コマンドを実行することができる。
-一つ目の \f(CW\*(C`Runas_List\*(C'\fR だけが指定されているときは、
+コマンドを実行することができる。一つ目の Runas_List だけが指定されている場合は、
 リスト中のいかなるユーザにでも変身してコマンドを実行できるが、
-\&\fB\-g\fR オプションを指定することはできない。
-一つ目の \f(CW\*(C`Runas_List\*(C'\fR が空で、二番目だけ指定されている場合は、
-\&\fBsudo\fR を実行するユーザの資格で、グループを
-\&\f(CW\*(C`Runas_List\*(C'\fR にリストされている任意のグループに設定して、
-コマンドを実行することができる。
-\&\f(CW\*(C`Runas_Spec\*(C'\fR がまったく指定されていないときは、
-\&\fBroot\fR としてコマンドを実行できるが、グループを指定することはできない。
-.PP
-.\"O A \f(CW\*(C`Runas_Spec\*(C'\fR sets the default for the commands that follow it.
-.\"O What this means is that for the entry:
-.\"O .PP
-\&\f(CW\*(C`Runas_Spec\*(C'\fR は、
-それに続くコマンドに対してデフォルトを定める。それはどういうことかと言うと、
-次のようなエントリがあったとしよう。
-.PP
-.Vb 1
-\& dgb    boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
-.Ve
-.PP
-.\"O The user \fBdgb\fR may run \fI/bin/ls\fR, \fI/bin/kill\fR, and
-.\"O \&\fI/usr/bin/lprm\fR \*(-- but only as \fBoperator\fR.  E.g.,
-.\"O .PP
-ユーザ \fBdgb\fR は \fI/bin/ls\fR, \fI/bin/kill\fR,
-\&\fI/usr/bin/lprm\fR を実行することができる。ただし、\fBoperator\fR 
-として実行できるだけだ。たとえば、次のようにである。
-.PP
-.Vb 1
-\& $ sudo \-u operator /bin/ls
-.Ve
-.PP
-.\"O It is also possible to override a \f(CW\*(C`Runas_Spec\*(C'\fR later on in an
-.\"O entry.  If we modify the entry like so:
-.\"O .PP
-エントリの後ろの方の \f(CW\*(C`Runas_Spec\*(C'\fR を変更することも可能だ。
+\fB\-g\fP オプションを指定することはできない。一つ目の Runas_List が空で、
+二番目だけ指定されている場合は、\fBsudo\fP を実行するユーザの資格で、
+グループを Runas_List にリストされている任意のグループに設定して、
+コマンドを実行することができる。Runas_Lists が両方とも空の場合は、
+\fBsudo\fP を実行するユーザの資格でしかコマンドを実行できない。
+Runas_Spec がまったく指定されていない場合は、\fBroot\fP としてコマンドを実行できるが、
+グループを指定することはできない。
+.PP
+Runas_Spec は、それに続くコマンドに対してデフォルトを定める。
+それはどういうことかと言うと、次のようなエントリがあったとしよう。
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
+.RE
+.fi
+.PP
+ユーザ \fBdgb\fP は \fI/bin/ls\fP, \fI/bin/kill\fP, \fI/usr/bin/lprm\fP を実行することができる。
+ただし、\fBoperator\fP として実行できるだけだ。たとえば、次のようにである。
+.nf
+.sp
+.RS 0n
+$ sudo \-u operator /bin/ls
+.RE
+.fi
+.PP
+エントリの後ろの方の Runas_Spec を変更することも可能だ。
 上のエントリをこんなふうに書き変えたとしよう。
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
+.RE
+.fi
+.PP
+すると、ユーザ \fBdgb\fP は、\fI/bin/ls\fP こそ \fBoperator\fP としてだが、
+\fI/bin/kill\fP や \fI/usr/bin/lprm\fP は \fBroot\fP の資格で実行できるようになる。
 .PP
-.Vb 1
-\& dgb    boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
-.Ve
-.PP
-.\"O Then user \fBdgb\fR is now allowed to run \fI/bin/ls\fR as \fBoperator\fR,
-.\"O but  \fI/bin/kill\fR and \fI/usr/bin/lprm\fR as \fBroot\fR.
-.\"O .PP
-すると、ユーザ \fBdgb\fR は、\fI/bin/ls\fR こそ \fBoperator\fR としてだが、
-\&\fI/bin/kill\fR や \fI/usr/bin/lprm\fR は
-\&\fBroot\fR の資格で実行できるようになる。
-.PP
-.\"O We can extend this to allow \fBdgb\fR to run \f(CW\*(C`/bin/ls\*(C'\fR with either
-.\"O the user or group set to \fBoperator\fR:
-.\"O .PP
-\&\fBdgb\fR が \f(CW\*(C`/bin/ls\*(C'\fR を実行するとき、
-変身対象ユーザとグループのどちらでも \fBoperator\fR にできるように、
-この記述を拡張することもできる。
-.PP
-.Vb 2
-\& dgb    boulder = (operator : operator) /bin/ls, (root) /bin/kill, \e
-\&        /usr/bin/lprm
-.Ve
-.PP
-.\"O Note that while the group portion of the \f(CW\*(C`Runas_Spec\*(C'\fR permits the
-.\"O user to run as command with that group, it does not force the user
-.\"O to do so.  If no group is specified on the command line, the command
-.\"O will run with the group listed in the target user's password database
-.\"O entry.  The following would all be permitted by the sudoers entry above:
-.\"O .PP
-注意してほしいが、\f(CW\*(C`Runas_Spec\*(C'\fR のグループの部分は、
+\fBdgb\fP が /bin/ls を実行するとき、変身対象ユーザとグループのどちらでも
+\fBoperator\fP になれるように、この記述を拡張することもできる。
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator : operator) /bin/ls, (root) /bin/kill,\e
+       /usr/bin/lprm
+.RE
+.fi
+.PP
+注意してほしいが、Runas_Spec のグループの部分は、
 コマンドをそのグループとして実行することをユーザに許可しているのであって、
-そうすることをユーザに強制しているのではない。コマンドラインで
-グループを指定しない場合は、コマンドは、パスワード・データベースにある
-変身対象ユーザのエントリに登録されているグループとして
-実行されることになるのだ。以下のコマンドはすべて、上記の sudoers
-エントリによって許可されることになるだろう。
-.PP
-.Vb 3
-\& $ sudo \-u operator /bin/ls
-\& $ sudo \-u operator \-g operator /bin/ls
-\& $ sudo \-g operator /bin/ls
-.Ve
-.PP
-.\"O In the following example, user \fBtcm\fR may run commands that access
-.\"O a modem device file with the dialer group.
-.\"O .PP
-次の例では、ユーザ \fBtcm\fR が
-モデムのデバイスファイルにアクセスするコマンドを
+そうすることをユーザに強制しているのではない。
+コマンドラインでグループを指定しない場合は、コマンドは、
+パスワード・データベースにある変身対象ユーザのエントリに登録されているグループとして実行されることになるのだ。
+以下のコマンドはすべて、上記の sudoers エントリによって許可されることになるだろう。
+.nf
+.sp
+.RS 0n
+$ sudo \-u operator /bin/ls
+$ sudo \-u operator \-g operator /bin/ls
+$ sudo \-g operator /bin/ls
+.RE
+.fi
+.PP
+次の例では、ユーザ \fBtcm\fP がモデムのデバイスファイルにアクセスするコマンドを
 dialer グループとして実行できるようにしている。
+.nf
+.sp
+.RS 0n
+tcm    boulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\e
+       /usr/local/bin/minicom
+.RE
+.fi
 .PP
-.Vb 2
-\& tcm    boulder = (:dialer) /usr/bin/tip, /usr/bin/cu, \e
-\&        /usr/local/bin/minicom
-.Ve
-.PP
-.\"O Note that in this example only the group will be set, the command
-.\"O still runs as user \fBtcm\fR.  E.g.
-.\"O .PP
-この例では、グループしか指定できないことに注意してほしい。コマンドは
-ユーザ \fBtcm\fR の資格のまま実行されるのである。たとえば、次のように。
-.PP
-.Vb 1
-\& $ sudo \-g dialer /usr/bin/cu
-.Ve
-.PP
-.\"O Multiple users and groups may be present in a \f(CW\*(C`Runas_Spec\*(C'\fR, in
-.\"O which case the user may select any combination of users and groups
-.\"O via the \fB\-u\fR and \fB\-g\fR options.  In this example:
-.\"O .PP
-\&\f(CW\*(C`Runas_Spec\*(C'\fR には複数のユーザやグループが存在してもよい。
-その場合、ユーザは \fB\-u\fR や \fB\-g\fR オプションを使って、
-ユーザとグループのどんな組み合わせでも選択することができる。
+この例では、グループしか指定できないことに注意してほしい。コマンドは、
+ユーザ \fBtcm\fP の資格のまま実行されるのである。たとえば、次のように。
+.nf
+.sp
+.RS 0n
+$ sudo \-g dialer /usr/bin/cu
+.RE
+.fi
 .PP
-.Vb 1
-\& alan   ALL = (root, bin : operator, system) ALL
-.Ve
+Runas_Spec には複数のユーザやグループが存在してもよい。
+その場合、ユーザは \fB\-u\fP や \fB\-g\fP オプションを使って、
+ユーザとグループのどんな組み合わせでも選択することができる。
+.nf
+.sp
+.RS 0n
+alan   ALL = (root, bin : operator, system) ALL
+.RE
+.fi
 .PP
-.\"O user \fBalan\fR may run any command as either user root or bin,
-.\"O optionally setting the group to operator or system.
-この例では、ユーザ \fBalan\fR は root と bin ユーザのどちらに変身して、
-任意のコマンドを実行することもできる。また、グループを
+この例では、ユーザ \fBalan\fP は root と bin のどちらのユーザにでも変身して、
+任意のコマンドを実行することができる。また、グループを
 operator や system に設定することも自由である。
-.if \n(SL \{\
-.SS "SELinux_Spec"
-.IX Subsection "SELinux_Spec"
-.\"O On systems with SELinux support, \fIsudoers\fR entries may optionally have
-.\"O an SELinux role and/or type associated with a command.  If a role or
-.\"O type is specified with the command it will override any default values
-.\"O specified in \fIsudoers\fR.  A role or type specified on the command line,
-.\"O however, will supercede the values in \fIsudoers\fR.
-SELinux をサポートするシステムでは、\fIsudoers\fR のエントリで
+.SS SELinux_Spec
+SELinux をサポートするシステムでは、\fIsudoers\fP ファイルのエントリで
 SELinux の role や type をコマンドに関連付けることも可能である。
-コマンドについて指定した role や type は、\fIsudoers\fR 中で
-role や type にデフォルトの値が設定されていても、それよりも優先される。
-もっとも、role や type をコマンドラインで指定すれば、
-そちらが \fIsudoers\fR 中の値よりさらに優先されることになる。
-\}
-.SS "Tag_Spec"
-.IX Subsection "Tag_Spec"
-.\"O A command may have zero or more tags associated with it.  There are
-.\"O eight possible tag values, \f(CW\*(C`NOPASSWD\*(C'\fR, \f(CW\*(C`PASSWD\*(C'\fR, \f(CW\*(C`NOEXEC\*(C'\fR,
-.\"O \&\f(CW\*(C`EXEC\*(C'\fR, \f(CW\*(C`SETENV\*(C'\fR, \f(CW\*(C`NOSETENV\*(C'\fR, \f(CW\*(C`LOG_INPUT\*(C'\fR, \f(CW\*(C`NOLOG_INPUT\*(C'\fR,
-.\"O \&\f(CW\*(C`LOG_OUTPUT\*(C'\fR and \f(CW\*(C`NOLOG_OUTPUT\*(C'\fR.  Once a tag is set on a \f(CW\*(C`Cmnd\*(C'\fR,
-.\"O subsequent \f(CW\*(C`Cmnd\*(C'\fRs in the \f(CW\*(C`Cmnd_Spec_List\*(C'\fR, inherit the tag unless
-.\"O it is overridden by the opposite tag (i.e.: \f(CW\*(C`PASSWD\*(C'\fR overrides
-.\"O \&\f(CW\*(C`NOPASSWD\*(C'\fR and \f(CW\*(C`NOEXEC\*(C'\fR overrides \f(CW\*(C`EXEC\*(C'\fR).
-.\"O .PP
-コマンドは 0 個以上のタグを伴うことができる。使用できるタグの値は 10 個あり、 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR, \f(CW\*(C`PASSWD\*(C'\fR,
-\&\f(CW\*(C`NOEXEC\*(C'\fR, \f(CW\*(C`EXEC\*(C'\fR,
-\&\f(CW\*(C`SETENV\*(C'\fR, \f(CW\*(C`NOSETENV\*(C'\fR,
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR, \f(CW\*(C`NOLOG_INPUT\*(C'\fR,
-\&\f(CW\*(C`LOG_OUTPUT\*(C'\fR, \f(CW\*(C`NOLOG_OUTPUT\*(C'\fR
-が、それである。ある \f(CW\*(C`Cmnd\*(C'\fR にタグをセットすると、
-\&\f(CW\*(C`Cmnd_Spec_List\*(C'\fR 中のそれ以後の 
-\&\f(CW\*(C`Cmnd\*(C'\fR は、反対の意味を持つタグによって変更されないかぎり、
-そのタグを継承することになる (すなわち、\f(CW\*(C`PASSWD\*(C'\fR は 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR を上書きし、\f(CW\*(C`NOEXEC\*(C'\fR は 
-\&\f(CW\*(C`EXEC\*(C'\fR を上書きする)。
-.PP
-.\"O \fI\s-1NOPASSWD\s0 and \s-1PASSWD\s0\fR
-\fI\s-1NOPASSWD\s0 と \s-1PASSWD\s0\fR
-.IX Subsection "NOPASSWD and PASSWD"
-.PP
-.\"O By default, \fBsudo\fR requires that a user authenticate him or herself
-.\"O before running a command.  This behavior can be modified via the
-.\"O \&\f(CW\*(C`NOPASSWD\*(C'\fR tag.  Like a \f(CW\*(C`Runas_Spec\*(C'\fR, the \f(CW\*(C`NOPASSWD\*(C'\fR tag sets
-.\"O a default for the commands that follow it in the \f(CW\*(C`Cmnd_Spec_List\*(C'\fR.
-.\"O Conversely, the \f(CW\*(C`PASSWD\*(C'\fR tag can be used to reverse things.
-.\"O For example:
-.\"O .PP
-デフォルトでは、\fBsudo\fR はコマンドを実行する前に、
-ユーザが本人であることを証明するように求める。この振舞いは 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグによって変更することができる。
-\&\f(CW\*(C`Runas_Spec\*(C'\fR と同様、\f(CW\*(C`NOPASSWD\*(C'\fR タグも 
-\&\f(CW\*(C`Cmnd_Spec_List\*(C'\fR 中のそれに続くコマンドに対して
-デフォルトを定める。
-\&\f(CW\*(C`PASSWD\*(C'\fR の働きは反対であり、
-振舞いを元に戻したいときに使える。たとえば、
-.PP
-.Vb 1
-\& ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
-.Ve
-.PP
-.\"O would allow the user \fBray\fR to run \fI/bin/kill\fR, \fI/bin/ls\fR, and
-.\"O \&\fI/usr/bin/lprm\fR as \fBroot\fR on the machine rushmore without
-.\"O authenticating himself.  If we only want \fBray\fR to be able to
-.\"O run \fI/bin/kill\fR without a password the entry would be:
-.\"O .PP
-とすれば、ユーザ \fBray\fR はマシン rushmore 上で認証をしないでも 
-\&\fBroot\fR として \fI/bin/kill\fR, \fI/bin/ls\fR,
-\&\fI/usr/bin/lprm\fR を実行できるようになる。もし \fBray\fR
-がパスワードなしで実行できるコマンドを \fI/bin/kill\fR だけに絞りたいのなら、
-エントリはこうなるだろう。
-.PP
-.Vb 1
-\& ray    rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
-.Ve
-.PP
-.\"O Note, however, that the \f(CW\*(C`PASSWD\*(C'\fR tag has no effect on users who are
-.\"O in the group specified by the \fIexempt_group\fR option.
-.\"O .PP
-ただし、ユーザが \fIexempt_group\fR オプションで指定されているグループに属する場合は、
-\&\f(CW\*(C`PASSWD\*(C'\fR タグが効果を持たないことに注意してほしい。
-.PP
-.\"O By default, if the \f(CW\*(C`NOPASSWD\*(C'\fR tag is applied to any of the entries
-.\"O for a user on the current host, he or she will be able to run
-.\"O \&\f(CW\*(C`sudo \-l\*(C'\fR without a password.  Additionally, a user may only run
-.\"O \&\f(CW\*(C`sudo \-v\*(C'\fR without a password if the \f(CW\*(C`NOPASSWD\*(C'\fR tag is present
-.\"O for all a user's entries that pertain to the current host.
-.\"O This behavior may be overridden via the verifypw and listpw options.
-.\"O .PP
-デフォルトでは、現在使用中のホストに関するユーザのエントリのうちに 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが指定されているものが一つでもあれば、
-そのユーザはパスワードなしで \f(CW\*(C`sudo \-l\*(C'\fR を実行できる。
-なお、ユーザがパスワードなしで \f(CW\*(C`sudo \-v\*(C'\fR を実行できるのは、
-現在使用中のホストに関するそのユーザのエントリのすべてで
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが生きているときのみである。この動作は、
-\&\fIverifypw\fR や \fIlistpw\fR オプションによって変更できる。
-.PP
-.\"O \fI\s-1NOEXEC\s0 and \s-1EXEC\s0\fR
-\fI\s-1NOEXEC\s0 と \s-1EXEC\s0\fR
-.IX Subsection "NOEXEC and EXEC"
-.PP
-.\"O If \fBsudo\fR has been compiled with \fInoexec\fR support and the underlying
-.\"O operating system supports it, the \f(CW\*(C`NOEXEC\*(C'\fR tag can be used to prevent
-.\"O a dynamically-linked executable from running further commands itself.
-.\"O .PP
-\&\fBsudo\fR が \fInoexec\fR サポートつきでコンパイルされ、
-使用しているオペレーティングシステムがそれに対応している場合、
-\&\f(CW\*(C`NOEXEC\*(C'\fR タグを利用すれば、動的にリンクされた実行ファイルが
-そこからさらにコマンドを実行するのを防ぐことができる。
-.PP
-.\"O In the following example, user \fBaaron\fR may run \fI/usr/bin/more\fR
-.\"O and \fI/usr/bin/vi\fR but shell escapes will be disabled.
-.\"O .PP
-次の例では、ユーザ \fBaaron\fR は \fI/usr/bin/more\fR と 
-\&\fI/usr/bin/vi\fR を実行できるが、シェル・エスケープは利用できない。
-.PP
-.Vb 1
-\& aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-.Ve
-.PP
-.\"O See the \*(L"\s-1PREVENTING\s0 \s-1SHELL\s0 \s-1ESCAPES\s0\*(R" section below for more details
-.\"O on how \f(CW\*(C`NOEXEC\*(C'\fR works and whether or not it will work on your system.
-.\"O .PP
-\&\f(CW\*(C`NOEXEC\*(C'\fR がどんなふうに働くのか、お使いのシステムで利用できるかどうか、
+role や type を特定のコマンドについて指定すると、
+\fIsudoers\fP 中でデフォルトとして設定されている role や type があっても、
+それよりも優先される。もっとも、role や type をコマンドラインで指定すれば、
+そちらが \fIsudoers\fP 中の値よりさらに優先されることになる。
+.SS Tag_Spec
+コマンドは 0 個以上のタグを伴うことができる。使用できるタグの値は 14 個あり、
+EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT,
+NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD, SETENV, NOSETENV が、それである。
+ある Cmnd にタグをセットすると、
+Cmnd_Spec_List 中のそれ以後の Cmnd は、
+反対の意味を持つタグによって変更されないかぎり、そのタグを継承することになる
+(すなわち、PASSWD は NOPASSWD を無効にし、NOEXEC は EXEC を無効にする)。
+.TP  2n
+\fIEXEC\fP と \fINOEXEC\fP
+.sp
+\fBsudo\fP が \fInoexec\fP サポートつきでコンパイルされ、
+使用しているオペレーティングシステムがそれに対応している場合、NOEXEC タグを利用すれば、
+動的にリンクされた実行ファイルが、そこからさらにコマンドを実行するのを防ぐことができる。
+.sp
+次の例では、ユーザ \fBaaron\fP は \fI/usr/bin/more\fP と
+\fI/usr/bin/vi\fP を実行できるが、シェル・エスケープは利用できない。
+.nf
+.sp
+.RS 2n
+aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
+.RE
+.fi
+.RS 2n
+.sp
+NOEXEC がどんなふうに働くのか、お使いのシステムで利用できるかどうか、
 などについてさらに詳しく知りたかったら、
-「シェル・エスケープを防止する」のセクションを御覧になるとよい。
-.PP
-.\"O \fI\s-1SETENV\s0 and \s-1NOSETENV\s0\fR
-\fI\s-1SETENV\s0 と \s-1NOSETENV\s0\fR
-.IX Subsection "SETENV and NOSETENV"
-.PP
-.\"O These tags override the value of the \fIsetenv\fR option on a per-command
-.\"O basis.  Note that if \f(CW\*(C`SETENV\*(C'\fR has been set for a command, the user
-.\"O may disable the \fIenv_reset\fR option from the command line via the
-.\"O \&\fB\-E\fR option.  Additionally, environment variables set on the command
-.\"O line are not subject to the restrictions imposed by \fIenv_check\fR,
-.\"O \&\fIenv_delete\fR, or \fIenv_keep\fR.  As such, only trusted users should
-.\"O be allowed to set variables in this manner.  If the command matched
-.\"O is \fB\s-1ALL\s0\fR, the \f(CW\*(C`SETENV\*(C'\fR tag is implied for that command; this
-.\"O default may be overridden by use of the \f(CW\*(C`NOSETENV\*(C'\fR tag.
-.\"O .PP
-上記のタグは \fIsetenv\fR オプションの値をコマンドごとに変更する。
-あるコマンドに対して \f(CW\*(C`SETENV\*(C'\fR を設定すると、
-ユーザがコマンドラインから \fB\-E\fR オプションを使用して、
-\fIenv_reset\fR オプションを無効にできるようになることに注意してほしい。
-それだけではない。コマンドラインから設定する環境変数が \fIenv_check\fR,
-\&\fIenv_delete\fR, \fIenv_keep\fR による規制を受けないようにもなる。
+後述の「シェル・エスケープの防止」セクションを御覧になるとよい。
+.RE
+.TP  2n
+\fIFOLLOW\fP と \fINOFOLLOW\fP
+バージョン 1.8.15 以来、\fBsudoedit\fP は、
+\fIsudoedit_follow\fP オプションが有効になっていないかぎり、
+ファイルがシンボリックリンクならば、それを開かないようになっている。
+\fIFOLLOW\fP と \fINOFOLLOW\fP タグは、\fIsudoedit_follow\fP の値を上書きするので、
+これを使用すれば、シンボリックリンクの編集をコマンドごとに許可したり、
+禁止したりすることができる。
+この二つのタグが効果があるのは、\fIsudoedit\fP コマンドに対してのみであり、
+他のどんなコマンドに対しても無視される。
+.TP  2n
+\fILOG_INPUT\fP と \fINOLOG_INPUT\fP
+.sp
+この二つのタグは \fIlog_input\fP オプションの値をコマンドごとに変更する。
+詳しい情報については、後述する「SUDOERS のオプション」セクションの
+\fIlog_input\fP の説明をご覧になっていただきたい。
+.TP  2n
+\fILOG_OUTPUT\fP と \fINOLOG_OUTPUT\fP
+.sp
+この二つのタグは \fIlog_output\fP オプションの値をコマンドごとに変更する。
+詳しい情報については、後述する「SUDOERS のオプション」セクションの
+\fIlog_output\fP の説明をご覧になっていただきたい。
+.TP  2n
+\fIMAIL\fP と \fINOMAIL\fP
+.sp
+この二つのタグを使えば、
+\fImail_all_cmnds\fP オプションの値をコマンドごとに上書きすることによって、
+ユーザがコマンドを実行したときにメールを送付するかどうかについて、
+きめ細かな制御を行うことができる。
+\fBsudo\fP が \fB\-l\fP や \fB\-v\fP オプションを付けて実行されたときには、効果がない。
+\fINOMAIL\fP は、\fImail_always\fP や \fImail_no_perms\fP オプションも上書きする。
+詳細については、後述の「SUDOERS のオプション」セクションにある
+\fImail_all_cmnds\fP, \fImail_always\fP, \fImail_no_perms\fP の説明をご覧いただきたい。
+.TP  2n
+\fIPASSWD\fP と \fINOPASSWD\fP
+.sp
+デフォルトでは、\fBsudo\fP はコマンドを実行する前に、ユーザが本人であることを証明するように求める。
+この振舞いは NOPASSWD タグによって変更することができる。Runas_Spec と同様、
+NOPASSWD タグも Cmnd_Spec_List 中のそれに続くコマンドに対してデフォルトを定める。
+PASSWD の働きは反対であり、振舞いを元に戻したいときに使える。たとえば、
+.nf
+.sp
+.RS 2n
+ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
+.RE
+.fi
+.RS 2n
+.sp
+とすれば、ユーザ \fBray\fP はマシン rushmore 上で認証をしないでも
+\fBroot\fP として \fI/bin/kill\fP, \fI/bin/ls\fP, \fI/usr/bin/lprm\fP
+を実行できるようになる。もし \fBray\fP がパスワードなしで実行できるコマンドを
+\fI/bin/kill\fP だけに絞りたいのなら、エントリはこうなるだろう。
+.nf
+.sp
+.RS 2n
+ray    rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
+.RE
+.fi
+.sp
+ただし、ユーザが \fIexempt_group\fP オプションで指定されているグループに属する場合は、
+PASSWD タグが効果を持たないことに注意してほしい。
+.sp
+デフォルトでは、現在使用中のホストに関するユーザのエントリのうちに
+NOPASSWD タグが指定されているものが一つでもあれば、
+そのユーザはパスワードなしで "sudo \-l" を実行できる。
+なお、ユーザがパスワードなしで "sudo \-v" を実行できるのは、
+現在使用中のホストに関するそのユーザのエントリのすべてで
+NOPASSWD タグが生きているときのみである。この動作は、\fIverifypw\fP や \fIlistpw\fP
+オプションによって変更できる。
+.RE
+.TP  2n
+\fISETENV\fP と \fINOSETENV\fP
+.sp
+上記のタグは \fIsetenv\fP オプションの値をコマンドごとに変更する。
+あるコマンドに対して SETENV を設定すると、
+ユーザがコマンドラインから \fB\-E\fP オプションを使用して、
+\fIenv_reset\fP オプションを無効にできるようになることに注意してほしい。
+それだけではない。コマンドラインから設定する環境変数が \fIenv_check\fP,
+\fIenv_delete\fP, \fIenv_keep\fP による規制を受けないようにもなる。
 それ故、こうした形で環境変数を設定することを許可するのは、
 信用できるユーザだけに限るべきである。なお、マッチするコマンドが
-\&\fB\s-1ALL\s0\fR だった場合は、暗黙のうちに \f(CW\*(C`SETENV\*(C'\fR
-タグがそのコマンドに付けられるが、このデフォルトの動作は
-\&\f(CW\*(C`UNSETENV\*(C'\fR タグを使えば打ち消すことができる。
-.PP
-.\"O \fI\s-1LOG_INPUT\s0 and \s-1NOLOG_INPUT\s0\fR
-\fI\s-1LOG_INPUT\s0 と \s-1NOLOG_INPUT\s0\fR
-.IX Subsection "LOG_INPUT and NOLOG_INPUT"
-.PP
-.\"O These tags override the value of the \fIlog_input\fR option on a
-.\"O per-command basis.  For more information, see the description of
-.\"O \&\fIlog_input\fR in the \*(L"\s-1SUDOERS\s0 \s-1OPTIONS\s0\*(R" section below.
-.\"O .PP
-この二つのタグは \fIlog_input\fR オプションの値をコマンドごとに変更する。
-詳しい情報については、後述する「SUDOERS のオプション」セクションの
-\&\fIlog_input\fR の説明をご覧になっていただきたい。
+\fBALL\fP だった場合は、暗黙のうちに SETENVタグがそのコマンドに付けられるが、
+このデフォルトの動作は UNSETENV タグを使えば打ち消すことができる。
+.SS ワイルドカード
+\fIsudoers\fP ファイルでは、ホスト名、コマンドのパス名、
+コマンドライン引き数にシェル形式のワイルドカード (メタ文字とか
+glob キャラクタとも言う) が使用できる。ワイルドカードのマッチングは、
+IEEE Std 1003.1 ("POSIX.1") で規定されている glob(3) や fnmatch(3)
+関数を用いて行われる。
+.TP  10n
+*
+0 個以上の任意の文字 (ホワイトスペースも含む) にマッチする。
+.TP  10n
+\&?
+任意の 1 文字 (ホワイトスペースも含む) にマッチする。
+.TP  10n
+[...]
+指定された範囲の任意の 1 文字にマッチする。
+.TP  10n
+[!...]
+指定された範囲\fI以外\fPの任意の 1 文字にマッチする。
+.TP  10n
+\ex
+\&'x' がどんな文字であっても、'x' そのものとして評価する。
+この表記法は '*', '\&?', '[\&', ']\&'
+といった特殊文字をエスケープするために使用される。
 .PP
-.\"O \fI\s-1LOG_OUTPUT\s0 and \s-1NOLOG_OUTPUT\s0\fR
-\fI\s-1LOG_OUTPUT\s0 と \s-1NOLOG_OUTPUT\s0\fR
-.IX Subsection "LOG_OUTPUT and NOLOG_OUTPUT"
+\fB上記のものは正規表現ではないことに注意していただきたい。\fP
+正規表現とは違って、範囲内の文字一つ以上にマッチさせる方法は存在しない。
 .PP
-.\"O These tags override the value of the \fIlog_output\fR option on a
-.\"O per-command basis.  For more information, see the description of
-.\"O \&\fIlog_output\fR in the \*(L"\s-1SUDOERS\s0 \s-1OPTIONS\s0\*(R" section below.
-この二つのタグは \fIlog_output\fR オプションの値をコマンドごとに変更する。
-詳しい情報については、後述する「SUDOERS のオプション」セクションの
-\&\fIlog_output\fR の説明をご覧になっていただきたい。
-.\"O .SS "Wildcards"
-.SS "ワイルドカード"
-.IX Subsection "Wildcards"
-.\"O \&\fBsudo\fR allows shell-style \fIwildcards\fR (aka meta or glob characters)
-.\"O to be used in host names, path names and command line arguments in
-.\"O the \fIsudoers\fR file.  Wildcard matching is done via the \fB\s-1POSIX\s0\fR
-.\"O \&\fIglob\fR\|(3) and \fIfnmatch\fR\|(3) routines.  Note that these are \fInot\fR
-.\"O regular expressions.
-\&\fIsudoers\fR ファイルでは、ホスト名、コマンドラインのパス名、
-コマンドラインの引き数にシェル形式のワイルドカード (メタ文字とか
-glob キャラクタとも言う) が使用できる。ワイルドカードのマッチングは
-\&\fB\s-1POSIX\s0\fR の \fIglob\fR\|(3) と \fIfnmatch\fR\|(3)
-ルーティンを用いて行われる。
-\&\fB以下のものは正規表現ではない\fRことに注意してほしい。
-.ie n .IP "\*(C`*\*(C'" 8
-.el .IP "\f(CW\*(C`*\*(C'\fR" 8
-.IX Item "*"
-.\"O Matches any set of zero or more characters.
-ゼロ個以上の任意の文字にマッチする。
-.ie n .IP "\*(C`?\*(C'" 8
-.el .IP "\f(CW\*(C`?\*(C'\fR" 8
-.IX Item "?"
-.\"O Matches any single character.
-任意の一文字にマッチする。
-.ie n .IP "\*(C`[...]\*(C'" 8
-.el .IP "\f(CW\*(C`[...]\*(C'\fR" 8
-.IX Item "[...]"
-.\"O Matches any character in the specified range.
-指定された範囲の任意の一文字にマッチする。
-.ie n .IP "\*(C`[!...]\*(C'" 8
-.el .IP "\f(CW\*(C`[!...]\*(C'\fR" 8
-.IX Item "[!...]"
-.\"O Matches any character \fBnot\fR in the specified range.
-指定された範囲\fB以外\fRの任意の一文字にマッチする。
-.ie n .IP "\*(C`\ex\*(C'" 8
-.el .IP "\f(CW\*(C`\ex\*(C'\fR" 8
-.IX Item "x"
-.\"O For any character \*(L"x\*(R", evaluates to \*(L"x\*(R".  This is used to
-.\"O escape special characters such as: \*(L"*\*(R", \*(L"?\*(R", \*(L"[\*(R", and \*(L"}\*(R".
-.\"O .PP
-\&\*(L"x\*(R" がどんな文字であっても、\*(L"x\*(R" そのものとして評価する。
-この表記法は \*(L"*\*(R", \*(L"?\*(R", \*(L"[\*(R", \*(L"}\*(R"
-といった特殊文字をエスケープするために使用される。
+使用しているシステムの glob(3) や fnmatch(3) 関数が文字クラスに対応しているなら、
+文字クラスが使用できる。ただし、':\&' 文字は、
+\fIsudoers\fP で特別な意味を持っているので、エスケープしなければならない。
+一例を上げる。
+.nf
+.sp
+.RS 4n
+/bin/ls [[\e:\&alpha\e:\&]]*
+.RE
+.fi
+.PP
+\fIsudoers\fP 中で上のように書けば、アルファベットの文字で始まるどんなファイル名にもマッチするだろう。
+.PP
+コマンドのファイル名の部分で使われたワイルドカードはフォワードスラッシュ
+('/') に\fIマッチしない\fPことに注意していただきたい。そこで、次のようなパスは、
+.nf
+.sp
+.RS 4n
+/usr/bin/*
+.RE
+.fi
+.PP
+\fI/usr/bin/who\fP にマッチするが、\fI/usr/bin/X11/xterm\fP にはマッチしない。
+.PP
+だが、コマンドライン引き数の部分のマッチングでは、
+ワイルドカードはスラッシュに\fIしっかりマッチする\fP。
+コマンドライン引き数には、任意の文字列を含むことが認められており、
+パス名しか許されていないわけではないからだ。
+.PP
+\fIsudoers\fP \fB中でコマンドライン引き数にワイルドカードを使用するときは、\fP
+\fB注意しなければならない。\fP
+.br
+コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行う。
+そのため、'\&?' や '*' といったワイルドカード文字が、
+ユーザが指定したコマンドライン引き数と、
+単語の境界をまたいでマッチしてしまうことになるのだ。
+これは想定外のことかもしれない。たとえば、\fIsudoers\fP に次のような行があると、
+.nf
+.sp
+.RS 4n
+%operator ALL = /bin/cat /var/log/messages*
+.RE
+.fi
+.PP
+以下のコマンドが実行できることになるが、
+.nf
+.sp
+.RS 4n
+$ sudo cat /var/log/messages.1
+.RE
+.fi
+.PP
+また、以下のコマンドの実行も可能になってしまう。
+.nf
+.sp
+.RS 4n
+$ sudo cat /var/log/messages /etc/shadow
+.RE
+.fi
 .PP
-.\"O \&\s-1POSIX\s0 character classes may also be used if your system's \fIglob\fR\|(3)
-.\"O and \fIfnmatch\fR\|(3) functions support them.  However, because the
-.\"O \&\f(CW\*(Aq:\*(Aq\fR character has special meaning in \fIsudoers\fR, it must be
-.\"O escaped.  For example:
-.\"O .PP
-使用システムの \fIglob\fR\|(3) や \fIfnmatch\fR\|(3) 関数が
-\&\s-1POSIX\s0 の文字クラスに対応しているなら、文字クラスも使用できる。
-ただし、\f(CW\*(Aq:\*(Aq\fR 文字は、
-\&\fIsudoers\fR で特別な意味を持っているので、エスケープしなければならない。
-一例を上げると、
-.PP
-.Vb 1
-\&    /bin/ls [[\e:alpha\e:]]*
-.Ve
-.PP
-.\"O Would match any file name beginning with a letter.
-.\"O .PP
-上記は、文字で始まるどんなファイル名にもマッチするだろう。
-.PP
-.\"O Note that a forward slash ('/') will \fBnot\fR be matched by
-.\"O wildcards used in the path name.  When matching the command
-.\"O line arguments, however, a slash \fBdoes\fR get matched by
-.\"O wildcards.  This is to make a path like:
-コマンドのパス名に使われたワイルドカードはフォワードスラッシュ ('/') 
-に\fBマッチしない\fRことに注意してほしい。
-だが、コマンドライン引き数とのマッチングでは、
-ワイルドカードはスラッシュと\fBしっかりマッチする\fR。そこで、
-.PP
-.Vb 1
-\&    /usr/bin/*
-.Ve
-.PP
-.\"O match \fI/usr/bin/who\fR but not \fI/usr/bin/X11/xterm\fR.
-というコマンドパスは、\fI/usr/bin/who\fR とマッチするが、
-\&\fI/usr/bin/X11/xterm\fR とはマッチしないことになる。
-.\"O .SS "Exceptions to wildcard rules"
-.SS "ワイルドカード・ルールの例外"
-.IX Subsection "Exceptions to wildcard rules"
-.\"O The following exceptions apply to the above rules:
-上記ルールには次の例外がある。
-.ie n .IP """""" 8
-.el .IP "\f(CW``''\fR" 8
-.IX Item """"""
-.\"O If the empty string \f(CW""\fR is the only command line argument in the
-.\"O \&\fIsudoers\fR entry it means that command is not allowed to be run
-.\"O with \fBany\fR arguments.
-\&\fIsudoers\fR ファイルのエントリにおいて、空文字列 \f(CW""\fR
+後者は、おそらく意図に反しているだろう。たいていの場合、
+コマンドラインの処理は、\fIsudoers\fP ファイルの中ではなく、
+スクリプト言語中で行った方が間違いがない。
+.SS ワイルドカード・ルールの例外
+上記ルールには以下の例外がある。
+.TP  10n
+\&""
+\fIsudoers\fP ファイルのエントリにおいて、空文字列 \&""
 が唯一のコマンドライン引き数だった場合は、
-そのコマンドは引数を\fB付けずに\fR実行しなければならないことを意味する。
-.\"O .SS "Including other files from within sudoers"
+そのコマンドは引き数を\fI付けずに\fP実行しなければならないことを意味している。
+.TP  10n
+sudoedit
+組み込みコマンド \fIsudoedit\fP にコマンドラインで渡す引き数は、
+常にパス名であるはずだ。そこで、ワイルドカードはフォワードスラッシュ
+('/') にマッチしないようになっている
+(訳注: \fIsudoers\fP 中で \fIsudoedit\fP に対して引き数を指定する場合、
+それは一般のコマンドライン引き数と同じ扱いではなく、パス名扱いになるということ)。
 .SS "sudoers に他のファイルをインクルードする"
-.IX Subsection "Including other files from within sudoers"
-.\"O It is possible to include other \fIsudoers\fR files from within the
-.\"O \&\fIsudoers\fR file currently being parsed using the \f(CW\*(C`#include\*(C'\fR and
-.\"O \&\f(CW\*(C`#includedir\*(C'\fR directives.
-.\"O .PP
-\&\f(CW\*(C`#include\*(C'\fR 命令や \f(CW\*(C`#includedir\*(C'\fR
-命令を使えば、現在解析中の \fIsudoers\fR ファイルに、外部にあるほかの
-\&\fIsudoers\fR ファイルをインクルードすることができる。
-.PP
-.\"O This can be used, for example, to keep a site-wide \fIsudoers\fR file
-.\"O in addition to a local, per-machine file.  For the sake of this
-.\"O example the site-wide \fIsudoers\fR will be \fI/etc/sudoers\fR and the
-.\"O per-machine one will be \fI/etc/sudoers.local\fR.  To include
-.\"O \&\fI/etc/sudoers.local\fR from within \fI/etc/sudoers\fR we would use the
-.\"O following line in \fI/etc/sudoers\fR:
-この方法を使えば、たとえば、
-サイト全体で使用する \fIsudoers\fR ファイルのほかに、
-マシンごとのローカルな \fIsudoers\fR ファイルを持つことができる。
-ここでは、サイト全体の \fIsudoers\fR を \fI/etc/sudoers\fR とし、
-マシンごとの方は \fI/etc/sudoers.local\fR とすることにしよう。
-\&\fI/etc/sudoers\fR に \fI/etc/sudoers.local\fR をインクルードするには、
-\&\fI/etc/sudoers\fR 中に次の行を書き込む。
-.Sp
-.RS 4
-\&\f(CW\*(C`#include /etc/sudoers.local\*(C'\fR
-.RE
-.PP
-.\"O When \fBsudo\fR reaches this line it will suspend processing of the
-.\"O current file (\fI/etc/sudoers\fR) and switch to \fI/etc/sudoers.local\fR.
-.\"O Upon reaching the end of \fI/etc/sudoers.local\fR, the rest of
-.\"O \&\fI/etc/sudoers\fR will be processed.  Files that are included may
-.\"O themselves include other files.  A hard limit of 128 nested include
-.\"O files is enforced to prevent include file loops.
-.\"O .PP
-\&\fBsudo\fR は解析中この行に出会うと、カレントファイル
-(\fI/etc/sudoers\fR だ) の処理を一時中止し、処理の対象を
-\&\fI/etc/sudoers.local\fR に切り替える。そして、
-\&\fI/etc/sudoers.local\fR の末尾まで達したら、\fI/etc/sudoers\fR
-の残りを処理するのだ。
-インクルードされたファイルがさらに他のファイルをインクルードしてもよい。
-インクルートのネストには 128 ファイルまでというハード・リミットがあって、
+#include 命令や #includedir 命令を使えば、現在解析中の \fIsudoers\fP ファイルに、
+外部にあるほかの \fIsudoers\fP ファイルをインクルードすることができる。
+.PP
+この方法を使えば、たとえば、サイト全体で使用する \fIsudoers\fP ファイルのほかに、
+マシンごとのローカルな \fIsudoers\fP ファイルを持つことができる。
+ここでは、サイト全体の \fIsudoers\fP ファイルを \fI/etc/sudoers\fP とし、
+マシンごとの方は \fI/etc/sudoers.local\fP とすることにしよう。
+\fI/etc/sudoers\fP に \fI/etc/sudoers.local\fP をインクルードするには、
+\fI/etc/sudoers\fP 中に次の行を書き込めばよい。
+.nf
+.sp
+.RS 4n
+#include /etc/sudoers.local
+.RE
+.fi
+.PP
+\fBsudo\fP は解析中この行に出会うと、カレントファイル (\fI/etc/sudoers\fP だ)
+の処理を一時中止して、処理の対象を \fI/etc/sudoers.local\fP に切り替える。
+そして、\fI/etc/sudoers.local\fP の末尾まで達したら、\fI/etc/sudoers\fP の残りを処理するのである。
+インクルードされるファイルが、さらに他のファイルをインクルードしていてもよい。
+インクルートのネストには、128 ファイルまでというハード・リミットがあって、
 インクルードファイルのループが起きないようになっている。
 .PP
-.\"O If the path to the include file is not fully-qualified (does not
-.\"O begin with a \fI/\fR), it must be located in the same directory as the
-.\"O sudoers file it was included from.  For example, if \fI/etc/sudoers\fR
-.\"O contains the line:
-.\"O .Sp
-.\"O .RS 4
-.\"O \&\f(CW\*(C`#include sudoers.local\*(C'\fR
-.\"O .RE
-.\"O .PP
-.\"O the file that will be included is \fI/etc/sudoers.local\fR.
-.\"O .PP
 インクルードファイルのパスが絶対パスでない場合は (すなわち、パスが
-\&\fI/\fR で始まっていない場合は)、インクルードする側の sudoers
+\&'/' で始まっていない場合は)、インクルードする側の sudoers
 ファイルと同じディレクトリに、インクルードされるファイルも存在しなければならない。
-たとえば、
-\&\fI/etc/sudoers\fR に次のような行があったら、
-.Sp
-.RS 4
-\&\f(CW\*(C`#include sudoers.local\*(C'\fR
-.RE
-.PP
-インクルードされるファイルは、\fI/etc/sudoers.local\fR である。
-(訳注: インクルードファイルのディレクトリ部分を省略できるのは、
-sudo-1.8.4 以上である。sudo-1.8.3 以前では、絶対パスで指定しなければならない。) 
-.PP
-.\"O The file name may also include the \f(CW%h\fR escape, signifying the short form
-.\"O of the host name.  I.e., if the machine's host name is \*(L"xerxes\*(R", then
-.\"O .PP
-なお、ファイル名には \f(CW%h\fR エスケープが使える。
-これはホスト名の短縮形を示している。
-たとえば、マシンのホスト名が \*(L"xerxes\*(R" のとき、
-.Sp
-.RS 4
-\&\f(CW\*(C`#include /etc/sudoers.%h\*(C'\fR
-.RE
-.PP
-.\"O will cause \fBsudo\fR to include the file \fI/etc/sudoers.xerxes\fR.
-.\"O .PP
-と書けば、\fBsudo\fR はファイル \fI/etc/sudoers.xerxes\fR
+たとえば、\fI/etc/sudoers\fP に次のような行があったら、
+.nf
+.sp
+.RS 4n
+#include sudoers.local
+.RE
+.fi
+.PP
+インクルードされるファイルは、\fI/etc/sudoers.local\fP である。
+.PP
+なお、ファイル名には %h エスケープが使える。これはホスト名の短縮形を示している。
+たとえば、マシンのホスト名が "xerxes" のとき、
+.nf
+.sp
+.RS 4n
+#include /etc/sudoers.%h
+.RE
+.fi
+.PP
+と書けば、\fBsudo\fP はファイル \fI/etc/sudoers.xerxes\fP
 をインクルードすることになる。
 .PP
-.\"O The \f(CW\*(C`#includedir\*(C'\fR directive can be used to create a \fIsudo.d\fR
-.\"O directory that the system package manager can drop \fIsudoers\fR rules
-.\"O into as part of package installation.  For example, given:
-.\"O .PP
-\&\f(CW\*(C`#includedir\*(C'\fR 命令を使えば、
-\&\fIsudo.d\fR ディレクトリを作っておいて、
-システムのパッケージ管理者がパッケージをインストールする際に
-\&\fIsudoers\fR のルールを記したファイルをそこに入れてやる、
-といったことが可能になる。たとえば、
-次のように書くと、
-.Sp
-.RS 4
-\&\f(CW\*(C`#includedir /etc/sudoers.d\*(C'\fR
-.RE
-.PP
-.\"O \&\fBsudo\fR will read each file in \fI/etc/sudoers.d\fR, skipping file
-.\"O names that end in \f(CW\*(C`~\*(C'\fR or contain a \f(CW\*(C`.\*(C'\fR character to avoid causing
-.\"O problems with package manager or editor temporary/backup files.
-.\"O Files are parsed in sorted lexical order.  That is,
-.\"O \&\fI/etc/sudoers.d/01_first\fR will be parsed before
-.\"O \&\fI/etc/sudoers.d/10_second\fR.  Be aware that because the sorting is
-.\"O lexical, not numeric, \fI/etc/sudoers.d/1_whoops\fR would be loaded
-.\"O \&\fBafter\fR \fI/etc/sudoers.d/10_second\fR.  Using a consistent number
-.\"O of leading zeroes in the file names can be used to avoid such
-.\"O problems.
-.\"O .PP
-\&\fBsudo\fR は \fI/etc/sudoers.d\fR にあるファイルを一つづつ読み込む。
-ただし、末尾が \f(CW\*(C`~\*(C'\fR だったり、
-\&\f(CW\*(C`.\*(C'\fR 文字を含んでいたりするファイル名はスキップするが、
+#includedir 命令を使えば、\fIsudoers.d\fP ディレクトリを作っておいて、
+システムのパッケージ管理者がパッケージをインストールする際に \fIsudoers\fP
+のルールを記したファイルをそこに入れてやる、といったことが可能になる。
+たとえば、次のように書くと、
+.nf
+.sp
+.RS 4n
+#includedir /etc/sudoers.d
+.RE
+.fi
+.PP
+\fBsudo\fP は \fI/etc/sudoers.d\fP にあるファイルを一つづつ読み込む。
+ただし、末尾が '~' だったり、'.\&' 文字を含んでいたりするファイル名はスキップするが、
 これは、パッケージマネージャやエディタが作った、
 テンポラリファイルやバックアップファイルを読み込むような問題を起こさないためである。
-ファイルは辞書順にソートされて、解析される。
-すなわち、\fI/etc/sudoers.d/01_first\fR は \fI/etc/sudoers.d/10_second\fR
-より前に解析されるということだ。ソートは辞書順であって、数値の順ではないので、
-\&\fI/etc/sudoers.d/1_whoops\fR というファイルがあっても、
-\&\fI/etc/sudoers.d/10_second\fR
-\&\fBより後で\fRロードされることに注意してほしい。
+ファイルは辞書順にソートされて、解析される。すなわち、\fI/etc/sudoers.d/01_first\fP は
+\fI/etc/sudoers.d/10_second\fP より前に解析されるということだ。
+ソートは辞書順であって、数値の順ではないので、
+\fI/etc/sudoers.d/1_whoops\fP というファイルがあっても、
+\fI/etc/sudoers.d/10_second\fP \fIより後で\fPロードされることに注意していただきたい。
 ファイル名の先頭を 0 で埋めて数字の桁を揃えれば、
 こうした問題を回避することができる。
 .PP
-.\"O Note that unlike files included via \f(CW\*(C`#include\*(C'\fR, \fBvisudo\fR will not
-.\"O edit the files in a \f(CW\*(C`#includedir\*(C'\fR directory unless one of them
-.\"O contains a syntax error.  It is still possible to run \fBvisudo\fR
-.\"O with the \f(CW\*(C`\-f\*(C'\fR flag to edit the files directly.
-気を付けてほしいが、
-\&\f(CW\*(C`#include\*(C'\fR でインクルードされたファイルとは違って
-(訳注: \fBvisudo\fR は \fI/etc/sudoers\fR を編集するとき、
-\&\f(CW\*(C`#include\*(C'\fR で指定したファイルがあれば、続けてそれも編集する)、
-\&\fBvisudo\fR が \f(CW\*(C`#includedir\*(C'\fR
-で指定したディレクトリのファイルまで編集するのは、
+気をつけていただきたいが、#include でインクルードされたファイルとは違って
+(訳注: \fBvisudo\fP は \fI/etc/sudoers\fP を編集するとき、#include
+で指定したファイルがあれば、続けてそれも編集する)、
+\fBvisudo\fP が #includedir で指定したディレクトリのファイルまで編集するのは、
 シンタクスエラーを含むものがあるときだけである。
-とは言え、\fBvisudo\fR を \f(CW\*(C`\-f\*(C'\fR オプション付きで実行して、
-ディレクトリ中のファイルを直接編集することは可能だ。
-.\"O .SS "Other special characters and reserved words"
-.SS "ほかの特殊文字と予約語"
-.IX Subsection "Other special characters and reserved words"
-.\"O The pound sign ('#') is used to indicate a comment (unless it is
-.\"O part of a #include directive or unless it occurs in the context of
-.\"O a user name and is followed by one or more digits, in which case
-.\"O it is treated as a uid).  Both the comment character and any text
-.\"O after it, up to the end of the line, are ignored.
-.\"O .PP
+とは言え、\fBvisudo\fP を \fB\-f\fP オプション付きで実行して、
+ディレクトリ中のファイルを直接編集することは可能だが、その場合は、
+他のファイルで定義されているエイリアスが再定義されていても、
+それを見つけて指摘してくれることはない。
+.SS ほかの特殊文字と予約語
 パウンド記号 ('#') はコメントを示すのに使用される
 (例外は、#include 命令の一部であるときや、ユーザ名に関連して現れ、
 その後に一個以上の数字が続くときであり、後者の場合は uid と見なされる)。
 コメント記号とそれに続くテキストは、行末にいたるまで無視される。
 .PP
-.\"O The reserved word \fB\s-1ALL\s0\fR is a built-in \fIalias\fR that always causes
-.\"O a match to succeed.  It can be used wherever one might otherwise
-.\"O use a \f(CW\*(C`Cmnd_Alias\*(C'\fR, \f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR, or \f(CW\*(C`Host_Alias\*(C'\fR.
-.\"O You should not try to define your own \fIalias\fR called \fB\s-1ALL\s0\fR as the
-.\"O built-in alias will be used in preference to your own.  Please note
-.\"O that using \fB\s-1ALL\s0\fR can be dangerous since in a command context, it
-.\"O allows the user to run \fBany\fR command on the system.
-.\"O .PP
-予約語 \fB\s-1ALL\s0\fR は組込みのエイリアスであり、何に対してでもマッチする。
-\&\fB\s-1ALL\s0\fR は、\f(CW\*(C`Cmnd_Alias\*(C'\fR,
-\&\f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR,
-\&\f(CW\*(C`Host_Alias\*(C'\fR を代わりに使えるところなら、
-どこでも使用できる。\fB\s-1ALL\s0\fR
-という名前のエイリアスを自分で定義しようとしてはいけない。
+予約語 \fBALL\fP は組込みのエイリアスであり、何に対してでもマッチする。
+\fBALL\fP は、Cmnd_Alias, User_Alias, Runas_Alias, Host_Alias
+を代わりに使えるところなら、どこでも使用できる。
+\fBALL\fP という名前のエイリアスを自分で定義しようとしてはいけない。
 組込みのエイリアスの方が、自分で作ったエイリアスより優先して使われるからだ。
-\&\fB\s-1ALL\s0\fR の使用には危険が伴うことがあるのを忘れないでいただきたい。
-なぜなら、\fB\s-1ALL\s0\fR をコマンドに関して使うと、
-ユーザにシステム上の\fBどんな\fRコマンドでも実行することを許してしまうからである。
-.PP
-.\"O An exclamation point ('!') can be used as a logical \fInot\fR operator
-.\"O both in an \fIalias\fR and in front of a \f(CW\*(C`Cmnd\*(C'\fR.  This allows one to
-.\"O exclude certain values.  Note, however, that using a \f(CW\*(C`!\*(C'\fR in
-.\"O conjunction with the built-in \f(CW\*(C`ALL\*(C'\fR alias to allow a user to
-.\"O run \*(L"all but a few\*(R" commands rarely works as intended (see \s-1SECURITY\s0
-.\"O \&\s-1NOTES\s0 below).
-.\"O .PP
-エクスクラメーションマーク ('!') は、エイリアスでも 
-\&\f(CW\*(C`Cmnd\*(C'\fR の前でも論理 \fInot\fR 演算子として使用できる。
-これによってある値を除外することが可能だ。しかしながら、
-組込みエイリアス \f(CW\*(C`ALL\*(C'\fR と \f(CW\*(C`!\*(C'\fR
-を組み合わせて、「二三のコマンド以外のすべての」コマンドの実行を
-あるユーザに許可しようとしても、
-思いどおりの動きになることはめったにないことに気を付けてほしい
+\fBALL\fP の使用には危険が伴うことがあるのを忘れないでいただきたい。
+なぜなら、\fBALL\fP をコマンドに関して使うと、
+ユーザにシステム上の\fIどんな\fPコマンドでも実行することを許してしまうからである。
+.PP
+エクスクラメーションマーク ('\&!') は、リストやエイリアス中はもちろん、
+Cmnd の前でも論理 \fInot\fP 演算子として使用することができる。
+これによってある値を除外することが可能になるわけだ。
+ただし、'\&!' 演算子が効果を持つためには、
+そこから除外する対象が存在しなければならない。
+たとえば、root 以外のすべてのユーザにマッチさせたい場合は、
+次の表現を使用する。
+.nf
+.sp
+.RS 4n
+ALL,!root
+.RE
+.fi
+.PP
+次のように \fBALL\fP の記述を省くと、
+.nf
+.sp
+.RS 4n
+!root
+.RE
+.fi
+.PP
+確かに root を明示的に否定することにはなるが、
+他のどんなユーザともマッチすることがない。
+この点が、正真の「否定」演算子とは違っている。
+.PP
+とは言え、組込みエイリアス \fBALL\fP と '\&!' を組み合わせて、
+「二三のコマンド以外のすべての」コマンドの実行をあるユーザに許可しようとしても、
+意図どおりの動きになることはめったにないことに気をつけていただきたい
 (下記の「セキュリティに関する注意点」を参照)。
 .PP
-.\"O Long lines can be continued with a backslash ('\e') as the last
-.\"O character on the line.
-.\"O .PP
-長い行は、行末にバックスラッシュ ('\e') を置けば、継続することができる。
-.PP
-.\"O Whitespace between elements in a list as well as special syntactic
-.\"O characters in a \fIUser Specification\fR ('=', ':', '(', ')') is optional.
-.\"O .PP
-リストにおける要素間やユーザ設定における構文用特殊文字 
-('=', ':', '(', ')') の前後に空白文字 (whitespace)を入れることは、
-任意である。
-.PP
-.\"O The following characters must be escaped with a backslash ('\e') when
-.\"O used as part of a word (e.g.\ a user name or host name):
-.\"O \&'!', '=', ':', ',', '(', ')', '\e'.
+長い行は、行末にバックスラッシュ '\e' を置けば、継続することができる。
+.PP
+リストにおける要素間やユーザ設定における構文用特殊文字 ('=\&', ':\&',
+\&'(\&', ')\&') の前後に空白 (white space) を入れることは、任意である。
+.PP
 次の文字を単語 (ユーザ名とかホスト名とか) の一部として使うときは、
 バックスラッシュ ('\e') でエスケープしなければならない。
-\&'!', '=', ':', ',', '(', ')', '\e' がそれである。
-.\"O .SH "SUDOERS OPTIONS"
+\&'\&!', '=\&', ':\&', ',\&', '(\&', ')\&', '\e' がそれである。
 .SH "SUDOERS のオプション"
-.IX Header "SUDOERS OPTIONS"
-.\"O \&\fBsudo\fR's behavior can be modified by \f(CW\*(C`Default_Entry\*(C'\fR lines, as
-.\"O explained earlier.  A list of all supported Defaults parameters,
-.\"O grouped by type, are listed below.
-.\"O .PP
-すでに説明したように、\fBsudo\fR の動作は 
-\&\f(CW\*(C`Default_Entry\*(C'\fR 行によって変更することができる。
+すでに説明したように、\fBsudo\fP の動作は Default_Entry 行によって変更することができる。
 Defaults に与えることのできるパラメータについて、
 サポートされているもののすべてを、タイプ別にまとめて以下に列挙する。
 .PP
-.\"O \&\fBBoolean Flags\fR:
-\&\fBフラグ (真偽値)\fR:
-.IP "always_set_home" 16
-.IX Item "always_set_home"
-.\"O If enabled, \fBsudo\fR will set the \f(CW\*(C`HOME\*(C'\fR environment variable to the
-.\"O home directory of the target user (which is root unless the \fB\-u\fR
-.\"O option is used).  This effectively means that the \fB\-H\fR option is
-.\"O always implied.  Note that \f(CW\*(C`HOME\*(C'\fR is already set when the the
-.\"O \&\fIenv_reset\fR option is enabled, so \fIalways_set_home\fR is only
-.\"O effective for configurations where either \fIenv_reset\fR is disabled
-.\"O or \f(CW\*(C`HOME\*(C'\fR is present in the \fIenv_keep\fR list.
-.\"O This flag is \fIoff\fR by default.
-これを有効にすると、\fBsudo\fR は環境変数 \f(CW\*(C`HOME\*(C'\fR
-を変身対象ユーザの (\fB\-u\fR オプションが使用されないかぎり、root である)
-ホームディレクトリに設定する。事実上、暗黙のうちに
-\&\fBsudo\fR に \fB\-H\fR オプションが常に指定されることになるわけだ。
-気をつけてほしいのは、\fIenv_reset\fR オプションが有効になっている場合、
-\&\f(CW\*(C`HOME\*(C'\fR の値は (訳注: 変身対象ユーザのホームディレクトリに)
-すでに設定済みだということだ。だから、
-\&\fIalways_set_home\fR の指定に効果があるのは、
-\&\fIenv_reset\fR を無効に設定している場合か、
-\&\fIenv_keep\fR のリストに \f(CW\*(C`HOME\*(C'\fR が存在する場合のみである。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "authenticate" 16
-.IX Item "authenticate"
-.\"O If set, users must authenticate themselves via a password (or other
-.\"O means of authentication) before they may run commands.  This default
-.\"O may be overridden via the \f(CW\*(C`PASSWD\*(C'\fR and \f(CW\*(C`NOPASSWD\*(C'\fR tags.
-.\"O This flag is \fIon\fR by default.
+\fBブーリアン・フラグ\fP (真偽値)
+.TP  18n
+always_query_group_plugin
+\fIgroup_plugin\fP の設定がなされている場合に、
+%group の形式のグループを解決するのに、
+同名のシステム・グループが同時に存在しないかぎり、
+指定された \fIgroup_plugin\fP を使用する。
+\fIalways_query_group_plugin\fP が設定されていない通常の状態では、
+%:group の形式のグループのみが \fIgroup_plugin\fP に渡されるのである。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+always_set_home
+これを有効にすると、\fBsudo\fP は環境変数 HOME を変身対象ユーザの
+(\fB\-u\fP オプションが使用されていないかぎり、root の)
+ホームディレクトリに設定することになる。事実上、
+暗黙のうちに \fBsudo\fP に \fB\-H\fP オプションが常に指定されることになるわけだ。
+気をつけていただきたいが、デフォルトでは、
+\fIenv_reset\fP オプションが有効になっている場合は、
+HOME の値は、変身対象ユーザのホームディレクトリに設定されることになる。
+だから、\fIalways_set_home\fP
+の指定に効果があるのは、\fIenv_reset\fP を無効に設定している場合か、
+\fIenv_keep\fP のリストに HOME が存在する場合だけである。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+authenticate
 これをセットすると、ユーザはコマンドの実行を許可される前に、パスワードで
 (あるいは、ほかの認証方法で) 自分が本人であることを証明しなければならなくなる。
-このデフォルト値は
-\&\f(CW\*(C`PASSWD\*(C'\fR や \f(CW\*(C`NOPASSWD\*(C'\fR タグで変更できる。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "closefrom_override" 16
-.IX Item "closefrom_override"
-.\"O If set, the user may use \fBsudo\fR's \fB\-C\fR option which
-.\"O overrides the default starting point at which \fBsudo\fR begins
-.\"O closing open file descriptors.  This flag is \fIoff\fR by default.
-これをセットすると、ユーザが \fBsudo\fR の \fB\-C\fR
-オプションを使用できるようになる。\fB\-C\fR オプションというのは、
-\&\fBsudo\fR が開いているファイルを閉じていくとき、
-どのファイル・ディスクリプタから閉じていくかという、
-デフォルトの始点を変更するものだ。このフラグはデフォルトでは \fIoff\fR である。
-.IP "compress_io" 16
-.IX Item "compress_io"
-.\"O If set, and \fBsudo\fR is configured to log a command's input or output,
-.\"O the I/O logs will be compressed using \fBzlib\fR.  This flag is \fIon\fR
-.\"O by default when \fBsudo\fR is compiled with \fBzlib\fR support.
-これをセットすると、
-\&\fBsudo\fR がコマンドの入出力のログを取るように設定されている場合に、
-入出力のログを \fBzlib\fR を使って、圧縮することになる。
-\&\fBsudo\fR が \fBzlib\fR をサポートするようにコンパイルされている場合、
-このフラグはデフォルトで \fIon\fR である。
-.IP "env_editor" 16
-.IX Item "env_editor"
-.\"O If set, \fBvisudo\fR will use the value of the \s-1EDITOR\s0 or \s-1VISUAL\s0
-.\"O environment variables before falling back on the default editor list.
-.\"O Note that this may create a security hole as it allows the user to
-.\"O run any arbitrary command as root without logging.  A safer alternative
-.\"O is to place a colon-separated list of editors in the \f(CW\*(C`editor\*(C'\fR
-.\"O variable.  \fBvisudo\fR will then only use the \s-1EDITOR\s0 or \s-1VISUAL\s0 if
-.\"O they match a value specified in \f(CW\*(C`editor\*(C'\fR.  This flag is \fIoff\fR by
-.\"O default.
+このデフォルト値は PASSWD や NOPASSWD タグで変更できる。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+closefrom_override
+これをセットすると、ユーザが \fBsudo\fP の \fB\-C\fP
+オプションを使用できるようになる。\fB\-C\fP オプションというのは、
+\fBsudo\fP が開いているファイル・ディスクリプタを閉じていくとき、
+どのディスクリプタから閉じていくかという、デフォルトの始点を変更するものだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+compress_io
 これをセットすると、
-\&\fBvisudo\fR はデフォルトのエディタ・リストを利用する前に、
-環境変数 \s-1EDITOR\s0 や \s-1VISUAL\s0 の値を使用するようになる。
-これがセキュリティホールになりかねないことに注意してほしい。
+\fBsudo\fP がコマンドの入出力のログを取るように設定されている場合に、
+入出力のログを \fBzlib\fP を使って、圧縮することになる。
+\fBsudo\fP が \fBzlib\fP をサポートするようにコンパイルされている場合、
+このフラグのデフォルトは \fIon\fP である。
+.TP  18n
+exec_background
+デフォルトでは、\fBsudo\fP 自体がフォアグラウンドで実行されているかぎり、
+コマンドは \fBsudo\fP によってフォアグラウンド・プロセスとして実行される。それに対して、
+\fIexec_background\fP フラグが有効になっている場合は、
+コマンドが (入出力ロギングや \fIuse_pty\fP フラグのために) pty で実行されていると、
+そのコマンドはバックグラウンド・プロセスとして実行されることになる。
+このとき、そのコマンドが制御ターミナルから読み込みを行おうとすると
+(あるいは、ターミナルの設定を変更しようとすると)、
+コマンドは SIGTTIN シグナル (ターミナル設定の場合は SIGTTOU シグナル)
+によってサスペンドされる。そうしたことが起きても、
+\fBsudo\fP がフォアグラウンド・プロセスならば、
+そのコマンドは制御ターミナルの使用を許可され、
+ユーザが何の操作をしないでも、フォアグラウンドで実行が再開される。
+コマンドの実行をバックグラウンドで始めることの利点は、
+そうすれば、コマンドが明示的に要求しないかぎり、
+\fBsudo\fP はターミナルから読み込みを行う必要がないということである。
+そうしない場合は、コマンドが入力を要求しているか否かに関わりなく、
+いかなる入力もコマンドに渡さなければならないのだ
+(カーネルがターミナルのバッファリングをしているので、
+コマンドが本当にその入力を必要としているかどうかを、
+判断することはできないのである)。
+この動作は、従来の \fIsudo\fP の動作とは異なっている。
+また、コマンドが pty で実行されていないときの動作とも異なっている。
+.sp
+この動作がシームレスに行われるためには、オペレーティングシステムが、
+システムコールの自動的な再スタートをサポートしていなければならない。
+残念なことに、すべてのオペレーティングシステムが、
+デフォルトでそれを行ってくれるわけではなく、
+それを行ってくれるオペレーティングシステムにも、バグがあることがある。たとえば、
+Mac OS X は、\fBtcgetattr\fP() や \fBtcsetattr\fP() システムコールの再スタートに失敗する
+(これは Mac OS X のバグである)。それだけではなく、この動作は、
+コマンドが SIGTTIN や SIGTTOU シグナルで停止することを当てにしているので、
+そうしたシグナルは捕獲し、別のシグナル (たいていは SIGSTOP)
+で自分を停止させるプログラムは、自動的にフォアグラウンド化できない。
+linux の su(1) コマンドの動作が、系統によっては、そんなふうになっている。
+このフラグはデフォルトでは \fIoff\fP である。
+.sp
+この設定は、バージョン 1.8.7 以上でのみサポートされている。
+また、入出力ロギングが有効になっている場合や、
+\fIuse_pty\fP フラグが有効になっている場合以外、この設定には効果がない。
+.TP  18n
+env_editor
+これをセットすると、\fBvisudo\fP はデフォルトのエディタ・リストを利用する前に、
+環境変数 EDITOR や VISUAL の値を使用するようになる。
+それがセキュリティホールになりかねないことに注意していただきたい。
 ユーザが root として任意のコマンドを、
 ログに記録されることなく実行できるようになるからだ。
-こうした環境変数を利用するときの、
-\&\fIenv_editor\fR を有効にするよりも安全な方法は、
-\&\fIsudoers\fR ファイルの \f(CW\*(C`editor\*(C'\fR オプションに
-コロンで区切ったエディタのリストを書いておくことだ。そうすれば、
-\&\fBvisudo\fR が \s-1EDITOR\s0 や \s-1VISUAL\s0 を使うのは、それが
-\&\f(CW\*(C`editor\*(C'\fR オプションに指定した値とマッチしたときだけになる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "env_reset" 16
-.IX Item "env_reset"
-.\"O If set, \fBsudo\fR will run the command in a minimal environment
-.\"O containing the \f(CW\*(C`TERM\*(C'\fR, \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR, \f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR,
-.\"O \&\f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR and \f(CW\*(C`SUDO_*\*(C'\fR variables.  Any
-.\"O variables in the caller's environment that match the \f(CW\*(C`env_keep\*(C'\fR
-.\"O and \f(CW\*(C`env_check\*(C'\fR lists are then added, followed by any variables
-.\"O present in the file specified by the \fIenv_file\fR option (if any).
-.\"O The default contents of the \f(CW\*(C`env_keep\*(C'\fR and \f(CW\*(C`env_check\*(C'\fR lists are
-.\"O displayed when \fBsudo\fR is run by root with the \fI\-V\fR option.  If
-.\"O the \fIsecure_path\fR option is set, its value will be used for the
-.\"O \&\f(CW\*(C`PATH\*(C'\fR environment variable.  This flag is \fIon\fR by
-.\"O default.
-これをセットすると、\fBsudo\fR は最小限の環境でコマンドを実行することになる。
-その環境には、以下の変数が含まれる。すなわち、
-\&\f(CW\*(C`TERM\*(C'\fR, \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR,
-\&\f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR, \f(CW\*(C`LOGNAME\*(C'\fR,
-\&\f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR、
-及び \f(CW\*(C`SUDO_*\*(C'\fR という変数。
-これに、\fBsudo\fR を起動するユーザの環境にある変数のうち、
-\&\f(CW\*(C`env_keep\*(C'\fR や \f(CW\*(C`env_check\*(C'\fR
-のリストにマッチするものが加わり、さらに、
-\&\fIenv_file\fR オプションによって指定されたファイルがあれば、
+こうした環境変数を利用するときの、\fIenv_editor\fP を有効にするよりも安全な方法は、
+\fIsudoers\fP ファイルの \fIeditor\fP オプションにコロンで区切ったエディタのリストを書いておくことだ。そうすれば、
+\fBvisudo\fP が EDITOR や VISUAL を使うのは、それが \fIeditor\fP
+オプションに指定した値とマッチしたときだけになる。
+\fIenv_reset\fP フラグが有効な場合に、\fBsudo\fP 経由で \fBvisudo\fP を起動したとき
+\fIenv_editor\fP フラグが効果を持つためには、
+環境変数 EDITOR や VISUAL が \fIenv_keep\fP のリストに存在していなければならない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+env_reset
+これをセットすると、\fBsudo\fP は最小限の環境でコマンドを実行することになる。
+その環境には、以下の変数が含まれている。TERM, PATH, HOME,
+MAIL, SHELL, LOGNAME, USER, USERNAME、及び SUDO_* という変数。
+それに、\fBsudo\fP を起動するユーザの環境にある変数のうち、
+\fIenv_keep\fP や \fIenv_check\fP のリストにマッチするものが加わり、
+さらに、\fIenv_file\fP オプションによって指定されたファイルがあれば、
 そのファイルに記載されたすべての変数が追加される。
-\&\f(CW\*(C`env_keep\*(C'\fR や \f(CW\*(C`env_check\*(C'\fR
-のリストにデフォルトでどんな変数が存在するかは、root ユーザが
-\&\fBsudo\fR に \fI\-V\fR オプションを付けて実行すれば、見ることができる。
-なお、\fIsecure_path\fR オプションが設定されているときは、
-その値が環境変数 \f(CW\*(C`PATH\*(C'\fR として使用される。
-このフラグはデフォルトで \fIon\fR である。
-.IP "fast_glob" 16
-.IX Item "fast_glob"
-.\"O Normally, \fBsudo\fR uses the \fIglob\fR\|(3) function to do shell-style
-.\"O globbing when matching path names.  However, since it accesses the
-.\"O file system, \fIglob\fR\|(3) can take a long time to complete for some
-.\"O patterns, especially when the pattern references a network file
-.\"O system that is mounted on demand (automounted).  The \fIfast_glob\fR
-.\"O option causes \fBsudo\fR to use the \fIfnmatch\fR\|(3) function, which does
-.\"O not access the file system to do its matching.  The disadvantage
-.\"O of \fIfast_glob\fR is that it is unable to match relative path names
-.\"O such as \fI./ls\fR or \fI../bin/ls\fR.  This has security implications
-.\"O when path names that include globbing characters are used with the
-.\"O negation operator, \f(CW\*(Aq!\*(Aq\fR, as such rules can be trivially bypassed.
-.\"O As such, this option should not be used when \fIsudoers\fR contains rules 
-.\"O that contain negated path names which include globbing characters.
-.\"O This flag is \fIoff\fR by default.
-通常 \fBsudo\fR はパス名のマッチングをするとき、\fIglob\fR\|(3)
-関数を使用して、シェル・スタイルのワイルドカード展開 (glob) を行う。
-しかし、\fIglob\fR\|(3) はファイルシステムにアクセスするので、
+\fIenv_keep\fP や \fIenv_check\fP のリストにどんな変数が存在するかについては、
+root ユーザとして \fBsudo\fP に \fB\-V\fP オプションを付けて実行すれば、
+\fIsudoers\fP 中でグローバルな Defaults パラメータによって変更された結果を、
+見ることができる。
+なお、\fIsecure_path\fP オプションが設定されているときは、
+その値が環境変数 PATH の値として使用される。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+fast_glob
+通常 \fBsudo\fP はパス名のマッチングをするとき、glob(3)関数を使用して、
+シェル・スタイルのワイルドカード展開 (glob) を行う。
+しかし、glob(3) はファイルシステムにアクセスするので、
 指定パターンによっては、作業を完了するまでに時間がかかることがある。
 必要な時にマウントするようになっている (つまりオートマウントの)
 ネットワーク・ファイル・システムを参照するときは、とりわけ時間がかかる。
-\&\fIfast_glob\fR オプションを指定すると、
-\&\fBsudo\fR が \fIfnmatch\fR\|(3) 関数を使うようになるが、
-こちらの関数はマッチングの際にファイルシステムにアクセスしない。
-\&\fIfast_glob\fR の欠点は、\fI./ls\fR や \fI../bin/ls\fR
-のような相対パスに対するマッチができないことである。
-そのため、ワイルドカードを含むパス名が、否定演算子 \f(CW\*(Aq!\*(Aq\fR
+\fIfast_glob\fP オプションを指定すると、\fBsudo\fP が fnmatch(3) 関数を使うようになるが、
+こちらの関数はマッチングを行う際にファイルシステムにアクセスしない。
+\fIfast_glob\fP の欠点は、\fI./ls\fP や \fI../bin/ls\fP
+のような相対パスに対するマッチができないことである。そのため、
+ワイルドカードを含むパス名が、否定演算子 '!\&'
 と一緒に使われている場合に、セキュリティ上の問題が生じるおそれがある。
-そうしたルールは簡単に迂回できるからだ。それ故、\fIsudoers\fR
-にワイルドカードを含むパス名を否定するルールが存在する場合は、
-このオプションを使ってはいけない。このフラグはデフォルトでは \fIoff\fR である。
-.IP "fqdn" 16
-.IX Item "fqdn"
-.\"O Set this flag if you want to put fully qualified host names in the
-.\"O \&\fIsudoers\fR file.  I.e., instead of myhost you would use myhost.mydomain.edu.
-.\"O You may still use the short form if you wish (and even mix the two).
-.\"O Beware that turning on \fIfqdn\fR requires \fBsudo\fR to make \s-1DNS\s0 lookups
-.\"O which may make \fBsudo\fR unusable if \s-1DNS\s0 stops working (for example
-.\"O if the machine is not plugged into the network).  Also note that
-.\"O you must use the host's official name as \s-1DNS\s0 knows it.  That is,
-.\"O you may not use a host alias (\f(CW\*(C`CNAME\*(C'\fR entry) due to performance
-.\"O issues and the fact that there is no way to get all aliases from
-.\"O \&\s-1DNS\s0.  If your machine's host name (as returned by the \f(CW\*(C`hostname\*(C'\fR
-.\"O command) is already fully qualified you shouldn't need to set
-.\"O \&\fIfqdn\fR.  This flag is \fIoff\fR by default.
-\&\fIsudoers\fR ファイルで完全修飾ホスト名を使用したかったら、
-このフラグをセットするとよい。すなわち、myhost ではなく、
-myhost.mydomain.edu を使いたい場合だ。そのときでも、そうしたければ、
-短縮形も使える (両方を混ぜて使うこともできる)。気を付けてほしいのは、
-\&\fIfqdn\fR を 有効にすると、
-\&\fBsudo\fR は \s-1DNS\s0 へ問い合わせをしなければならないので、
-\&\s-1DNS\s0 サービスが稼働していない場合、
-\&\fBsudo\fR が使えなくなるかもしれないということだ
-(たとえば、マシンがネットワークに接続していない場合)。
-もう一つ気を付けるべきことがある。
-\&\s-1DNS\s0 が知っているホストの正式名を使わなければならないということだ。
-言い換えれば、ホストのエイリアス (\f(CW\*(C`CNAME\*(C'\fR のエントリ)
-を使ってはいけない。パフォーマンスの問題もあるし、
-\&\s-1DNS\s0 からエイリアスをすべて取得する方法はないからでもある。
-マシンのホスト名が (\f(CW\*(C`hostname\*(C'\fR コマンドで返ってくるものが)
-すでに完全修飾名になっているならば、\fIfqdn\fR をセットする必要はないだろう。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "ignore_dot" 16
-.IX Item "ignore_dot"
-.\"O If set, \fBsudo\fR will ignore '.' or '' (current dir) in the \f(CW\*(C`PATH\*(C'\fR
-.\"O environment variable; the \f(CW\*(C`PATH\*(C'\fR itself is not modified.  This
-.\"O flag is \fIoff\fR by default.
-これをセットすると、環境変数 \f(CW\*(C`PATH\*(C'\fR 中に '.' や ''
-(カレントディレクトリを意味する) があっても、\fBsudo\fR はそれを無視する。
-\&\f(CW\*(C`PATH\*(C'\fR そのものは変更されない。このフラグは
-デフォルトでは \fIoff\fR である。
-.IP "ignore_local_sudoers" 16
-.IX Item "ignore_local_sudoers"
-.\"O If set via \s-1LDAP\s0, parsing of \fI/etc/sudoers\fR will be skipped.
-.\"O This is intended for Enterprises that wish to prevent the usage of local
-.\"O sudoers files so that only \s-1LDAP\s0 is used.  This thwarts the efforts of
-.\"O rogue operators who would attempt to add roles to \fI/etc/sudoers\fR.
-.\"O When this option is present, \fI/etc/sudoers\fR does not even need to
-.\"O exist. Since this option tells \fBsudo\fR how to behave when no specific \s-1LDAP\s0
-.\"O entries have been matched, this sudoOption is only meaningful for the
-.\"O \&\f(CW\*(C`cn=defaults\*(C'\fR section.  This flag is \fIoff\fR by default.
-\&\s-1LDAP\s0 の方でこのフラグをセットすると、
-\&\fI/etc/sudoers\fR の解析がスキップされる。
+そうしたルールは簡単に迂回できるからだ。
+従って、\fIsudoers\fP ファイルに、ワイルドカードを含むパス名を否定するルールが存在する場合は、
+このオプションを使ってはいけない。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+fqdn
+ローカル・ホスト名 (hostname コマンドが返すもの) がドメイン名を含まないとき、
+\fIsudoers\fP ファイルで完全修飾ホスト名を使用したかったら、
+このフラッグをセットするとよい。すなわち、myhost ではなく、
+myhost.mydomain.edu を使いたい場合だ。そのときでも、
+そうしたければ、短縮形も使用できる (両方を混ぜて使うこともできる)。
+このオプションに効果があるのは、\fBgetaddrinfo\fP() や \fBgethostbyname\fP()
+関数が返すホストの「正規名 (canonical name)」が、
+完全修飾ドメイン名であるときだけである。
+システムがホスト名の解決に DNS を使用するように設定されているときは、普通そうなる。
+.sp
+システムが DNS よりも優先して \fI/etc/hosts\fP を使用するように設定されている場合、
+ホストの正規名は完全修飾名ではないかもしれない。
+ホスト名解決のために問い合わせる情報源の順番は、普通 \fI/etc/nsswitch.conf\fP,
+\fI/etc/netsvc.conf\fP, \fI/etc/host.conf\fP ファイルで指定されている。
+\fI/etc/resolv.conf\fP のこともある。\fI/etc/hosts\fP ファイルでは、
+エントリの最初のホスト名が正規名と見なされる。後に続く名前はエイリアスであり、
+\fBsudoers\fP によって使用されることはない。たとえば、hosts ファイルに
+"xyzzy" というマシンについて下記の行があるとき、
+完全修飾ドメイン名がホストの正規名であり、短い方の名前はエイリアスである。
+.sp
+.RS 24n
+192.168.1.1    xyzzy.sudo.ws xyzzy
+.RE
+.RS 18n
+.sp
+hosts ファイルにおけるマシンのエントリの書式が不適切だと、
+hosts ファイルへの問い合わせが DNS より前に行われる場合、\fIfqdn\fP
+オプションを指定しても、効果がない。
+.sp
+気を付けてほしいのは、ホスト名の解決に DNS を使用する場合、
+\fIfqdn\fP 有効にすると、\fBsudoers\fP は DNS に問い合わせをしなければならないので、
+DNS が稼働していないと (たとえば、マシンがネットワークから切り離されていると)、
+\fBsudo\fP が使えなくなるということである。
+もう一つ気を付けるべきことがある。hosts ファイルを使用する場合と同じことだが、
+DNS が知っているホストの正規名を使わなければならない。
+言い換えれば、ホストのエイリアス (CNAME のエントリ) を使ってはいけない。
+パフォーマンスの問題もあるし、DNS からエイリアスをすべて取得する方法はないからでもある。
+.sp
+このフラグはデフォルトでは \fIoff\fP である。
+.RE
+.TP  18n
+ignore_dot
+これをセットすると、環境変数 PATH 中に "." や ""
+(どちらもカレントディレクトリを意味する) があっても、
+\fBsudo\fP はそれを無視する。PATH そのものは変更されない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+ignore_local_sudoers
+LDAP の方でこのフラグをセットすると、\fI/etc/sudoers\fP の解析がスキップされることになる。
 このフラグは、ローカルにある sudoers ファイルの使用を禁じて、
-\&\s-1LDAP\s0 のみを使うようにしたい企業のためにある。
-たちの悪いオペレータが \fI/etc/sudoers\fR に手を加えて、
+LDAP のみを使うようにしたい諸企業のためにある。
+たちの悪いオペレータが \fI/etc/sudoers\fP に手を加えて、
 自分の権限を増やそうとしても、そうした悪だくみは阻止されるわけだ。
 このオプションが設定されているときは、
-\&\fI/etc/sudoers\fR ファイルは存在する必要すらない。このオプションは、
-\&\s-1LDAP\s0 中に、マッチする特定のエントリが存在しなかったときに、
-いかに振舞うべきかを \fBsudo\fR に指示するものだから、
-これを指定する sudoOption は、
-\&\f(CW\*(C`cn=defaults\*(C'\fR のセクションになければ意味がない。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "insults" 16
-.IX Item "insults"
-.\"O If set, \fBsudo\fR will insult users when they enter an incorrect
-.\"O password.  This flag is \fIoff\fR by default.
+\fI/etc/sudoers\fP ファイルは存在する必要すらない。このオプションは、
+LDAP 中に、マッチする特定のエントリが存在しなかったときに、
+いかに振舞うべきかを \fBsudo\fP に指示するものだから、
+これを指定する sudoOption は、cn=defaults のセクションになければ意味がない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+insults
 これをセットすると、不正なパスワードが入力されたとき、
-\&\fBsudo\fR がユーザに悪態をつく。このフラグはデフォルトでは \fIoff\fR
-である。
-.IP "log_host" 16
-.IX Item "log_host"
-.\"O If set, the host name will be logged in the (non-syslog) \fBsudo\fR log file.
-.\"O This flag is \fIoff\fR by default.
-これをセットすると、ホスト名が (syslog 経由ではない) \fBsudo\fR の
-ログファイルに記録されることになる。このフラグはデフォルトでは \fIoff\fR
-である。
-.IP "log_input" 16
-.IX Item "log_input"
-.\"O If set, \fBsudo\fR will run the command in a \fIpseudo tty\fR and log all
-.\"O user input.
-.\"O If the standard input is not connected to the user's tty, due to
-.\"O I/O redirection or because the command is part of a pipeline, that
-.\"O input is also captured and stored in a separate log file.
-.\"O .Sp
-これをセットすると、\fBsudo\fR は \fI擬似 tty\fR でコマンドを実行し、
+\fBsudo\fP がユーザに悪態をつく。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_host
+これをセットすると、ホスト名が (syslog 経由ではない) \fBsudo\fP のログファイルに記録されることになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_input
+これをセットすると、\fBsudo\fP は、擬似 tty でコマンドを実行し、
 ユーザの入力をすべてログに取ることになる。入出力がリダイレクトされているとか、
 コマンドがパイプラインの一部だとかいう理由で、標準入力がユーザの tty
-に結びつけられていない場合も、その入力がキャプチャーされて、
-独立したログファイルに書き込まれることに変わりはない。
-.Sp
-.\"O Input is logged to the directory specified by the \fIiolog_dir\fR
-.\"O option (\fI/var/log/sudo-io\fR by default) using a unique session \s-1ID\s0 that
-.\"O is included in the normal \fBsudo\fR log line, prefixed with \fITSID=\fR.
-.\"O The \fIiolog_file\fR option may be used to control the format of the
-.\"O session \s-1ID\s0.
-.\"O .Sp
-入力は、\fIiolog_dir\fR オプションで指定したディレクトリに
-(デフォルトでは \fI/var/log/sudo-io\fR)、一意なセッション \s-1ID\s0
-を使って記録される。このセッション \s-1ID\s0 は \fBsudo\fR
-の通常のログのエントリに、\fITSID=\fR に続く値として書き込まれているものだ。
-\&\fIiolog_file\fR オプションを使えば、
-セッション \s-1ID\s0 の形式を変更することができる。
-.Sp
-.\"O Note that user input may contain sensitive information such as
-.\"O passwords (even if they are not echoed to the screen), which will
-.\"O be stored in the log file unencrypted.  In most cases, logging the
-.\"O command output via \fIlog_output\fR is all that is required.
-ユーザの入力には、パスワードのような (たとえ、
-画面にエコーされることはないにしても) 秘密情報が含まれていることがある。
-そういった情報も、暗号化されずに、
-ログファイルに記録されることに注意してほしい。
-たいていの場合、\fIlog_output\fR を使って、
-コマンドの出力をログに記録するだけで十分用が足りる。
-.IP "log_output" 16
-.IX Item "log_output"
-.\"O If set, \fBsudo\fR will run the command in a \fIpseudo tty\fR and log all
-.\"O output that is sent to the screen, similar to the \fIscript\fR\|(1) command.
-.\"O If the standard output or standard error is not connected to the
-.\"O user's tty, due to I/O redirection or because the command is part
-.\"O of a pipeline, that output is also captured and stored in separate
-.\"O log files.
-.\"O .Sp
-これをセットすると、\fBsudo\fR は \fI擬似 tty\fR でコマンドを実行し、
+に結びつけられていない場合でも、その入力はやはりキャプチャーされ、
+独立したログファイルに書き込まれる。
+より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよい。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_output
+これをセットすると、\fBsudo\fP は、\fI擬似 tty\fP でコマンドを実行し、
 スクリーンに送られたすべての出力をログに取ることになる。
-\&\fIscript\fR\|(1) コマンドと似たことをやるわけだ。
-入出力がリダイレクトされているとか、
-コマンドがパイプラインの一部だとかいう理由で、標準出力や標準エラーがユーザの
-tty に結びつけられていない場合も、その出力がキャプチャーされて、
-それぞれ独立したログファイルに書き込まれることに変わりはない。
-.Sp
-.\"O Output is logged to the directory specified by the \fIiolog_dir\fR
-.\"O option (\fI/var/log/sudo-io\fR by default) using a unique session \s-1ID\s0 that
-.\"O is included in the normal \fBsudo\fR log line, prefixed with \fITSID=\fR.
-.\"O The \fIiolog_file\fR option may be used to control the format of the
-.\"O session \s-1ID\s0.
-.\"O .Sp
-出力は、\fIiolog_dir\fR オプションで指定したディレクトリに
-(デフォルトでは \fI/var/log/sudo-io\fR)、一意なセッション \s-1ID\s0
-を使って記録される。このセッション \s-1ID\s0 は \fBsudo\fR
-の通常のログのエントリに 、\fITSID=\fR に続く値として書き込まれているものだ。
-\&\fIiolog_file\fR オプションを使えば、
-セッション \s-1ID\s0 の形式を変更することができる。
-.Sp
-.\"O Output logs may be viewed with the \fIsudoreplay\fR\|(8) utility, which
-.\"O can also be used to list or search the available logs.
-出力のログは \fIsudoreplay\fR\|(8) コマンドを使って、見ることができる。
-また、このコマンドは、利用できるログをリストしたり、
-検索したりするのにも使用できる。
-.IP "log_year" 16
-.IX Item "log_year"
-.\"O If set, the four-digit year will be logged in the (non-syslog) \fBsudo\fR log file.
-.\"O This flag is \fIoff\fR by default.
-これをセットすると、四桁の年が (syslog 経由ではない) \fBsudo\fR
-のログファイルに記入されることになる。このフラグはデフォルトでは \fIoff\fR 
-である。
-.IP "long_otp_prompt" 16
-.IX Item "long_otp_prompt"
-.\"O When validating with a One Time Password (\s-1OTP\s0) scheme such as
-.\"O \&\fBS/Key\fR or \fB\s-1OPIE\s0\fR, a two-line prompt is used to make it easier
-.\"O to cut and paste the challenge to a local window.  It's not as
-.\"O pretty as the default but some people find it more convenient.  This
-.\"O flag is \fIoff\fR by default.
-\&\fBS/Key\fR や \fB\s-1OPIE\s0\fR のような One Time Password
-(\s-1OTP\s0) スキームを採用しているときにこれを有効にすると、
+script(1) コマンドと似たことをやるわけだ。
+より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよい。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_year
+これをセットすると、四桁の年が (syslog 経由ではない) \fBsudo\fP のログファイルに記入されることになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+long_otp_prompt
+\fBS/Key\fP や \fBOPIE\fP のような One Time Password (OTP) スキームを採用しているときにこれを有効にすると、
 チャレンジをローカルウィンドウにカット・アンド・ペーストしやすいように、
 二行のプロンプトが使用される。デフォルトのプロンプトほど見栄えはよくないが、
-こちらの方が便利だと思う人もいる。デフォルトではこのフラグは \fIoff\fR である。
-.IP "mail_always" 16
-.IX Item "mail_always"
-.\"O Send mail to the \fImailto\fR user every time a users runs \fBsudo\fR.
-.\"O This flag is \fIoff\fR by default.
-ユーザが \fBsudo\fR を実行するたびに、\fImailto\fR ユーザにメールを送る。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "mail_badpass" 16
-.IX Item "mail_badpass"
-.\"O Send mail to the \fImailto\fR user if the user running \fBsudo\fR does not
-.\"O enter the correct password.  This flag is \fIoff\fR by default.
-\&\fBsudo\fR を実行するユーザが正しいパスワードを入力しないと、
-\&\fImailto\fR ユーザにメールを送る。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-.IP "mail_no_host" 16
-.IX Item "mail_no_host"
-.\"O If set, mail will be sent to the \fImailto\fR user if the invoking
-.\"O user exists in the \fIsudoers\fR file, but is not allowed to run
-.\"O commands on the current host.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR を起動したユーザが \fIsudoers\fR
-ファイルに記載されているものの、
-使用中のホストでコマンドの実行を許可されていない場合、
-\&\fImailto\fR ユーザにメールを送付する。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-.IP "mail_no_perms" 16
-.IX Item "mail_no_perms"
-.\"O If set, mail will be sent to the \fImailto\fR user if the invoking
-.\"O user is allowed to use \fBsudo\fR but the command they are trying is not
-.\"O listed in their \fIsudoers\fR file entry or is explicitly denied.
-.\"O This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR を起動したユーザが
-\&\fBsudo\fR の使用を許可されているが、
-実行しようとしているコマンドが \fIsudoers\fR ファイルの
-そのユーザのエントリに登録されていないか、明示的に禁止されている場合、
-\&\fImailto\fR ユーザにメールを送付する。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-.IP "mail_no_user" 16
-.IX Item "mail_no_user"
-.\"O If set, mail will be sent to the \fImailto\fR user if the invoking
-.\"O user is not in the \fIsudoers\fR file.  This flag is \fIon\fR
-.\"O by default.
-これをセットすると、\fBsudo\fR を起動したユーザが \fIsudoers\fR
-ファイルに記載されていない場合、\fImailto\fR ユーザにメールを送付する。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "noexec" 16
-.IX Item "noexec"
-.\"O If set, all commands run via \fBsudo\fR will behave as if the \f(CW\*(C`NOEXEC\*(C'\fR
-.\"O tag has been set, unless overridden by a \f(CW\*(C`EXEC\*(C'\fR tag.  See the
-.\"O description of \fI\s-1NOEXEC\s0 and \s-1EXEC\s0\fR below as well as the \*(L"\s-1PREVENTING\s0 \s-1SHELL\s0
-.\"O \&\s-1ESCAPES\s0\*(R" section at the end of this manual.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR を通して実行されるすべてのコマンドが、
-\&\f(CW\*(C`EXEC\*(C'\fR タグで無効にされないかぎり、あたかも 
-\&\f(CW\*(C`NOEXEC\*(C'\fR タグが設定されているかのごとく振舞うようになる。
-前述の「\fI\s-1NOEXEC\s0 と \s-1EXEC\s0\fR」の説明、
-および、このマニュアルの終わりの方にある「シェル・エスケープを防止する」
-というセクションを参照してほしい。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "path_info" 16
-.IX Item "path_info"
-.\"O Normally, \fBsudo\fR will tell the user when a command could not be
-.\"O found in their \f(CW\*(C`PATH\*(C'\fR environment variable.  Some sites may wish
-.\"O to disable this as it could be used to gather information on the
-.\"O location of executables that the normal user does not have access
-.\"O to.  The disadvantage is that if the executable is simply not in
-.\"O the user's \f(CW\*(C`PATH\*(C'\fR, \fBsudo\fR will tell the user that they are not
-.\"O allowed to run it, which can be confusing.  This flag is \fIon\fR
-.\"O by default.
-通常 \fBsudo\fR は、環境変数 \f(CW\*(C`PATH\*(C'\fR
-中にコマンドが見付からないと、ユーザにそのことを知らせる。これを利用すれば、
-一般ユーザにアクセス権のない実行ファイルのありかについて
-情報を収集できるという理由から、
+こちらの方が便利だと思う人もいる。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_all_cmnds
+ユーザが \fBsudo\fP 経由でコマンドの実行を試みるたびに
+(\fBsudoedit\fP の実行も含む)、\fImailto\fP ユーザにメールを送付する。
+ただし、ユーザが \fBsudo\fP に \fB\-l\fP や \fB\-v\fP オプションを付けて実行したときは、
+認証エラーがあり、しかも \fImail_badpass\fP フラグがセットされていないかぎり、
+メールを送付することはない。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_always
+ユーザが \fBsudo\fP を実行するたびに、\fImailto\fP ユーザにメールを送る。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_badpass
+\fBsudo\fP を実行するユーザが正しいパスワードを入力しなかったら、
+\fImailto\fP ユーザにメールを送付する。ユーザが実行しようとしているコマンドが
+\fBsudoers\fP によって許可されていない場合に、\fImail_all_cmnds\fP,
+\fImail_always\fP, \fImail_no_host\fP, \fImail_no_perms\fP, \fImail_no_user\fP
+フラグのどれかがセットされていると、このフラグは効果を持たないことになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_no_host
+これをセットすると、\fBsudo\fP を起動したユーザが \fIsudoers\fP
+ファイルに記載されてはいるものの、
+使用中のホストでコマンドの実行を許可されていない場合に、
+\fImailto\fP ユーザにメールを送付する。このフラグはデフォルトでは
+\fIoff\fP である。
+.TP  18n
+mail_no_perms
+これをセットすると、\fBsudo\fP を起動したユーザが
+\fBsudo\fP の使用を許可されているが、
+実行しようとしているコマンドが \fIsudoers\fP ファイルの
+そのユーザのエントリに登録されていないか、明示的に禁止されている場合に、
+\fImailto\fP ユーザにメールを送付する。このフラグはデフォルトでは
+\fIoff\fP である。
+.TP  18n
+mail_no_user
+これをセットすると、\fBsudo\fP を起動したユーザが \fIsudoers\fP
+ファイルに記載されていない場合に、\fImailto\fP ユーザにメールを送付する。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+netgroup_tuple
+これをセットすると、
+ネットグループの検索がネットグループのタプル全部を使って行われることになる
+(すなわち、ホスト名、ユーザ名、ドメインの三つが、それぞれ設定されているならば、
+使用される)。従来の \fBsudo\fP では、
+User_List で使用されるネットグループについては、
+ユーザ名とドメインだけを照合し、Host_List で使用されるネットグループについては、
+ホスト名とドメインだけを照合していた。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+noexec
+これをセットすると、\fBsudo\fP を通して実行されるすべてのコマンドが、
+EXEC タグで無効にされないかぎり、
+あたかも NOEXEC タグが設定されているかのごとく振舞うようになる。
+前述の「\fIEXEC\fP と \fINOEXEC\fP」の説明、および、
+このマニュアルの終わりの方にある「シェル・エスケープの防止」というセクションを参照していただきたい。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+pam_session
+認証に PAM を使用するシステムでは、\fBsudo\fP は新しい PAM セッションを作成し、
+その中でコマンドを実行する。PAM の実装が古い場合や、
+PAM セッションの開始が utmp や wtmp ファイルを変更するオペレーティングシステムでは、
+\fIpam_session\fP を無効にする必要があるかもしれない。
+ただし、PAM セッションのサポートを無効にすると、
+実行されるコマンドに対するリソースの上限が更新されないかもしれない。
+なお、\fIpam_session\fP, \fIpam_setcred\fP, \fIuse_pty\fP が無効になっていて、
+しかも 入出力ロギングが設定されていない場合は、
+\fBsudo\fP はコマンドを子プロセスとしてではなく、
+直接実行する。このフラグはデフォルトでは \fIon\fP である。
+.sp
+この設定は、バージョン 1.8.7 以上でのみサポートされている。
+.TP  18n
+pam_setcred
+認証に PAM を使用するシステムでは、\fBsudo\fP はデフォルトでは、
+使用している認証システムがサポートしているなら、変身対象ユーザの認証情報
+(credential) が有効であることを確認しようとする。認証情報の例を一つ挙げれば、
+Kerberos のチケットがそれである。\fIpam_session\fP, \fIpam_setcred\fP,
+\fIuse_pty\fP が無効になっていて、しかも 入出力ロギングが設定されていない場合は、
+\fBsudo\fP はコマンドを子プロセスとしてではなく、直接実行する。
+このフラグはデフォルトでは \fIon\fP である。
+.sp
+この設定は、バージョン 1.8.8 以上でのみサポートされている。
+.TP  18n
+passprompt_override
+通常、\fIpassprompt\fP オプションによって指定されたパスワードプロンプトが使用されるのは、
+PAM のようなシステムが用意しているパスワードプロンプトが、
+"Password:" という文字列にマッチしているときだけである。
+\fIpassprompt_override\fP をセットすると、\fIpassprompt\fP が無条件で使われることになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+path_info
+通常 \fBsudo\fP は、環境変数 PATH 中にコマンドが見付からないと、
+ユーザにその旨を知らせる。これを利用すれば、
+一般ユーザにアクセス権のない実行ファイルのありかについて情報を収集できるという理由から、
 この動作を無効にしたいサイトもあるかもしれない。
-その場合の欠点は、実行ファイルが単にユーザの \f(CW\*(C`PATH\*(C'\fR
-中になかっただけの場合でも、実行の許可がないと \fBsudo\fR
-がユーザに告げることになって、実情がわかりにくいかもしれないことである。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "passprompt_override" 16
-.IX Item "passprompt_override"
-.\"O The password prompt specified by \fIpassprompt\fR will normally only
-.\"O be used if the password prompt provided by systems such as \s-1PAM\s0 matches
-.\"O the string \*(L"Password:\*(R".  If \fIpassprompt_override\fR is set, \fIpassprompt\fR
-.\"O will always be used.  This flag is \fIoff\fR by default.
-通常、\fIpassprompt\fR
-オプションによって指定されたパスワードプロンプトが使用されるのは、
-\&\s-1PAM\s0 のようなシステムが用意しているパスワードプロンプトが、
-\&\*(L"Password:\*(R" という文字列にマッチしているときだけである。
-\&\fIpassprompt_override\fR をセットすると、
-\&\fIpassprompt\fR が無条件で使われることになる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "preserve_groups" 16
-.IX Item "preserve_groups"
-.\"O By default, \fBsudo\fR will initialize the group vector to the list of
-.\"O groups the target user is in.  When \fIpreserve_groups\fR is set, the
-.\"O user's existing group vector is left unaltered.  The real and
-.\"O effective group IDs, however, are still set to match the target
-.\"O user.  This flag is \fIoff\fR by default.
-デフォルトでは、\fBsudo\fR は所属グループの初期値として、
+その場合の欠点は、実行ファイルが単にユーザの PATH 中になかっただけの場合でも、
+実行の許可がないと \fBsudo\fP がユーザに告げることになって、
+実情がわかりにくいかもしれないことである。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+preserve_groups
+デフォルトでは、\fBsudo\fP は所属グループの初期値として、
 変身対象ユーザが所属しているグループのリストを設定する。
-\&\fIpreserve_groups\fR をセットすると、
-\&\fBsudo\fR を実行するユーザの所属グループのリストが、
-変更されずにそのまま維持される。とは言え、実グループ ID や実効グループ ID
-が変身対象ユーザのそれに設定されることに変わりはない。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "pwfeedback" 16
-.IX Item "pwfeedback"
-.\"O By default, \fBsudo\fR reads the password like most other Unix programs,
-.\"O by turning off echo until the user hits the return (or enter) key.
-.\"O Some users become confused by this as it appears to them that \fBsudo\fR
-.\"O has hung at this point.  When \fIpwfeedback\fR is set, \fBsudo\fR will
-.\"O provide visual feedback when the user presses a key.  Note that
-.\"O this does have a security impact as an onlooker may be able to
-.\"O determine the length of the password being entered.
-.\"O This flag is \fIoff\fR by default.
-ほかのたいていの Unix プログラムと同様、
-\&\fBsudo\fR はパスワードを読み込むとき、デフォルトでは、ユーザが Return
+\fIpreserve_groups\fP をセットすると、
+\fBsudo\fP を実行するユーザの所属グループのリストが、
+変更されずにそのまま維持される。とは言え、実グループ ID や実効グループ ID が、
+変身対象ユーザのそれに設定されることに変わりはない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+pwfeedback
+ほかのたいていの Unix のプログラムと同様、
+\fBsudo\fP はパスワードを読み込むとき、デフォルトでは、ユーザが Return
 (または Enter) キーを押すまで、エコーを off にする。
 この動作にとまどうユーザが存在する。
-彼らには \fBsudo\fR が急に反応しなくなったように見えるのだ。
-\&\fIpwfeedback\fR をセットすると、ユーザがキーを押すたびに、
-\&\fBsudo\fR が目に見える反応を返すようになる。
-これには、セキュリティ上の問題があることに注意してほしい。側で見ている人が、
-打ち込まれたパスワードの文字数を特定できてしまうかもしれないのだ。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "requiretty" 16
-.IX Item "requiretty"
-.\"O If set, \fBsudo\fR will only run when the user is logged in to a real
-.\"O tty.  When this flag is set, \fBsudo\fR can only be run from a login
-.\"O session and not via other means such as \fIcron\fR\|(8) or cgi-bin scripts.
-.\"O This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR が実行されるのは、ユーザが実際の tty
-にログインしたときだけになる。すなわち、\fBsudo\fR を実行できるのは、
-ログイン・セッションからだけであって、
-\&\fIcron\fR\|(8) や cgi-bin スクリプトといった、
-ほかの方法を介して実行することはできないということだ。このフラグは、
-デフォルトでは \fIoff\fR である。
-.IP "root_sudo" 16
-.IX Item "root_sudo"
-.\"O If set, root is allowed to run \fBsudo\fR too.  Disabling this prevents users
-.\"O from \*(L"chaining\*(R" \fBsudo\fR commands to get a root shell by doing something
-.\"O like \f(CW"sudo sudo /bin/sh"\fR.  Note, however, that turning off \fIroot_sudo\fR
-.\"O will also prevent root from running \fBsudoedit\fR.
-.\"O Disabling \fIroot_sudo\fR provides no real additional security; it
-.\"O exists purely for historical reasons.
-.\"O This flag is \fIon\fR by default.
-これをセットすると、root も \fBsudo\fR を実行できるようになる。
-このフラグを無効にすると、ユーザがたとえば \f(CW"sudo sudo /bin/sh"\fR
-といったように \fBsudo\fR コマンドを\fB連鎖的に\fR使って、
-ルートシェルを獲得することができなくなる。ところで、
-\&\fIroot_sudo\fR が off だと、root が \fBsudoedit\fR
-まで実行できなくなることに注意してほしい。
-\&\fIroot_sudo\fR を無効にしても、セキュリティが実際に向上するわけではない。
-このフラグが存在しているのは、もっぱら歴史的な理由からなのだ。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "rootpw" 16
-.IX Item "rootpw"
-.\"O If set, \fBsudo\fR will prompt for the root password instead of the password
-.\"O of the invoking user.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR はプロンプトで、起動したユーザのパスワードではなく、
+彼らには \fBsudo\fP が急に反応しなくなったように見えるのだ。
+\fIpwfeedback\fP をセットすると、ユーザがキーを押すたびに、
+\fBsudo\fP が目に見える反応を返すようになる。
+これには、セキュリティ上の問題があることに注意していただきたい。
+側で見ている人が、打ち込まれたパスワードの文字数を特定できてしまうかもしれないのだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+requiretty
+これをセットすると、\fBsudo\fP が実行されるのは、ユーザが実際の tty
+にログインしたときだけになる。すなわち、\fBsudo\fP を実行できるのは、
+ログイン・セッションからだけであって、cron(8) や cgi\-bin スクリプトといった、
+ほかの方法を介して実行することはできないということだ。
+このフラグは、デフォルトでは \fIoff\fP である。
+.TP  18n
+root_sudo
+これをセットすると、root も \fBsudo\fP を実行できるようになる。
+このフラグを無効にすると、ユーザがたとえば "sudo sudo /bin/sh"
+といったように \fBsudo\fP コマンドを「連鎖的に」使って、
+ルートシェルを獲得することができなくなる。
+ところで、\fIroot_sudo\fP が off だと、
+root が \fBsudoedit\fP まで実行できなくなることに注意していただきたい。
+\fIroot_sudo\fP を無効にしても、セキュリティが実際に向上するわけではない。
+このフラグが存在しているのは、
+もっぱら歴史的な理由からなのだ。このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+rootpw
+これをセットすると、\fBsudo\fP は、コマンドを実行したり、
+ファイルを編集したりするとき、起動したユーザのパスワードではなく、
 root のパスワードを要求するようになる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "runaspw" 16
-.IX Item "runaspw"
-.\"O If set, \fBsudo\fR will prompt for the password of the user defined by the
-.\"O \&\fIrunas_default\fR option (defaults to \f(CW\*(C`root\*(C'\fR) instead of the
-.\"O password of the invoking user.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR はプロンプトで、起動したユーザのパスワードではなく、
-\&\fIsudoers\fR ファイルの
-\&\fIrunas_default\fR オプションで指定しているユーザーの
-(デフォルトでは \f(CW\*(C`root\*(C'\fR である) パスワードを要求する。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "set_home" 16
-.IX Item "set_home"
-.\"O If enabled and \fBsudo\fR is invoked with the \fB\-s\fR option the \f(CW\*(C`HOME\*(C'\fR
-.\"O environment variable will be set to the home directory of the target
-.\"O user (which is root unless the \fB\-u\fR option is used).  This effectively
-.\"O makes the \fB\-s\fR option imply \fB\-H\fR.  Note that \f(CW\*(C`HOME\*(C'\fR is already
-.\"O set when the the \fIenv_reset\fR option is enabled, so \fIset_home\fR is
-.\"O only effective for configurations where either \fIenv_reset\fR is disabled
-.\"O or \f(CW\*(C`HOME\*(C'\fR is present in the \fIenv_keep\fR list.
-.\"O This flag is \fIoff\fR by default.
-これが有効なときに \fBsudo\fR を \fB\-s\fR オプション付きで起動すると、
-環境変数 \f(CW\*(C`HOME\*(C'\fR が変身対象ユーザの 
-(\fB\-u\fR オプションが使用されないかぎり、それは root である)
-ホームディレクトリに設定される。すなわち、 \fB\-s\fR オプションが
-\&\fB\-H\fR オプションを事実上兼ねることになるわけだ。
-気をつけてほしいのは、\fIenv_reset\fR が有効な場合、\f(CW\*(C`HOME\*(C'\fR
-はすでに (訳注: 変身対象ユーザのホームディレクトリに) 設定済みだということだ。
-だから、\fIset_home\fR の効果があるのは、
-\&\fIenv_reset\fR が無効に設定されているか、 \fIenv_keep\fR のリストに
-\&\f(CW\*(C`HOME\*(C'\fR が存在する場合のみである。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "set_logname" 16
-.IX Item "set_logname"
-.\"O Normally, \fBsudo\fR will set the \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR and \f(CW\*(C`USERNAME\*(C'\fR
-.\"O environment variables to the name of the target user (usually root
-.\"O unless the \fB\-u\fR option is given).  However, since some programs
-.\"O (including the \s-1RCS\s0 revision control system) use \f(CW\*(C`LOGNAME\*(C'\fR to
-.\"O determine the real identity of the user, it may be desirable to
-.\"O change this behavior.  This can be done by negating the set_logname
-.\"O option.  Note that if the \fIenv_reset\fR option has not been disabled,
-.\"O entries in the \fIenv_keep\fR list will override the value of
-.\"O \&\fIset_logname\fR.  This flag is \fIon\fR by default.
-通常 \fBsudo\fR は環境変数 \f(CW\*(C`LOGNAME\*(C'\fR,
-\&\f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR
-を変身対象ユーザの名前 (\fB-u\fR オプションが指定されていない場合、
-普通は root) にセットする。しかし、プログラムによっては (たとえば、
-\&\s-1RCS\s0 リビジョンコントロールシステムがその一つだが)
-ユーザが実際には誰であるかを判定するのに \f(CW\*(C`LOGNAME\*(C'\fR
-を使用していることがあり、そのために、この振舞いを変更したい場合もある。
-set_logname オプションに '!' を付けて否定することで、それができる。
-なお \fIenv_reset\fR オプションを無効にしていない場合、
-\&\fIenv_keep\fR リストの項目が \fIset_logname\fR
-による値を上書きすることになるので、注意してほしい。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "set_utmp" 16
-.IX Item "set_utmp"
-.\"O When enabled, \fBsudo\fR will create an entry in the utmp (or utmpx)
-.\"O file when a pseudo-tty is allocated.  A pseudo-tty is allocated by
-.\"O \&\fBsudo\fR when the \fIlog_input\fR, \fIlog_output\fR or \fIuse_pty\fR flags
-.\"O are enabled.  By default, the new entry will be a copy of the user's
-.\"O existing utmp entry (if any), with the tty, time, type and pid
-.\"O fields updated.  This flag is \fIon\fR by default.
-これが有効になっていると、\fBsudo\fR は擬似 tty を割り当てるときに、
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+runaspw
+これをセットすると、\fBsudo\fP は、コマンドを実行したり、
+ファイルを編集したりするとき、起動したユーザのパスワードではなく、
+\fIsudoers\fP ファイルの \fIrunas_default\fP オプションで指定しているユーザーの
+(デフォルトでは root である) パスワードを要求するようになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+set_home
+これが有効なときに \fBsudo\fP を \fB\-s\fP オプション付きで起動すると、
+環境変数 HOME が変身対象ユーザの (\fB\-u\fP オプションが使用されないかぎり、
+それは root である) ホームディレクトリに設定される。すなわち、
+\fB\-s\fP オプションが \fB\-H\fP オプションを事実上兼ねることになるわけだ。
+気をつけてほしいのは、\fIenv_reset\fP が有効な場合、HOME はすでに
+(訳注: 変身対象ユーザのホームディレクトリに) 設定済みだということだ。
+だから、\fIset_home\fP の効果があるのは、\fIenv_reset\fP が無効に設定されているか、
+\fIenv_keep\fP のリストに HOME が存在する場合だけである。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+set_logname
+通常 \fBsudo\fP は環境変数 LOGNAME, USER, USERNAME を変身対象ユーザの名前
+(\fB\-u\fP オプションが指定されていない場合、普通は root) にセットする。
+しかし、プログラムによっては
+(たとえば、RCS リビジョンコントロールシステムがその一つだが)
+ユーザが実際には誰であるかを判定するのに LOGNAME を使用していることがあり、
+そのため、この振舞いを変更したい場合もある。
+set_logname オプションに '!\&' を付けて否定することで、それができる。
+なお \fIenv_reset\fP オプションを無効にしていない場合に、
+\fIenv_keep\fP のリストに LOGNAME, USER, USERNAME などが入っていると、
+\fIset_logname\fP は効果を持たないので、注意していただきたい。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+set_utmp
+これが有効になっていると、\fBsudo\fP は擬似 tty を割り当てるときに、
 utmp (または utmpx) ファイルにエントリを作成する。
-\&\fBsudo\fR によって擬似 tty の割り当てが行われるのは、
-\&\fIlog_input\fR, \fIlog_output\fR, \fIuse_pty\fR
-といったフラグが有効になっているときである。
+\fBsudo\fP によって擬似 tty の割り当てが行われるのは、\fIlog_input\fP,
+\fIlog_output\fP, \fIuse_pty\fP といったフラグが有効になっているときである。
 デフォルトでは、新しいエントリは、そのユーザの utmp エントリが存在すれば、
 そのコピーであり、tty, time, type, pid フィールドが更新される。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "setenv" 16
-.IX Item "setenv"
-.\"O Allow the user to disable the \fIenv_reset\fR option from the command
-.\"O line via the \fB\-E\fR option.  Additionally, environment variables set
-.\"O via the command line are not subject to the restrictions imposed
-.\"O by \fIenv_check\fR, \fIenv_delete\fR, or \fIenv_keep\fR.  As such, only
-.\"O trusted users should be allowed to set variables in this manner.
-.\"O This flag is \fIoff\fR by default.
-これをセットすると、ユーザがコマンドラインで \fB\-E\fR オプションを指定して、
-\&\fIenv_reset\fR オプションを無効にできるようになる。
-さらに、コマンドラインから設定する環境変数が 
-\&\fIenv_check\fR, \fIenv_delete\fR, \fIenv_keep\fR による制限を受けなくなる。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+setenv
+これをセットすると、ユーザがコマンドラインで \fB\-E\fP オプションを指定して、
+\fIenv_reset\fP オプションを無効にできるようになる。
+さらに、コマンドラインから設定する環境変数が
+\fIenv_check\fP, \fIenv_delete\fP, \fIenv_keep\fP による制限を受けなくなる。
 それ故、そのようなやり方で変数を設定することを許可するのは、
-信用できるユーザのみに限るべきだ。このフラグはデフォルトでは \fIoff\fR である。
-.IP "shell_noargs" 16
-.IX Item "shell_noargs"
-.\"O If set and \fBsudo\fR is invoked with no arguments it acts as if the
-.\"O \&\fB\-s\fR option had been given.  That is, it runs a shell as root (the
-.\"O shell is determined by the \f(CW\*(C`SHELL\*(C'\fR environment variable if it is
-.\"O set, falling back on the shell listed in the invoking user's
-.\"O /etc/passwd entry if not).  This flag is \fIoff\fR by default.
-これがセットされているとき、\fBsudo\fR を引き数なしで起動すると、
-\&\fBsudo\fR は \fB\-s\fR オプションが指定されたかのように振舞う。
+信用できるユーザのみに限るべきだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+shell_noargs
+これがセットされているとき、\fBsudo\fP を引き数なしで起動すると、
+\fBsudo\fP は \fB\-s\fP オプションが指定されたかのように振舞う。
 すなわち、root ユーザとしてシェルを実行するわけだ (シェルは、環境変数
-\f(CW\*(C`SHELL\*(C'\fR がセットされていれば、それによって決まるし
-セットされていなければ、\fBsudo\fR を起動したユーザの
+SHELL がセットされていれば、それによって決まり
+セットされていなければ、\fBsudo\fP を起動したユーザの
 /etc/passwd エントリに登録されたものになる)。このフラグはデフォルトでは
-\&\fIoff\fR である。
-.IP "stay_setuid" 16
-.IX Item "stay_setuid"
-.\"O Normally, when \fBsudo\fR executes a command the real and effective
-.\"O UIDs are set to the target user (root by default).  This option
-.\"O changes that behavior such that the real \s-1UID\s0 is left as the invoking
-.\"O user's \s-1UID\s0.  In other words, this makes \fBsudo\fR act as a setuid
-.\"O wrapper.  This can be useful on systems that disable some potentially
-.\"O dangerous functionality when a program is run setuid.  This option
-.\"O is only effective on systems with either the \fIsetreuid()\fR or \fIsetresuid()\fR
-.\"O function.  This flag is \fIoff\fR by default.
-通常 \fBsudo\fR がコマンドを実行するとき、実 UID と実効 UID
-は変身対象ユーザ (デフォルトでは root) のものにセットされる。
-このオプションは、その振舞いを変更して、\fBsudo\fR を起動したユーザの
-\&\s-1UID\s0 が、そのまま実 \s-1UID\s0 として残るようにする。言い換えると、
-\&\fBsudo\fR が setuid ラッパーとして動作するようになるわけだ。
+\fIoff\fP である。
+.TP  18n
+stay_setuid
+通常 \fBsudo\fP は、コマンドを実行するとき、実 UID と実効 UID
+を変身対象ユーザ (デフォルトでは root) のものにセットする。
+このオプションは、その振舞いを変更して、\fBsudo\fP を起動したユーザの
+UID が、そのまま実 UID として残るようにするのだ。言い換えると、
+このオプションは \fBsudo\fP を setuid ラッパーとして動作するようにするわけである。
 プログラムを setuid で動かすと、危険をもたらしかねないという理由から、
 ある種の機能を使えないようにしているシステムでは、
-このオプションが役に立つかもしれない。このオプションは、\fIsetreuid()\fR
-関数や \fIsetresuid()\fR 関数を持っているシステムでのみ有効である。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "targetpw" 16
-.IX Item "targetpw"
-.\"O If set, \fBsudo\fR will prompt for the password of the user specified
-.\"O by the \fB\-u\fR option (defaults to \f(CW\*(C`root\*(C'\fR) instead of the password
-.\"O of the invoking user.  In addition, the timestamp file name will
-.\"O include the target user's name.  Note that this flag precludes the
-.\"O use of a uid not listed in the passwd database as an argument to
-.\"O the \fB\-u\fR option.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR はプロンプトで、
-起動したユーザのパスワードではなく、
-\&\fB\-u\fR オプションで指定されたユーザ (デフォルトでは root)
-のパスワードを要求することになる。それに加えて、
-タイムスタンプ・ファイルの名前に変身対象ユーザの名前が含まれるようになる。
-このフラグを設定をすると、\fB\-u\fR オプションの引き数として、
+このオプションが役に立つかもしれない。このオプションは、システムコールの
+setreuid() や setresuid() をサポートしているシステムでのみ有効である。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+sudoedit_checkdir
+.br
+これをセットすると、
+\fBsudoedit\fP は、編集対象ファイルのパス中にあるディレクトリ部分のすべてについて、
+\fBsudoedit\fP を実行するユーザとって書き込み可能かどうかを、チェックすることになる。
+ユーザに書き込み可能なディレクトリに存在するいかなるシンボリックリンクも、
+たどられることがなく、また、ユーザに書き込み可能なディレクトリにあるファイルの編集は、
+拒否されることになる。
+ただし、こうした制限は、\fBsudoedit\fP を実行するユーザが root の場合には、行われない。
+システムによっては、編集対象ファイルのパス中にあるディレクトリ部分のすべてが、
+変身対象ユーザにとって読み込み可能でないかぎり、
+\fBsudoedit\fP でファイルを編集できないものもある。
+このフラグはデフォルトでは \fIon\fP である。
+.sp
+この設定が最初に導入されたのは、バージョン 1.8.15 だったが、
+当初のものには競合状態を引き起こす欠陥があった。
+編集対象ファイルのパスの途中に書き込み可能なディレクトリがあり、
+そこにシンボリックリンクが存在する場合のチェックは、バージョン 1.8.16 で追加された。
+.TP  18n
+sudoedit_follow
+\fBsudoedit\fP はデフォルトでは、ファイルをオープンするときにシンボリックリンクをたどらない。
+\fIsudoedit_follow\fP オプションを有効にすると、
+\fBsudoedit\fP がシンボリックリンクをオープンできるようになる。
+そうした動作は \fIFOLLOW\fP や \fINOFOLLOW\fP タグを使えば、
+コマンドごとに変更することができる。このフラグはデフォルトでは \fIoff\fP である。
+.sp
+この設定は、バージョン 1.8.15 以上でのみサポートされている。
+.TP  18n
+targetpw
+これをセットすると、\fBsudo\fP は、コマンドを実行したり、
+ファイルを編集したりするとき、起動したユーザのパスワードではなく、
+\fB\-u\fP オプションで指定されたユーザ (デフォルトでは root)
+のパスワードを要求するようになる。
+このフラグを設定をすると、\fB\-u\fP オプションの引き数として、
 passwd データベースに登録されていない uid が使えなくなることに注意してほしい。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "tty_tickets" 16
-.IX Item "tty_tickets"
-.\"O If set, users must authenticate on a per-tty basis.  With this flag
-.\"O enabled, \fBsudo\fR will use a file named for the tty the user is
-.\"O logged in on in the user's time stamp directory.  If disabled, the
-.\"O time stamp of the directory is used instead.  This flag is
-.\"O \&\fIon\fR by default.
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+tty_tickets
 これをセットすると、ユーザは tty ごとに認証をしなければならなくなる。
-このフラグが有効な場合、
-\&\fBsudo\fR はユーザのタイムスタンプ・ディレクトリにある、
-ユーザがログインしている tty
-に対応する名前のファイルをタイムスタンプに使用する。
-それに対して、このフラグが無効な場合は、
-ユーザのタイムスタンプ・ディレクトリそのもののタイムスタンプが使用されるのである。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "umask_override" 16
-.IX Item "umask_override"
-.\"O If set, \fBsudo\fR will set the umask as specified by \fIsudoers\fR without
-.\"O modification.  This makes it possible to specify a more permissive
-.\"O umask in \fIsudoers\fR than the user's own umask and matches historical
-.\"O behavior.  If \fIumask_override\fR is not set, \fBsudo\fR will set the
-.\"O umask to be the union of the user's umask and what is specified in
-.\"O \&\fIsudoers\fR.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR は umask を \fIsudoers\fR の
+このフラグが有効な場合、\fBsudo\fP は、各 tty に対して、
+タイムスタンプ・ファイル中の、それぞれ別個に記録される情報を使用することになる。
+それに対して、このフラグが無効な場合は、すべてのログイン・セッションに対して、
+単一の記録が使用されるのである。このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+umask_override
+これをセットすると、\fBsudo\fP は umask を \fIsudoers\fP の
 umask オプションで指定されたとおりの値に、変更を加えることなく設定する。
 このことによって、ユーザ自身の umask 値よりもっと緩やかな umask 値を
-\&\fIsudoers\fR で指定することが可能になる。
-\&\fBsudo\fR の昔の動作と同じになるわけだ。
-\&\fIumask_override\fR をセットしない場合、
-現在の \fBsudo\fR は umask を、ユーザの umask 値と \fIsudoers\fR で指定した
+\fIsudoers\fP ファイルで指定することが可能になる。\fBsudo\fP の昔の動作と同じになるわけだ。
+\fIumask_override\fP をセットしない場合、
+現在の \fBsudo\fP は umask を、ユーザの umask 値と \fIsudoers\fP で指定した
 umask 値とのビット和に設定することになっている。
-このフラグはデフォルトでは \fIoff\fR である。
-.if \n(LC \{\
-.IP "use_loginclass" 16
-.IX Item "use_loginclass"
-.\"O If set, \fBsudo\fR will apply the defaults specified for the target user's
-.\"O login class if one exists.  Only available if \fBsudo\fR is configured with
-.\"O the \-\-with\-logincap option.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR は、
-変身対象ユーザのログインクラスが存在するならば、
-それに対して指定されたデフォルトの値を使うことになる。
-このフラグは、\fBsudo\fR を \-\-with\-logincap オプションを付けて 
-configure したときのみ利用することができる。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-\}
-.IP "use_pty" 16
-.IX Item "use_pty"
-.\"O If set, \fBsudo\fR will run the command in a pseudo-pty even if no I/O
-.\"O logging is being gone.  A malicious program run under \fBsudo\fR could
-.\"O conceivably fork a background process that retains to the user's
-.\"O terminal device after the main program has finished executing.  Use
-.\"O of this option will make that impossible.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR は入出力のロギングが行われていないときでも、
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+use_netgroups
+これをセットすると、ユーザやホストを指定する場所でネットグループ
+(接頭辞 '+' が付く) が使えるようになる。LDAP を使用する sudoers では、
+ネットグループをサポートすると、\fI/etc/ldap.conf\fP ファイルで
+\fBNETGROUP_BASE\fP 設定オプションを指定していない場合に、
+サーバ側で負荷の高い部分文字列 (substring) のマッチングを行う必要が生じる。
+そこで、ネットグループを使用する必要がない場合は、
+このオプションを \fIoff\fP にすれば、LDAP サーバの負荷を減らすことができる。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+use_pty
+これをセットすると、\fBsudo\fP は入出力のロギングが行われていないときでも、
 擬似 tty でコマンドを実行することになる。
-\&\fBsudo\fR によって実行された悪意のあるプログラムが、
+\fBsudo\fP によって実行された悪意のあるプログラムが、
 バックグラウンド・プロセスをフォークし、
 そのプロセスが、メインプログラムの実行が終了した後でも、
 ユーザのターミナルデバイスを握って離さないといったことが考えられる。
 このオプションを使えば、そういったことが不可能になる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "utmp_runas" 16
-.IX Item "utmp_runas"
-.\"O If set, \fBsudo\fR will store the name of the runas user when updating
-.\"O the utmp (or utmpx) file.  By default, \fBsudo\fR stores the name of
-.\"O the invoking user.  This flag is \fIoff\fR by default.
-これをセットすると、\fBsudo\fR は utmp (または utmpx) ファイルを更新するとき、
-変身対象ユーザの名前を記録するようになる。\fBsudo\fR はデフォルトでは、
-\&\fBsudo\fR を実行したユーザの名前を記録するのだ。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "visiblepw" 16
-.IX Item "visiblepw"
-.\"O By default, \fBsudo\fR will refuse to run if the user must enter a
-.\"O password but it is not possible to disable echo on the terminal.
-.\"O If the \fIvisiblepw\fR flag is set, \fBsudo\fR will prompt for a password
-.\"O even when it would be visible on the screen.  This makes it possible
-.\"O to run things like \f(CW"rsh somehost sudo ls"\fR since \fIrsh\fR\|(1) does
-.\"O not allocate a tty.  This flag is \fIoff\fR by default.
-.\"O .PP
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+utmp_runas
+これをセットすると、\fBsudo\fP は utmp (または utmpx) ファイルを更新するとき、
+変身対象ユーザの名前を記録するようになる。\fBsudo\fP はデフォルトでは、
+\fBsudo\fP を実行したユーザの名前を記録するのだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+visiblepw
 デフォルトでは、ユーザがパスワードを入力しなければならないときに、
 使用しているターミナルでエコーの抑制ができなかったら、
-\&\fBsudo\fR は実行を拒否するようになっている。
\81\93ã\82\8cã\81«å¯¾ã\81\97ã\80\81\fIvisiblepw\fR フラグが設定されていると、
+\fBsudo\fP は実行を拒否するようになっている。
\81\9dã\82\8cã\81«å¯¾ã\81\97ã\80\81\fIvisiblepw\fP フラグが設定されていると、
 パスワードがスクリーンに表示されてしまう場合でも、
-\&\fBsudo\fR はプロンプトを出して、パスワードを求める。この動作によって、
-\&\fIrsh\fR\|(1) は tty を割り当てないにもかかわらず、
-\&\f(CW"rsh somehost sudo ls"\fR といった操作の実行が可能になるわけだ。
-このフラグはデフォルトでは \fIoff\fR である。
-.PP
-.\"O \fBIntegers\fR:
-\&\fB整数\fR:
-.IP "closefrom" 16
-.IX Item "closefrom"
-.\"O Before it executes a command, \fBsudo\fR will close all open file
-.\"O descriptors other than standard input, standard output and standard
-.\"O error (ie: file descriptors 0\-2).  The \fIclosefrom\fR option can be used
-.\"O to specify a different file descriptor at which to start closing.
-.\"O The default is \f(CW3\fR.
-\&\fBsudo\fR はコマンドを実行する前に、標準入力、標準出力、標準エラー
-(すなわち、ファイルディスクリプタ 0\-2 である) を除いて、
+\fBsudo\fP はプロンプトを出して、パスワードを求めるようになる。
+ssh(1) はデフォルトでは、コマンドを実行する際に tty を割り当てないので、
+\fBsudo\fP はエコーの抑制ができないが、その場合でも、この設定によって、
+"ssh somehost sudo ls" といった操作の実行が可能になるわけだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.PP
+\fB整数\fP:
+.TP  18n
+closefrom
+\fBsudo\fP はコマンドを実行する前に、標準入力、標準出力、標準エラー
+(すなわち、ファイルディスクリプタ 0\-2 ) を除いて、
 開いているすべてのファイル・ディスクリプタをクローズする。
-\&\fIclosefrom\fR オプションを使用すると、
+\fIclosefrom\fP オプションを使用すると、
 0\-2 以外のどのファイル・ディスクリプタから閉じて行くかを指定することができる。
-デフォルトは \f(CW3\fR である。
-.IP "passwd_tries" 16
-.IX Item "passwd_tries"
-.\"O The number of tries a user gets to enter his/her password before
-.\"O \&\fBsudo\fR logs the failure and exits.  The default is \f(CW\*(C`3\*(C'\fR.
-.\"O .PP
-\&\fBsudo\fR が「失敗」をログに記録して終了する前に、
-ユーザがパスワードを入力できる回数。デフォルトは \f(CW\*(C`3\*(C'\fR。
-.PP
-.\"O \&\fBIntegers that can be used in a boolean context\fR:
-\&\fB真偽値としても使用できる整数\fR:
-.IP "loglinelen" 16
-.IX Item "loglinelen"
-.\"O Number of characters per line for the file log.  This value is used
-.\"O to decide when to wrap lines for nicer log files.  This has no
-.\"O effect on the syslog log file, only the file log.  The default is
-.\"O \&\f(CW\*(C`80\*(C'\fR (use 0 or negate the option to disable word wrap).
-\&\fBsudo\fR 用ログファイルの一行あたりの文字数。
-この値は、ログファイルを見やすくするために改行する位置を決めるのに使用される。
+デフォルトは 3 である。
+.TP  18n
+maxseq
+入出力ログファイルで
+"%{seq}" エスケープシーケンスに置き換えられる連続番号の最大値
+(詳細については、後述の \fIiolog_dir\fP オプションの説明を参照すること)。
+"%{seq}" に置き換えられる値は 36 進数だが、\fImaxseq\fP そのものは
+10 進数で指定するべきである。2176782336 (38 進数の連続番号では、
+"ZZZZZZ" に相当する) より大きい値は 、暗黙のうちに
+2176782336 に縮小される。デフォルトの値は 2176782336 である。
+.sp
+使用している連続番号が \fImaxseq\fP の値に達したら、最初の値の 0 に戻る。
+それ以後は、\fBsudoers\fP は存在している入出力ログファイルをサイズ 0 に短縮して、
+そのパス名を再利用することになる。
+.sp
+この設定は、バージョン 1.8.7 以上でのみサポートされている。
+.TP  18n
+passwd_tries
+\fBsudo\fP が「失敗」をログに記録して終了する前に、
+ユーザがパスワードを入力できる回数。デフォルトは 3 回。
+.PP
+\fB真偽値としても使用できる整数\fP:
+.TP  18n
+loglinelen
+\fBsudo\fP 独自のログファイルの一行あたりの文字数。この値は、
+ログファイルを見やすくするために改行する位置を決めるのに使用される。
 この値は、syslog 経由のログファイルには影響せず、
-直接ファイルにログを書き出すときのみ効果がある。デフォルトは
-\&\f(CW\*(C`80\*(C'\fR である (改行をしないようにするには、値を 0 にするか、
-頭に '!' を付けて、このオプションを否定する)。
-.IP "passwd_timeout" 16
-.IX Item "passwd_timeout"
-.\"O Number of minutes before the \fBsudo\fR password prompt times out, or
-.\"O \&\f(CW0\fR for no timeout.  The timeout may include a fractional component
-.\"O if minute granularity is insufficient, for example \f(CW2.5\fR.  The
-.\"O default is \f(CW\*(C`5\*(C'\fR.
-\&\fBsudo\fR のパスワードプロンプトが時間切れになるまでの分単位の時間。
-\&\f(CW0\fR を指定すると、時間切れなしになる。
-分よりももっと細かい時間を指定したいときは、(\f(CW2.5\fR のように)
-小数点以下を付けることもできる。デフォルトは \f(CW\*(C`5\*(C'\fR である。
-.IP "timestamp_timeout" 16
-.IX Item "timestamp_timeout"
-.\"O Number of minutes that can elapse before \fBsudo\fR will ask for a
-.\"O passwd again.  The timeout may include a fractional component if
-.\"O minute granularity is insufficient, for example \f(CW2.5\fR.  The default
-.\"O is \f(CW\*(C`5\*(C'\fR.  Set this to \f(CW0\fR to always prompt for a password.
-.\"O If set to a value less than \f(CW0\fR the user's timestamp will never
-.\"O expire.  This can be used to allow users to create or delete their
-.\"O own timestamps via \f(CW\*(C`sudo \-v\*(C'\fR and \f(CW\*(C`sudo \-k\*(C'\fR respectively.
-\&\fBsudo\fR がパスワードを再び要求するようになるまでの時間を
-分単位で指定する。分よりももっと細かい時間を指定したいときは、
-(\f(CW2.5\fR のように) 小数点以下を付けることもできる。
-デフォルトでは \f(CW\*(C`5\*(C'\fR である。
-これを \f(CW0\fR にセットすると、毎回パスワードを要求するようになる。
-\&\f(CW0\fR より小さい値にセットした場合は、
-ユーザのタイムスタンプが期限切れになることがない。
-ユーザが \f(CW\*(C`sudo \-v\*(C'\fR と \f(CW\*(C`sudo \-k\*(C'\fR
-を実行することによって、タイムスタンプを自分で作ったり、
-消したりできるようにしたかったら、この手を使えばよい。
-.IP "umask" 16
-.IX Item "umask"
-.\"O Umask to use when running the command.  Negate this option or set
-.\"O it to 0777 to preserve the user's umask.  The actual umask that is
-.\"O used will be the union of the user's umask and the value of the
-.\"O \&\fIumask\fR option, which defaults to \f(CW\*(C`0022\*(C'\fR.  This guarantees
-.\"O that \fBsudo\fR never lowers the umask when running a command.  Note
-.\"O on systems that use \s-1PAM\s0, the default \s-1PAM\s0 configuration may specify
-.\"O its own umask which will override the value set in \fIsudoers\fR.
-.\"O .PP
+独自のファイルにログを記録するときのみ効果がある。デフォルトは 80 である
+(改行をしないようにするには、値を 0 にするか、頭に '!\&' を付けて、
+このオプションを否定する)。
+.TP  18n
+passwd_timeout
+\fBsudo\fP のパスワードプロンプトが時間切れになるまでの分単位の時間。
+0 を指定すると、時間切れなしになる。
+分よりももっと細かい時間を指定したかったら、2.5 のように、
+小数点以下を付けることもできる。デフォルトは 5 分。
+.TP  18n
+timestamp_timeout
+.br
+\fBsudo\fP がパスワードを再び要求するようになるまでの時間を分単位で指定する。
+分よりももっと細かい時間を指定したかったら、2.5 のように、
+小数点以下を付けることもできる。デフォルトは 5 分である。
+これを 0 にセットすると、毎回パスワードを要求するようになる。
+0 よりも小さい値にセットすると、ユーザのタイムスタンプは、
+システムがリブートされるまで期限切れにならない。
+ユーザが "sudo \-v" と "sudo \-k" を実行することによって、
+タイムスタンプを自分で作ったり、消したりできるようにしたかったら、
+この手を使えばよい。
+.TP  18n
+umask
 コマンドを実行するときに使用する umask 値。
-ユーザの umask 値をそのまま使いたかったら、'!' を頭に付けて、
+ユーザの umask 値をそのまま使いたかったら、'!\&' を頭に付けて、
 このオプションを否定するか、0777 にセットすればよい。
 このオプションの値が 0777 以外の場合、実際に使用される umask 値は、
-ユーザの umask 値と \fIumask\fR オプションの値とのビット和であり、
-後者のデフォルトは \f(CW\*(C`0022\*(C'\fR である。
-このことによって、\fBsudo\fR がコマンドを実行するときの umask 値が、
+ユーザの umask 値と \fIumask\fP オプションの値とのビット和であり、
+後者のデフォルトは 0022 である。
+このことによって、\fBsudo\fP がコマンドを実行するときの umask 値が、
 ユーザの umask 値より低くならないようになっているわけだ。
-\&\s-1PAM\s0 を使用しているシステムでは、 \s-1PAM\s0 のデフォルト設定で
-umask 値を指定することができるが、その場合は、それが \fIsudoers\fR
-で指定した値を上書きすることに注意してほしい。
-.PP
-.\"O \&\fBStrings\fR:
-\&\fB文字列\fR:
-.IP "badpass_message" 16
-.IX Item "badpass_message"
-.\"O Message that is displayed if a user enters an incorrect password.
-.\"O The default is \f(CW\*(C`Sorry, try again.\*(C'\fR unless insults are enabled.
+PAM を使用しているシステムでは、
+PAM のデフォルト設定で umask 値を指定することができるが、
+その場合は、それが \fIsudoers\fP で指定する値に優先することに注意していただきたい。
+.PP
+\fB文字列\fP:
+.TP  18n
+badpass_message
 ユーザが不正なパスワードを入力したときに表示するメッセージ。
-\&\fIinsults\fR フラグが有効になっていないかぎり、
-デフォルトは「\f(CW\*(C`Sorry, try again.\*(C'\fR」である。
-.IP "editor" 16
-.IX Item "editor"
-.\"O A colon (':') separated list of editors allowed to be used with
-.\"O \&\fBvisudo\fR.  \fBvisudo\fR will choose the editor that matches the user's
-.\"O \&\s-1EDITOR\s0 environment variable if possible, or the first editor in the
-.\"O list that exists and is executable.  The default is \f(CW"/usr/bin/vi"\fR.
-\&\fBvisudo\fR で使用できるエディタをコロン (':') で区切ったリスト。
-\&\fBvisudo\fR は、可能ならば、
-ユーザの \s-1EDITOR\s0 環境変数と一致したエディタを選択する。
-それができないときは、このリストにあるエディタで、
-実際に存在し、かつ実行可能な最初のエディタを使用する。デフォルトは
-\&\f(CW"/usr/bin/vi"\fR である。
-.IP "iolog_dir" 16
-.IX Item "iolog_dir"
-.\"O The top-level directory to use when constructing the path name for
-.\"O the input/output log directory.  Only used if the \fIlog_input\fR or
-.\"O \&\fIlog_output\fR options are enabled or when the \f(CW\*(C`LOG_INPUT\*(C'\fR or
-.\"O \&\f(CW\*(C`LOG_OUTPUT\*(C'\fR tags are present for a command.  The session sequence
-.\"O number, if any, is stored in the directory.
-.\"O The default is \f(CW"/var/log/sudo-io"\fR.
-.\"O .Sp
+\fIinsults\fP フラグが有効になっていないかぎり、
+デフォルトは「Sorry, try again.」である。
+.TP  18n
+editor
+\fBvisudo\fP で使用できるエディタをコロン (':\&') で区切ったリスト。\fBvisudo\fP は、
+可能ならば、ユーザの EDITOR 環境変数や
+VISUAL 環境変数とマッチしたリスト中のエディタを選択する。
+それができないときは、このリストにあるエディタで、実際に存在し、
+かつ実行可能な最初のエディタを使用する。
+環境変数 EDITOR や VISUAL は、\fIenv_reset\fP オプションが有効な場合、
+デフォルトでは保存されないことに注意していただきたい。
+デフォルトは \fIvi\fP である。
+.TP  18n
+iolog_dir
 このオプションの値をトップレベル・ディレクトリにして、
-入出力ログを格納するディレクトリのパス名が構成される。
-この値が使用されるのは、\fIlog_input\fR や
-\&\fIlog_output\fR オプションが有効になっているときや、
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR や \f(CW\*(C`LOG_OUTPUT\*(C'\fR
-タグがコマンドに付いているときだけである。このディレクトリ以下に、
-(セッション ID が連番ならば) セッションの連番が格納されることになるわけだ。
-デフォルトは \f(CW"/var/log/sudo-io"\fR である。
-.Sp
-.\"O The following percent (`\f(CW\*(C`%\*(C'\fR') escape sequences are supported:
-以下のパーセント (`\f(CW\*(C`%\*(C'\fR') エスケープシーケンスが使用できる。
-.RS 16
-.ie n .IP "\*(C`%{seq}\*(C'" 4
-.el .IP "\f(CW\*(C`%{seq}\*(C'\fR" 4
-.IX Item "%{seq}"
-.\"O expanded to a monotonically increasing base\-36 sequence number, such as 0100A5,
-.\"O where every two digits are used to form a new directory, e.g. \fI01/00/A5\fR
-単純に増加する 36 進数の連続番号に展開される。たとえば、0100A5 といった番号であり、
-二桁づつ使って新しいディレクトリを作っていく。この場合なら、
-\&\fI01/00/A5\fR といった具合だ。
-.ie n .IP "\*(C`%{user}\*(C'" 4
-.el .IP "\f(CW\*(C`%{user}\*(C'\fR" 4
-.IX Item "%{user}"
-.\"O expanded to the invoking user's login name
-\&\fBsudo\fR を実行するユーザーのログイン名に展開される。
-.ie n .IP "\*(C`%{group}\*(C'" 4
-.el .IP "\f(CW\*(C`%{group}\*(C'\fR" 4
-.IX Item "%{group}"
-.\"O expanded to the name of the invoking user's real group \s-1ID\s0
-\&\fBsudo\fR を実行するユーザーの実グループ \s-1ID\s0 の名前に展開される。
-.ie n .IP "\*(C`%{runas_user}\*(C'" 4
-.el .IP "\f(CW\*(C`%{runas_user}\*(C'\fR" 4
-.IX Item "%{runas_user}"
-.\"O expanded to the login name of the user the command will
-.\"O be run as (e.g. root)
+入出力ログを置くディレクトリのパス名が構成される。この値が使用されるのは、
+\fIlog_input\fP や \fIlog_output\fP オプションが有効になっているときや、
+LOG_INPUT や LOG_OUTPUT タグがコマンドに付いているときだけである。
+このディレクトリ以下に、セッション ID が連番ならば、
+セッションの連番が (訳注: 以下の "%{seq}" の説明にあるような形で) 
+格納されることになるわけだ。デフォルトは \fI/var/log/sudo\-io\fP である。
+.sp
+以下のパーセント ('%') エスケープシーケンスが使用できる。
+.PP
+.RS 18n
+.PD 0
+.TP  6n
+%{seq}
+単調に増加する 36 進数の連続番号に展開される。たとえば、0100A5
+といった番号であり、二桁づつ使って新しいディレクトリを作っていく。
+この場合なら、\fI01/00/A5\fP といった具合だ。
+.PD
+.TP  6n
+%{user}
+\fBsudo\fP を実行するユーザーのログイン名に展開される。
+.TP  6n
+%{group}
+\fBsudo\fP を実行するユーザーの実グループ ID の名前に展開される。
+.TP  6n
+%{runas_user}
 変身対象ユーザのログイン名に展開される (たとえば root)。
-.ie n .IP "\*(C`%{runas_group}\*(C'" 4
-.el .IP "\f(CW\*(C`%{runas_group}\*(C'\fR" 4
-.IX Item "%{runas_group}"
-.\"O expanded to the group name of the user the command will
-.\"O be run as (e.g. wheel)
+.TP  6n
+%{runas_group}
 変身対象ユーザのグループ名に展開される (たとえば wheel)。
-.ie n .IP "\*(C`%{hostname}\*(C'" 4
-.el .IP "\f(CW\*(C`%{hostname}\*(C'\fR" 4
-.IX Item "%{hostname}"
-.\"O expanded to the local host name without the domain name
+.TP  6n
+%{hostname}
 ドメイン名なしのローカル・ホスト名に展開される。
-.ie n .IP "\*(C`%{command}\*(C'" 4
-.el .IP "\f(CW\*(C`%{command}\*(C'\fR" 4
-.IX Item "%{command}"
-.\"O expanded to the base name of the command being run
+.TP  6n
+%{command}
 実行されるコマンドのベースネームに展開される。
-.RE
-.RS 16
-.Sp
-.\"O In addition, any escape sequences supported by the system's \fIstrftime()\fR
-.\"O function will be expanded.
-.\"O .Sp
-このほか、システムの \fIstrftime()\fR
-関数がサポートしているエスケープシーケンスは、
+.PP
+このほか、システムの strftime(3) 関数がサポートしているエスケープシーケンスは、
 いかなるものでも展開の対象になる。
-.Sp
-.\"O To include a literal `\f(CW\*(C`%\*(C'\fR' character, the string `\f(CW\*(C`%%\*(C'\fR' should
-.\"O be used.
-.\"O .Sp
-\&`\f(CW\*(C`%\*(C'\fR' 文字そのものを使いたかったら、文字列
-\&`\f(CW\*(C`%%\*(C'\fR' を使用すればよい。
-.RE
-.IP "iolog_file" 16
-.IX Item "iolog_file"
-.\"O The path name, relative to \fIiolog_dir\fR, in which to store input/output
-.\"O logs when the \fIlog_input\fR or \fIlog_output\fR options are enabled or
-.\"O when the \f(CW\*(C`LOG_INPUT\*(C'\fR or \f(CW\*(C`LOG_OUTPUT\*(C'\fR tags are present for a command.
-.\"O Note that \fIiolog_file\fR may contain directory components.
-.\"O The default is \f(CW"%{seq}"\fR.
-.\"O .Sp
-\&\fIiolog_dir\fR を基点とする相対パス名であり、\fIlog_input\fR や
-\&\fIlog_output\fR オプションが有効になっていたり、
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR や \f(CW\*(C`LOG_OUTPUT\*(C'\fR
+.sp
+\&'%' 文字そのものを使いたかったら、文字列 '%%' を使用すればよい。
+.RE
+.TP  18n
+iolog_file
+\fIiolog_dir\fP を基点とする相対パス名であり、\fIlog_input\fP や
+\fIlog_output\fP オプションが有効になっていたり、LOG_INPUT や LOG_OUTPUT
 タグがコマンドに付いている場合に、入出力ログがこの中に格納される。
-\&\fIiolog_file\fR の値がディレクトリ構成をなしていることがあるのに注意すること。
-デフォルトは \f(CW"%{seq}"\fR である。
-.Sp
-.\"O See the \fIiolog_dir\fR option above for a list of supported percent
-.\"O (`\f(CW\*(C`%\*(C'\fR') escape sequences.
-使用できるパーセント (`\f(CW\*(C`%\*(C'\fR') エスケープシーケンスのリストについては、
-上記の \fIiolog_dir\fR オプションを参照してほしい。
-.Sp
-.\"O In addition to the escape sequences, path names that end in six or
-.\"O more \f(CW\*(C`X\*(C'\fRs will have the \f(CW\*(C`X\*(C'\fRs replaced with a unique combination
-.\"O of digits and letters, similar to the \fImktemp()\fR function.
-エスケープシーケンスの展開とは別に、パス名が六個以上の \f(CW\*(C`X\*(C'\fR
-で終わっている場合、\f(CW\*(C`X\*(C'\fR の部分が、
-他と重複しない英数字の組み合わせに置き換えられる。
-\&\fImktemp()\fR 関数の場合と同様である。
-.IP "mailsub" 16
-.IX Item "mailsub"
-.\"O Subject of the mail sent to the \fImailto\fR user. The escape \f(CW%h\fR
-.\"O will expand to the host name of the machine.
-.\"O Default is \f(CW\*(C`*** SECURITY information for %h ***\*(C'\fR.
-\&\fImailto\fR ユーザに送付するメールの件名。エスケープ文字 \f(CW%h\fR 
-はマシンのホスト名に展開される。デフォルトは「\f(CW\*(C`*** SECURITY
-information for %h ***\*(C'\fR」である。
-.IP "noexec_file" 16
-.IX Item "noexec_file"
-.\"O This option is no longer supported.  The path to the noexec file
-.\"O should now be set in the \fI/etc/sudo.conf\fR file.
-このオプションはもうサポートされていない。現在では、
-noexec ファイルのパスは \fI/etc/sudo.conf\fR ファイルで設定するべきである。
-(訳注: sudo-1.8.3 では、まだこのオプションが有効かもしれない。
-しかし、そこでも \fI/etc/sudo.conf\fR を使用することが推奨されている。)
-.IP "passprompt" 16
-.IX Item "passprompt"
-.\"O The default prompt to use when asking for a password; can be overridden
-.\"O via the \fB\-p\fR option or the \f(CW\*(C`SUDO_PROMPT\*(C'\fR environment variable.
-.\"O The following percent (`\f(CW\*(C`%\*(C'\fR') escape sequences are supported:
+\fIiolog_file\fP の値が複数のディレクトリ構成要素を含んでいることがあるのに注意していただきたい。
+デフォルトは "%{seq}" である。
+.sp
+使用できるパーセント ('%') エスケープシーケンスのリストについては、
+上記の \fIiolog_dir\fP オプションを参照。
+.sp
+エスケープシーケンスの展開とは別に、パス名が六個以上の X で終わっている場合は、
+X の部分が、他と重複しない英数字の組み合わせに置き換えられる。
+mktemp(3) 関数の場合と同様である。
+.sp
+\fIiolog_dir\fP と \fIiolog_file\fP を結合して作られるパスがすでに存在している場合は、
+\fIiolog_file\fP が 6 個以上の X で終わっていないかぎり、
+既存の入出力ログファイルは、サイズ 0 に短縮された上で、上書きされることになる。
+.TP  18n
+lecture_status_dir
+\fBsudo\fP はこのディレクトリに、
+ユーザが訓戒を受けたかどうかを示すファイルを、ユーザごとに入れておく。
+ユーザが訓戒を受けると、サイズ 0 のファイルがこのディレクトリに作成され、
+\fBsudo\fP はそのユーザに再び訓戒を行わなくなる。このディレクトリは、
+システムのブート時に\fI消去すべきではない\fP。
+デフォルトは \fI/var/lib/sudo/lectured\fP である。
+.TP  18n
+mailsub
+\fImailto\fP ユーザに送付するメールの件名。
+エスケープ文字 %h はマシンのホスト名に展開される。
+デフォルトは「*** SECURITY information for %h ***」である。
+.TP  18n
+noexec_file
+\fBsudo\fP バージョン 1.8.1 以来、このオプションはサポートされていない。
+現在では、noexec ファイルのパスは sudo.conf(5) ファイルで設定するべきである。
+.TP  18n
+pam_login_service
+.br
+PAM を認証に使用しているシステムでは、このオプションの値が、
+\fBsudo\fP コマンドに \fB\-i\fP オプションが指定されたとき使用されるサービス名になる。
+デフォルトの値は、
+"sudo" である。\fIpam_service\fP の説明もご覧いただきたい。
+.sp
+この設定は、バージョン 1.8.8 以上でのみサポートされている。
+.TP  18n
+pam_service
+PAM を使用しているシステムでは、このオプションで指定するサービス名が、
+適用される PAM ポリシーを指定することになる。サービス名は \fIpam.conf\fP
+ファイル中のエントリ名や、\fI/etc/pam.d\fP にあるファイル名に対応している。
+デフォルトの値は "sudo" である。
+.sp
+この設定は、バージョン 1.8.8 以上でのみサポートされている。
+.TP  18n
+passprompt
 パスワードを要求するときに使用するデフォルトのプロンプト。
-\&\fB-p\fR オプションや環境変数 \f(CW\*(C`SUDO_PROMPT\*(C'\fR
-によって変更することができる。以下のパーセント (`\f(CW\*(C`%\*(C'\fR')
-エスケープシーケンスが使用できる。
-.RS 16
-.ie n .IP "%H" 4
-.el .IP "\f(CW%H\fR" 4
-.IX Item "%H"
-.\"O expanded to the local host name including the domain name
-.\"O (only if the machine's host name is fully qualified or the \fIfqdn\fR
-.\"O option is set)
-ドメイン名付きのローカルホスト名に展開 (マシンのホスト名が完全修飾名か、
-\&\fIfqdn\fR オプションがセットされている場合のみ)
-.ie n .IP "%h" 4
-.el .IP "\f(CW%h\fR" 4
-.IX Item "%h"
-.\"O expanded to the local host name without the domain name
-ドメイン名なしのローカルホスト名に展開
-.ie n .IP "%p" 4
-.el .IP "\f(CW%p\fR" 4
-.IX Item "%p"
-.\"O expanded to the user whose password is being asked for (respects the 
-.\"O \&\fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags in \fIsudoers\fR)
-パスワードを要求されているユーザ名に展開 (\fIsudoers\fR ファイルの 
-\&\fIrootpw\fR, \fItargetpw\fR, \fIrunaspw\fR フラグを尊重する)
-.ie n .IP "%U" 4
-.el .IP "\f(CW%U\fR" 4
-.IX Item "%U"
-.\"O expanded to the login name of the user the command will
-.\"O be run as (defaults to root)
-変身対象ユーザの (デフォルトでは root) ログイン名に展開
-.ie n .IP "%u" 4
-.el .IP "\f(CW%u\fR" 4
-.IX Item "%u"
-.\"O expanded to the invoking user's login name
-\&\fBsudo\fR を起動するユーザのログイン名に展開
-.ie n .IP "\*(C`%%\*(C'" 4
-.el .IP "\f(CW\*(C`%%\*(C'\fR" 4
-.IX Item "%%"
-.\"O two consecutive \f(CW\*(C`%\*(C'\fR characters are collapsed into a single \f(CW\*(C`%\*(C'\fR character
-連続した二個の \f(CW\*(C`%\*(C'\fR は、一個の \f(CW\*(C`%\*(C'\fR
-文字そのものを意味する
-.RE
-.RS 16
-.Sp
-.\"O The default value is \f(CW\*(C`Password:\*(C'\fR.
-デフォルトの値は「\f(CW\*(C`Password:\*(C'\fR」である。
-.RE
-.if \n(SL \{\
-.IP "role" 16
-.IX Item "role"
-.\"O The default SELinux role to use when constructing a new security
-.\"O context to run the command.  The default role may be overridden on
-.\"O a per-command basis in \fIsudoers\fR or via command line options.
-.\"O This option is only available whe \fBsudo\fR is built with SELinux support.
-コマンドを実行するために
+\fB\-p\fP オプションや環境変数 SUDO_PROMPT によって変更することができる。
+以下のパーセント ('%') エスケープシーケンスが使用できる。
+.PP
+.RS 18n
+.PD 0
+.TP  6n
+%H
+ドメイン名付きのローカルホスト名に展開される (マシンのホスト名が完全修飾名か、
+\fIfqdn\fP オプションがセットされている場合のみ)。
+.PD
+.TP  6n
+%h
+ドメイン名なしのローカル・ホスト名に展開される。
+.TP  6n
+%p
+パスワードを要求されているユーザ名に展開 (\fIsudoers\fP ファイルの
+\fIrootpw\fP, \fItargetpw\fP, \fIrunaspw\fP フラグを尊重する)。
+.TP  6n
+\&%U
+変身対象ユーザの (デフォルトでは root) ログイン名に展開。
+.TP  6n
+%u
+\fBsudo\fP を実行するユーザーのログイン名に展開される。
+.TP  6n
+%%
+連続した二個の % は、一個の % 文字そのものを意味する。
+.PP
+デフォルトの値は「Password:」である。
+.RE
+.TP  18n
+role
+コマンドの実行に当たって
 SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、
 デフォルトのロール。デフォルトのロールは、
-\&\fIsudoers\fR ファイルや、コマンドラインオプションを使って、
+\fIsudoers\fP ファイルや、コマンドラインオプションを使って、
 コマンドごとに変更することができる。このオプションが利用できるのは、
-\&\fBsudo\fR が SELinux サポートつきで作成されたときだけである。
-\}
-.IP "runas_default" 16
-.IX Item "runas_default"
-.\"O The default user to run commands as if the \fB\-u\fR option is not specified
-.\"O on the command line.  This defaults to \f(CW\*(C`root\*(C'\fR.
-コマンドラインで \fB-u\fR オプションが指定されていないときの、
-デフォルトの変身対象ユーザ。デフォルトでは \f(CW\*(C`root\*(C'\fR
-になっている。
-.IP "syslog_badpri" 16
-.IX Item "syslog_badpri"
-.\"O Syslog priority to use when user authenticates unsuccessfully.
-.\"O Defaults to \f(CW\*(C`alert\*(C'\fR.
+\fBsudo\fP が SELinux サポートつきでビルドされたときだけである。
+.TP  18n
+runas_default
+コマンドラインで \fB\-u\fP オプションが指定されていないときの、
+デフォルトの変身対象ユーザ。デフォルトでは root になっている。
+.TP  18n
+syslog_badpri
 ユーザが認証に失敗したときに使用する syslog の重大度 (priority)。
-デフォルトでは \f(CW\*(C`alert\*(C'\fR になっている。
-.\"O .Sp
-.\"O The following syslog priorities are supported: \fBalert\fR, \fBcrit\fR,
-.\"O \&\fBdebug\fR, \fBemerg\fR, \fBerr\fR, \fBinfo\fR, \fBnotice\fR, and \fBwarning\fR.
-.Sp
-syslog の重大度には、次のものが指定できる。\fBalert\fR, \fBcrit\fR,
-\&\fBdebug\fR, \fBemerg\fR, \fBerr\fR, \fBinfo\fR, \fBnotice\fR,
-\&\fBwarning\fR。
-.IP "syslog_goodpri" 16
-.IX Item "syslog_goodpri"
-.\"O Syslog priority to use when user authenticates successfully.
-.\"O Defaults to \f(CW\*(C`notice\*(C'\fR.
+デフォルトでは alert になっている。
+.sp
+syslog の重大度には、次のものが指定できる。\fBemerg\fP, \fBalert\fP,
+\fBcrit\fP, \fBerr\fP, \fBwarning\fP, \fBnotice\fP, \fBinfo\fP, \fBdebug\fP。
+.TP  18n
+syslog_goodpri
 ユーザが認証に成功したときに使用する syslog の重大度 (priority)。
-デフォルトでは \f(CW\*(C`notice\*(C'\fR になっている。
-.\"O .Sp
-.\"O See syslog_badpri for the list of supported syslog priorities.
-.Sp
+デフォルトでは notice になっている。
+.sp
 どんな syslog の重大度が指定できるかについては、
-syslog_badpri を参照。
-.IP "sudoers_locale" 16
-.IX Item "sudoers_locale"
-.\"O Locale to use when parsing the sudoers file, logging commands, and
-.\"O sending email.  Note that changing the locale may affect how sudoers
-.\"O is interpreted.  Defaults to \f(CW"C"\fR.
+\fIsyslog_badpri\fP を参照。
+.TP  18n
+sudoers_locale
 sudoers ファイルを解析したり、コマンドのログを記録したり、
-email を送付したりするときに使用するロケール。ロケールの変更は、
-sudoers の解釈に影響があるかもしれないので、気をつけてほしい。
-デフォルトでは \f(CW"C"\fR になっている。
-.IP "timestampdir" 16
-.IX Item "timestampdir"
-.\"O The directory in which \fBsudo\fR stores its timestamp files.
-.\"O The default is \fI/var/lib/sudo\fR.
-\&\fBsudo\fR がタイムスタンプ・ファイルを置くディレクトリ。
-デフォルトは \fI/var/lib/sudo\fR である。
-.IP "timestampowner" 16
-.IX Item "timestampowner"
-.\"O The owner of the timestamp directory and the timestamps stored therein.
-.\"O The default is \f(CW\*(C`root\*(C'\fR.
-タイムスタンプ・ディレクトリとそこに置かれるタイムスタンプの所有者。
-デフォルトは \f(CW\*(C`root\*(C'\fR である。
-.if \n(SL \{\
-.IP "type" 16
-.IX Item "type"
-.\"O The default SELinux type to use when constructing a new security
-.\"O context to run the command.  The default type may be overridden on
-.\"O a per-command basis in \fIsudoers\fR or via command line options.
-.\"O This option is only available whe \fBsudo\fR is built with SELinux support.
-コマンドを実行するために SELinux の新しいセキュリティ・コンテキストを
-構成するとき、使用するデフォルトのタイプ。デフォルトのタイプは、
-\&\fIsudoers\fR ファイルや、コマンドラインオプションを使って、コマンド
-ごとに変更することができる。このオプションが利用できるのは、\fBsudo\fR 
-が SELinux サポートつきで作成されたときだけである。
-\}
-.PP
-.\"O \&\fBStrings that can be used in a boolean context\fR:
-\&\fB真偽値としても使用できる文字列\fR:
-.IP "env_file" 12
-.IX Item "env_file"
-.\"O The \fIenv_file\fR option specifies the fully qualified path to a
-.\"O file containing variables to be set in the environment of the program
-.\"O being run.  Entries in this file should either be of the form
-.\"O \&\f(CW\*(C`VARIABLE=value\*(C'\fR or \f(CW\*(C`export VARIABLE=value\*(C'\fR.  The value may
-.\"O optionally be surrounded by single or double quotes.  Variables in
-.\"O this file are subject to other \fBsudo\fR environment settings such
-.\"O as \fIenv_keep\fR and \fIenv_check\fR.
-\&\fIenv_file\fR オプションでファイルの絶対パスを指定すると、
-実行するプログラムの環境として設定する変数を、そのファイルに格納しておくことができる。
-このファイルのエントリは \f(CW\*(C`VARIABLE=value\*(C'\fR
-か \f(CW\*(C`export VARIABLE=value\*(C'\fR の形でなければならない。
-変数の値をシングルクォートやダブルクォートで囲んでもよい。
-このファイルに含まれる変数は、\fIenv_keep\fR や \fIenv_check\fR のような
-\&\fBsudo\fR のほかの環境設定の影響を受ける。
-.IP "exempt_group" 12
-.IX Item "exempt_group"
-.\"O Users in this group are exempt from password and \s-1PATH\s0 requirements.
-.\"O The group name specified should not include a \f(CW\*(C`%\*(C'\fR prefix.
-.\"O This is not set by default.
-このグループのユーザはパスワードの入力や \fIsecure_path\fR による
-\&\s-1PATH\s0 の限定を免除されている。
-指定するグループ名に接頭辞の \f(CW\*(C`%\*(C'\fR を付けてはいけない。
+email を送付したりするときに使用するロケール。
+ロケールの変更は、sudoers の解釈に影響があるかもしれないので、
+気をつけていただきたい。デフォルトでは "C" になっている。
+.TP  18n
+timestampdir
+\fBsudo\fP がタイムスタンプ・ファイルを置くディレクトリ。
+このディレクトリは、システムがリブートするとき、クリアされるべきである。
+デフォルトは \fI/var/run/sudo/ts\fP になっている。
+.TP  18n
+timestampowner
+ユーザが訓戒を受けたかどうかを示すファイルを入れておくディレクトリや、
+タイムスタンプ・ディレクトリ、
+及びそうしたディレクトリに置かれるすべてのファイルの所有者。
+デフォルトは root である。
+.TP  18n
+type
+コマンドの実行に当たって
+SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、
+デフォルトのタイプ。デフォルトのタイプは、
+\fIsudoers\fP ファイルや、コマンドラインオプションを使って、
+コマンドごとに変更することができる。このオプションが利用できるのは、
+\fBsudo\fP が SELinux サポートつきでビルドされたときだけである。
+.PP
+\fB真偽値としても使用できる文字列\fP:
+.TP  14n
+env_file
+\fIenv_file\fP オプションでは、
+実行するプログラムの環境に設定する変数を記載したファイルの絶対パスを指定する。
+このファイルに記載する項目は、"VARIABLE=value" か "export VARIABLE=value"
+の形でなければならない。変数の値をシングルクォートやダブルクォートで囲んでもよい。
+このファイルに含まれる変数は、\fIenv_keep\fP や \fIenv_check\fP のような
+\fBsudo\fP のほかの環境設定の影響を受ける。
+.TP  14n
+exempt_group
+このグループのユーザはパスワードの入力や \fIsecure_path\fP などによる
+PATH の限定を免除される。指定するグループ名に接頭辞の % を付けてはいけない。
 このオプションはデフォルトではセットされていない。
-.IP "group_plugin" 12
-.IX Item "group_plugin"
-.\"O A string containing a \fIsudoers\fR group plugin with optional arguments.
-.\"O This can be used to implement support for the \f(CW\*(C`nonunix_group\*(C'\fR
-.\"O syntax described earlier.  The string should consist of the plugin
-.\"O path, either fully-qualified or relative to the \fI/usr/local/libexec\fR
-.\"O directory, followed by any configuration arguments the plugin
-.\"O requires.  These arguments (if any) will be passed to the plugin's
-.\"O initialization function.  If arguments are present, the string must
-.\"O be enclosed in double quotes (\f(CW\*(C`"\*(C'\fR).
-.\"O .Sp
-このオプションの値となる文字列には、\fIsudoers\fR
-が使用するグループ・プラグインと、必要ならその引き数を指定する。
-このオプションを使えば、前述した (訳注: 「エイリアス」セクション参照)
-非 Unix グループの書式を使えるようにすることも可能だ。
+.TP  14n
+group_plugin
+このオプションの値となる文字列には、
+\fBsudoers\fP が使用するグループ・プラグインと、必要ならその引き数を指定する。
 値となる文字列は、プラグインのパスに続けて、その設定に必要な引き数があれば、
 それを付け加えたものだが、パスは絶対パスか、
-\&\fI/usr/local/libexec\fR を基点とする相対パスにするべきである。
-指定した引き数は (もし存在するなら) プラグインの初期化関数に渡される。
-引き数が存在する場合は、
-文字列をダブルクォート (\f(CW\*(C`"\*(C'\fR) で囲まなければならない。 
-.Sp
-.\"O For example, given \fI/etc/sudo\-group\fR, a group file in Unix group
-.\"O format, the sample group plugin can be used:
-.\"O .Sp
-たとえば、\fI/etc/sudo\-group\fR という
-Unix グループの書式で書いたグループファイルがあるとしよう。
-次のようにすれば、sample group plugin を使用することができる。
-.Sp
-.Vb 1
-\&    Defaults group_plugin="sample_group.so /etc/sudo\-group"
-.Ve
-.Sp
-.\"O For more information see \fIsudo_plugin\fR\|(5).
-詳細に付いては、\fIsudo_plugin\fR\|(5) をご覧いただきたい。
-.IP "lecture" 12
-.IX Item "lecture"
-.\"O This option controls when a short lecture will be printed along with
-.\"O the password prompt.  It has the following possible values:
-\&\fBsudo\fR はパスワードプロンプトに添えて簡単な訓戒を表示することができる。
-このオプションはその訓戒をいつ表示するかを決定する。
-以下の値が可能である。
-.RS 12
-.IP "always" 8
-.IX Item "always"
-.\"O Always lecture the user.
+\fI/usr/local/libexec/sudo\fP を基点とする相対パスにするべきである。
+引き数が存在するなら、それはプラグインの初期化関数に渡される。
+引き数が存在する場合は、文字列全体をダブルクォート (\&"") で囲まなければならない。
+.sp
+詳細については、
+「グループ・プロバイダー・プラグイン」セクションををご覧いただきたい。
+.TP  14n
+lecture
+\fBsudo\fP はパスワードプロンプトに添えて簡単な訓戒を表示することができる。
+このオプションはその訓戒をいつ表示するかを決定する。以下の値が可能である。
+.PP
+.RS 14n
+.PD 0
+.TP  8n
+always
 いつでも必ず訓戒を表示する。
-.IP "never" 8
-.IX Item "never"
-.\"O Never lecture the user.
+.PD
+.TP  8n
+never
 訓戒をまったく表示しない。
-.IP "once" 8
-.IX Item "once"
-.\"O Only lecture the user the first time they run \fBsudo\fR.
-ユーザがはじめて \fBsudo\fR を実行したときだけ表示する。
-.RE
-.RS 12
-.Sp
-.\"O If no value is specified, a value of \fIonce\fR is implied.
-.\"O Negating the option results in a value of \fInever\fR being used.
-.\"O The default value is \fIonce\fR.
-値を指定しないと、\fIonce\fR を指定したことになる。頭に '!' を付けて、
-このオプションを否定すると、値に \fInever\fR が使用される。
-デフォルトの値は \fIonce\fR である。
-.RE
-.IP "lecture_file" 12
-.IX Item "lecture_file"
-.\"O Path to a file containing an alternate \fBsudo\fR lecture that will
-.\"O be used in place of the standard lecture if the named file exists.
-.\"O By default, \fBsudo\fR uses a built-in lecture.
-標準の訓戒の代わりに使用する \fBsudo\fR の訓戒を書き込んだファイルがあるなら、
-\&\fIlecture_file\fR でそのパスを指定する。\fBsudo\fR はデフォルトでは、
-プログラムに埋め込まれた訓戒を使用する。
-.IP "listpw" 12
-.IX Item "listpw"
-.\"O This option controls when a password will be required when a
-.\"O user runs \fBsudo\fR with the \fB\-l\fR option.  It has the following possible values:
-このオプションは、\fBsudo\fB を\fB\ -l\fR オプション付きで実行したとき、
+.TP  8n
+once
+ユーザがはじめて \fBsudo\fP を実行したときだけ表示する。
+.PP
+値を指定しないと、\fIonce\fP を指定したことになる。頭に '!' を付けて、
+このオプションを否定すると、値に \fInever\fP が使用される。
+デフォルトの値は \fIonce\fP である。
+.RE
+.TP  14n
+lecture_file
+標準の訓戒とは別の \fBsudo\fP の訓戒を書き込んだファイルのパス。
+指名したファイルが存在すれば、\fBsudo\fP は標準の訓戒の代わりに、それを使用する。
+デフォルトでは、プログラムに埋め込まれた訓戒が使用される。
+.TP  14n
+listpw
+このオプションは、\fBsudo\fP を \fB\-l\fP オプション付きで実行したとき、
 ユーザがパスワードを要求されるのは、どんな場合かを決定する。
 以下の値が可能である。
-.RS 12
-.IP "all" 8
-.IX Item "all"
-.\"O All the user's \fIsudoers\fR entries for the current host must have
-.\"O the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
+.PP
+.RS 14n
+.PD 0
+.TP  10n
+all
+パスワードを入力しないですむためには、
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
+NOPASSWD タグが設定されていなければならない。
+.PD
+.TP  10n
+always
+ユーザは \fB\-l\fP オプションを使用する際に、必ずパスワードを入力しなければならない。
+.TP  10n
+any
 パスワードを入力しないですむためには、
-\&\fIsudoers\fR ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "always" 8
-.IX Item "always"
-.\"O The user must always enter a password to use the \fB\-l\fR option.
-ユーザは \fB\-l\fR オプションを使用する際に
-必ずパスワードを入力しなければならない。
-.IP "any" 8
-.IX Item "any"
-.\"O At least one of the user's \fIsudoers\fR entries for the current host
-.\"O must have the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
-パスワードを入力しないですむためには、\fIsudoers\fR ファイルの
-使用中のホストに対する当該ユーザのエントリの少なくとも一つに 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "never" 8
-.IX Item "never"
-.\"O The user need never enter a password to use the \fB\-l\fR option.
-ユーザは \fB\-l\fR オプションを使用する際に
-パスワードを入力する必要がまったくない。
-.RE
-.RS 12
-.Sp
-.\"O If no value is specified, a value of \fIany\fR is implied.
-.\"O Negating the option results in a value of \fInever\fR being used.
-.\"O The default value is \fIany\fR.
-値を指定しないと、値は \fIany\fR だと見なされる。'!' を頭に付けて、
-このオプションを否定すると、値に \fInever\fR が使われることになる。
-デフォルトは \fIany\fR である。
-.RE
-.IP "logfile" 12
-.IX Item "logfile"
-.\"O Path to the \fBsudo\fR log file (not the syslog log file).  Setting a path
-.\"O turns on logging to a file; negating this option turns it off.
-.\"O By default, \fBsudo\fR logs via syslog.
-\&\fBsudo\fR 独自のログファイルのパス (syslog 経由のログファイルではない)。
-パスを指定すると、独自ファイルへのロギングが on になり、 '!' を頭に付けて、
-このオプションを否定すると、off になる。デフォルトでは、\fBsudo\fR は 
-syslog 経由でログを取る。
-.IP "mailerflags" 12
-.IX Item "mailerflags"
-.\"O Flags to use when invoking mailer. Defaults to \fB\-t\fR.
-メーラを起動するときに使用するフラグ。デフォルトは \fB\-t\fR になっている。
-.IP "mailerpath" 12
-.IX Item "mailerpath"
-.\"O Path to mail program used to send warning mail.
-.\"O Defaults to the path to sendmail found at configure time.
-警告メールの送信に使うメール・プログラムのパス。デフォルトは configure 
-したときに見つかった sendmail のパス。
-.IP "mailfrom" 12
-.IX Item "mailfrom"
-.\"O Address to use for the \*(L"from\*(R" address when sending warning and error
-.\"O mail.  The address should be enclosed in double quotes (\f(CW\*(C`"\*(C'\fR) to
-.\"O protect against \fBsudo\fR interpreting the \f(CW\*(C`@\*(C'\fR sign.  Defaults to
-.\"O the name of the user running \fBsudo\fR.
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一つに
+NOPASSWD タグが設定されていなければならない。
+.TP  10n
+never
+ユーザは \fB\-l\fP オプションを使用する際に、パスワードを入力する必要がまったくない。
+.PP
+値を指定しないと、値は \fIany\fP だと見なされる。'!' を頭に付けて、
+このオプションを否定すると、値に \fInever\fP が使われることになる。
+デフォルトは \fIany\fP である。
+.RE
+.TP  14n
+logfile
+\fBsudo\fP 独自のログファイルのパス (syslog 経由のログファイルではない)。
+パスを指定すると、独自ファイルへのロギングが on になり、
+\&'!' を頭に付けて、このオプションを否定すると、off になる。
+デフォルトでは、\fBsudo\fP は syslog 経由でログを取る。
+.TP  14n
+mailerflags
+メーラを起動するときに使用するフラグ。デフォルトは \fB\-t\fP になっている。
+.TP  14n
+mailerpath
+警告メールの送信に使用するメール・プログラムのパス。
+デフォルトは configure したときに見つかった sendmail のパス。
+.TP  14n
+mailfrom
 警告メールやエラー・メールを送るとき、差出人として使用するアドレス。
-\&\fBsudo\fR が \f(CW\*(C`@\*(C'\fR 記号を解釈しないように、
-アドレスはダブルクォート (\f(CW\*(C`"\*(C'\fR) で囲むべきである。デフォルトは、
-\&\fBsudo\fR を実行するユーザの名前。
-.IP "mailto" 12
-.IX Item "mailto"
-.\"O Address to send warning and error mail to.  The address should
-.\"O be enclosed in double quotes (\f(CW\*(C`"\*(C'\fR) to protect against \fBsudo\fR
-.\"O interpreting the \f(CW\*(C`@\*(C'\fR sign.  Defaults to \f(CW\*(C`root\*(C'\fR.
-警告メールやエラー・メールを送付する宛先のアドレス。\fBsudo\fR が 
-\&\f(CW\*(C`@\*(C'\fR 記号を解釈しないように、
-アドレスはダブルクォート (\f(CW\*(C`"\*(C'\fR) で囲むべきである。
+\fBsudo\fP が @ 記号を解釈しないように、
+アドレスはダブルクォート (\&"") で囲むべきである。
+デフォルトは、\fBsudo\fP を実行しているユーザの名前。
+.TP  14n
+mailto
+警告メールやエラー・メールを送付する宛先のアドレス。
+\fBsudo\fP が @ 記号を解釈しないように、
+アドレスはダブルクォート (\&"") で囲むべきである。
 デフォルトは root になっている。
-.IP "secure_path" 12
-.IX Item "secure_path"
-.\"O Path used for every command run from \fBsudo\fR.  If you don't trust the
-.\"O people running \fBsudo\fR to have a sane \f(CW\*(C`PATH\*(C'\fR environment variable you may
-.\"O want to use this.  Another use is if you want to have the \*(L"root path\*(R"
-.\"O be separate from the \*(L"user path.\*(R"  Users in the group specified by the
-.\"O \&\fIexempt_group\fR option are not affected by \fIsecure_path\fR.
-.\"O This option is not set by default.
-\&\fBsudo\fR から実行されるあらゆるコマンドが使用するパス。
-\&\fBsudo\fR を実行するユーザが、無難な環境変数 \f(CW\*(C`PATH\*(C'\fR
-を使っているかどうか確信が持てないなら、このオプションを使用するとよいだろう。
-もう一つの使用法は、「root のパス」と「一般ユーザのパス」を別のものにしておきたい場合だ。
-ユーザが \fIexempt_group\fR オプションで指定したグループに属していると、
-そのユーザは \fIsecure_path\fR の影響を受けない。
+.TP  14n
+secure_path
+\fBsudo\fP から実行されるあらゆるコマンドが使用するパス。
+\fBsudo\fP を実行するユーザが、無難な PATH 環境変数 を使っているかどうか確信が持てないなら、
+このオプションを使用するとよいだろう。もう一つの使用法は、
+「root のパス」と「一般ユーザのパス」を別のものにしておきたい場合だ。
+ユーザが \fIexempt_group\fP オプションで指定したグループに属していると、
+そのユーザは \fIsecure_path\fP の影響を受けない。
 このオプションは、デフォルトではセットされていない。
-.IP "syslog" 12
-.IX Item "syslog"
-.\"O Syslog facility if syslog is being used for logging (negate to
-.\"O disable syslog logging).  Defaults to \f(CW\*(C`authpriv\*(C'\fR.
+.TP  14n
+syslog
 syslog を使ってログを取っている場合の syslog のファシリティ
-(syslog 経由でログを取らないなら、'!' を頭に付けて、このオプションを否定する)。
-デフォルトでは \f(CW\*(C`authpriv\*(C'\fR になっている。
-.\"O .Sp
-.\"O The following syslog facilities are supported: \fBauthpriv\fR (if your
-.\"O \&\s-1OS\s0 supports it), \fBauth\fR, \fBdaemon\fR, \fBuser\fR, \fBlocal0\fR, \fBlocal1\fR,
-.\"O \&\fBlocal2\fR, \fBlocal3\fR, \fBlocal4\fR, \fBlocal5\fR, \fBlocal6\fR, and \fBlocal7\fR.
-.Sp
+(syslog 経由でログを取らないなら、'!' を頭に付けて、
+このオプションを否定する)。デフォルトでは authpriv になっている。
+.sp
 syslog のファシリティには、次のものが指定できる。
-\&\fBauthpriv\fR (\s-1OS\s0 が対応している場合), \fBauth\fR, \fBdaemon\fR,
-\&\fBuser\fR, \fBlocal0\fR, \fBlocal1\fR, \fBlocal2\fR, \fBlocal3\fR,
-\&\fBlocal4\fR, \fBlocal5\fR, \fBlocal6\fR, \fBlocal7\fR。
-.IP "verifypw" 12
-.IX Item "verifypw"
-.\"O This option controls when a password will be required when a user runs
-.\"O \&\fBsudo\fR with the \fB\-v\fR option.  It has the following possible values:
-このオプションは、\fBsudo\fR を \fB\-v\fR オプション付きで実行したとき、
+\fBauthpriv\fP (使用 OS が対応している場合), \fBauth\fP, \fBdaemon\fP, \fBuser\fP,
+\fBlocal0\fP, \fBlocal1\fP, \fBlocal2\fP, \fBlocal3\fP, \fBlocal4\fP, \fBlocal5\fP,
+\fBlocal6\fP, \fBlocal7\fP。
+.TP  14n
+verifypw
+このオプションは、\fBsudo\fP を \fB\-v\fP オプション付きで実行したとき、
 ユーザがパスワードを要求されるのは、どんな場合かを決定する。
-次のような値が可能である。
-.RS 12
-.IP "all" 8
-.IX Item "all"
-.\"O All the user's \fIsudoers\fR entries for the current host must have
-.\"O the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
+以下の値が可能である。
+.PP
+.RS 14n
+.PD 0
+.TP  8n
+all
 パスワードを入力しないですむためには、
-\&\fIsudoers\fR ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "always" 8
-.IX Item "always"
-.\"O The user must always enter a password to use the \fB\-v\fR option.
-ユーザは \fB\-v\fR オプションを使用する際に
-必ずパスワードを入力しなければならない。
-.IP "any" 8
-.IX Item "any"
-.\"O At least one of the user's \fIsudoers\fR entries for the current host
-.\"O must have the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
-パスワードを入力しないですむためには、\fIsudoers\fR ファイルの
-使用中のホストに対する当該ユーザのエントリの少なくとも一つに 
-\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "never" 8
-.IX Item "never"
-.\"O The user need never enter a password to use the \fB\-v\fR option.
-ユーザは \fB\-v\fR オプションを使用する際に
-パスワードを入力する必要がまったくない。
-.RE
-.RS 12
-.Sp
-.\"O If no value is specified, a value of \fIall\fR is implied.
-.\"O Negating the option results in a value of \fInever\fR being used.
-.\"O The default value is \fIall\fR.
-値を指定しないと、値は \fIall\fR だと見なされる。'!' を頭に付けて、
-このオプションを否定すると、値に \fInever\fR が使われることになる。
-デフォルトは \fIall\fR である。
-.RE
-.PP
-.\"O \&\fBLists that can be used in a boolean context\fR:
-\&\fB真偽値としても使用できるリスト\fR:
-.IP "env_check" 16
-.IX Item "env_check"
-.\"O Environment variables to be removed from the user's environment if
-.\"O the variable's value contains \f(CW\*(C`%\*(C'\fR or \f(CW\*(C`/\*(C'\fR characters.  This can
-.\"O be used to guard against printf-style format vulnerabilities in
-.\"O poorly-written programs.  The argument may be a double-quoted,
-.\"O space-separated list or a single value without double-quotes.  The
-.\"O list can be replaced, added to, deleted from, or disabled by using
-.\"O the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and \f(CW\*(C`!\*(C'\fR operators respectively.  Regardless
-.\"O of whether the \f(CW\*(C`env_reset\*(C'\fR option is enabled or disabled, variables
-.\"O specified by \f(CW\*(C`env_check\*(C'\fR will be preserved in the environment if
-.\"O they pass the aforementioned check.  The default list of environment
-.\"O variables to check is displayed when \fBsudo\fR is run by root with
-.\"O the \fI\-V\fR option.
-変数の値に \f(CW\*(C`%\*(C'\fR や \f(CW\*(C`/\*(C'\fR が含まれる場合に、
-ユーザの環境から取り除かれる環境変数。
-この機能は、出来のよくないプログラムに見られる
-printf 形式のフォーマットの脆弱性に対処するために利用できる。
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
+NOPASSWD タグが設定されていなければならない。
+.PD
+.TP  8n
+always
+ユーザは \fB\-v\fP オプションを使用する際に、必ずパスワードを入力しなければならない。
+.TP  8n
+any
+パスワードを入力しないですむためには、
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一つに
+NOPASSWD タグが設定されていなければならない。
+.TP  8n
+never
+ユーザは \fB\-v\fP オプションを使用する際に、パスワードを入力する必要がまったくない。
+.PP
+値を指定しないと、値は \fIall\fP だと見なされる。'!' を頭に付けて、
+このオプションを否定すると、値に \fInever\fP が使われることになる。
+デフォルトは \fIall\fP である。
+.RE
+.PP
+\fB真偽値としても使用できるリスト\fP:
+.TP  18n
+env_check
+「安全」だと見なされない場合に、ユーザの環境から取り除かれる環境変数。
+TZ 以外のすべての環境変数について、「安全」というのは、変数の値に
+\&'%' や '/' という文字を一つも含まないことである。この動作を利用すれば、
+出来のよくないプログラムに見られる
+printf 形式のフォーマットの脆弱性に対処することが可能になる。
+TZ 変数については、以下のどれかが真ならば、安全ではないと見なされる。
+.PP
+.RS 18n
+.PD 0
+.TP  4n
+\fB\(bu\fP
+変数の値が絶対パス名であり (コロン (':\&') が先頭に付いていることもある)、
+それが \fIzoneinfo\fP ディレクトリの位置にマッチしない。
+.PD
+.TP  4n
+\fB\(bu\fP
+変数の値に \fI..\fP というパスの要素が存在する。
+.TP  4n
+\fB\(bu\fP
+変数の値にホワイトスペースや表示不能文字が存在する。
+.TP  4n
+\fB\(bu\fP
+変数の値が PATH_MAX の値より長い。
+.PP
 このオプションの引き数は、ダブルクォートで囲まれ、
 スペースで区切られたリストでもよく、
-ダブルクォートなしの単一の値でもよい。リストは、\f(CW\*(C`=\*(C'\fR,
-\&\f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, \f(CW\*(C`!\*(C'\fR
+ダブルクォートなしの単一の値でもよい。リストは、=, +=, \-=, \&!
 演算子を使って、それぞれ置き換えたり、追加したり、削除したり、
-無効にしたりすることができる。
-\&\fIenv_check\fR で指定された変数は、
-\&\fIenv_reset\fR オプショの有効・無効にかかわらず、
-上記のチェックにパスすれば、環境に保存されることになる。
-チェックされる環境変数のデフォルトのリストは、root ユーザが \fBsudo\fR に
-\&\fI\-V\fR オプションを付けて実行したときに表示される。
-.IP "env_delete" 16
-.IX Item "env_delete"
-.\"O Environment variables to be removed from the user's environment
-.\"O when the \fIenv_reset\fR option is not in effect.  The argument may
-.\"O be a double-quoted, space-separated list or a single value without
-.\"O double-quotes.  The list can be replaced, added to, deleted from,
-.\"O or disabled by using the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and \f(CW\*(C`!\*(C'\fR operators
-.\"O respectively.  The default list of environment variables to remove
-.\"O is displayed when \fBsudo\fR is run by root with the \fI\-V\fR option.
-.\"O Note that many operating systems will remove potentially dangerous
-.\"O variables from the environment of any setuid process (such as
-.\"O \&\fBsudo\fR).
-\&\fIenv_reset\fR オプションが無効になっているときに、
+無効にしたりすることができる。\fIenv_check\fP で指定された変数は、
+\fIenv_reset\fP オプショの有効・無効にかかわらず、上記のチェックにパスすれば、
+環境に保存されることになる。チェックされる環境変数のグローバルなリストは、
+root ユーザが \fBsudo\fP に \fB\-V\fP オプションを付けて実行したときに表示される。
+.RE
+.TP  18n
+env_delete
+\fIenv_reset\fP オプションが無効になっているときに、
 ユーザの環境から取り除かれる環境変数。このオプションの引き数は、
 ダブルクォートで囲まれ、スペースで区切られたリストでもよく、
 ダブルクォートなしの単一の値でもよい。
-リストは、\f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR,
-\&\f(CW\*(C`!\*(C'\fR 演算子を使って、それぞれ置き換えたり、追加したり、
+リストは、=, +=, \-=, \&! 演算子を使って、それぞれ置き換えたり、追加したり、
 削除したり、無効にしたりすることができる。
-取り除かれる環境変数のデフォルトのリストは、root ユーザが \fBsudo\fR に
-\&\fI\-V\fR オプションを付けて実行したときに表示される。
-留意すべきは、オペレーティングシステムには、
-危険をもたらしかねない変数をいかなる setuid プロセス (\fBsudo\fR もその一つ)
-の環境からも取り除くことにしているものが多いということである。
-.IP "env_keep" 16
-.IX Item "env_keep"
-.\"O Environment variables to be preserved in the user's environment
-.\"O when the \fIenv_reset\fR option is in effect.  This allows fine-grained
-.\"O control over the environment \fBsudo\fR\-spawned processes will receive.
-.\"O The argument may be a double-quoted, space-separated list or a
-.\"O single value without double-quotes.  The list can be replaced, added
-.\"O to, deleted from, or disabled by using the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and
-.\"O \&\f(CW\*(C`!\*(C'\fR operators respectively.  The default list of variables to keep
-.\"O is displayed when \fBsudo\fR is run by root with the \fI\-V\fR option.
-.\"O .PP
-\&\fIenv_reset\fR オプションが有効になっているときでも、
+取り除かれる環境変数のグローバルなリストは、root ユーザが \fBsudo\fP に
+\fB\-V\fP オプションを付けて実行したときに表示される。
+なお、オペレーティングシステムには、危険をもたらしかねない変数を、
+いかなる setuid プロセス (\fBsudo\fP もその一つ)
+の環境からも取り除くことにしているものが多いことに留意してほしい。
+.TP  18n
+env_keep
+\fIenv_reset\fP オプションが有効になっているときでも、
 ユーザの環境にそのまま保存される環境変数。このオプションによって、
-\&\fBsudo\fR から生み出されるプロセスが受け取る環境を、
+\fBsudo\fP から生み出されるプロセスが受け取る環境を、
 きめ細かく制御することが可能になる。このオプションの引き数は、
 ダブルクォートで囲まれ、スペースで区切られたリストでもよく、
-ダブルクォートなしの単一の値でもよい。リストは、
-\&\f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR,
-\&\f(CW\*(C`!\*(C'\fR 演算子を使って、それぞれ置き換えたり、
-追加したり、削除したり、無効にしたりすることができる。
-保存される変数のデフォルトのリストは、root ユーザが \fBsudo\fR に
-\&\fI\-V\fR オプションを付けて実行したときに表示される。
-.\"O .SH "FILES"
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudoers\fR" 24
-.el .IP "\fI/etc/sudoers\fR" 24
-.IX Item "/etc/sudoers"
-.\"O List of who can run what
+ダブルクォートなしの単一の値でもよい。
+リストは、=, +=, \-=, \&! 演算子を使って、
+それぞれ置き換えたり、追加したり、削除したり、無効にしたりすることができる。
+保存される変数のグローバルなリストは、root ユーザが \fBsudo\fP に
+\fB\-V\fP オプションを付けて実行したときに表示される。
+.SH グループ・プロバイダー・プラグイン
+\fBsudoers\fP プラグインは、non\-Unix グループの検索を可能にするために、
+補助的なプラグインに対するインターフェースを備えており、それによって、
+標準的な Unix グループ・データベース以外のグループ情報源に対する問い合わせができるようになっている。
+先に述べたような、non\-Unix グループを指定する書式の使用を可能にしたかったら、
+この仕組みが使用できる。
+.PP
+グループ・プロバイダー・プラグインは、デフォルト設定の \fIgroup_plugin\fP
+によって指定する。\fIgroup_plugin\fP に対する引き数は、プラグインのパスに続けて、
+その設定に必要なオプションがあれば、それを付け加えたものだが、
+パスは絶対パスか、\fI/usr/local/libexec/sudo\fP
+を基点とする相対パスにするべきである。そうしたオプションは (指定されていれば)
+プラグインの初期化関数に渡されることになる。オプションがある場合は、
+文字列全体をダブルクォート (\&"") で囲まなければならない。
+.PP
+以下のグループ・プロバイダー・プラグインがデフォルトでインストールされている。
+.TP  10n
+group_file
+\fIgroup_file\fP プラグインは、\fI/etc/group\fP の代わりに、
+\fI/etc/group\fP と同じ書式を使用する別のグループファイルを使えるようにする。
+プラグインに対するオプションとして、グループファイルのパスを指定するべきである。
+たとえば、使用するグループファイルが \fI/etc/sudo\-group\fP ならば、
+次のように書くことになる。
+.nf
+.sp
+.RS 10n
+Defaults group_plugin="group_file.so /etc/sudo\-group"
+.RE
+.fi
+.TP  10n
+system_group
+\fIsystem_group\fP プラグインは、標準 C ライブラリの関数 \fBgetgrnam\fP() と
+\fBgetgrid\fP() によるグループ検索をサポートしている。このプラグインは、
+ユーザがそのユーザの補助グループのリストに存在しないグループに所属しているといった場合にも使用できる。
+このプラグインはオプションを取らないので、書式は次のようになる。
+.nf
+.sp
+.RS 10n
+Defaults group_plugin=system_group.so
+.RE
+.fi
+.PP
+グループ・プロバイダー・プラグインの API については、sudo_plugin(5)
+に詳細な説明がある。
+.SH ログの書式
+\fBsudoers\fP は、何が起きたかを記録するのに、suslog(3) を使用することもできるし、
+単独のログ・ファイルを使用することもできる。
+どちらの場合も、ログの書式はほとんど同じである。
+.SS 実行を許可されたコマンドに関するログ記載事項
+sudo が実行したコマンドは、次の書式を使って記録される
+(読みやすいように、ここでは複数行に分けている)。
+.nf
+.sp
+.RS 4n
+date hostname progname: username : TTY=ttyname ; PWD=cwd ; \e
+    USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \e
+    ENV=env_vars COMMAND=command
+.RE
+.fi
+.PP
+各フィールドは以下のようになっている。
+.TP  14n
+date
+コマンドが実行された日時。たいていは、"MMM, DD, HH:MM:SS" の形式である。
+syslog(3) 経由でロギングしている場合に、
+日時が実際にどんな形式になるかを決めるのは、syslog デーモンである。
+\fBsudo\fP 独自のファイルにロギングしているとき、
+\fIlog_year\fP オプションが有効だと、日時に年度も含まれることになる。
+.TP  14n
+hostname
+\fBsudo\fP が実行されたホストの名前。このフィールドは、
+syslog(3) 経由でロギングしているときにのみ存在する。
+.TP  14n
+progname
+プログラム名。普通は、\fIsudo\fP か \fIsudoedit\fP。このフィールドは、
+syslog(3) 経由でロギングしているときのみ存在する。
+.TP  14n
+username
+\fBsudo\fP を実行したユーザのログイン名。
+.TP  14n
+ttyname
+\fBsudo\fP が実行された端末の短縮名
+(たとえば、"console", "tty01", "pts/0" など)。端末が存在しなかった場合は、
+"unknown" になる。
+.TP  14n
+cwd
+\fBsudo\fP が実行されたカレント・ワーキング・ディレクトリ。
+.TP  14n
+runasuser
+変身対象ユーザ。
+.TP  14n
+runasgroup
+変身対象グループがコマンドラインで指定されていれば、そのグループ。
+.TP  14n
+logid
+入出力ログの識別名。コマンドの出力を再生するときに使用できる。
+このフィールドは、\fIlog_input\fP や \fIlog_output\fP
+オプションが有効なときにのみ存在する。
+.TP  14n
+env_vars
+環境変数がコマンドラインで指定された場合、そのリスト。
+.TP  14n
+command
+実行された実際のコマンド。
+.PP
+メッセージは \fIsudoers_locale\fP で指定されたロケールを使って記録される。
+デフォルトは "C" である。
+.SS 実行を拒否されたコマンドに関するログ記載事項
+ユーザがコマンドの実行を認められなかった場合、
+拒否された理由が、ユーザ名の後に記録されることになる。
+理由として挙げられるものには、次のようなものがある。
+.TP  3n
+user NOT in sudoers
+そのユーザに関する記載が \fIsudoers\fP ファイルに存在しない。
+.TP  3n
+user NOT authorized on host
+そのユーザに関する記載が \fIsudoers\fP ファイルに存在するが、
+このホストではコマンドの実行を許可されていない。
+.TP  3n
+command not allowed
+このホストに対するそのユーザの記載が \fIsudoers\fP ファイルに存在するが、
+指定されたコマンドの実行を許可されていない。
+.TP  3n
+3 incorrect password attempts
+ユーザがパスワードの入力に 3 回失敗した。実際に書き込まれる試行回数は、
+失敗した回数と \fIpasswd_tries\fP オプションの値によって様々である。
+.TP  3n
+a password is required
+\fBsudo\fP に \fB\-n\fP オプションを指定したが、パスワードが必要だった。
+.TP  3n
+sorry, you are not allowed to set the following environment variables
+ユーザがコマンドラインで環境変数を指定したが、
+それは \fIsudoers\fP によって許可されていない。
+.SS エラーに関するログ記載事項
+エラーが起きると、\fBsudoers\fP はメッセージをログに記録し、たいていの場合は、
+管理者に email で報告する。起きるかもしれないエラーには次のものがある。
+.TP  3n
+parse error in /etc/sudoers near line N
+\fBsudoers\fP が上記ファイルの解析中にエラーに出会った。
+エラーのタイプによっては、実際のエラーは、記載された行番号より 1 行上、
+あるいは、1 行下にあることもある。
+.TP  3n
+problem with defaults entries
+\fIsudoers\fP ファイル中に意味不明なデフォルト設定 (Defaults setting) が、
+一つ以上ある。このエラーがあっても、\fBsudo\fP が実行できなくなることはないが、
+\fBvisudo\fP を使って \fIsudoers\fP ファイルをチェックするべきである。
+.TP  3n
+timestamp owner (username): \&No such user
+\fItimestampowner\fP オプションで指定されたタイムスタンプ・ディレクトリの所有者が、
+パスワード・データベースに存在しなかった。
+.TP  3n
+unable to open/read /etc/sudoers
+\fIsudoers\fP ファイルを読み込もうとしたが、オープンできなかった。
+そうしたことは、\fIsudoers\fP ファイルがリモート・ファイルシステムに存在して、
+そこではユーザ ID 0 を別の値にマップしている場合に起きることがある
+(訳注: たとえば、NFS で root_squash が有効な場合)。
+通常 \fBsudoers\fP は、この問題を回避するために、グループのパーミッションを使って
+\fIsudoers\fP ファイルをオープンしようとする。
+\fI/etc/sudoers\fP の所有権を変更するなり、
+sudo.conf(5) ファイルの \fBsudoers\fP Plugin 行の末尾に "sudoers_uid=N"
+('N' は、\fIsudoers\fP ファイルの所有者のユーザ ID)
+といった引き数を追加するなりを、考慮すべきである。
+.TP  3n
+unable to stat /etc/sudoers
+\fI/etc/sudoers\fP ファイルが見つからない。
+.TP  3n
+/etc/sudoers is not a regular file
+\fI/etc/sudoers\fP は存在するが、通常ファイルでもシンボリック・リンクでもない。
+.TP  3n
+/etc/sudoers is owned by uid N, should be 0
+\fIsudoers\fP ファイルの所有者が適切ではない。
+\fIsudoers\fP ファイルの所有者を変更したい場合には、sudo.conf(5) ファイルの
+\fBsudoers\fP Plugin 行に "sudoers_uid=N" ('N' は、
+\fIsudoers\fP ファイルの所有者のユーザ ID) を付け加えていただきたい。
+.TP  3n
+/etc/sudoers is world writable
+\fIsudoers\fP ファイルのパーミッションがすべてのユーザに書き込みを許している。
+\fIsudoers\fP ファイルは、誰にでも書き込み可であってはならず、
+デフォルトのファイルモードは 0440 である (所有者とグループのみ読むことができ、
+書き込み権限は誰にもない)。デフォルトのモードは、sudo.conf(5) ファイルの
+\fBsudoers\fP Plugin 行に "sudoers_mode"
+オプションを指定することで変更することができる。
+.TP  3n
+/etc/sudoers is owned by gid N, should be 1
+\fIsudoers\fP ファイルの所有グループが適切ではない。
+\fIsudoers\fP ファイルの所有グループを変更したい場合には、
+sudo.conf(5) ファイルの \fBsudoers\fP Plugin 行に "sudoers_gid=N"
+('N' は、\fIsudoers\fP ファイルの所有グループ ID) を付け加えていただきたい。
+.TP  3n
+unable to open /var/run/sudo/ts/username
+\fBsudoers\fP がユーザのタイムスタンプ・ファイルを読み込んだり、
+作成したりすることができなかった。そうしたことは、
+\fItimestampowner\fP が root 以外のユーザに設定されていて、
+しかも \fI/var/run/sudo\fP のモードが、
+グループやその他のユーザに対して検索不可になっている場合に起きることがある。
+\fI/var/run/sudo\fP のデフォルトのモードは、0711 である。
+.TP  3n
+unable to write to /var/run/sudo/ts/username
+\fBsudoers\fP がユーザのタイムスタンプ・ファイルに書き込むことができなかった。
+.TP  3n
+/var/run/sudo/ts is owned by uid X, should be Y
+タイムスタンプ・ディレクトリの所有者が \fItimestampowner\fP 以外のユーザである。
+そうしたことは、\fItimestampowner\fP の値を変更した時に起きることがある。
+\fBsudoers\fP は、ディレクトリの所有者が訂正されるまで、
+タイムスタンプ・ディレクトリを無視することになる。
+.TP  3n
+/var/run/sudo/ts is group writable
+タイムスタンプ・ディレクトリがグループによって書き込み可能になっている。
+書き込みが可能なのは、\fItimestampowner\fP のみにするべきだ。
+タイムスタンプ・ディレクトリのデフォルトのモードは、700 である。
+\fBsudoers\fP は、ディレクトリのモードが訂正されるまで、
+タイムスタンプ・ディレクトリを無視することになる。
+.SS "syslog 経由でロギングするときの注意点"
+デフォルトでは、\fBsudoers\fP は syslog(3) 経由でメッセージをログに記録する。
+その場合、\fIdate\fP, \fIhostname\fP, \fIprogname\fP フィールドをログに付加するのは、
+syslog デーモンであって、\fBsudoers\fP ではない。
+従って、そうしたフィールドは、システムが違えば書式も違うかもしれない。
+.PP
+ほとんどのシステムで、syslog(3) は、かなり小さなログ・バッファしか持っていない。
+そこで、コマンドライン引き数の後ろの方が切り捨てられたりしないように、
+\fBsudoers\fP は、(date, hostname, 及び "sudo" という文字列を別にして)
+ログ・メッセージが 960 字以上になると、それを分割するようになっている。
+メッセージが分割される場合、後続部分では、
+ユーザ名の後ろに "(command continued)" という文字列が続き、
+その後にコマンドライン引き数の残りが続くことになる。
+.SS ファイルにロギングするときの注意点
+\fIlogfile\fP オプションを設定すると、\fBsudoers\fP は \fI/var/log/sudo\fP
+といったローカルなファイルにログを記録するようになる。ファイルにロギングする場合も、
+\fBsudoers\fP は syslog(3) とほとんど同じ書式を使用するが、
+いつくかの重要な違いがある。
+.TP  5n
+1.\&
+\fIprogname\fP と \fIhostname\fP フィールドは存在しない。
+.TP  5n
+2.\&
+\fIlog_year\fP オプションが有効な場合、日付には年度も含まれることになる。
+.TP  5n
+3.\&
+\fIloglinelen\fP (デフォルトでは 80) 文字よりも長い行は改行され、
+4 文字分のインデントを付けて次の行に続くことになる。
+そうすることで、記述情報が人間に読みやすくなるが、
+ログファイルに対して grep(1) を使用することは難しくなる。
+\fIloglinelen\fP オプションに 0 を指定すると
+(あるいは、頭に '\&!' をつけて、否定すると)、改行は行われなくなる。
+.SH 入出力ログファイル
+入出力ロギングを有効にすると、\fBsudo\fP は擬似 tty でコマンドを実行して、
+ユーザのすべての入力や出力のログを取ることになる。
+入出力は、\fIiolog_dir\fP オプションで指定したディレクトリに
+(デフォルトでは \fI/var/log/sudo\-io\fP)、
+一意なセッション ID を使って記録される。
+このセッション ID は、(訳注: syslog 経由であれ、独自ファイルであれ)
+\fBsudo\fP に関するログの行に、"TSID=" に続く値として書き込まれているものだ。
+\fIiolog_file\fP オプションを使えば、
+セッション ID の形式を変更することができる。
+.PP
+各入出力ログは、独立したディレクトリに収納される。
+そうしたディレクトリには、次のようなファイルが入っている。
+.TP  10n
+\fIlog\fP
+次のような情報を含むテキストファイル。コマンドが実行された日時、
+\fBsudo\fP を実行したユーザの名前、変身対象ユーザ名、変身対象グループ名 (ないこともある)、
+\fBsudo\fP が実行された端末、その端末の縦横のサイズ (何行何桁か)、
+コマンドがそこから実行されたカレントディレクトリ、
+それに、コマンドそのもののパス名 (引き数があれば、それも)
+.TP  10n
+\fItiming\fP
+入出力ログに記録される各事項間の時間間隔と各事項の入出力バイト数のログ
+(セッションの再生で使用される)
+.TP  10n
+\fIttyin\fP
+ユーザが使用している端末からの入力 (ユーザがタイプしたこと)。
+.TP  10n
+\fIstdin\fP
+パイプやファイルからの入力
+.TP  10n
+\fIttyout\fP
+擬似 tty の出力 (コマンドがスクリーンに書き出したこと)
+.TP  10n
+\fIstdout\fP
+パイプへ出力されたり、ファイルにリダイレクトされた標準出力
+.TP  10n
+\fIstderr\fP
+パイプへ出力されたり、ファイルへリダイレクトされた標準エラー
+.PP
+\fIlog\fP 以外のすべてのファイルは、\fIcompress_io\fP オプションが無効になっていないかぎり、
+gzip 形式で圧縮される。バッファリングを行うので、入出力のデータは、
+\fBsudo\fP コマンドが完了するまで、完全なものにはならない。
+入出力ログファイルの出力の部分は、sudoreplay(8) を使って再生することができる。
+また、sudoreplay(8) ユーティリティは、利用できるログをリスト表示したり、
+検索したりするのに使うこともできる。
+.PP
+ユーザの入力には、パスワードのような (たとえ、
+画面にエコーされることはないにしても) 秘密情報が含まれていることがある。
+そういった情報も、暗号化されずに、ログファイルに記録されることに注意していただきたい。
+たいていの場合、\fIlog_output\fP や LOG_OUTPUT を使って、
+コマンドの出力をログに記録するだけで十分用が足りる。
+.PP
+入出力ログは、セッションごとに独立したディレクトリに収納される。
+そのため、従来からあるログローテーション・ユーティリティを使用して、
+保存しておく入出力ログ数を制限することはできない。
+保存する入出力ログ数を制限する最も簡単な方法は、
+\fImaxseq\fP オプションで保存したいログの最大数を指定することである。
+入出力ログの連番が \fImaxseq\fP に達すると、連番は 0 にリセットされ、
+\fBsudoers\fP は既存の入出力ログファイルをサイズ 0 に短縮して、再利用することになる。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+sudo フロントエンドの設定
+.TP  26n
+\fI/etc/sudoers\fP
 誰が何を実行できるかのリスト
-.IP "\fI/etc/group\fR" 24
-.IX Item "/etc/group"
-.\"O Local groups file
+.TP  26n
+\fI/etc/group\fP
 ローカルのグループファイル
-.IP "\fI/etc/netgroup\fR" 24
-.IX Item "/etc/netgroup"
-.\"O List of network groups
+.TP  26n
+\fI/etc/netgroup\fP
 ネットワークグループのリスト
-.ie n .IP "\fI/var/log/sudo-io\fR" 24
-.el .IP "\fI/var/log/sudo-io\fR" 24
-.IX Item "/var/log/sudo-io"
-.\"O I/O log files
+.TP  26n
+\fI/var/log/sudo\-io\fP
 入出力のログファイル (訳注: 厳密には、
 入出力のログを記録するファイル群をその下に格納するトップディレクトリ)
-.ie n .IP "\fI/var/lib/sudo\fR" 24
-.el .IP "\fI/var/lib/sudo\fR" 24
-.IX Item "/var/lib/sudo"
-.\"O Directory containing time stamps for the \fIsudoers\fR security policy
-\&\fIsudoers\fR セキュリティ・ポリシーが使用するタイムスタンプを格納するディレクトリ。
-.IP "\fI/etc/environment\fR" 24
-.IX Item "/etc/environment"
-.\"O Initial environment for \fB\-i\fR mode on Linux and \s-1AIX\s0
-Linux や \s-1AIX\s0 で \fB\-i\fR モードを使用するときの初期環境
-.\"O .SH "EXAMPLES"
-.SH "用例"
-.IX Header "EXAMPLES"
-.\"O Below are example \fIsudoers\fR entries.  Admittedly, some of
-.\"O these are a bit contrived.  First, we allow a few environment
-.\"O variables to pass and then define our \fIaliases\fR:
-.\"O .PP
-以下は \fIsudoers\fR エントリの見本である。
+.TP  26n
+\fI/var/run/sudo/ts\fP
+\fBsudoers\fP セキュリティポリシーが使用するタイムスタンプを格納するディレクトリ
+.TP  26n
+\fI/var/lib/sudo/lectured\fP
+\fBsudoers\fP セキュリティポリシーが使用する訓戒状態ファイルを格納するディレクトリ
+.TP  26n
+\fI/etc/environment\fP
+Linux や AIX で \fB\-i\fP モードを使用するときの初期環境
+.SH 用例
+以下は \fIsudoers\fP ファイルの記載例である。
 正直なところ、いささか凝りすぎの部分もある。
 まず最初に継承を許可する環境変数をいくつか指定し、
-続いて \fIaliases\fR の定義をする。
-.PP
-.Vb 4
-.\"O \& # Run X applications through sudo; HOME is used to find the
-.\"O \& # .Xauthority file.  Note that other programs use HOME to find
-.\"O \& # configuration files and this may lead to privilege escalation!
-\& # sudo 経由で X アプリケーションを実行するとき、HOME は
-\& # .Xauthority ファイルを探すために使用される。ほかのプログラムも
-\& # 設定ファイルを探すのに HOME を使用するので、この指定が
-\& # 権限の昇格を引き起こしかねないことに注意してほしい。
-\& Defaults env_keep += "DISPLAY HOME"
-\&
-.\"O \& # User alias specification
-\& # User alias の指定
-\& User_Alias     FULLTIMERS = millert, mikef, dowdy
-\& User_Alias     PARTTIMERS = bostley, jwfox, crawl
-\& User_Alias     WEBMASTERS = will, wendy, wim
-\&
-.\"O \& # Runas alias specification
-\& # Runas alias の指定
-\& Runas_Alias    OP = root, operator
-\& Runas_Alias    DB = oracle, sybase
-\& Runas_Alias    ADMINGRP = adm, oper
-\&
-.\"O \& # Host alias specification
-\& # Host alias の指定
-\& Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\e
-\&                SGI = grolsch, dandelion, black :\e
-\&                ALPHA = widget, thalamus, foobar :\e
-\&                HPPA = boa, nag, python
-\& Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
-\& Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
-\& Host_Alias     SERVERS = master, mail, www, ns
-\& Host_Alias     CDROM = orion, perseus, hercules
-\&
-.\"O \& # Cmnd alias specification
-\& # Cmnd alias の指定
-\& Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
-\&                        /usr/sbin/restore, /usr/sbin/rrestore
-\& Cmnd_Alias     KILL = /usr/bin/kill
-\& Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
-\& Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
-\& Cmnd_Alias     HALT = /usr/sbin/halt
-\& Cmnd_Alias     REBOOT = /usr/sbin/reboot
-\& Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \e
-\&                         /usr/local/bin/tcsh, /usr/bin/rsh, \e
-\&                         /usr/local/bin/zsh
-\& Cmnd_Alias     SU = /usr/bin/su
-\& Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
-.Ve
-.PP
-.\"O Here we override some of the compiled in default values.  We want
-.\"O \&\fBsudo\fR to log via \fIsyslog\fR\|(3) using the \fIauth\fR facility in all
-.\"O cases.  We don't want to subject the full time staff to the \fBsudo\fR
-.\"O lecture, user \fBmillert\fR need not give a password, and we don't
-.\"O want to reset the \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR or \f(CW\*(C`USERNAME\*(C'\fR environment
-.\"O variables when running commands as root.  Additionally, on the
-.\"O machines in the \fI\s-1SERVERS\s0\fR \f(CW\*(C`Host_Alias\*(C'\fR, we keep an additional
-.\"O local log file and make sure we log the year in each log line since
-.\"O the log entries will be kept around for several years.  Lastly, we
-.\"O disable shell escapes for the commands in the \s-1PAGERS\s0 \f(CW\*(C`Cmnd_Alias\*(C'\fR
-.\"O (\fI/usr/bin/more\fR, \fI/usr/bin/pg\fR and \fI/usr/bin/less\fR).
-.\"O .PP
+続いて \fIaliases\fP の定義をする。
+.nf
+.sp
+.RS 0n
+# sudo 経由で X アプリケーションを実行するとき、HOME は
+# .Xauthority ファイルを探すために使用される。ほかのプログラムも
+# 設定ファイルを探すのに HOME を使用するので、この指定が
+# 権限の昇格を引き起こしかねないことに注意してほしい。
+Defaults env_keep += "DISPLAY HOME"
+
+# User alias の指定
+User_Alias     FULLTIMERS = millert, mikef, dowdy
+User_Alias     PARTTIMERS = bostley, jwfox, crawl
+User_Alias     WEBMASTERS = will, wendy, wim
+
+# Runas alias の指定
+Runas_Alias    OP = root, operator
+Runas_Alias    DB = oracle, sybase
+Runas_Alias    ADMINGRP = adm, oper
+
+# Host alias の指定
+Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\e
+               SGI = grolsch, dandelion, black :\e
+               ALPHA = widget, thalamus, foobar :\e
+               HPPA = boa, nag, python
+Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
+Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
+Host_Alias     SERVERS = master, mail, www, ns
+Host_Alias     CDROM = orion, perseus, hercules
+
+# Cmnd alias の指定
+Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
+                       /usr/sbin/restore, /usr/sbin/rrestore,\e
+                       sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \e
+                       /home/operator/bin/start_backups
+Cmnd_Alias     KILL = /usr/bin/kill
+Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
+Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
+Cmnd_Alias     HALT = /usr/sbin/halt
+Cmnd_Alias     REBOOT = /usr/sbin/reboot
+Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\e
+                        /usr/local/bin/tcsh, /usr/bin/rsh,\e
+                        /usr/local/bin/zsh
+Cmnd_Alias     SU = /usr/bin/su
+Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
+.RE
+.fi
+.PP
 以下では、コンパイル時に埋め込まれたデフォルト値のいくつかを変更している。
-\&\fBsudo\fR には \fIsyslog\fR\|(3) 経由でログを記録し、
-ファシリティにはすべての場合に \fIauth\fR を使用させたい。
-フルタイムのスタッフには \fBsudo\fR の訓戒を出さないようにしたい。
-ユーザ \fBmillert\fR はパスワードを入力しないでよい。
+\fBsudo\fP には syslog(3) 経由でログを記録し、
+ファシリティにはすべての場合に \fIauth\fP を使用させたい。
+フルタイムのスタッフには \fBsudo\fP の訓戒を出さないようにしたい。
+ユーザ \fBmillert\fP はパスワードを入力しないでよい。
 コマンドを root として実行するときは、
-環境変数 \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR,
-\&\f(CW\*(C`USERNAME\*(C'\fR を変更したくない。さらに、
-\&\fI\s-1SERVERS\s0\fR という \f(CW\*(C`Host_Alias\*(C'\fR に属するマシンでは、
+環境変数 LOGNAME, USER, USERNAME を変更したくない。
+さらに、\fISERVERS\fP という Host_Alias に属するマシンでは、
 ローカルなログファイルを副本として作り、
 ログの記入事項は数年に渡って保存されるので、
 ログの各行に間違いなく年度が入るようにする。
-最後に \s-1PAGERS\s0 という \f(CW\*(C`Cmnd_Alias\*(C'\fR に属するコマンド
-(\fI/usr/bin/more\fR, \fI/usr/bin/pg\fR, \fI/usr/bin/less\fR) については、
-シェル・エスケープを無効にする。
-.PP
-.Vb 7
-.\"O \& # Override built\-in defaults
-\& # built-in defaults の変更
-\& Defaults               syslog=auth
-\& Defaults>root          !set_logname
-\& Defaults:FULLTIMERS    !lecture
-\& Defaults:millert       !authenticate
-\& Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
-\& Defaults!PAGERS        noexec
-.Ve
-.PP
-.\"O The \fIUser specification\fR is the part that actually determines who may
-.\"O run what.
-.\"O .PP
-ユーザ設定が、誰が何を実行できるかを実際に決めている部分だ。
+最後に \fIPAGERS\fP という Cmnd_Alias に属するコマンド
+(\fI/usr/bin/more\fP, \fI/usr/bin/pg\fP, \fI/usr/bin/less\fP) については、
+シェル・エスケープを無効にする。なお、最後の設定は、
+許可するコマンドが ALL になっているユーザに対しては、
+効果的な抑制にはならないことに注意していただきたい。
+.nf
+.sp
+.RS 0n
+# built\-in defaults の変更
+Defaults               syslog=auth
+Defaults>root          !set_logname
+Defaults:FULLTIMERS    !lecture
+Defaults:millert       !authenticate
+Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
+Defaults!PAGERS                noexec
+.RE
+.fi
 .PP
-.Vb 2
-\& root           ALL = (ALL) ALL
-\& %wheel         ALL = (ALL) ALL
-.Ve
+ユーザ設定が、誰が何を実行できるかを実際に決めている部分だ。
+.nf
+.sp
+.RS 0n
+root           ALL = (ALL) ALL
+%wheel         ALL = (ALL) ALL
+.RE
+.fi
 .PP
-.\"O We let \fBroot\fR and any user in group \fBwheel\fR run any command on any
-.\"O host as any user.
-.\"O .PP
-\&\fBroot\fR と \fBwheel\fR グループのすべてのユーザには、
+\fBroot\fP と \fBwheel\fP グループに属するすべてのユーザには、
 どのホストでも任意のユーザとしていかなるコマンドでも実行することを認める。
+.nf
+.sp
+.RS 0n
+FULLTIMERS     ALL = NOPASSWD: ALL
+.RE
+.fi
+.PP
+フルタイムのシステム管理者 (\fBmillert\fP, \fBmikef\fP, \fBdowdy\fP) は、
+どのホストでも任意のコマンドを認証なしで実行できる。
+.nf
+.sp
+.RS 0n
+PARTTIMERS     ALL = ALL
+.RE
+.fi
+.PP
+パートタイムのシステム管理者 (\fBbostley\fP, \fBjwfox\fP, \fBcrawl\fP) は、
+どのホストでも任意のコマンドを実行できるが、その際に認証をしなければならない
+(このエントリには NOPASSWD タグが指定されていないので)。
+.nf
+.sp
+.RS 0n
+jack           CSNETS = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& FULLTIMERS     ALL = NOPASSWD: ALL
-.Ve
-.PP
-.\"O Full time sysadmins (\fBmillert\fR, \fBmikef\fR, and \fBdowdy\fR) may run any
-.\"O command on any host without authenticating themselves.
-.\"O .PP
-フルタイムのシステム管理者 (\fBmillert\fR, \fBmikef\fR, \fBdowdy\fR) 
-は、どのホストでも任意のコマンドを認証なしで実行できる。
-.PP
-.Vb 1
-\& PARTTIMERS     ALL = ALL
-.Ve
-.PP
-.\"O Part time sysadmins (\fBbostley\fR, \fBjwfox\fR, and \fBcrawl\fR) may run any
-.\"O command on any host but they must authenticate themselves first
-.\"O (since the entry lacks the \f(CW\*(C`NOPASSWD\*(C'\fR tag).
-.\"O .PP
-パートタイムのシステム管理者 ((\fBbostley\fR, \fBjwfox\fR,
-\&\fBcrawl\fR) は、どのホストでも任意のコマンドを実行できるが、
-その際に認証をしなければならない (このエントリには 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが指定されていないので)。
-.PP
-.Vb 1
-\& jack           CSNETS = ALL
-.Ve
-.PP
-.\"O The user \fBjack\fR may run any command on the machines in the \fI\s-1CSNETS\s0\fR alias
-.\"O (the networks \f(CW128.138.243.0\fR, \f(CW128.138.204.0\fR, and \f(CW128.138.242.0\fR).
-.\"O Of those networks, only \f(CW128.138.204.0\fR has an explicit netmask (in
-.\"O \&\s-1CIDR\s0 notation) indicating it is a class C network.  For the other
-.\"O networks in \fI\s-1CSNETS\s0\fR, the local machine's netmask will be used
-.\"O during matching.
-.\"O .PP
-ユーザ \fBjack\fR は、\fI\s-1CSNETS\s0\fR
-というエイリアスに属するマシンで、任意のコマンドを実行できる
-(すなわち、ネットワークが \f(CW128.138.243.0\fR, \f(CW128.138.204.0\fR,
-\&\f(CW128.138.242.0\fR のマシンだ)。この内、\f(CW128.138.204.0\fR にのみ
-class C のネットワークであることを示す明示的な (\s-1CIDR\s0 表記の)
-netmask がある。\fI\s-1CSNETS\s0\fR のほかのネットワークについては、
+ユーザ \fBjack\fP は、\fICSNETS\fP というエイリアスに属するマシンで、
+任意のコマンドを実行できる (すなわち、ネットワークが 128.138.243.0,
+128.138.204.0, 128.138.242.0 のマシンだ)。この内、128.138.204.0 にのみ
+class C のネットワークであることを示す明示的な (CIDR 表記の)
+netmask がある。\fICSNETS\fP のほかのネットワークについては、
 ローカルマシンの netmask がマッチングの際に使われることになる。
+.nf
+.sp
+.RS 0n
+lisa           CUNETS = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& lisa           CUNETS = ALL
-.Ve
-.PP
-.\"O The user \fBlisa\fR may run any command on any host in the \fI\s-1CUNETS\s0\fR alias
-.\"O (the class B network \f(CW128.138.0.0\fR).
-.\"O .PP
-ユーザ \fBlisa\fR は、エイリアスが \fI\s-1CUNETS\s0\fR のいかなるホストでも、
-任意のコマンドを実行することができる (すなわち、
-\f(CW128.138.0.0\fR という class B ネットワークのマシンだ)。
-.PP
-.Vb 2
-\& operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
-\&                sudoedit /etc/printcap, /usr/oper/bin/
-.Ve
-.PP
-.\"O The \fBoperator\fR user may run commands limited to simple maintenance.
-.\"O Here, those are commands related to backups, killing processes, the
-.\"O printing system, shutting down the system, and any commands in the
-.\"O directory \fI/usr/oper/bin/\fR.
-.\"O .PP
-ユーザ \fBoperator\fR は、
-用途が簡単な保守管理に限定されたコマンドを実行できる。この場合それは、
+ユーザ \fBlisa\fP は、エイリアスが \fICUNETS\fP のいかなるホストでも、
+任意のコマンドを実行することができる
+(すなわち、128.138.0.0 という class B ネットワークのマシンだ)。
+.nf
+.sp
+.RS 0n
+operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
+               sudoedit /etc/printcap, /usr/oper/bin/
+.RE
+.fi
+.PP
+ユーザ \fBoperator\fP は、
+簡単な保守管理に用途が限定されたコマンドを実行できる。この場合それは、
 バックアップしたり、プロセスを kill したり、印刷システムを操作したり、
 システムをシャットダウンしたりするのに関係するコマンドと、
-\&\fI/usr/oper/bin/\fR ディレクトリにある任意のコマンドである。
-.PP
-.Vb 1
-\& joe            ALL = /usr/bin/su operator
-.Ve
-.PP
-.\"O The user \fBjoe\fR may only \fIsu\fR\|(1) to operator.
-.\"O .PP
-ユーザ \fBjoe\fR は、\fIsu\fR\|(1) を使って operator になることしかできない。
-.PP
-.Vb 1
-.\"O \& pete           HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
-.\"O \&
-\& %opers         ALL = (: ADMINGRP) /usr/sbin/
-.Ve
-.PP
-.\"O Users in the \fBopers\fR group may run commands in \fI/usr/sbin/\fR as themselves
-.\"O with any group in the \fI\s-1ADMINGRP\s0\fR \f(CW\*(C`Runas_Alias\*(C'\fR (the \fBadm\fR and \fBoper\fR
-.\"O groups).
-.\"O .PP
-\&\fBopers\fR グループのユーザは、\fI/usr/sbin/\fR にあるコマンドを、
-自分自身の資格で、
-\&\f(CW\*(C`Runas_Alias\*(C'\fR \fI\s-1ADMINGRP\s0\fR
-に属する任意のグループ (すなわち、\fBadm\fR か \fBoper\fR グループ)
-として実行できる。
-.PP
-.Vb 1
-\& pete           HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
-.Ve
-.PP
-.\"O The user \fBpete\fR is allowed to change anyone's password except for
-.\"O root on the \fI\s-1HPPA\s0\fR machines.  Note that this assumes \fIpasswd\fR\|(1)
-.\"O does not take multiple user names on the command line.
-.\"O .PP
-ユーザ \fBpete\fR は、\fI\s-1HPPA\s0\fR に属するマシンで
+\fI/usr/oper/bin/\fP ディレクトリにある任意のコマンドである。
+注意: \fIDUMPS\fP という Cmnd_Alias に属するコマンドのひとつ、すなわち
+\fI/home/operator/bin/start_backups\fP は、sha224 ダイジェスト付きである。
+そうしているのは、そのスクリプトが置かれているディレクトリが
+operator ユーザによって書き込み可能だからだ。スクリプトが変更された場合
+(その結果、ダイジェストが一致しないことになる)、
+\fBsudo\fP 経由でそのスクリプトを実行することはもはや不可能になる。
+.nf
+.sp
+.RS 0n
+joe            ALL = /usr/bin/su operator
+.RE
+.fi
+.PP
+ユーザ \fBjoe\fP は、su(1) を使って operator になることしかできない。
+.nf
+.sp
+.RS 0n
+pete           HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
+
+%opers         ALL = (: ADMINGRP) /usr/sbin/
+.RE
+.fi
+.PP
+\fBopers\fP グループのユーザは、\fI/usr/sbin/\fP にあるコマンドを、
+自分自身の資格で、Runas_Alias \fIADMINGRP\fP に属する任意のグループ
+(すなわち、\fBadm\fP か \fBoper\fP グループ) として実行できる。
+.PP
+ユーザ \fBpete\fP は、\fIHPPA\fP に属するマシンで
 root 以外なら誰のパスワードでも変更することを許されている。
-上記の指定は、\fIpasswd\fR\|(1) がコマンドラインで複数のユーザ名を
-受け付けないことを前提としている点に注意してほしい。
-.PP
-.Vb 1
-\& bob            SPARC = (OP) ALL : SGI = (OP) ALL
-.Ve
-.PP
-.\"O The user \fBbob\fR may run anything on the \fI\s-1SPARC\s0\fR and \fI\s-1SGI\s0\fR machines
-.\"O as any user listed in the \fI\s-1OP\s0\fR \f(CW\*(C`Runas_Alias\*(C'\fR (\fBroot\fR and \fBoperator\fR).
-.\"O .PP
-ユーザ \fBbob\fR は、\fI\s-1SPARC\s0\fR や \fI\s-1SGI\s0\fR に属するマシンで
-\&\f(CW\*(C`Runas_Alias\*(C'\fR \fI\s-1OP\s0\fR
-に登録されている任意のユーザとして (\fBroot\fR と \fBoperator\fR である)
-どんなコマンドでも実行できる。
+コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行うので、
+ワイルドカード '*' は、\fI複数の\fP単語とマッチすることになる。だから、
+この例は、passwd(1) がコマンドラインで複数のユーザ名を受け付けないことを前提としているのである。
+GNU のシステムでは、
+passwd(1) に対するオプションをユーザ引き数の後ろに置くことができるのに注意していただきたい。
+そのため、このルールは次のようなコマンドも許可してしまうことになる。
+.nf
+.sp
+.RS 4n
+passwd username \-\-expire
+.RE
+.fi
+.PP
+これは、望ましくないことかもしれない。
+.nf
+.sp
+.RS 0n
+bob            SPARC = (OP) ALL : SGI = (OP) ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& jim            +biglab = ALL
-.Ve
+ユーザ \fBbob\fP は、\fISPARC\fP や \fISGI\fP に属するマシンで
+Runas_Alias \fIOP\fPに登録されている任意のユーザとして
+(\fBroot\fP と \fBoperator\fP である) どんなコマンドでも実行できる。
+.nf
+.sp
+.RS 0n
+jim            +biglab = ALL
+.RE
+.fi
 .PP
-.\"O The user \fBjim\fR may run any command on machines in the \fIbiglab\fR netgroup.
-.\"O \&\fBsudo\fR knows that \*(L"biglab\*(R" is a netgroup due to the '+' prefix.
-.\"O .PP
-ユーザ \fBjim\fR は、\fIbiglab\fR ネットグループに属するマシンで、
+ユーザ \fBjim\fP は、\fIbiglab\fP ネットグループに属するマシンで、
 どんなコマンドでも実行できる。
-\&\fBsudo\fR は、\*(L"biglab\*(R" に '+' の接頭辞が付いているので、
+\fBsudo\fP は、"biglab" に '+' の接頭辞が付いているので、
 それをネットグループだと認識する。
+.nf
+.sp
+.RS 0n
++secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
+.RE
+.fi
 .PP
-.Vb 1
-\& +secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
-.Ve
-.PP
-.\"O Users in the \fBsecretaries\fR netgroup need to help manage the printers
-.\"O as well as add and remove users, so they are allowed to run those
-.\"O commands on all machines.
-.\"O .PP
-\&\fBsecretaries\fR ネットグループのユーザは、ユーザの追加や削除はもちろん、
+\fBsecretaries\fP ネットグループのユーザは、ユーザの追加や削除はもちろん、
 プリンタの管理にも協力する必要がある。
 そこで、すべてのマシンでその種のコマンドの実行を認められている。
+.nf
+.sp
+.RS 0n
+fred           ALL = (DB) NOPASSWD: ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& fred           ALL = (DB) NOPASSWD: ALL
-.Ve
-.PP
-.\"O The user \fBfred\fR can run commands as any user in the \fI\s-1DB\s0\fR \f(CW\*(C`Runas_Alias\*(C'\fR
-.\"O (\fBoracle\fR or \fBsybase\fR) without giving a password.
-.\"O .PP
-ユーザ \fBfred\fR は、\f(CW\*(C`Runas_Alias\*(C'\fR \fI\s-1DB\s0\fR
-の任意のユーザとして (\fBoracle\fR か \fBsybase\fR だ)
+ユーザ \fBfred\fP は、Runas_Alias \fIDB\fP の任意のユーザとして
+(\fBoracle\fP か \fBsybase\fP だ)
 パスワードを入力しないでもコマンドを実行することができる。
+.nf
+.sp
+.RS 0n
+john           ALPHA = /usr/bin/su [!\-]*, !/usr/bin/su *root*
+.RE
+.fi
 .PP
-.Vb 1
-\& john           ALPHA = /usr/bin/su [!\-]*, !/usr/bin/su *root*
-.Ve
-.PP
-.\"O On the \fI\s-1ALPHA\s0\fR machines, user \fBjohn\fR may su to anyone except root
-.\"O but he is not allowed to specify any options to the \fIsu\fR\|(1) command.
-.\"O .PP
-ユーザ \fBjohn\fR は、\fI\s-1ALPHA\s0\fR に属するマシンで \fIsu\fR\|(1)
-を使って root 以外の誰にでもなることができるが、
+ユーザ \fBjohn\fP は、\fIALPHA\fP に属するマシンで su(1) を使って
+root 以外の誰にでもなることができるが、
 su にオプションを指定することは許されていない。
+.nf
+.sp
+.RS 0n
+jen            ALL, !SERVERS = ALL
+.RE
+.fi
+.PP
+ユーザ \fBjen\fP は、Host_Alias \fISERVERS\fP に属するマシン
+(master, mail, www, ns) を除くいかなるマシンでも、任意のコマンドを実行できる。
+.nf
+.sp
+.RS 0n
+jill           SERVERS = /usr/bin/, !SU, !SHELLS
+.RE
+.fi
 .PP
-.Vb 1
-\& jen            ALL, !SERVERS = ALL
-.Ve
-.PP
-.\"O The user \fBjen\fR may run any command on any machine except for those
-.\"O in the \fI\s-1SERVERS\s0\fR \f(CW\*(C`Host_Alias\*(C'\fR (master, mail, www and ns).
-.\"O .PP
-ユーザ \fBjen\fR は、\f(CW\*(C`Host_Alias\*(C'\fR \fI\s-1SERVERS\s0\fR
-に属するマシン (master, mail, www, ns) を除くいかなるマシンでも、
-任意のコマンドを実行できる。
-.PP
-.Vb 1
-\& jill           SERVERS = /usr/bin/, !SU, !SHELLS
-.Ve
-.PP
-.\"O For any machine in the \fI\s-1SERVERS\s0\fR \f(CW\*(C`Host_Alias\*(C'\fR, \fBjill\fR may run
-.\"O any commands in the directory \fI/usr/bin/\fR except for those commands
-.\"O belonging to the \fI\s-1SU\s0\fR and \fI\s-1SHELLS\s0\fR \f(CW\*(C`Cmnd_Aliases\*(C'\fR.
-.\"O .PP
-\&\fBjill\fR は、\f(CW\*(C`Host_Alias\*(C'\fR \fI\s-1SERVERS\s0\fR のいかなるマシンでも
-\&\fI/usr/bin/\fR ディレクトリにある任意のコマンドを実行できるが、
-\&\fI\s-1SU\s0\fR や \fI\s-1SHELLS\s0\fR という
-\&\f(CW\*(C`Cmnd_Aliases\*(C'\fR に属するコマンドは実行できない。
-.PP
-.Vb 1
-\& steve          CSNETS = (operator) /usr/local/op_commands/
-.Ve
-.PP
-.\"O The user \fBsteve\fR may run any command in the directory /usr/local/op_commands/
-.\"O but only as user operator.
-.\"O .PP
-ユーザ \fBsteve\fR は、ディレクトリ \fI/usr/local/op_commands/\fR
+\fBjill\fP は、Host_Alias \fISERVERS\fP のいかなるマシンでも
+\fI/usr/bin/\fP ディレクトリにある任意のコマンドを実行できるが、
+\fISU\fP や \fISHELLS\fP という Cmnd_Alias に属するコマンドは実行できない。
+ルールのこのくだりでは特に言っていないが、
+Cmnd_Alias \fIPAGER\fP のコマンドはすべて \fI/usr/bin\fP にあり、
+\fInoexec\fP オプションが設定されている。
+.nf
+.sp
+.RS 0n
+steve          CSNETS = (operator) /usr/local/op_commands/
+.RE
+.fi
+.PP
+ユーザ \fBsteve\fP は、ディレクトリ \fI/usr/local/op_commands/\fP
 にある任意のコマンドを実行できるが、
 operator というユーザとして実行できるだけだ。
+.nf
+.sp
+.RS 0n
+matt           valkyrie = KILL
+.RE
+.fi
+.PP
+\fBmatt\fP も、自分用のワークステーション valkyrie で、
+ハングしたプロセスの kill ぐらいはできる必要がある。
+.nf
+.sp
+.RS 0n
+WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www
+.RE
+.fi
 .PP
-.Vb 1
-\& matt           valkyrie = KILL
-.Ve
-.PP
-.\"O On his personal workstation, valkyrie, \fBmatt\fR needs to be able to
-.\"O kill hung processes.
-.\"O .PP
-\&\fBmatt\fR も、自分用のワークステーション valkyrie で、ハングしたプロセスの
-kill ぐらいはできる必要がある。
-.PP
-.Vb 1
-\& WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www
-.Ve
-.PP
-.\"O On the host www, any user in the \fI\s-1WEBMASTERS\s0\fR \f(CW\*(C`User_Alias\*(C'\fR (will,
-.\"O wendy, and wim), may run any command as user www (which owns the
-.\"O web pages) or simply \fIsu\fR\|(1) to www.
-.\"O .PP
-ホスト www で \f(CW\*(C`User_Alias\*(C'\fR \fI\s-1WEBMASTERS\s0\fR
-に属するいかなるユーザも (will, wendy, wim だ)、ユーザ www
-(web ページの所有者) として任意のコマンドを実行することができる。
-単に \fIsu\fR\|(1) で www になってもよい。
-.PP
-.Vb 2
-\& ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\e
-\&                /sbin/mount \-o nosuid\e,nodev /dev/cd0a /CDROM
-.Ve
-.PP
-.\"O Any user may mount or unmount a CD-ROM on the machines in the \s-1CDROM\s0
-.\"O \&\f(CW\*(C`Host_Alias\*(C'\fR (orion, perseus, hercules) without entering a password.
-.\"O This is a bit tedious for users to type, so it is a prime candidate
-.\"O for encapsulating in a shell script.
-いかなるユーザも、\f(CW\*(C`Host_Alias\*(C'\fR が \s-1CDROM\s0 のマシンで
-(orion, perseus, hercules)、パスワードを入力することなく 
-CD-ROM をマウント、アンマウントできる。
+ホスト www で User_Alias \fIWEBMASTERS\fP に属するいかなるユーザも
+(will, wendy, wim だ)、ユーザ www (web ページの所有者)
+として任意のコマンドを実行することができる。
+単に su(1) でユーザ www になってもよい。
+.nf
+.sp
+.RS 0n
+ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\e
+               /sbin/mount \-o nosuid\e,nodev /dev/cd0a /CDROM
+.RE
+.fi
+.PP
+いかなるユーザも、Host_Alias が \fICDROM\fP のマシンで
+(orion, perseus, hercules)、パスワードを入力することなく
+CD\-ROM をマウント、アンマウントできる。
 上記のコマンドを打ち込むのはユーザにとっていささか面倒なので、
 シェルスクリプトとしてカプセル化してしまうのがよいだろう。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote2"
-当然と言えば当然だが、sudo は自ホストの /etc/sudoers しか読まないし、
-制御の及ぶ範囲も自ホストだけである。そこで、こういうことになる。
-AAA というホストに aaa というユーザがいるとしよう。
-ホスト AAA の /etc/sudoers に「ホスト BBB でユーザ aaa は
-sudo を介して /bin/ls を実行できる」という記述があったとしても、
-ユーザ aaa がホスト AAA から telnet や ssh でホスト BBB にログインし、
-BBB 上で sudo を使って ls を実行できるわけではない。それができるためには、
-ホスト BBB の /etc/sudoers に「BBB でユーザ aaa は sudo を介して
-/bin/ls を実行できる」という記述がなければならないのだ。
-ホスト BBB で実行する sudo は BBB の sudo であり、
-BBB の sudo は BBB の /etc/sudoers しか読まないのだから。
-.Sp
-それでは、何故、上記の「用例」で自ホスト以外の設定が行われているのか?
-そもそも、sudoers の書式で自ホスト以外のホストを指定できるのは、
-何故なのか? ホストに ALL を指定できるのは、何故なのか?
-それは、管理しているサイトのすべてのホストの設定を記した
-sudoers ファイルを一つ作って、それをすべてのホストにコピーして使う、
-そういった使い方を想定しているからだ。
+.IP "[\fB訳注\fP]:" 8
+注意していただきたいが、
+\fI/etc/sudoers\fP ファイルに「user1 ALL = (ALL) ALL」といった設定を書いても、
+user1 が \fBsudo\fP 経由であらゆるコマンドを実行できるようになるのは、
+自ホスト、すなわち、その \fI/etc/sudoers\fP が存在するホストだけであって、
+telnet や ssh で接続したホストで 
+\fBsudo\fP 経由でコマンドを実行できるとはかぎらない。
+他ホストの \fBsudo\fP は、自分のところにある \fI/etc/sudoers\fP 
+ファイルしか参照しないからである。
+.sp
+それでは、何故、上記の「用例」で自ホスト以外の設定が行われているのだろうか? 
+そもそも、\fIsudoers\fP の書式で自ホスト以外のホストを指定できるのは、
+何故なのか? ホストに \fBALL\fP を指定できるのは、何故なのか? 
+それは、管理しているサイトのすべてのホストの設定を記した 
+\fIsudoers\fP ファイルを一つ作って、それをすべてのホストにコピーして使う、
+そういった使い方を想定しているからだろう。昔の習慣の名残りかもしれない。
 もし、サイト中のすべてのホストの設定を一ヶ所にまとめて置き、
-それをすべてのホストに共有させたいのなら
-(すなわち、sudo の設定の集中管理がしたいのなら)、
-LDAP の採用を考えるべきである。
-.\"O .SH "SECURITY NOTES"
-.SH "セキュリティに関する注意点"
-.IX Header "SECURITY NOTES"
-.\"O It is generally not effective to \*(L"subtract\*(R" commands from \f(CW\*(C`ALL\*(C'\fR
-.\"O using the '!' operator.  A user can trivially circumvent this
-.\"O by copying the desired command to a different name and then
-.\"O executing that.  For example:
-.\"O .PP
-一般的に言って、演算子 '!' を使用して \f(CW\*(C`ALL\*(C'\fR
-からコマンドの「引き算」をするのは、あまり有力な方法ではない。
+それをすべてのホストに共有させたいのなら 
+(すなわち、\fIsudoers\fP セキュリティポリシー設定の集中管理がしたいのなら)、
+\fBLDAP\fP の採用を考えるべきである。
+.SH セキュリティに関する注意点
+.SS "'!\&' 演算子の限界"
+一般的に言って、演算子 '!\&' を使用して \fBALL\fP
+からコマンドの「引き算」をするのは、あまり効果的な方法ではない。
 ユーザは実行したいコマンドを名前を変えてコピーし、
 それからそれを実行するといった簡単な方法で、裏をかくことができるからだ。
 たとえば、
+.nf
+.sp
+.RS 0n
+bill   ALL = ALL, !SU, !SHELLS
+.RE
+.fi
 .PP
-.Vb 1
-\&    bill        ALL = ALL, !SU, !SHELLS
-.Ve
-.PP
-.\"O Doesn't really prevent \fBbill\fR from running the commands listed in
-.\"O \&\fI\s-1SU\s0\fR or \fI\s-1SHELLS\s0\fR since he can simply copy those commands to a
-.\"O different name, or use a shell escape from an editor or other
-.\"O program.  Therefore, these kind of restrictions should be considered
-.\"O advisory at best (and reinforced by policy).
-.\"O .PP
-という行は、\fI\s-1SU\s0\fR や \fI\s-1SHELLS\s0\fR
-に列記されているコマンドの \fBbill\fR による実行を、
-本当に阻止することにはならない。なぜなら、
-\&\fBbill\fR としては、そうしたコマンドを単に名前を変えてコピーすればよいし、
-エディタやほかのプログラムからシェル・エスケープを利用することもできるからだ。
+という行は、\fISU\fP や \fISHELLS\fP に列記されているコマンドの \fBbill\fP による実行を、
+本当に阻止することにはならない。なぜなら、\fBbill\fP としては、
+そうしたコマンドを単に名前を変えてコピーすればよいし、
+エディタなどのプログラムからシェル・エスケープを利用することもできるからだ。
 だから、この種の制限はやった方がまし程度に考えておくべきである
 (そして、しっかりした運用方針によって制限の実効力を上げるべきだ)。
 .PP
-.\"O Furthermore, if the \fIfast_glob\fR option is in use, it is not possible
-.\"O to reliably negate commands where the path name includes globbing
-.\"O (aka wildcard) characters.  This is because the C library's
-.\"O \&\fIfnmatch\fR\|(3) function cannot resolve relative paths.  While this
-.\"O is typically only an inconvenience for rules that grant privileges,
-.\"O it can result in a security issue for rules that subtract or revoke
-.\"O privileges.
-.\"O .PP
-さらに言うと、\fIfast_glob\fR オプションが使われている場合、
+一般に、もし ユーザに許可するコマンドに \fBALL\fP が入っているならば、
+ユーザが自分でプログラムを作って
+(あるいは、シェルを自分専用に別の名前でコピーして)、
+ルート・シェルを獲得するのを防ぐことはできない。
+ユーザ設定でどんな項目に '!\&'  を付けようとも防止不可能である。
+.SS "\fIfast_glob\fP の持つセキュリティ上の問題"
+\fIfast_glob\fP オプションが使われている場合、
 パス名に glob 文字 (ワイルドカードとも言う)
-が含まれるコマンドを間違いなく無効にすることは不可能である。
-その理由は、C ライブラリの
-\&\fIfnmatch\fR\|(3) 関数が相対パスを解決することができないからだ。
+が含まれるコマンドを確実に無効にすることは不可能である。その理由は、
+C ライブラリの fnmatch(3) 関数は、相対パスのパス名展開ができないからだ。
 このことは、権限を許可するルールにとっては、
 たいていの場合不便なだけにすぎないが、権限を減らしたり、
 取り消したりするルールにとっては、セキュリティ上の問題をもたらしかねない。
 .PP
-.\"O For example, given the following \fIsudoers\fR entry:
-.\"O .PP
-たとえば、\fIsudoers\fR に以下のエントリがあるとしよう。 
-.PP
-.Vb 2
-\& john   ALL = /usr/bin/passwd [a\-zA\-Z0\-9]*, /usr/bin/chsh [a\-zA\-Z0\-9]*,
-\&      /usr/bin/chfn [a\-zA\-Z0\-9]*, !/usr/bin/* root
-.Ve
-.PP
-.\"O User \fBjohn\fR can still run \f(CW\*(C`/usr/bin/passwd root\*(C'\fR if \fIfast_glob\fR is
-.\"O enabled by changing to \fI/usr/bin\fR and running \f(CW\*(C`./passwd root\*(C'\fR instead.
-\&\fIfast_glob\fR が有効になっていると、\fBjohn\fR はこれでも
-\&\f(CW\*(C`/usr/bin/passwd root\*(C'\fR を実行できてしまう。
-\&\fI/usr/bin\fR にカレント・ディレクトリを移動して、
-\&\f(CW\*(C`./passwd root\*(C'\fR と打ち込めばよいのだ。 
-.\"O .SH "PREVENTING SHELL ESCAPES"
-.SH "シェル・エスケープを防止する"
-.IX Header "PREVENTING SHELL ESCAPES"
-.\"O Once \fBsudo\fR executes a program, that program is free to do whatever
-.\"O it pleases, including run other programs.  This can be a security
-.\"O issue since it is not uncommon for a program to allow shell escapes,
-.\"O which lets a user bypass \fBsudo\fR's access control and logging.
-.\"O Common programs that permit shell escapes include shells (obviously),
-.\"O editors, paginators, mail and terminal programs.
-.\"O .PP
-\&\fBsudo\fR があるプログラムを実行した場合、そのプログラムは、
+たとえば、\fIsudoers\fP ファイルに次のエントリがあったとしよう。
+.nf
+.sp
+.RS 0n
+john   ALL = /usr/bin/passwd [a\-zA\-Z0\-9]*, /usr/bin/chsh [a\-zA\-Z0\-9]*,\e
+              /usr/bin/chfn [a\-zA\-Z0\-9]*, !/usr/bin/* root
+.RE
+.fi
+.PP
+それでも、\fIfast_glob\fP が有効になっていれば、\fBjohn\fP は
+"/usr/bin/passwd root" を実行できてしまう。
+\fI/usr/bin\fP に移動して、"./passwd root" を実行すればよいのだ。
+.SS シェル・エスケープの防止
+\fBsudo\fP があるプログラムを実行した場合、そのプログラムは、
 ほかのプログラムの実行も含めて、何でも自由に好きなことができる。
 このことがセキュリティ上の問題になりかねないのは、
 プログラムがシェル・エスケープを許しているのは珍しいことではなく、
-そのために、ユーザが \fBsudo\fR
+そのために、ユーザが \fBsudo\fP
 のアクセス制御やロギングをすり抜けることが可能になるからだ。
 よく使うプログラムでシェル・エスケープを許しているものには、
-次のようなものがある。
-(当然ながら) シェル、エディタ、ページャ、メーラ、ターミナルなど
+(当然ながら) シェル、エディタ、
+ページャ、メーラ、ターミナルなどがある
 .PP
-.\"O There are two basic approaches to this problem:
 この問題に対処するには、基本的に二つの方法がある。
-.\"O .IP "restrict" 10
-.IP "制限" 10
-.IX Item "restrict"
-.\"O Avoid giving users access to commands that allow the user to run
-.\"O arbitrary commands.  Many editors have a restricted mode where shell
-.\"O escapes are disabled, though \fBsudoedit\fR is a better solution to
-.\"O running editors via \fBsudo\fR.  Due to the large number of programs that
-.\"O offer shell escapes, restricting users to the set of programs that
-.\"O do not is often unworkable.
+.TP  10n
+制限
 ユーザに任意のコマンドの実行を許すようなコマンドに対して、
-ユーザがアクセスできないようにする。エディタの場合は、制限モードと称して、
+ユーザがアクセスできないようにする。
+エディタの場合は、制限モード (restricted mode) と称して、
 シェル・エスケープが使えないモードを持っているものも多い。
-とは言え、\fBsudo\fR 経由でエディタを使うのなら、
-\&\fBsudoedit\fR を使用する方がより優れた対策である。
+とは言え、\fBsudo\fP 経由でエディタを使うのなら、
+\fBsudoedit\fP を使用する方がより優れた対策である。
 シェル・エスケープを提供するプログラムはたくさんあるので、
 それを提供しないプログラムのみを使用するようにユーザを制限するのは、
 たいてい実現不可能である。
-.IP "noexec" 10
-.IX Item "noexec"
-.\"O Many systems that support shared libraries have the ability to
-.\"O override default library functions by pointing an environment
-.\"O variable (usually \f(CW\*(C`LD_PRELOAD\*(C'\fR) to an alternate shared library.
-.\"O On such systems, \fBsudo\fR's \fInoexec\fR functionality can be used to
-.\"O prevent a program run by \fBsudo\fR from executing any other programs.
-.\"O Note, however, that this applies only to native dynamically-linked
-.\"O executables.  Statically-linked executables and foreign executables
-.\"O running under binary emulation are not affected.
-.\"O .Sp
-共有ライブラリをサポートしている多くのシステムには、環境変数 (たいていは 
-\&\f(CW\*(C`LD_PRELOAD\*(C'\fR) で別の共有ライブラリを指定することによって、
-デフォルトのライブラリ関数を置き換える能力がある。
-そういったシステムでは、\fBsudo\fR の \fInoexec\fR 機能を使えば、
-\&\fBsudo\fR から実行されるプログラムが、
+.TP  10n
+noexec
+共有ライブラリをサポートしているシステムには、
+環境変数 (たいていは LD_PRELOAD) で別の共有ライブラリを指定することによって、
+デフォルトのライブラリ関数を置き換えることができるものが多い。
+そういったシステムでは、\fBsudo\fP の \fInoexec\fP 機能を使えば、
+\fBsudo\fP から実行されるプログラムが、
 何かほかのプログラムを実行するのを防ぐことができる。
 とは言え、これが当てはまるのは、
 動的にリンクされたネイティブなプログラムだけだということに留意してほしい。
 静的にリンクされたプログラムや、
 バイナリ・エミュレーションのもとで動くほかの OS のプログラムには効果がない。
-.Sp
-.\"O The \fInoexec\fR feature is known to work on SunOS, Solaris, *BSD,
-.\"O Linux, \s-1IRIX\s0, Tru64 \s-1UNIX\s0, MacOS X, HP-UX 11.x and \s-1AIX\s0 5.3 and above.
-.\"O It should be supported on most operating systems that support the
-.\"O \&\f(CW\*(C`LD_PRELOAD\*(C'\fR environment variable.  Check your operating system's
-.\"O manual pages for the dynamic linker (usually ld.so, ld.so.1, dyld,
-.\"O dld.sl, rld, or loader) to see if \f(CW\*(C`LD_PRELOAD\*(C'\fR is supported.
-.\"O .Sp
-\&\fInoexec\fR 機能は SunOS, Solaris, *BSD, Linux, \s-1IRIX\s0, 
-Tru64 \s-1UNIX\s0, MacOS X, HP-UX 11.x、それに 5.3 以上の \s-1AIX\s0
-で使えることがわかっている。環境変数 \f(CW\*(C`LD_PRELOAD\*(C'\fR
-をサポートしているたいていのオペレーティングシステムが、
+.sp
+\fInoexec\fP 機能は SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX,
+MacOS X, HP\-UX 11.x、それに 5.3 以上の AIX で使えることがわかっている。
+環境変数 LD_PRELOAD をサポートしているたいていのオペレーティングシステムが、
 この機能に対応しているはずだ。
 使用しているオペレーティングシステムのマニュアルページを調べて、
 ダイナミック・リンカについて (通例 ld.so, ld.so.1, dyld, dld.sl, rld,
-loader といった名前になっている) \f(CW\*(C`LD_PRELOAD\*(C'\fR
+loader といった名前になっている) LD_PRELOAD
 がサポートされているかどうか確認していただきたい。
-.Sp
-.\"O On Solaris 10 and higher, \fInoexec\fR uses Solaris privileges instead
-.\"O of the \f(CW\*(C`LD_PRELOAD\*(C'\fR environment variable.
-.\"O .Sp
-Solaris 10 以上の場合、\fInoexec\fR は 環境変数 \f(CW\*(C`LD_PRELOAD\*(C'\fR
-ではなく、Solaris 特権を使用している。
-.Sp
-.\"O To enable \fInoexec\fR for a command, use the \f(CW\*(C`NOEXEC\*(C'\fR tag as documented
-.\"O in the User Specification section above.  Here is that example again:
-.\"O .Sp
-あるコマンドに対して \fInoexec\fR を有効にするには、
-上記「ユーザ設定」セクションで述べたように、
-\&\f(CW\*(C`NOEXEC\*(C'\fR タグを使用する。そのときの例を再掲しよう。
-.Sp
-.Vb 1
-\& aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-.Ve
-.Sp
-.\"O This allows user \fBaaron\fR to run \fI/usr/bin/more\fR and \fI/usr/bin/vi\fR
-.\"O with \fInoexec\fR enabled.  This will prevent those two commands from
-.\"O executing other commands (such as a shell).  If you are unsure
-.\"O whether or not your system is capable of supporting \fInoexec\fR you
-.\"O can always just try it out and check whether shell escapes work
-.\"O when \fInoexec\fR is enabled.
-.\"O .PP
-この例では、ユーザ \fBaaron\fR 対して、\fInoexec\fR を有効にした上で、
-\&\fI/usr/bin/more\fR と \fI/usr/bin/vi\fR の実行を許可している。
-このようにすれば、この二つのコマンドから
-(シェルのような) ほかのコマンドを実行することができなくなるわけだ。
-使用しているシステムが \fInoexec\fR に対応する能力があるかどうか
-よくわからない場合でも、取りあえず試してみることなら、いつだってできる。
-\&\fInoexec\fR を有効にして、
+.sp
+あるコマンドに対して \fInoexec\fP を有効にするには、
+上述の「ユーザ設定」セクションで解説したように、NOEXEC タグを使用する。
+そのときの例を再掲しよう。
+.nf
+.sp
+.RS 10n
+aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
+.RE
+.fi
+.RS 10n
+.sp
+この例では、ユーザ \fBaaron\fP 対して、\fInoexec\fP を有効にした上で、
+\fI/usr/bin/more\fP と \fI/usr/bin/vi\fP の実行を許可している。
+このようにすれば、この二つのコマンドから (シェルのような)
+ほかのコマンドを実行することができなくなるわけだ。使用しているシステムが
+\fInoexec\fP に対応する能力があるかどうかよくわからない場合でも、
+取りあえず試してみることなら、いつだってできる。\fInoexec\fP を有効にして、
 シェル・エスケープが可能かどうか確かめてみればよいのだ。
+.RE
 .PP
-.\"O Note that restricting shell escapes is not a panacea.  Programs
-.\"O running as root are still capable of many potentially hazardous
-.\"O operations (such as changing or overwriting files) that could lead
-.\"O to unintended privilege escalation.  In the specific case of an
-.\"O editor, a safer approach is to give the user permission to run
-.\"O \&\fBsudoedit\fR.
 注意してほしいが、シェル・エスケープの禁止は万能薬ではない。
-ルートの権限で動いているプログラムには、ほかにも、危険性のあるさまざまな作業
-(ファイルの中身を変更するとか、上書きしてしまうとか) が可能であり、
+root の権限で動いているプログラムには、ほかにも、危険性のあるさまざまな作業
+(ファイルの属性を変更するとか、上書きしてしまうとか) が可能であり、
 思いがけずに権限を拡大してしまうこともありえるのだ。特にエディタについて言うと、
-ユーザには \fBsudoedit\fR を実行する許可を与えるのが、より安全な方法である。
-.\"O .SH "DEBUG FLAGS"
-.SH "デバッグ・フラグ (sudo-1.8.4 の新機能)"
-.IX Header "DEBUG FLAGS"
-.\"O Versions 1.8.4 and higher of the \fIsudoers\fR plugin supports a
-.\"O debugging framework that can help track down what the plugin is
-.\"O doing internally if there is a problem.  This can be configured in
-.\"O the \fI/etc/sudo.conf\fR file as described in \fIsudo\fR\|(8).
-.\"O .PP
-バージョン 1.8.4 以上の \fIsudoers\fR プラグインは、
-デバッグのための枠組みに対応しており、
-問題が発生したとき、プラグインの内部で何が起きているかを突き止めるために、
-それを利用することができる。
-その設定は、\fIsudo\fR\|(8) のマニュアルでも説明したように、
-\&\fI/etc/sudo.conf\fR ファイルで行うことが可能だ。
-.PP
-.\"O The \fIsudoers\fR plugin uses the same debug flag format as \fBsudo\fR
-.\"O itself: \fIsubsystem\fR@\fIpriority\fR.
-.\"O .PP
-\&\fIsudoers\fR プラグインは、
-\&\fBsudo\fR そのものと同じデバッグ・フラグの書式を使用する。
-すなわち、\fIsubsystem\fR@\fIpriority\fR である。
-.PP
-.\"O The priorities used by \fIsudoers\fR, in order of decreasing severity,
-.\"O are: \fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR, \fItrace\fR
-.\"O and \fIdebug\fR.  Each priority, when specified, also includes all
-.\"O priorities higher than it.  For example, a priority of \fInotice\fR
-.\"O would include debug messages logged at \fInotice\fR and higher.
-.\"O .PP
-\&\fIsudoers\fR が使用する priority (重大度) を深刻なものから挙げると、
-\fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR,
-\&\fItrace\fR, \fIdebug\fR である。ある priority を指定すると、
+ユーザには \fBsudoedit\fP を実行する許可を与えるのが、より安全な方法である
+(下記参照)。
+.SS 安全な編集作業
+\fBsudoers\fP プラグインでは \fBsudoedit\fP が使用できるようになっており、
+ユーザは好みのエディタを使って、安全にファイルを編集することができる。
+\fBsudoedit\fP は \fBsudo\fP の組み込みコマンドなので、
+\fIsudoers\fP ファイル中で指定するときは、
+頭にパスを付けてはいけない。ただし、コマンドライン引き数については、
+通常のコマンドと全く同じように指定することができる。
+\fBsudoedit\fP のコマンドライン引き数にワイルドカードを使用した場合は、
+\fBsudoedit\fP の引き数にはパス名が来るはずなので、
+ワイルドカードはフォワードスラッシュ ('/') にマッチしないようになっている。
+.PP
+\fBsudo\fP 経由で実行される他のコマンドとは違って、エディターは
+\fBsudo\fP を起動するユーザの資格で、環境を変更せずに実行される。
+詳しくは、sudo(8) のマニュアルの \fB\-e\fP オプションの説明をご覧になるとよい。
+.PP
+たとえば、ユーザ operator が "message of the day" ファイルを編集できるようにするには、\fIsudoers\fP
+で次のように指定する。
+.nf
+.sp
+.RS 6n
+operator       ALL = sudoedit /etc/motd
+.RE
+.fi
+.PP
+そして、ユーザ operator は、\fBsudoedit\fP を次のように実行する。
+.nf
+.sp
+.RS 6n
+$ sudoedit /etc/motd
+.RE
+.fi
+.PP
+エディタは、root ではなく、ユーザ operator の資格で、\fI/etc/motd\fP
+の作業用コピーに対して実行される。ファイルの編集が済むと、
+\fI/etc/motd\fP は作業用コピーの内容で更新されることになる。
+.PP
+ユーザが書き込み権限を持っているディレクトリに存在するファイルに対して、
+ファイル名を直接指定してであれ、ワイルドカードによって指定してであれ、
+\fBsudoedit\fP を使って編集する許可をそのユーザに与えてはいけない。
+もし、ユーザがディレクトリに対して書き込み権限を持っているならば、編集を許可されたファイルを、
+別のファイルに対するリンクで置き換えることができるわけで、そうすることによって、
+任意のどんなファイルでも編集できるようになってしまうからだ。
+そうした事態を防ぐために、バージョン 1.8.16 以降の \fBsudoedit\fP では、
+\fIsudoedit_checkdir\fP オプションが無効になっている場合や、
+\fBsudoedit\fP を実行するユーザが root である場合を除いて、
+ユーザが書き込み権限を持っているディレクトリに存在するいかなるシンボリックリンクも、
+たどらないようになっている。
+また、書き込み権限があるディレクトリに存在するファイルの編集を行うことも拒否する。
+さらに、バージョン 1.8.15 以降の \fBsudoedit\fP では、
+\fIsudoers\fP ファイルで \fIsudoedit_follow\fP オプションが有効になっているか、
+\fIsudoedit\fP コマンドの前に FOLLOW タグが指定してあるかのどちらかでないかぎり、
+シンボリックリンクをオープンしないようになっている。
+.SS タイムスタンプ・ファイルのチェック
+\fBsudoers\fP は、タイムスタンプ・ディレクトリ (デフォルトでは
+\fI/var/run/sudo/ts\fP) の所有者を調べて、所有者が root でなかったり、
+root 以外のユーザにも書き込み可能であったりすると、
+そのディレクトリの中身を無視する。古いバージョンの \fBsudo\fP は、
+タイムスタンプ・ファイルを \fI/tmp\fP に置いていたが、
+そうしたことは今では推奨できない。
+特権を持たないユーザが自分の作ったファイルの所有者を変更できるシステムでは、
+ユーザがタイムスタンプを自分で作成することが可能になるかもしれないからだ。
+.PP
+タイムスタンプ・ディレクトリは、
+リブートしたときにその中身を\fI消去されるべき\fPだが、
+すべてのシステムに \fI/var/run\fP ディレクトリが存在するとはかぎらない。
+問題が起きるのを避けるために、\fBsudoers\fP は、
+ブートタイムを参照できるシステムでは、
+マシンがブートした時刻よりも古い日時を持つタイムスタンプ・ファイルを無視する。
+.PP
+グラフィカルなデスクトップ環境を持っているシステムの中には、
+特権を持たないユーザにシステム・クロックの変更を許しているものがある。
+\fBsudoers\fP は、タイムスタンプが有効か否を確認するのに、
+システム・クロックを拠り所にしている。そこで、そうしたシステムでは、
+ユーザがクロックを後戻りさせることで、\fItimestamp_timeout\fP よりも長い時間
+\fBsudo\fP を実行することが可能になるかもしれない。そうした事態に対抗するため、
+\fBsudoers\fP は、システムがサポートしているならば、
+タイムスタンプに単調増加時計 (monotonic clock) を使用する
+(単調増加時計は後戻りすることがないからだ)。
+.PP
+\fBsudoers\fP はあまりにも未来に設定されたタイムスタンプを認めない。
+タイムスタンプが「現在時 + 2 * TIMEOUT」より新しい日時だった場合、
+そのタイムスタンプは無視され、\fBsudoers\fP はログに記録して、警告を発する。
+.PP
+タイムスタンプ・ファイルはファイルシステム中に作られるものだから、
+ユーザのログイン・セッションが終わっても残っている。
+そのため、ユーザがログインし、認証を行ってから
+\fBsudo\fP を使ってコマンドを実行し、一旦ログアウトして、再度ログインしたとき、
+認証なしで \fBsudo\fP を実行することが可能になってしまうかもしれない。
+タイムスタンプ・ファイルに記録されているタイムスタンプが 5 分以内のものであれば
+(あるいは、\fIsudoers\fP ファイルで設定されているタイムアウト時間以内のものであれば)、
+そういうことが可能かもしれないのだ。
+\fItty_tickets\fP オプションが有効な場合は、タイムスタンプの記録に、
+ユーザが認証するときに使った端末のデバイス番号が含まれる。それよって、
+tty ごとのきめ細かな管理が可能になるが、それでもタイムスタンプの記録が、
+ユーザのセッションが終わった後まで有効である可能性もある。また、
+タイムスタンプの記録には、最後に認証を行ったプロセスのセッション ID も含まれている。
+別の端末セッションのプロセスが、同じタイムスタンプの記録を使えないようにしているのだ。
+それはまた、ユーザがログアウトし、再度同じ端末にログインしたときに、
+パスワードを入力することなしに \fBsudo\fP を実行できる可能性を減少させる役にも立っている。
+.SH デバッギング
+バージョン 1.8.4 以上の \fBsudoers\fP プラグインは、
+デバッグのための柔軟な枠組みをサポートしており、問題が発生したときに、
+プラグインの内部で何が起きているかを突き止めるために、
+それを利用することができる。設定は sudo.conf(5) ファイルで行うことが可能だ。
+.PP
+\fBsudoers\fP プラグインは、
+フロントエンドである \fBsudo\fP と同じデバッグ・フラグの書式を使用する。
+すなわち、\fIsubsystem\fP@\fIpriority\fP である。
+.PP
+\fBsudoers\fP が使用する priority (重大度) を深刻なものから挙げると、
+\fIcrit\fP, \fIerr\fP, \fIwarn\fP, \fInotice\fP, \fIdiag\fP, \fIinfo\fP, \fItrace\fP,
+\fIdebug\fP である。ある priority を指定すると、
 それより深刻なすべての priority も併せて指定したことになる。
-たとえば、\fInotice\fR という priority を指定すれば、
-\&\fInotice\fR レベル以上のデバッグメッセージがログに記録されるわけである。
-.PP
-.\"O The following subsystems are used by \fIsudoers\fR:
-\&\fIsudoers\fR では以下のサブシステムが使用できる。
-.IP "\fIalias\fR" 10
-.IX Item "alias"
-.\"O \&\f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR and \f(CW\*(C`Cmnd_Alias\*(C'\fR processing
-\&\f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR,
-\&\f(CW\*(C`Host_Alias\*(C'\fR, \f(CW\*(C`Cmnd_Alias\*(C'\fR の処理
-.IP "\fIall\fR" 10
-.IX Item "all"
-.\"O matches every subsystem
-あらゆるサブシステムにマッチする
-.IP "\fIaudit\fR" 10
-.IX Item "audit"
-.\"O \&\s-1BSM\s0 and Linux audit code
-Solaris \s-1BSM\s0 (Basic Security Module) と Linux の監査コード
-.IP "\fIauth\fR" 10
-.IX Item "auth"
-.\"O user authentication
+たとえば、\fInotice\fP という priority を指定すれば、
+\fInotice\fP レベル以上のデバッグメッセージがログに記録される。
+.PP
+\fBsudoers\fP では以下のサブシステムが使用できる。
+.TP  10n
+\fIalias\fP
+User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias の処理
+.TP  10n
+\fIall\fP
+すべてのサブシステムにマッチする
+.TP  10n
+\fIaudit\fP
+Solaris BSM (Basic Security Module) と Linux の監査コード
+.TP  10n
+\fIauth\fP
 ユーザの認証
-.IP "\fIdefaults\fR" 10
-.IX Item "defaults"
-.\"O \&\fIsudoers\fR \fIDefaults\fR settings
-\&\fIsudoers\fR の \fIDefaults\fR 設定
-.IP "\fIenv\fR" 10
-.IX Item "env"
-.\"O environment handling
+.TP  10n
+\fIdefaults\fP
+\fIsudoers\fP ファイルの \fIDefaults\fP 設定
+.TP  10n
+\fIenv\fP
 環境の取扱い
-.IP "\fIldap\fR" 10
-.IX Item "ldap"
-.\"O LDAP-based sudoers
+.TP  10n
+\fIldap\fP
 LDAP を使用する sudoers
-.IP "\fIlogging\fR" 10
-.IX Item "logging"
-.\"O logging support
+.TP  10n
+\fIlogging\fP
 ロギングのサポート
-.IP "\fImatch\fR" 10
-.IX Item "match"
-.\"O matching of users, groups, hosts and netgroups in \fIsudoers\fR
-\&\fIsudoers\fR におけるユーザ、グループ、ホスト、
-ネットグループのマッチング
-.IP "\fInetif\fR" 10
-.IX Item "netif"
-.\"O network interface handling
+.TP  10n
+\fImatch\fP
+\fIsudoers\fP ファイルにおけるユーザ、グループ、ホスト、ネットグループのマッチング
+.TP  10n
+\fInetif\fP
 ネットワークインターフェースの取扱い
-.IP "\fInss\fR" 10
-.IX Item "nss"
-.\"O network service switch handling in \fIsudoers\fR
-\&\fIsudoers\fR におけるネームサービス・スイッチの取扱い
-.IP "\fIparser\fR" 10
-.IX Item "parser"
-.\"O \&\fIsudoers\fR file parsing
-\&\fIsudoers\fR ファイルの解析
-.IP "\fIperms\fR" 10
-.IX Item "perms"
-.\"O permission setting
+.TP  10n
+\fInss\fP
+\fBsudoers\fP におけるネームサービス・スイッチの取扱い
+.TP  10n
+\fIparser\fP
+\fIsudoers\fP ファイルの解析
+.TP  10n
+\fIperms\fP
 パーミッションの設定
-.IP "\fIplugin\fR" 10
-.IX Item "plugin"
-.\"O The equivalent of \fImain\fR for the plugin.
-プラグインにとって \fImain\fR に相当する
-.IP "\fIpty\fR" 10
-.IX Item "pty"
-.\"O pseudo-tty related code
-擬似 tty に関連したコード
-.IP "\fIrbtree\fR" 10
-.IX Item "rbtree"
-.\"O redblack tree internals
+.TP  10n
+\fIplugin\fP
+プラグインにとって \fImain\fP に相当する
+.TP  10n
+\fIpty\fP
+擬似 tty 関連コード
+.TP  10n
+\fIrbtree\fP
 赤黒木 (redblack tree) の内部情報
-.IP "\fIutil\fR" 10
-.IX Item "util"
-.\"O utility functions
+.TP  10n
+\fIsssd\fP
+SSSD を使用する sudoers
+.TP  10n
+\fIutil\fP
 ユーティリティ関数群
-.\"O .SH "SECURITY NOTES"
-.SH "セキュリティに関する注意点"
-.IX Header "SECURITY NOTES"
-.\"O \&\fIsudoers\fR will check the ownership of its time stamp directory
-.\"O (\fI/var/lib/sudo\fR by default) and ignore the directory's contents if
-.\"O it is not owned by root or if it is writable by a user other than
-.\"O root.  On systems that allow non-root users to give away files via
-.\"O \&\fIchown\fR\|(2), if the time stamp directory is located in a world-writable
-.\"O directory (e.g., \fI/tmp\fR), it is possible for a user to create the
-.\"O time stamp directory before \fBsudo\fR is run.  However, because
-.\"O \&\fIsudoers\fR checks the ownership and mode of the directory and its
-.\"O contents, the only damage that can be done is to \*(L"hide\*(R" files by
-.\"O putting them in the time stamp dir.  This is unlikely to happen
-.\"O since once the time stamp dir is owned by root and inaccessible by
-.\"O any other user, the user placing files there would be unable to get
-.\"O them back out.
-.\"O .PP
-\&\fIsudoers\fR はタイムスタンプ・ディレクトリ (デフォルトでは
-\&\fI/var/lib/sudo\fR) の所有者を調べて、所有者が root でなかったり、
-root 以外のユーザにも書き込み可能だったりする場合には、
-そのディレクトリの内容を無視する。root 以外のユーザでも \fIchown\fR\|(2)
-を利用して、ファイルの所有者を変えられるシステムでは、
-タイムスタンプ・ディレクトリが (たとえば、\fI/tmp\fR といった)
-誰にでも書き込めるディレクトリにあると、一般ユーザが、\fBsudo\fR
-を実行する前にタイムスタンプ・ディレクトリを作成することが可能になる。もっとも、
-\&\fIsudoers\fR はタイムスタンプ・ディレクトリとその中身の、
-所有者とモードをチェックするので、起こりえる唯一の被害は、
-ファイルを「隠匿」する目的でそのディレクトリに入れておかれることぐらいだ。
-これはあまりありそうにないことである。
-なぜなら、タイムスタンプ・ディレクトリが root の所有になり、
-ほかのユーザによるアクセスが禁じられてしまうと、
-ファイルをそこに置いたユーザは、それを回収できなくなるからだ。
-.PP
-.\"O \&\fIsudoers\fR will not honor time stamps set far in the future.  Time
-.\"O stamps with a date greater than current_time + 2 * \f(CW\*(C`TIMEOUT\*(C'\fR will
-.\"O be ignored and sudo will log and complain.  This is done to keep a
-.\"O user from creating his/her own time stamp with a bogus date on
-.\"O systems that allow users to give away files if the time stamp directory
-.\"O is located in a world-writable directory.
-.\"O .PP
-\&\fIsudoers\fR はあまりにも未来に設定されたタイムスタンプを認めない。
-タイムスタンプが「現在時 + 2 * \f(CW\*(C`TIMEOUT\*(C'\fR」
-より新しい日時だった場合、そのタイムスタンプは無視され、
-\&\fBsudo\fR がログに記録して、警告を発する。このようになっているのは、
-一般ユーザがファイルの所有者を変えられるシステムで、
-タイムスタンプ・ディレクトリが誰にでも書き込めるディレクトリにある場合に、
-ユーザがいい加減な日付を付けて勝手に自分のタイムスタンプを作れないようにするためである。
-.PP
-.\"O On systems where the boot time is available, \fIsudoers\fR will ignore
-.\"O time stamps that date from before the machine booted.
-.\"O .PP
-ブートタイムを参照できるシステムでは、
-タイムスタンプがマシンがブートするよりも前の日時になっている場合、
-\&\fIsudoers\fR はそれを無視する。
-.PP
-.\"O Since time stamp files live in the file system, they can outlive a
-.\"O user's login session.  As a result, a user may be able to login,
-.\"O run a command with \fBsudo\fR after authenticating, logout, login
-.\"O again, and run \fBsudo\fR without authenticating so long as the time
-.\"O stamp file's modification time is within \f(CW\*(C`5\*(C'\fR minutes (or
-.\"O whatever the timeout is set to in \fIsudoers\fR).  When the \fItty_tickets\fR
-.\"O option is enabled, the time stamp has per-tty granularity but still
-.\"O may outlive the user's session.  On Linux systems where the devpts
-.\"O filesystem is used, Solaris systems with the devices filesystem,
-.\"O as well as other systems that utilize a devfs filesystem that
-.\"O monotonically increase the inode number of devices as they are
-.\"O created (such as Mac \s-1OS\s0 X), \fIsudoers\fR is able to determine when a
-.\"O tty-based time stamp file is stale and will ignore it.  Administrators
-.\"O should not rely on this feature as it is not universally available.
-.\"O .PP
-タイムスタンプ・ファイルはファイルシステム中に作られるので、
-ユーザのログイン・セッションが終わっても、残っている。
-そのため、次のようなことが起こりえる。ユーザがログインし、
-認証してから \fBsudo\fR を使ってコマンドを実行して、ログアウトする。
-再びログインして、認証なしで \fBsudo\fR を実行する。
-タイムスタンプ・ファイルの内容更新日時 (modification time) が
-\&\f(CW\*(C`5\*(C'\fR 分以内であれば
-(あるいは、\fIsudoers\fR で設定されたタイムアウト時間以内であれば)、
-そういうことが可能になってしまうのだ。
-\&\fItty_tickets\fR オプションが有効になっている場合、
-タイムスタンプは tty ごとに別々に作られるが、
-それでも、ユーザセッションが終わった後まで生き残ってしまう。devpts
-ファイルシステムを使用している Linux や、devices ファイルシステムを持つ Solaris、
-それに、デバイスを作成するごとに、その inode 番号をひたすら増やしていく
-devfs ファイルシステムを利用しているシステム (たとえば、Mac \s-1OS\s0 X) では、
-tty ごとのタイムスタンプ・ファイルがいつ用済みになるかを判定することができるので、
-\&\fIsudoers\fR はそうしたタイムスタンプ・ファイルを無視することになる。
-だが、システムの管理者はこの機能を当てにしない方がよい。
-どのシステムでも利用できるとはかぎらないからだ。
-.PP
-.\"O If users have sudo \f(CW\*(C`ALL\*(C'\fR there is nothing to prevent them from
-.\"O creating their own program that gives them a root shell (or making
-.\"O their own copy of a shell) regardless of any '!' elements in the
-.\"O user specification.
-もし ユーザに許可するコマンドが \f(CW\*(C`ALL\*(C'\fR になっているならば、
-ユーザが自分でプログラムを作って
-(あるいは、シェルを自分専用に別の名前でコピーして)、
-ルート・シェルを獲得するのを防ぐことはできない。
-ユーザ設定でどんな項目に '!'  を付けようとも防止不可能である。
-.\"O .SH "SEE ALSO"
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIrsh\fR\|(1), \fIsu\fR\|(1), \fIfnmatch\fR\|(3), \fIglob\fR\|(3), \fImktemp\fR\|(3), \fIstrftime\fR\|(3),
-\&\fIsudoers.ldap\fR\|(5), \fIsudo_plugin\fR\|(8), \fIsudo\fR\|(8), \fIvisudo\fR\|(8)
-.\"O .SH "CAVEATS"
-.SH "警告"
-.IX Header "CAVEATS"
-.\"O The \fIsudoers\fR file should \fBalways\fR be edited by the \fBvisudo\fR
-.\"O command which locks the file and does grammatical checking. It is
-.\"O imperative that \fIsudoers\fR be free of syntax errors since \fBsudo\fR
-.\"O will not run with a syntactically incorrect \fIsudoers\fR file.
-.\"O .PP
-\&\fIsudoers\fR ファイルの編集には、\fB必ず\fR \fBvisudo\fR
-コマンドを使うべきだ。
-そうすれば、\fBvisudo\fR がファイルをロックし、文法のチェックをやってくれる。
-\&\fIsudoers\fR ファイルに文法的な間違いがあると、\fBsudo\fR が動かないので、
-\&\fIsudoers\fR ファイルには文法エラーが絶対にあってはならないのだ。
-.PP
-.\"O When using netgroups of machines (as opposed to users), if you
-.\"O store fully qualified host name in the netgroup (as is usually the
-.\"O case), you either need to have the machine's host name be fully qualified
-.\"O as returned by the \f(CW\*(C`hostname\*(C'\fR command or use the \fIfqdn\fR option in
-.\"O \&\fIsudoers\fR.
+.PD 0
+.PP
+一例を挙げておく。
+.nf
+.sp
+.RS 0n
+Debug sudoers.so /var/log/sudo_debug match@info,nss@info
+.RE
+.fi
+.PD
+.PP
+より詳しい情報については、sudo.conf(5) マニュアルをご覧いただきたい。
+.SH 関連項目
+ssh(1), su(1), fnmatch(3), glob(3), mktemp(3), strftime(3), sudo.conf(5),
+sudoers.ldap(5), sudo(8), sudo_plugin(5), visudo(8)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH 警告
+\fIsudoers\fP ファイルの編集には、\fB必ず\fP \fBvisudo\fP コマンドを使うべきである。
+そうすれば、\fBvisudo\fP がファイルをロックし、文法のチェックをやってくれる。
+\fIsudoers\fP ファイルに文法的な間違いがあると、\fBsudo\fP が動かなくなるので、
+\fIsudoers\fP ファイルには文法エラーが絶対にあってはならないのだ。
+.PP
 ネットグループを (ユーザについてではなく) マシンについて使用し、
-\&\fInetgroup\fR ファイルに完全修飾ホスト名を記載する場合は
+\fInetgroup\fP ファイルに完全修飾ホスト名を記載する場合は
 (たいていそうするものだが)、そのマシンのホスト名を
-\&\f(CW\*(C`hostname\*(C'\fR コマンドが出力する通りの完全修飾名で書くか、
-さもなければ、\fIsudoers\fR ファイルで
-\&\fIfqdn\fR オプションを使うかしなければならない。
-.\"O .SH "BUGS"
-.SH "バグ"
-.IX Header "BUGS"
-.\"O If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-.\"O at http://www.sudo.ws/sudo/bugs/
-\&\fBsudo\fR にバグを発見したと思ったら、下記のページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.\"O .SH "SUPPORT"
-.SH "サポート"
-.IX Header "SUPPORT"
-.\"O Limited free support is available via the sudo-users mailing list,
-.\"O see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
-.\"O search the archives.
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には下記 URL を御覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.\"O .SH "DISCLAIMER"
-.SH "免責"
-.IX Header "DISCLAIMER"
-.\"O \&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-.\"O including, but not limited to, the implied warranties of merchantability
-.\"O and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-.\"O file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-.\"O for complete details.
-\&\fBsudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+hostname コマンドが出力する通りの完全修飾名で書くか、さもなければ、
+\fIsudoers\fP ファイルで \fIfqdn\fP オプションを使うかしなければならない。
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL をご覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index 3cff92f..00351d5 100644 (file)
@@ -1,10 +1,12 @@
-.\" Copyright (c) 2003-2011
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoers.ldap.mdoc.in
+.\"
+.\" Copyright (c) 2003-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.con.ne.jp>
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDOERS.LDAP 5"
-.TH SUDOERS.LDAP 5 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDOERS.LDAP 5 "June 15, 2016" "Sudo 1.8.17" "File Formats Manual"
 .nh
-.\"O .SH "NAME"
-.SH "名前"
-.\"O sudoers.ldap \- sudo LDAP configuration
-sudoers.ldap \- LDAP を使った sudo の設定
-.\"O .SH "DESCRIPTION"
-.SH "説明"
-.IX Header "DESCRIPTION"
-.\"O In addition to the standard \fIsudoers\fR file, \fBsudo\fR may be configured
-.\"O via \s-1LDAP\s0.  This can be especially useful for synchronizing \fIsudoers\fR
-.\"O in a large, distributed environment.
-.\"O .PP
-\&\fBsudo\fR は \fIsudoers\fR ファイルによって設定するのが標準だが、
-\&\s-1LDAP\s0 を通して設定することも可能だ。この方法は、
-大規模な分散環境で sudo の設定を同期させたい場合に、とりわけ便利かもしれない。
+.if  n .ad l
+.SH 名前
+\fBsudoers.ldap\fP \- LDAP を使用した sudoers ポリシーの設定
+.SH 説明
+\fBsudoers\fP セキュリティポリシーは \fIsudoers\fP ファイルによって設定するのが標準だが、
+LDAP を通して設定することもできる。この方法は、大規模な分散環境で
+sudoers セキュリティポリシーの設定を同期させたい場合に、
+とりわけ便利かもしれない。
 .PP
-.\"O Using \s-1LDAP\s0 for \fIsudoers\fR has several benefits:
-sudo の設定に \s-1LDAP\s0 を使用すると、有利な点がいくつかある。
-.IP "\(bu" 4
-.\"O \&\fBsudo\fR no longer needs to read \fIsudoers\fR in its entirety.  When
-.\"O \&\s-1LDAP\s0 is used, there are only two or three \s-1LDAP\s0 queries per invocation.
-.\"O This makes it especially fast and particularly usable in \s-1LDAP\s0
-.\"O environments.
-\&\fBsudo\fR はもはや sudo の設定をまるまる全部読み込む必要がない。
-\&\s-1LDAP\s0 を使用する場合は、\fBsudo\fR の実行ごとに、たった二、三回
-\&\s-1LDAP\s0 に問い合わせを行うだけですむ。
-そのため、\s-1LDAP\s0 環境は実行速度が非常に早く、たいへん使い勝手がよい。
-.IP "\(bu" 4
-.\"O \&\fBsudo\fR no longer exits if there is a typo in \fIsudoers\fR.
-.\"O It is not possible to load \s-1LDAP\s0 data into the server that does
-.\"O not conform to the sudoers schema, so proper syntax is guaranteed.
-.\"O It is still possible to have typos in a user or host name, but
-.\"O this will not prevent \fBsudo\fR from running.
-sudo の設定にタイプミスがあっても、もうそのために \fBsudo\fR
-が終了してしまうことがない。\s-1LDAP\s0 のデータは、
-sudo 用のスキーマに従っていなければ、サーバーにロードできない。
-結果として、正しいシンタクスが保証されるわけだ。
+sudoers セキュリティポリシーの設定に LDAP を使用すると、有利な点がいくつかある。
+.TP  4n
+\fB\(bu\fP
+\fBsudo\fP はもはや sudoers セキュリティポリシーの設定をまるまる全部読み込む必要がない。
+LDAP を使用する場合は、\fBsudo\fP の実行ごとに、たった二、三回
+LDAP に問い合わせを行うだけですむ。
+そのため、LDAP 環境は実行速度が非常に早く、たいへん使い勝手がよい。
+.TP  4n
+\fB\(bu\fP
+sudoers セキュリティポリシーの設定にタイプミスがあっても、
+もうそのために \fBsudo\fP が終了してしまうことがない。
+LDAP のデータは、sudo 用のスキーマに従っていなければ、
+サーバーにロードできない。結果として、
+正しいシンタクスが保証されることになる。
 ユーザ名やホスト名をタイプミスすることなら相変わらずあるだろうが、
-そのために \fBsudo\fR が動かなくなることはない。
-.IP "\(bu" 4
-.\"O It is possible to specify per-entry options that override the global
-.\"O default options.  \fI/etc/sudoers\fR only supports default options and
-.\"O limited options associated with user/host/commands/aliases.  The
-.\"O syntax is complicated and can be difficult for users to understand.
-.\"O Placing the options directly in the entry is more natural.
+そのために \fBsudo\fP が動かなくなることはない。
+.TP  4n
+\fB\(bu\fP
 エントリごとにオプションを指定して、
 グローバルなデフォルト・オプションを上書きすることができる。
-\&\fI/etc/sudoers\fR はグローバルなデフォルト・オプションと、ユーザ、ホスト、
+\fI/etc/sudoers\fP はグローバルなデフォルト・オプションと、ユーザ、ホスト、
 コマンド、変身対象に結びついた限定されたオプションしかサポートしていない。
-また、\fI/etc/sudoers\fR の書式は複雑で、ユーザには理解しにくいかもしれない。
+また、\fI/etc/sudoers\fP の書式は複雑で、ユーザには理解しにくいかもしれない。
 オプションをエントリ内で直接指定する方が、ずっと自然である。
-.IP "\(bu" 4
-.\"O The \fBvisudo\fR program is no longer needed.  \fBvisudo\fR provides
-.\"O locking and syntax checking of the \fI/etc/sudoers\fR file.
-.\"O Since \s-1LDAP\s0 updates are atomic, locking is no longer necessary.
-.\"O Because syntax is checked when the data is inserted into \s-1LDAP\s0, there
-.\"O is no need for a specialized tool to check syntax.
-.\"O .PP
-\&\fBvisudo\fR プログラムはもう必要がない。\fBvisudo\fR の役割は
-\&\fI/etc/sudoers\fR ファイルのロッキングとシンタクス・チェックである。
-\&\s-1LDAP\s0 のデータ更新はアトミック操作なので、
+.TP  4n
+\fB\(bu\fP
+\fBvisudo\fP プログラムはもう必要がない。\fBvisudo\fP の役割は、
+\fI/etc/sudoers\fP ファイルのロッキングとシンタクス・チェックである。
+LDAP のデータ更新はアトミック操作なので
 (訳注: それ故、データは更新されていないか、
 すでに更新されたかのどちらかであって、中間状態がないので)、
\83­ã\83\83ã\82­ã\83³ã\82°ã\81¯ã\82\82ã\81¯ã\82\84å¿\85è¦\81ã\81\8cない。シンタクスは、
-データが \s-1LDAP\s0 にインサートされるときチェックされるから、
\83­ã\83\83ã\82­ã\83³ã\82°ã\81¯ã\82\82ã\81¯ã\82\84å¿\85è¦\81ã\81§ã\81¯ない。シンタクスは、
+データが LDAP にインサートされるときチェックされるから、
 シンタクス・チェック用の特別なツールも不要になっている。
 .PP
-.\"O Another major difference between \s-1LDAP\s0 and file-based \fIsudoers\fR
-.\"O is that in \s-1LDAP\s0, \fBsudo\fR\-specific Aliases are not supported.
-.\"O .PP
-\&\s-1LDAP\s0 による設定と \fIsudoers\fR ファイルによる設定との、
-もう一つの大きな違いは、\s-1LDAP\s0 では
-\&\fBsudo\fR 専用のエイリアスがサポートされていないことである。
+LDAP による設定と \fIsudoers\fP ファイルによる設定との、もう一つの大きな違いは、
+LDAP では \fBsudo\fP 専用のエイリアスがサポートされていないことである。
 .PP
-.\"O For the most part, there is really no need for \fBsudo\fR\-specific
-.\"O Aliases.  Unix groups or user netgroups can be used in place of
-.\"O User_Aliases and Runas_Aliases.  Host netgroups can be used in place
-.\"O of Host_Aliases.  Since Unix groups and netgroups can also be stored
-.\"O in \s-1LDAP\s0 there is no real need for \fBsudo\fR\-specific aliases.
-.\"O .PP
-たいていの場合、\fBsudo\fR 専用のエイリアスは実のところ必要がない。
+たいていの場合、\fBsudo\fP 専用のエイリアスは実のところ必要がない。
 User_Aliases や Runas_Aliases の代わりに、
-Unix のグループやユーザのネットグループが使用できる。
+Unix のグループ、non\-Unix グループ (\fIgroup_plugin\fP を介して)、
+ユーザのネットグループが使用できる。
 また、Host_Aliases の代わりには、ホストのネットグループが使える。
-\&\s-1LDAP\s0 には Unix のグループやネットグループも格納できるので、
-\&\fBsudo\fR 専用のエイリアスがどうしても必要というわけではないのだ。
+LDAP には グループやネットグループも格納できるので、
+\fBsudo\fP 専用のエイリアスがどうしても必要というわけではないのだ。
 .PP
-.\"O Cmnd_Aliases are not really required either since it is possible
-.\"O to have multiple users listed in a \f(CW\*(C`sudoRole\*(C'\fR.  Instead of defining
-.\"O a Cmnd_Alias that is referenced by multiple users, one can create
-.\"O a \f(CW\*(C`sudoRole\*(C'\fR that contains the commands and assign multiple users
-.\"O to it.
-Cmnd_Aliases もまったく必要がない。一つの \f(CW\*(C`sudoRole\*(C'\fR
-エントリに複数のユーザを登録できるからだ。複数のユーザが参照する
-Cmnd_Alias を定義する代わりに、複数のコマンドを含む \f(CW\*(C`sudoRole\*(C'\fR
-エントリを一つ作成して、そこに複数のユーザを割り当てればよい。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1"
-原文の著者は、sudo 設定の単位となる \f(CW\*(C`objectClass\*(C'\fR 属性が
-\&\f(CW\*(C`sudoRole\*(C'\fR の LDAP エントリのうち、\fI/etc/sudoers\fR
-の各ユーザ設定に相当するものを「a sudoRole」と呼んでいる。
+Cmnd_Aliases もまったく必要がない。
+一つの sudoRole エントリに複数のユーザを登録できるからだ。
+複数のユーザが参照する Cmnd_Alias を定義する代わりに、
+複数のコマンドを含む sudoRole エントリを一つ作成して、
+そこに複数のユーザを割り当てればよい。
+.IP "[\fB訳注\fP]:" 8
+原文の著者は、sudoers セキュリティポリシーの設定の単位となる 
+objectClass 属性が sudoRole の LDAP エントリのうち、
+\fI/etc/sudoers\fP の各ユーザ設定に相当するものを「a sudoRole」と呼んでいる。
 「sudoRole エントリ」という訳語を当てた。
-.\"O .SS "SUDOers \s-1LDAP\s0 container"
-.SS "\s-1LDAP\s0 の SUDOers コンテナ"
-.IX Subsection "SUDOers LDAP container"
-.\"O The \fIsudoers\fR configuration is contained in the \f(CW\*(C`ou=SUDOers\*(C'\fR \s-1LDAP\s0
-.\"O container.
-.\"O .PP
-\&\s-1LDAP\s0 では、sudo の設定は
-\&\f(CW\*(C`ou=SUDOers\*(C'\fR コンテナの下に配置されている。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote2"
-コンテナとは、データを格納するためにではなく、
-下位のエントリをまとめておくために存在する上位エントリを言う。たとえば、
-OpenLDAP 用の \f(CW\*(C`ou=SUDOers\*(C'\fR コンテナなら、こんなふうになる
-(sudo 同梱の README.LDAP から引用)。
-.PP
-.Vb 4
-\&          dn: ou=SUDOers,dc=example,dc=com
-\&          objectClass: top
-\&          objectClass: organizationalUnit
-\&          ou: SUDOers
-.Ve
+.SS "LDAP の SUDOers コンテナ"
+LDAP では、sudoers セキュリティポリシーの設定は
+ou=SUDOers コンテナの下に配置されている。
+.IP "[\fB訳注\fP]:" 8
+ここで言うコンテナ (容器、入れもの) とは、データを格納するためではなく、
+データを含む下位のエントリをまとめておくために存在する上位エントリのことである。
+たとえば、OpenLDAP 用の ou=SUDOers コンテナなら、
+その設定ファイルの記述はこんなふうになる (sudo 同梱の README.LDAP から引用)。
+.nf
+.sp
+.RS 12n
+dn: ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: organizationalUnit
+ou: SUDOers
+.RE
+.fi
 .PP
-.\"O Sudo first looks for the \f(CW\*(C`cn=default\*(C'\fR entry in the SUDOers container.
-.\"O If found, the multi-valued \f(CW\*(C`sudoOption\*(C'\fR attribute is parsed in the
-.\"O same manner as a global \f(CW\*(C`Defaults\*(C'\fR line in \fI/etc/sudoers\fR.  In
-.\"O the following example, the \f(CW\*(C`SSH_AUTH_SOCK\*(C'\fR variable will be preserved
-.\"O in the environment for all users.
-.\"O .PP
-sudo はまず最初に SUDOers コンテナ配下に
-\&\f(CW\*(C`cn=defaults\*(C'\fR のエントリを捜す。
-見つかった場合は、複数回指定可能な
-\&\f(CW\*(C`sudoOption\*(C'\fR 属性が、\fI/etc/sudoers\fR のグローバルな
-\&\f(CW\*(C`Defaults\*(C'\fR 行と同じやり方で解析される。
-以下の例では、環境変数 \f(CW\*(C`SSH_AUTH_SOCK\*(C'\fR
-がすべてのユーザの環境に保存されることになる。
 .PP
-.Vb 6
-\&    dn: cn=defaults,ou=SUDOers,dc=example,dc=com
-\&    objectClass: top
-\&    objectClass: sudoRole
-\&    cn: defaults
-\&    description: Default sudoOption\*(Aqs go here
-\&    sudoOption: env_keep+=SSH_AUTH_SOCK
-.Ve
+sudo はまず最初に SUDOers コンテナ配下に cn=defaults のエントリを捜す。
+見つかった場合は、複数回指定可能な sudoOption 属性が、\fI/etc/sudoers\fP
+のグローバルな Defaults 行と同じやり方で解析される。以下の例では、
+環境変数 SSH_AUTH_SOCK がすべてのユーザの環境に保存されることになる。
+.nf
+.sp
+.RS 4n
+dn: cn=defaults,ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: sudoRole
+cn: defaults
+description: Default sudoOption's go here
+sudoOption: env_keep+=SSH_AUTH_SOCK
+.RE
+.fi
 .PP
-.\"O The equivalent of a sudoer in \s-1LDAP\s0 is a \f(CW\*(C`sudoRole\*(C'\fR.  It consists of
-.\"O the following attributes:
-\&\s-1LDAP\s0 において \fI/etc/sudoers\fR の個々の「ユーザ設定」に相当するのは、
-\&\f(CW\*(C`sudoRole\*(C'\fR エントリである。それは以下の属性からなっている。
-.IP "\fBsudoUser\fR" 4
-.IX Item "sudoUser"
-.\"O A user name, user \s-1ID\s0 (prefixed with \f(CW\*(Aq#\*(Aq\fR), Unix group (prefixed with
-.\"O \&\f(CW\*(Aq%\*(Aq\fR), Unix group \s-1ID\s0 (prefixed with \f(CW\*(Aq%#\*(Aq\fR), or user netgroup
-.\"O (prefixed with \f(CW\*(Aq+\*(Aq\fR).
-次のうちのいづれか。ユーザ名、
-ユーザ \s-1ID\s0 (接頭辞 \f(CW\*(Aq#\*(Aq\fR が付く)、
-Unix グループ名 (接頭辞 \f(CW\*(Aq%\*(Aq\fR が付く)、
-Unix グループ \s-1ID\s0
-(接頭辞 \f(CW\*(Aq%#\*(Aq\fR が付く。これが使えるのは、sudo-1.8.4 から)、
-ユーザのネットグループ名 (接頭辞 \f(CW\*(Aq+\*(Aq\fR が付く)。
-.IP "\fBsudoHost\fR" 4
-.IX Item "sudoHost"
-.\"O A host name, \s-1IP\s0 address, \s-1IP\s0 network, or host netgroup (prefixed
-.\"O with a \f(CW\*(Aq+\*(Aq\fR).
-.\"O The special value \f(CW\*(C`ALL\*(C'\fR will match any host.
-次のうちのいづれか。ホスト名、\s-1IP\s0 アドレス、ネットワークアドレス、
-ホストのネットグループ名 (接頭辞 \f(CW\*(Aq+\*(Aq\fR が付く)。
-\&\f(CW\*(C`ALL\*(C'\fR という特別な値はいかなるホストにもマッチする。
-.IP "\fBsudoCommand\fR" 4
-.IX Item "sudoCommand"
-.\"O A Unix command with optional command line arguments, potentially
-.\"O including globbing characters (aka wild cards).
-.\"O The special value \f(CW\*(C`ALL\*(C'\fR will match any command.
-.\"O If a command is prefixed with an exclamation point \f(CW\*(Aq!\*(Aq\fR, the
-.\"O user will be prohibited from running that command.
-Unix のコマンド。コマンドライン引数を付けてもよく、glob 文字
-(ワイルドカードとも言う) を含んでいてもよい。\f(CW\*(C`ALL\*(C'\fR
-という特別な値は、いかなるコマンドにもマッチする。
-コマンドに感嘆符 \f(CW\*(Aq!\*(Aq\fR を接頭辞として付けると、
+LDAP において \fI/etc/sudoers\fP の個々の「ユーザ設定」に相当するのは、
+sudoRole エントリである。それは以下の属性からなっている。
+.TP  6n
+\fBsudoUser\fP
+次のうちのいづれか。ユーザ名、ユーザ ID (接頭辞 '#' が付く)、
+Unix グループ名またはグループ ID (それぞれ接頭辞 '%' と
+\&'%#' が付く)、ユーザのネットグループ (接頭辞 '+' が付く)、
+non\-Unix グループ名またはグループ ID (それぞれ接頭辞 '%:' と '%:#' が付く)。
+なお、ユーザのネットグループについては、
+ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行われる。
+ホストの要素はマッチングに使用されない。
+non\-Unix グループが使用できるのは、グローバルな \fIdefaults\fP sudoRole
+オブジェクトで適切な \fIgroup_plugin\fP が指定されているときだけである。
+.TP  6n
+\fBsudoHost\fP
+次のうちのいづれか。ホスト名、IP アドレス、ネットワークアドレス、
+ホストのネットグループ (接頭辞 '+' が付く)。
+ALL という特別な値はいかなるホストにもマッチする。
+なお、ホストのネットグループについては、
+ネットグループの成員中のホスト (完全修飾名とそうでないもののどちらでも)
+とドメインの要素のみを使って、マッチングが行われる。
+ユーザの要素はマッチングに使用されない。
+.TP  6n
+\fBsudoCommand\fP
+絶対パスで指定した Unix のコマンド名。コマンドライン引数を付けてもよく、
+glob 文字 (ワイルドカードとも言う) を含んでいてもよい。
+コマンドに感嘆符 '\&!' を接頭辞として付けると、
 ユーザにそのコマンドの実行を禁じることになる。
-.IP "\fBsudoOption\fR" 4
-.IX Item "sudoOption"
-.\"O Identical in function to the global options described above, but
-.\"O specific to the \f(CW\*(C`sudoRole\*(C'\fR in which it resides.
+.sp
+コマンド名として組み込みコマンドの "sudoedit" を使用すれば、
+ユーザが \fBsudo\fP を \fB\-e\fP オプション付きで (あるいは、\fBsudoedit\fP の名前で)
+実行するのを許可することになる。普通のコマンドの場合と同じように、
+コマンドライン引数まで指定してもよい。"sudoedit" は
+\fBsudo\fP 本体に組み込まれたコマンドなので、これをコマンド名に指定するときは、
+頭にパスをつけてはいけないことに注意していただきたい。
+.sp
+ALL という特別な値は、いかなるコマンドにもマッチする。
+.sp
+コマンド名の前に SHA\-2 ダイジェストが付いていると、実行が許可されるのは、
+ダイジェストがマッチしたときだけになる。これは、\fBsudo\fP を実行するユーザが、
+対象となるコマンドやその親ディレクトリに書き込み権限を持っているような場合に、
+役に立つだろう。ダイジェストのフォーマットとしては、sha224, sha256,
+sha384, sha512 がサポートされている。ダイジェスト名の後ろにはコロン
+(':\&') を置いて、その後に実際のダイジェストを続けなければならない。
+ダイジェストは、16 進数でも base64 形式でもよい。
+たとえば、sudoCommand に対して以下の値を指定すると、
+.nf
+.sp
+.RS 10n
+sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ /bin/ls
+.RE
+.fi
+.RS 6n
+.sp
+ユーザが \fI/bin/ls\fP を実行できるのは、\fI/bin/ls\fP の sha224
+ダイジェストが指定した値とマッチしたときだけになる。
+コマンドのダイジェストをサポートしているのは、バージョン 1.8.7 以上だけである。
+.RE
+.TP  6n
+\fBsudoOption\fP
 働きは、前述のグローバルオプションと同じだが、それが属している
-\&\f(CW\*(C`sudoRole\*(C'\fR エントリに対してのみ効果がある。
-.IP "\fBsudoRunAsUser\fR" 4
-.IX Item "sudoRunAsUser"
-.\"O A user name or uid (prefixed with \f(CW\*(Aq#\*(Aq\fR) that commands may be run
-.\"O as or a Unix group (prefixed with a \f(CW\*(Aq%\*(Aq\fR) or user netgroup (prefixed
-.\"O with a \f(CW\*(Aq+\*(Aq\fR) that contains a list of users that commands may be
-.\"O run as.
-.\"O The special value \f(CW\*(C`ALL\*(C'\fR will match any user.
-変身対象となるユーザ名か uid (接頭辞 \f(CW\*(Aq#\*(Aq\fR が付く) を指定する。
-変身対象ユーザをリストに含む Unix グループ名 (接頭辞 \f(CW\*(Aq%\*(Aq\fR が付く) や、
-ユーザのネットグループ名 (接頭辞 \f(CW\*(Aq+\*(Aq\fR が付く) も使える。
-特別な値 \f(CW\*(C`ALL\*(C'\fR は、いかなるユーザにもマッチする。
-.\"O .Sp
-.\"O The \f(CW\*(C`sudoRunAsUser\*(C'\fR attribute is only available in \fBsudo\fR versions
-.\"O 1.7.0 and higher.  Older versions of \fBsudo\fR use the \f(CW\*(C`sudoRunAs\*(C'\fR
-.\"O attribute instead.
-.Sp
-属性 \f(CW\*(C`sudoRunAsUser\*(C'\fR は、
-バージョン 1.7.0 以上の \fBsudo\fR でなければ、利用できない。
-それ以前のバージョンの \fBsudo\fR では、
-代わりに属性 \f(CW\*(C`sudoRunAs\*(C'\fR を使用している。
-.IP "\fBsudoRunAsGroup\fR" 4
-.IX Item "sudoRunAsGroup"
-.\"O A Unix group or gid (prefixed with \f(CW\*(Aq#\*(Aq\fR) that commands may be run as.
-.\"O The special value \f(CW\*(C`ALL\*(C'\fR will match any group.
-変身対象となる Unix グループ名か gid (接頭辞 \f(CW\*(Aq#\*(Aq\fR が付く)。
-特別な値 \f(CW\*(C`ALL\*(C'\fR はいかなるグループにもマッチする。
-.\"O .Sp
-.\"O The \f(CW\*(C`sudoRunAsGroup\*(C'\fR attribute is only available in \fBsudo\fR versions
-.\"O 1.7.0 and higher.
-.Sp
-属性 \f(CW\*(C`sudoRunAsGroup\*(C'\fR は、
-バージョン 1.7.0 以上の \fBsudo\fR でなければ、利用できない。
-.IP "\fBsudoNotBefore\fR" 4
-.IX Item "sudoNotBefore"
-.\"O A timestamp in the form \f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR that can be used to provide
-.\"O a start date/time for when the \f(CW\*(C`sudoRole\*(C'\fR will be valid.  If
-.\"O multiple \f(CW\*(C`sudoNotBefore\*(C'\fR entries are present, the earliest is used.
-.\"O Note that timestamps must be in Coordinated Universal Time (\s-1UTC\s0),
-.\"O not the local timezone.  The minute and seconds portions are optional,
-.\"O but some \s-1LDAP\s0 servers require that they be present (contrary to the \s-1RFC\s0).
-\&\f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR 形式のタイムスタンプ。
-この属性を含む \f(CW\*(C`sudoRole\*(C'\fR エントリがいつから有効になるかという、
+sudoRole エントリに対してのみ効果がある。
+.TP  6n
+\fBsudoRunAsUser\fP
+変身対象となるユーザ名か uid (接頭辞 '#' が付く) を指定する。
+変身対象ユーザをリストに含む Unix グループ名 (接頭辞 '%' が付く) や、
+ユーザのネットグループ (接頭辞 '+' が付く) も使える。
+特別な値 ALL は、いかなるユーザにもマッチする。
+.sp
+属性 sudoRunAsUser は、バージョン 1.7.0 以上の \fBsudo\fP でなければ、
+利用できない。それ以前のバージョンの \fBsudo\fP では、
+代わりに属性 sudoRunAs を使用している。
+.TP  6n
+\fBsudoRunAsGroup\fP
+変身対象となる Unix グループ名か gid (接頭辞 '#' が付く)。
+特別な値 ALL はいかなるグループにもマッチする。
+.sp
+属性 sudoRunAsGroup は、バージョン 1.7.0 以上の \fBsudo\fP でなければ、
+利用できない。
+.TP  6n
+\fBsudoNotBefore\fP
+yyyymmddHHMMSSZ 形式のタイムスタンプ。
+この属性を含む sudoRole エントリがいつから有効になるかという、
 スタート日時を指定するのに使用する。
-複数の \f(CW\*(C`sudoNotBefore\*(C'\fR が存在する場合は、
-一番早い日時が採用される。
-タイムスタンプは協定世界時 (\s-1UTC\s0) によるものでなければならず、
-ローカル・タイムゾーンによるものではないことに注意してほしい。
-分や秒の部分は省略できるが、\s-1LDAP\s0 サーバによっては
-(\s-1RFC\s0 の規定とは逆に) 分や秒の指定を必須にしていることもある。
-.\"O .Sp
-.\"O The \f(CW\*(C`sudoNotBefore\*(C'\fR attribute is only available in \fBsudo\fR versions
-.\"O 1.7.5 and higher and must be explicitly enabled via the \fB\s-1SUDOERS_TIMED\s0\fR
-.\"O option in \fI/etc/ldap.conf\fR.
-.Sp
-属性 \f(CW\*(C`sudoNotBefore\*(C'\fR は、
-バージョン 1.7.5 以上の \fBsudo\fR でなければ、利用できない。
-また、\fI/etc/ldap.conf\fR の \fB\s-1SUDOERS_TIMED\s0\fR
+複数の sudoNotBefore が存在する場合は、一番早い日時が採用される。
+タイムスタンプは協定世界時 (UTC) によるものでなければならず、
+ローカル・タイムゾーンによるものではないことに注意していただきたい。
+分や秒の部分は省略できるが、LDAP サーバによっては (RFC の規定に反して)
+分や秒の指定を必須にしていることもある。
+.sp
+属性 sudoNotBefore は、バージョン 1.7.5 以上の \fBsudo\fP でなければ、
+利用できない。また、\fI/etc/ldap.conf\fP の \fBSUDOERS_TIMED\fP
 オプションで明示的に有効にする必要がある。
-.IP "\fBsudoNotAfter\fR" 4
-.IX Item "sudoNotAfter"
-.\"O A timestamp in the form \f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR that indicates an expiration
-.\"O date/time, after which the \f(CW\*(C`sudoRole\*(C'\fR will no longer be valid.  If
-.\"O multiple \f(CW\*(C`sudoNotBefore\*(C'\fR entries are present, the last one is used.
-.\"O Note that timestamps must be in Coordinated Universal Time (\s-1UTC\s0),
-.\"O not the local timezone.  The minute and seconds portions are optional,
-.\"O but some \s-1LDAP\s0 servers require that they be present (contrary to the \s-1RFC\s0).
-\&\f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR 形式のタイムスタンプ。
-この属性を含む \f(CW\*(C`sudoRole\*(C'\fR エントリがもはや有効ではなくなる、
-失効日時を示している。
-複数の \f(CW\*(C`sudoNotAfter\*(C'\fR が存在する場合は、
+.TP  6n
+\fBsudoNotAfter\fP
+yyyymmddHHMMSSZ 形式のタイムスタンプ。
+この属性を含む sudoRole エントリがもはや有効ではなくなる、
+失効日時を示している。複数の sudoNotAfter が存在する場合は、
 一番最後の日時が採用される。
-タイムスタンプは協定世界時 (\s-1UTC\s0) によるものでなければならず、
-ローカル・タイムゾーンによるものではないことに注意してほしい。
-分や秒の部分は省略できるが、\s-1LDAP\s0 サーバによっては
-(\s-1RFC\s0 の規定とは逆に) 分や秒の指定を必須にしていることもある。
-.\"O .Sp
-.\"O The \f(CW\*(C`sudoNotAfter\*(C'\fR attribute is only available in \fBsudo\fR versions
-.\"O 1.7.5 and higher and must be explicitly enabled via the \fB\s-1SUDOERS_TIMED\s0\fR
-.\"O option in \fI/etc/ldap.conf\fR.
-.Sp
-属性  \f(CW\*(C`sudoNotAfter\*(C'\fR は、
-バージョン 1.7.5 以上の \fBsudo\fR でなければ、利用できない。
-また、\fI/etc/ldap.conf\fR の \fB\s-1SUDOERS_TIMED\s0\fR
+タイムスタンプは協定世界時 (UTC) によるものでなければならず、
+ローカル・タイムゾーンによるものではないことに注意していただきたい。
+分や秒の部分は省略できるが、LDAP サーバによっては (RFC の規定に反して)
+分や秒の指定を必須にしていることもある。
+.sp
+属性  sudoNotAfter は、バージョン 1.7.5 以上の \fBsudo\fP でなければ、
+利用できない。また、\fI/etc/ldap.conf\fP の \fBSUDOERS_TIMED\fP
 オプションで明示的に有効にする必要がある。
-.IP "\fBsudoOrder\fR" 4
-.IX Item "sudoOrder"
-.\"O The \f(CW\*(C`sudoRole\*(C'\fR entries retrieved from the \s-1LDAP\s0 directory have no
-.\"O inherent order.  The \f(CW\*(C`sudoOrder\*(C'\fR attribute is an integer (or
-.\"O floating point value for \s-1LDAP\s0 servers that support it) that is used
-.\"O to sort the matching entries.  This allows LDAP-based sudoers entries
-.\"O to more closely mimic the behaviour of the sudoers file, where the
-.\"O of the entries influences the result.  If multiple entries match,
-.\"O the entry with the highest \f(CW\*(C`sudoOrder\*(C'\fR attribute is chosen.  This
-.\"O corresponds to the \*(L"last match\*(R" behavior of the sudoers file.  If
-.\"O the \f(CW\*(C`sudoOrder\*(C'\fR attribute is not present, a value of 0 is assumed.
-\&\s-1LDAP\s0 から取り出される \f(CW\*(C`sudoRole\*(C'\fR エントリには、
-固有の順番というものがない。
-そこで、整数の値を取る \f(CW\*(C`sudoOrder\*(C'\fR 属性を使用して
-(浮動小数点値をサポートする \s-1LDAP\s0 サーバでは、浮動小数点値が使える)、
-マッチするエントリの順番付けを行う。
-そうすることによって、LDAP による sudo 設定のエントリが、
-sudoers ファイルの動作をより忠実に真似られるようになるのだ。
-sudoers ファイルではエントリの順番が結果に影響を及ぼす。
-\&\f(CW\*(C`sudoOrder\*(C'\fR 属性を使用すると、
-複数のエントリがマッチする場合は、一番大きな \f(CW\*(C`sudoOrder\*(C'\fR
-属性を持つエントリが選ばれることになる。この動作は、
-sudoers ファイルの「最後にマッチしたものが選ばれる」動作に相当するわけだ。
-\&\f(CW\*(C`sudoOrder\*(C'\fR 属性が指定されていない場合は、
-値が 0 であると見なされる。
-.\"O .Sp
-.\"O The \f(CW\*(C`sudoOrder\*(C'\fR attribute is only available in \fBsudo\fR versions
-.\"O 1.7.5 and higher.
-.\"O .PP
-.Sp
-属性 \f(CW\*(C`sudoOrder\*(C'\fR は、
-バージョン 1.7.5 以上の \fBsudo\fR でなければ、利用できない。
+.TP  6n
+\fBsudoOrder\fP
+LDAP から取り出される sudoRole エントリには、固有の順番というものがない。
+そこで、整数の値を取る sudoOrder 属性を使用して (浮動小数点値をサポートする
+LDAP サーバでは、浮動小数点値も使える)、マッチするエントリの順番付けを行う。
+そうすることで、LDAP による sudoers 設定のエントリが、
+エントリの順番が結果に影響を及ぼす sudoers ファイルの動作を、
+より忠実に真似られるようになるわけだ。
+sudoOrder 属性を使用すると、複数のエントリがマッチする場合には、
+一番大きな sudoOrder 属性を持つエントリが選ばれることになる。この動作は、
+sudoers ファイルの「最後にマッチしたものが選ばれる」動作に相当するわけである。
+sudoOrder 属性が指定されていない場合は、値が 0 であると見なされる。
+.sp
+属性 sudoOrder は、バージョン 1.7.5 以上の \fBsudo\fP でなければ、
+利用できない。
 .PP
-.\"O Each attribute listed above should contain a single value, but there
-.\"O may be multiple instances of each attribute type.  A \f(CW\*(C`sudoRole\*(C'\fR must
-.\"O contain at least one \f(CW\*(C`sudoUser\*(C'\fR, \f(CW\*(C`sudoHost\*(C'\fR and \f(CW\*(C`sudoCommand\*(C'\fR.
-.\"O .PP
 上記の各属性は単一の値を持つべきだが、同じタイプの属性が複数回現れても構わない。
-\&\f(CW\*(C`sudoRole\*(C'\fR エントリは、\f(CW\*(C`sudoUser\*(C'\fR、 
-\&\f(CW\*(C`sudoHost\*(C'\fR、\f(CW\*(C`sudoCommand\*(C'\fR を、
+sudoRole エントリは、sudoUser、sudoHost、sudoCommand を、
 少なくともそれぞれ一個は含んでいなければならない。
 .PP
-.\"O The following example allows users in group wheel to run any command
-.\"O on any host via \fBsudo\fR:
-.\"O .PP
 次の例では、wheel グループのユーザに
-\&\fBsudo\fR 経由でいかなるホストでも任意のコマンドの実行を許可している。
-.PP
-.Vb 7
-\&    dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
-\&    objectClass: top
-\&    objectClass: sudoRole
-\&    cn: %wheel
-\&    sudoUser: %wheel
-\&    sudoHost: ALL
-\&    sudoCommand: ALL
-.Ve
-.\"O .SS "Anatomy of \s-1LDAP\s0 sudoers lookup"
-.SS "\s-1LDAP\s0 を使って sudo の設定を検索するときの詳細"
-.IX Subsection "Anatomy of LDAP sudoers lookup"
-.\"O When looking up a sudoer using \s-1LDAP\s0 there are only two or three
-.\"O \&\s-1LDAP\s0 queries per invocation.  The first query is to parse the global
-.\"O options.  The second is to match against the user's name and the
-.\"O groups that the user belongs to.  (The special \s-1ALL\s0 tag is matched
-.\"O in this query too.)  If no match is returned for the user's name
-.\"O and groups, a third query returns all entries containing user
-.\"O netgroups and checks to see if the user belongs to any of them.
-.\"O .PP
-\&\s-1LDAP\s0 を使ってユーザの sudo 設定を検索するとき、LDAP の問い合わせは
-\&\fBsudo\fR の実行ごとにたった二回か三回行われるだけである。一回目の問い合わせは、
-グローバル・オプションを解析するために行われる。二回目の問い合わせは、
-\&\fBsudo\fR を実行するユーザのユーザ名や、
+\fBsudo\fP 経由でいかなるホストでも任意のコマンドの実行を許可している。
+.nf
+.sp
+.RS 4n
+dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: sudoRole
+cn: %wheel
+sudoUser: %wheel
+sudoHost: ALL
+sudoCommand: ALL
+.RE
+.fi
+.SS "LDAP を使って sudoers セキュリティポリシーの設定を照合するときの詳細"
+LDAP を使って、あるユーザに関する sudoers セキュリティポリシーを照合するとき、
+LDAP の問い合わせは \fBsudo\fP の実行ごとにたった二回か三回行われるだけである。
+一回目の問い合わせは、グローバル・オプションを解析するために行われる。
+二回目の問い合わせは、\fBsudo\fP を実行するユーザのユーザ名や、
 所属グループに対応するエントリを見つけるためだ
-(特別なタグ \s-1ALL\s0 が何にでもマッチするのは、この場合も同様である)。
+(特別なタグ ALL が何にでもマッチするのは、この場合も同様である)。
 ユーザ名やグループに対応するエントリが得られなかった場合は、
-三回目の問い合わせが行われ、
-ユーザのネットグループを含んでいるすべてのエントリーを取得して、
-問題のユーザがそのどれかに属していないかチェックする。
+三回目の問い合わせが行われ、ユーザのネットグループや
+non\-Unix グループを含んでいるすべてのエントリーを取得して、
\95\8fé¡\8cã\81®ã\83¦ã\83¼ã\82¶ã\81\8cã\81\9dã\81®ã\81©ã\82\8cã\81\8bã\81«å±\9eã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\8bã\82\92ã\83\81ã\82§ã\83\83ã\82¯ã\81\99ã\82\8bã\80\82
 .PP
-.\"O If timed entries are enabled with the \fB\s-1SUDOERS_TIMED\s0\fR configuration
-.\"O directive, the \s-1LDAP\s0 queries include a subfilter that limits retrieval
-.\"O to entries that satisfy the time constraints, if any.
-\&\fI/etc/ldap.conf\fR の設定オプション
-\&\fB\s-1SUDOERS_TIMED\s0\fR を有功にして、
-日時制限があるエントリを使えるようにしている場合は、
-\&\s-1LDAP\s0 の問い合わせにサブフィルターによる選別が伴うことになる。
+\fI/etc/ldap.conf\fP の設定オプション \fBSUDOERS_TIMED\fP を有功にして、
+エントリの日時制限を使えるようにしている場合は、
+LDAP の問い合わせにサブフィルターによる選別が伴うことになる。
 そのサブフィルターが、日時制限が存在するエントリについては、
-その制限を満たしているエントリのみに、情報の取り出しを限定するのである。
-.\"O .SS "Differences between \s-1LDAP\s0 and non-LDAP sudoers"
-.SS "\s-1LDAP\s0 を使う場合と使わない場合の sudo 設定の相違点"
-.IX Subsection "Differences between LDAP and non-LDAP sudoers"
-.\"O There are some subtle differences in the way sudoers is handled
-.\"O once in \s-1LDAP\s0.  Probably the biggest is that according to the \s-1RFC\s0,
-.\"O \&\s-1LDAP\s0 ordering is arbitrary and you cannot expect that Attributes
-.\"O and Entries are returned in any specific order.
-.\"O .PP
-LDAP を使用する場合、sudo の設定の処理方法に \fI/etc/sudoers\fR
-の場合とは微妙な違いがいくつかある。
-たぶん最大の違いは、\s-1RFC\s0 に書いてあるとおり、
-\&\s-1LDAP\s0 の順序づけは不定なので、
+その制限を満たしているエントリのみに、情報の検索を限定するのである。
+.PP
+\fBNETGROUP_BASE\fP 設定オプションが使用されている場合は
+(下記の 「ldap.conf の設定」を参照)、
+ユーザがどことどこのネットグループに所属しているかを調べるための問い合わせが、
+sudoers セキュリティポリシー設定の問い合わせの前に行われる。
+そうすることで、セキュリティポリシー設定の問い合わせに使う文字列に、
+ネットグループを Unix グループと同じように使うことが可能になるのだ。
+上で述べた三回目の問い合わせは、
+グループ・プロバイダー・プラグインも同時に設定されていないかぎり、行われない。
+ネットグループについての \fBsudo\fP による LDAP の問い合わせは、
+実際には次のように行われる。
+.TP  5n
+1.\&
+nisNetgroupTriple (ユーザ、ホスト、NIS ドメインを含む) を持ったすべての
+nisNetgroup レコードと照合を行う。この問い合わせでは、
+nisNetgroupTriple エントリーのホスト名が長い形式でも短い形式でも、
+あるいは、タプルにホスト名が指定されていなくても、マッチすることになる。
+問い合わせに NIS ドメインがセットされている場合にマッチするのは、
+そのドメインを含むか、あるいは、ドメインの指定がないエントリだけである。
+NIS ドメインがセットされていない場合は、ワイルドカードが使用され、
+どんなドメイン名にもマッチすることになるが、
+LDAP サーバの中には、使用している NIS スキーマが、
+nisNetgroupTriple に対するワイルドカードをサポートしていないものがあることに留意していただきたい。
+.TP  5n
+2.\&
+問い合わせを繰り返して行い、すでにマッチしたレコードを指す
+memberNisNetgroup エントリが、入れ子のように使われている
+nisNetgroup レコードがあれば、そうしたものを見つけ出す。
+.PP
+多数のネットグループを持つサイトでは、\fBNETGROUP_BASE\fP を使用すると、
+\fBsudo\fP の実行速度を大幅に向上させることができる。
+.SS "LDAP を使う場合と使わない場合の sudoers セキュリティポリシー設定の相違点"
+LDAP を使用した場合は、sudoers セキュリティポリシー設定の処理方法に
+\fI/etc/sudoers\fP の場合とは微妙な違いがいくつかある。たぶん最大の違いは、
+RFC に書いてあるとおり、LDAP の順序づけは不定なので、
 属性やエントリが何らかの決まった順序で返されることを期待できないことだろう。
 .PP
-.\"O The order in which different entries are applied can be controlled
-.\"O using the \f(CW\*(C`sudoOrder\*(C'\fR attribute, but there is no way to guarantee
-.\"O the order of attributes within a specific entry.  If there are
-.\"O conflicting command rules in an entry, the negative takes precedence.
-.\"O This is called paranoid behavior (not necessarily the most specific
-.\"O match).
-.\"O .PP
-それでも、個々のエントリに割り振る順番については、\f(CW\*(C`sudoOrder\*(C'\fR
-によって決めることができる。
-だが、ある特定のエントリ内での属性の順番を決める、確実な方法は存在しないのだ。
+それでも、個々のエントリに割り振られる順番については、sudoOrder
+によってコントロールすることができる。
+だが、ある特定のエントリ内での属性の順番については、
+それを確定する方法は存在しないのだ。
 もっとも、あるエントリーにコマンドに関して相反するルールがある場合は、
 否定する方が優先される。いわゆるパラノイア的動作である
-(それが一番明示的なマッチだとはかぎらないが)。
+(それが一番すっきりしたマッチだとはかぎらないが)。
 .PP
-.\"O Here is an example:
-.\"O .PP
 例を挙げてみよう。
+.nf
+.sp
+.RS 4n
+# /etc/sudoers の場合:
+# shell 以外のすべてのコマンドを許可する
+johnny  ALL=(root) ALL,!/bin/sh
+# 次の設定は、ALL が最後にマッチするので、常にすべての
+# コマンドを許可することになる
+puddles ALL=(root) !/bin/sh,ALL
+
+# 上記の johnny に相当する LDAP のエントリ:
+# shell 以外のすべてのコマンドを許可する
+dn: cn=role1,ou=Sudoers,dc=my\-domain,dc=com
+objectClass: sudoRole
+objectClass: top
+cn: role1
+sudoUser: johnny
+sudoHost: ALL
+sudoCommand: ALL
+sudoCommand: !/bin/sh
+
+# 上記の puddles に相当する LDAP のエントリ:
+# ALL が最後に指定されているが、LDAP のコードでは、
+# よりパラノイア的な方を、指定された設定と見なすようになって
+# いるため、これもまた role1 と同じように動作することに
+# 注意していただきたい
+dn: cn=role2,ou=Sudoers,dc=my\-domain,dc=com
+objectClass: sudoRole
+objectClass: top
+cn: role2
+sudoUser: puddles
+sudoHost: ALL
+sudoCommand: !/bin/sh
+sudoCommand: ALL
+.RE
+.fi
 .PP
-.Vb 5
-.\"O \&    # /etc/sudoers:
-.\"O \&    # Allow all commands except shell
-\&    # /etc/sudoers の場合:
-\&    # shell 以外のすべてのコマンドを許可する
-\&    johnny  ALL=(root) ALL,!/bin/sh
-.\"O \&    # Always allows all commands because ALL is matched last
-\&    # 次の設定は、ALL が最後にマッチするので、常にすべてのコマンドを
-\&    # 許可することになる
-\&    puddles ALL=(root) !/bin/sh,ALL
-\&
-.\"O \&    # LDAP equivalent of johnny
-.\"O \&    # Allows all commands except shell
-\&    # 上記の johnny に相当する LDAP のエントリ:
-\&    # shell 以外のすべてのコマンドを許可する
-\&    dn: cn=role1,ou=Sudoers,dc=my\-domain,dc=com
-\&    objectClass: sudoRole
-\&    objectClass: top
-\&    cn: role1
-\&    sudoUser: johnny
-\&    sudoHost: ALL
-\&    sudoCommand: ALL
-\&    sudoCommand: !/bin/sh
-\&
-.\"O \&    # LDAP equivalent of puddles
-.\"O \&    # Notice that even though ALL comes last, it still behaves like
-.\"O \&    # role1 since the LDAP code assumes the more paranoid configuration
-\&    # 上記の puddles に相当する LDAP のエントリ:
-\&    # ALL が最後に指定されているが、LDAP のコードはよりパラノイア的な
-\&    # 設定になっているため、これもまた role1 と同じように動作する
-\&    # ことに注意してほしい
-\&    dn: cn=role2,ou=Sudoers,dc=my\-domain,dc=com
-\&    objectClass: sudoRole
-\&    objectClass: top
-\&    cn: role2
-\&    sudoUser: puddles
-\&    sudoHost: ALL
-\&    sudoCommand: !/bin/sh
-\&    sudoCommand: ALL
-.Ve
-.PP
-.\"O Another difference is that negations on the Host, User or Runas are
-.\"O currently ignored.  For example, the following attributes do not
-.\"O behave the way one might expect.
-.\"O .PP
 もう一つの相違は、Host、User、Runas についての否定は、
 現在のところ無視されるということだ。
 たとえば、以下に挙げるような属性は期待どおりに動作しない。
-.PP
-.Vb 3
-.\"O \&    # does not match all but joe
-.\"O \&    # rather, does not match anyone
-\&    # joe 以外の全員とマッチしないどころか、
-\&    # 誰にもマッチしない
-\&    sudoUser: !joe
-\&
-.\"O \&    # does not match all but joe
-.\"O \&    # rather, matches everyone including Joe
-\&    # joe 以外の全員とマッチしないどころか、
-\&    # joe を含む全員にマッチしてしまう
-\&    sudoUser: ALL
-\&    sudoUser: !joe
-\&
-.\"O \&    # does not match all but web01
-.\"O \&    # rather, matches all hosts including web01
-\&    # web01 以外のすべてとマッチしないどころか、
-\&    # web01 を含むすべてのホストにマッチしてしまう
-\&    sudoHost: ALL
-\&    sudoHost: !web01
-.Ve
-.\"O .SS "Sudoers Schema"
+.nf
+.sp
+.RS 4n
+# joe 以外の全員とマッチしないどころか、
+# 誰にもマッチしない
+sudoUser: !joe
+
+# joe 以外の全員とマッチしないどころか、
+# joe を含む全員にマッチしてしまう
+sudoUser: ALL
+sudoUser: !joe
+
+# web01 以外のすべてとマッチしないどころか、
+# web01 を含むすべてのホストにマッチしてしまう
+sudoHost: ALL
+sudoHost: !web01
+.RE
+.fi
 .SS "sudo 用のスキーマ"
-.IX Subsection "Sudoers Schema"
-.\"O In order to use \fBsudo\fR's \s-1LDAP\s0 support, the \fBsudo\fR schema must be
-.\"O installed on your \s-1LDAP\s0 server.  In addition, be sure to index the
-.\"O \&'sudoUser' attribute.
-.\"O .PP
-\&\fBsudo\fR の \s-1LDAP\s0 サポートを利用するためには、
-お使いの \s-1LDAP\s0 サーバに 
-\&\fBsudo\fR 用のスキーマをインストールしなければならない。
-さらに、'sudoUser' 属性の索引も必ず作成する。
+\fBsudo\fP の LDAP サポートを利用するためには、お使いの LDAP サーバに
+\fBsudo\fP 用のスキーマをインストールしなければならない。
+そして、sudoUser 属性の索引を必ず作成しておく。
 .PP
-.\"O Three versions of the schema: one for OpenLDAP servers (\fIschema.OpenLDAP\fR),
-.\"O one for Netscape-derived servers (\fIschema.iPlanet\fR), and one for
-.\"O Microsoft Active Directory (\fIschema.ActiveDirectory\fR) may
-.\"O be found in the \fBsudo\fR distribution.
-.\"O .PP
-たぶん、\fBsudo\fR の配布物中に三種類のスキーマが入っていると思う。
-すなわち OpenLDAP サーバ用 (\fIschema.OpenLDAP\fR)、
-Netscape ディレクトリサーバの流れを汲むサーバ用 (\fIschema.iPlanet\fR)、
-Microsoft Active Directory 用 (\fIschema.ActiveDirectory\fR)
-のスキーマである。
+たぶん、\fBsudo\fP の配布物中には三種類のスキーマが入っていると思う。
+すなわち OpenLDAP サーバ用 (\fIschema.OpenLDAP\fP)、
+Netscape ディレクトリサーバの流れを汲むサーバ用 (\fIschema.iPlanet\fP)、
+Microsoft Active Directory 用 (\fIschema.ActiveDirectory\fP) のスキーマである。
 .PP
-.\"O The schema for \fBsudo\fR in OpenLDAP form is included in the \s-1EXAMPLES\s0
-.\"O section.
-OpenLDAP 用の形式にした \fBsudo\fR のスキーマは、
+OpenLDAP 用の形式にした \fBsudo\fP のスキーマは、
 「用例」セクションにも記載しておいた。
-.\"O .SS "Configuring ldap.conf"
 .SS "ldap.conf の設定"
-.IX Subsection "Configuring ldap.conf"
-.\"O Sudo reads the \fI/etc/ldap.conf\fR file for LDAP-specific configuration.
-.\"O Typically, this file is shared amongst different LDAP-aware clients.
-.\"O As such, most of the settings are not \fBsudo\fR\-specific.  Note that
-.\"O \&\fBsudo\fR parses \fI/etc/ldap.conf\fR itself and may support options
-.\"O that differ from those described in the \fIldap.conf\fR\|(5) manual.
-.\"O .PP
-sudo は LDAP に関する設定を知るために \fI/etc/ldap.conf\fR を読み込む。
+sudo は LDAP に関する設定を知るために \fI/etc/ldap.conf\fP を読み込む。
 通例、このファイルは、
 LDAP に対応しているさまざまなクライアントの間で共有されている。
-それ故、設定の大部分は \fBsudo\fR 専用ではない。
-注意すべきは、\fBsudo\fR は \fI/etc/ldap.conf\fR を独自に解析しており、
-\&\fIldap.conf\fR\|(5) のマニュアルで説明されているものとは
+それ故、設定の大部分は \fBsudo\fP 専用ではない。
+注意すべきは、\fBsudo\fP は \fI/etc/ldap.conf\fP を独自に解析しており、
+ldap.conf(5) のマニュアルで説明されているものとは
 異なるオプションをサポートしていることがあるということだ。
+\fIldap.conf\fP のパスは、sudo.conf(5) ファイルでプラグインに対する引き数
+\fIldap_conf\fP を使用すれば、変更することができる
+(訳注: sudoers ポリシー・プラグインに対して指定できる引き数については、
+sudoers(5) のマニュアルの「sudoers ポリシー・プラグインを使うための
+sudo.conf の設定」セクションに説明がある)。
 .PP
-.\"O Also note that on systems using the OpenLDAP libraries, default
-.\"O values specified in \fI/etc/openldap/ldap.conf\fR or the user's
-.\"O \&\fI.ldaprc\fR files are not used.
-.\"O .PP
-もうひとつ注意してほしいのは、OpenLDAP ライブラリを使っているシステムで、
-\&\fI/etc/openldap/ldap.conf\fR やユーザの \fI.ldaprc\fR 
+もうひとつ注意していただきたいのは、
+OpenLDAP ライブラリを使っているシステムでは、
+\fI/etc/openldap/ldap.conf\fP やユーザの \fI.ldaprc\fP
 ファイルで指定しているデフォルト値が使用されないことである。
 .PP
-.\"O Only those options explicitly listed in \fI/etc/ldap.conf\fR as being
-.\"O supported by \fBsudo\fR are honored.  Configuration options are listed
-.\"O below in upper case but are parsed in a case-independent manner.
-すなわち、\fI/etc/ldap.conf\fR に明示的に記載され、かつ \fBsudo\fR
+すなわち、\fI/etc/ldap.conf\fP に明示的に記載され、かつ \fBsudo\fP
 でサポートされているオプションのみが使用される。
 設定オプションを以下に大文字で列挙するが、
 解析されるときは大文字小文字は区別されない。
-.IP "\fB\s-1URI\s0\fR ldap[s]://[hostname[:port]] ..." 4
-.IX Item "URI ldap[s]://[hostname[:port]] ..."
-.\"O Specifies a whitespace-delimited list of one or more URIs describing
-.\"O the \s-1LDAP\s0 server(s) to connect to.  The \fIprotocol\fR may be either
-.\"O \&\fBldap\fR or \fBldaps\fR, the latter being for servers that support \s-1TLS\s0
-.\"O (\s-1SSL\s0) encryption.  If no \fIport\fR is specified, the default is port
-.\"O 389 for \f(CW\*(C`ldap://\*(C'\fR or port 636 for \f(CW\*(C`ldaps://\*(C'\fR.  If no \fIhostname\fR
-.\"O is specified, \fBsudo\fR will connect to \fBlocalhost\fR.  Multiple \fB\s-1URI\s0\fR
-.\"O lines are treated identically to a \fB\s-1URI\s0\fR line containing multiple
-.\"O entries.  Only systems using the OpenSSL libraries support the
-.\"O mixing of \f(CW\*(C`ldap://\*(C'\fR and \f(CW\*(C`ldaps://\*(C'\fR URIs.  The Netscape-derived
-.\"O libraries used on most commercial versions of Unix are only capable
-.\"O of supporting one or the other.
-接続する一個以上の \s-1LDAP\s0 サーバ の URI を、空白 (whitespace)
-で区切ったリストの形で指定する。プロトコルは \fBldap\fR と \fBldaps\fR
-のどちらでもよい。
-後者は \s-1TLS\s0 (\s-1SSL\s0) 暗号化に対応しているサーバの場合である。
-ポートを指定しないときのデフォルトは、
-\&\f(CW\*(C`ldap://\*(C'\fR では 389 番ポート、
-\&\f(CW\*(C`ldaps://\*(C'\fR では 636 番ポートである。
-\&\fIhostname\fR を一つも指定しないと、
-\&\fBsudo\fR は \fBlocalhost\fR に接続することになる。
-\&\fB\s-1URI\s0\fR の行が二行以上ある場合は、
-\&\fB\s-1URI\s0\fR の行に複数のエントリがあるときと同様に処理される。
-OpenSSL ライブラリを使用しているシステムのみが、\f(CW\*(C`ldap://\*(C'\fR
-と \f(CW\*(C`ldaps://\*(C'\fR 両方の URI を混ぜて使うことに対応している。
-たいていの商用 Unix では Netscape 由来のライブラリが使用されているが、
-そうしたライブラリはどちらか一方に対応することしかできない。
-.IP "\fB\s-1HOST\s0\fR name[:port] ..." 4
-.IX Item "HOST name[:port] ..."
-.\"O If no \fB\s-1URI\s0\fR is specified, the \fB\s-1HOST\s0\fR parameter specifies a
-.\"O whitespace-delimited list of \s-1LDAP\s0 servers to connect to.  Each host
-.\"O may include an optional \fIport\fR separated by a colon (':').  The
-.\"O \&\fB\s-1HOST\s0\fR parameter is deprecated in favor of the \fB\s-1URI\s0\fR specification
-.\"O and is included for backwards compatibility.
-\&\fBURI\fR パラメータが指定されていない場合は、
-\&\fB\s-1HOST\s0\fR パラメータで指定する空白 (whitespace)
-で区切ったリストが、接続する \s-1LDAP\s0 サーバである。
-各ホストにはコロン (':') に続けて、ポート番号を書いてもよい。
-\fB\s-1HOST\s0\fR パラメータは非推奨であり、\fB\s-1URI\s0\fR
-で指定する方が望ましい。このパラメータがあるのは、後方互換のためである。
-.IP "\fB\s-1PORT\s0\fR port_number" 4
-.IX Item "PORT port_number"
-.\"O If no \fB\s-1URI\s0\fR is specified, the \fB\s-1PORT\s0\fR parameter specifies the
-.\"O default port to connect to on the \s-1LDAP\s0 server if a \fB\s-1HOST\s0\fR parameter
-.\"O does not specify the port itself.  If no \fB\s-1PORT\s0\fR parameter is used,
-.\"O the default is port 389 for \s-1LDAP\s0 and port 636 for \s-1LDAP\s0 over \s-1TLS\s0
-.\"O (\s-1SSL\s0).  The \fB\s-1PORT\s0\fR parameter is deprecated in favor of the \fB\s-1URI\s0\fR
-.\"O specification and is included for backwards compatibility.
-\fB\s-1URI\s0\fR パラメータが指定されず、\fB\s-1HOST\s0\fR
-パラメータでもポートが指定されていないときは、\fB\s-1PORT\s0\fR パラメータが
-\&\s-1LDAP\s0 サーバに接続するときのデフォルトのポートを指定する。
-\&\fB\s-1PORT\s0\fR パラメータが使用されていない場合、デフォルトのポートは
-\&\s-1LDAP\s0 では 389 番、\s-1LDAP\s0 over \s-1TLS\s0 (\s-1SSL\s0) では
-636 番である。\fB\s-1PORT\s0\fR パラメータは非推奨であり、
-\&\fB\s-1URI\s0\fR で指定する方が望ましい。
+.PP
+パウンド記号 ('#') を使用すれば、
+以下はコメントであると示すことができる。すなわち、
+コメントの印と、それに続くいかなるテキストも、行末に至るまで、
+無視されることになる。長い行は、行末にバックスラッシュ ('\e')
+を置けば、継続することができる。
+行頭の空白 (white space)は、継続記号を使用している場合でも、
+行頭から取り除かれることに注意していただきたい。
+.TP  6n
+\fBBIND_TIMELIMIT\fP \fIseconds\fP
+\fBBIND_TIMELIMIT\fP パラメータでは、
+LDAP サーバに接続しようとするときの待ち時間を秒数で指定する。
+\fBURI\fP や \fBHOST\fP が複数指定されている場合は、その時間だけ待ってから、
+リスト中の次のサーバに接続を試みることになる。
+.TP  6n
+\fBBINDDN\fP \fIDN\fP
+\fBBINDDN\fP パラメータでは、誰の名前で LDAP の操作を行うかを、
+識別名 (DN) を使って指定する。これが指定されていない場合、
+LDAP の操作は anonymous の名前で実行される。LDAP サーバは、
+たいていデフォルトで anonymous によるアクセスを許可しているものである。
+.TP  6n
+\fBBINDPW\fP \fIsecret\fP
+\fBBINDPW\fP パラメータでは、LDAP の操作を行うときに使用するパスワードを指定する。
+通常、このパラメータは、\fBBINDDN\fP パラメータと組み合わせて使用する。
+\fIsecret\fP は、プレーンテキストのパスワードでもよく、
+"base64:" という接頭辞付きの、base64 でエンコードした文字列でもよい。
+たとえば、次のようなものだ。
+.nf
+.sp
+.RS 10n
+BINDPW base64:dGVzdA==
+.RE
+.fi
+.RS 6n
+.sp
+プレーンテキストのパスワードを使用する場合、
+パスワードは引用符を付けない単なる文字列にするべきだ。
+プレーンテキストのパスワード中には、コメント文字 ('#')
+があってはならない。また、バックスラッシュ ('\e')
+による特殊文字のエスケープはサポートされていない。
+.RE
+.TP  6n
+\fBDEREF\fP \fInever/searching/finding/always\fP
+検索を行うときに、alias の参照展開をどうするかを指定する。
+このオプションについての詳しい説明は、ldap.conf(5) のマニュアルにある。
+.TP  6n
+\fBHOST\fP \fIname[:port] ...\fP
+\fBURI\fP パラメータ (下記参照) が指定されていない場合は、
+\fBHOST\fP パラメータで指定する空白 (white space)
+で区切ったリストが、接続する LDAP サーバになる。
+各ホストにはコロン (':\&') に続けて、ポート番号を書いてもよい。
+\fBHOST\fP パラメータは非推奨であり、\fBURI\fP で指定する方が望ましい。
 このパラメータがあるのは、後方互換のためである。
-.IP "\fB\s-1BIND_TIMELIMIT\s0\fR seconds" 4
-.IX Item "BIND_TIMELIMIT seconds"
-.\"O The \fB\s-1BIND_TIMELIMIT\s0\fR parameter specifies the amount of time, in seconds,
-.\"O to wait while trying to connect to an \s-1LDAP\s0 server.  If multiple \fB\s-1URI\s0\fRs or
-.\"O \&\fB\s-1HOST\s0\fRs are specified, this is the amount of time to wait before trying
-.\"O the next one in the list.
-接続しようとするときの待ち時間を秒数で指定する。\fB\s-1URI\s0\fR や
-\&\fB\s-1HOST\s0\fR が複数指定されている場合は、その時間だけ待ってから、
-リスト中の次のサーバに接続を試みることを意味する。
-.IP "\fB\s-1NETWORK_TIMEOUT\s0\fR seconds" 4
-.IX Item "NETWORK_TIMEOUT seconds"
-.\"O An alias for \fB\s-1BIND_TIMELIMIT\s0\fR for OpenLDAP compatibility.
-\&\fB\s-1BIND_TIMELIMIT\s0\fR の別名。OpenLDAP との互換のためにある。
-.IP "\fB\s-1TIMELIMIT\s0\fR seconds" 4
-.IX Item "TIMELIMIT seconds"
-.\"O The \fB\s-1TIMELIMIT\s0\fR parameter specifies the amount of time, in seconds,
-.\"O to wait for a response to an \s-1LDAP\s0 query.
-\&\fB\s-1TIMELIMIT\s0\fR パラメータは、
-\&\s-1LDAP\s0 参照に対して応答が返ってくるまでの待ち時間を秒数で指定する。
-.IP "\fB\s-1TIMEOUT\s0\fR seconds" 4
-.IX Item "TIMEOUT seconds"
-.\"O The \fB\s-1TIMEOUT\s0\fR parameter specifies the amount of time, in seconds,
-.\"O to wait for a response from the various \s-1LDAP\s0 APIs.
-\&\fB\s-1TIMEOUT\s0\fR パラメータは、
-様々な \s-1LDAP\s0 API から応答が返ってくるときの待ち時間を秒数で指定する。
-.IP "\fB\s-1SUDOERS_BASE\s0\fR base" 4
-.IX Item "SUDOERS_BASE base"
-.\"O The base \s-1DN\s0 to use when performing \fBsudo\fR \s-1LDAP\s0 queries.  Typically
-.\"O this is of the form \f(CW\*(C`ou=SUDOers,dc=example,dc=com\*(C'\fR for the domain
-.\"O \&\f(CW\*(C`example.com\*(C'\fR.  Multiple \fB\s-1SUDOERS_BASE\s0\fR lines may be specified,
-.\"O in which case they are queried in the order specified.
-\&\fBsudo\fR が \s-1LDAP\s0 参照を行うときに使用するベース \s-1DN\s0
-を指定する。ドメインが \f(CW\*(C`example.com\*(C'\fR ならば、
-普通 \f(CW\*(C`ou=SUDOers,dc=example,dc=com\*(C'\fR という形になる。
-\&\fB\s-1SUDOERS_BASE\s0\fR を複数回指定してもよい。その場合は、
-指定された順番で参照されることになる。
-.IP "\fB\s-1SUDOERS_SEARCH_FILTER\s0\fR ldap_filter" 4
-.IX Item "SUDOERS_SEARCH_FILTER ldap_filter"
-.\"O An \s-1LDAP\s0 filter which is used to restrict the set of records returned
-.\"O when performing a \fBsudo\fR \s-1LDAP\s0 query.  Typically, this is of the
-.\"O form \f(CW\*(C`attribute=value\*(C'\fR or \f(CW\*(C`(&(attribute=value)(attribute2=value2))\*(C'\fR.
-\&\fBsudo\fR が \s-1LDAP\s0 参照を行うとき、どんな情報を返すかを限定する
-\&\s-1LDAP\s0 のフィルター。
-普通これは、\f(CW\*(C`attribute=value\*(C'\fR とか
-\&\f(CW\*(C`(&(attribute=value)(attribute2=value2))\*(C'\fR という形を取る。
-.IP "\fB\s-1SUDOERS_TIMED\s0\fR on/true/yes/off/false/no" 4
-.IX Item "SUDOERS_TIMED on/true/yes/off/false/no"
-.\"O Whether or not to evaluate the \f(CW\*(C`sudoNotBefore\*(C'\fR and \f(CW\*(C`sudoNotAfter\*(C'\fR
-.\"O attributes that implement time-dependent sudoers entries.
-属性 \f(CW\*(C`sudoNotBefore\*(C'\fR や \f(CW\*(C`sudoNotAfter\*(C'\fR
-を評価するか、しないかを指定する。
-この二つの属性によって日時制限のある sudo 設定のエントリを実現している。
-.IP "\fB\s-1SUDOERS_DEBUG\s0\fR debug_level" 4
-.IX Item "SUDOERS_DEBUG debug_level"
-.\"O This sets the debug level for \fBsudo\fR \s-1LDAP\s0 queries.  Debugging
-.\"O information is printed to the standard error.  A value of 1 results
-.\"O in a moderate amount of debugging information.  A value of 2 shows
-.\"O the results of the matches themselves.  This parameter should not
-.\"O be set in a production environment as the extra information is
-.\"O likely to confuse users.
-\&\fBsudo\fR が \s-1LDAP\s0 参照をするときのデバッグレベルを決める。
+.TP  6n
+\fBKRB5_CCNAME\fP \fIfile name\fP
+リモート・サーバに対して認証をするときに使用する Kerberos 5
+資格証明キャッシュのパス。このオプションは、SASL 認証 (下記参照)
+を使用するときしか意味を持たない。
+.TP  6n
+\fBLDAP_VERSION\fP \fInumber\fP
+サーバに接続するときに使用する LDAP プロトコルのバージョン。
+デフォルトの値は、プロトコルバージョン 3 である。
+.TP  6n
+\fBNETGROUP_BASE\fP \fIbase\fP
+LDAP でネットグループの問い合わせを行うときに使用するベース DN を指定する。
+ドメインが example.com ならば、たいてい ou=netgroup,dc=example,dc=com
+という形になる。\fBNETGROUP_BASE\fP を複数回指定してもよい。
+その場合は、指定された順番で問い合わせが行われることになる。
+.sp
+このオプションを使用すると、
+LDAP 経由で直接ユーザのネットグループを問い合わせることができる。
+そうする方が、sudoRole オブジェクトのうちで
+\&'+' という接頭辞を持つ sudoUser を含んでいるものをすべて取得するよりも、
+たいていの場合動作が高速になる。LDAP サーバによっては、
+nisNetgroup オブジェクトをその nisNetgroupTriple メンバによって検索できるようにするためには、
+使用している NIS スキーマに変更を加える必要があるものも存在する。
+OpenLDAP の \fBslapd\fP の場合は、
+nisNetgroupTriple アトリビュートに以下の変更を加えなければならない。
+.nf
+.sp
+.RS 10n
+attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
+    DESC 'Netgroup triple'
+    EQUALITY caseIgnoreIA5Match
+    SUBSTR caseIgnoreIA5SubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+.RE
+.fi
+.TP  6n
+\fBNETGROUP_SEARCH_FILTER\fP \fIldap_filter\fP
+\fBsudo\fP が LDAP でネットグループの問い合わせを行うとき、
+どんな情報を返すかを限定する LDAP のフィルター。通常 \fIldap_filter\fP は、
+attribute=value とか (&(attribute=value)(attribute2=value2))
+という形を取る。デフォルトの検索フィルターは、
+objectClass=nisNetgroupである。\fIldap_filter\fP の指定を省略すると、
+検索フィルターが全く使われないことになる。このオプションは、
+LDAP で直接ネットグループの問い合わせを行うときしか効果を持たない。
+.TP  6n
+\fBNETWORK_TIMEOUT\fP \fIseconds\fP
+\fBBIND_TIMELIMIT\fP の別名。OpenLDAP との互換のためにある。
+.TP  6n
+\fBPORT\fP \fIport_number\fP
+\fBURI\fP パラメータが指定されず、\fBHOST\fP
+パラメータでもポートが指定されていないときは、\fBPORT\fP パラメータが
+LDAP サーバに接続するときのデフォルトのポートを示すことになる。
+\fBPORT\fP パラメータが使用されていない場合、デフォルトのポートは
+LDAP では 389 番、LDAP over TLS (SSL) では 636 番である。
+\fBPORT\fP パラメータは非推奨であり、\fBURI\fP で指定する方が望ましい。
+このパラメータは後方互換のためにのみ存在している。
+.TP  6n
+\fBROOTBINDDN\fP \fIDN\fP
+\fBROOTBINDDN\fP パラメータでは、
+sudoers セキュリティポリシー設定の問い合わせのような、
+特権的な LDAP 操作をするとき、誰の名前で行うかを識別名 (DN)
+を使って指定する。その名前に対応するパスワードは、
+sudo.conf(5) の中でプラグインに対する引き数 \fIldap_secret\fP
+によってパスを指定されたファイルに書き込んでおくべきだ。
+このパスのデフォルトは \fI/etc/ldap.secret\fP である
+(訳注: \fBsudoers\fP プラグインに対する引き数 \fIldap_secret\fP
+については、sudoers(5) のマニュアルに記述がある)。
+このパラメータが設定されていない場合は、
+\fBBINDDN\fP で指定した名前があるならば、それが使用される。
+.TP  6n
+\fBROOTUSE_SASL\fP \fIon/true/yes/off/false/no\fP
+\fBROOTUSE_SASL\fP を有効にすると、
+\fBsudo\fP のような特権的なプロセスから LDAP サーバに接続するときに
+SASL 認証が可能になる。
+.TP  6n
+\fBSASL_AUTH_ID\fP \fIidentity\fP
+LDAP サーバに接続するときに使用する SASL ユーザ名。
+デフォルトでは、\fBsudo\fP は anonymous 接続を使用する。
+このオプションは、SASL 認証を使用するときしか意味を持たない。
+.TP  6n
+\fBSASL_SECPROPS\fP \fInone/properties\fP
+SASL セキュリティ・プロパティを指定する。プロパティなしならば、
+\fInone\fP である。詳細については、
+SASL プログラマーズ・マニュアルを参照すること。
+このオプションは、SASL 認証を使用するときしか意味を持たない。
+.TP  6n
+\fBSSL\fP \fIon/true/yes/off/false/no\fP
+\fBSSL\fP パラメータが on, true, yes になっていると、
+LDAP サーバと通信する際に、常に TLS (SSL) の暗号化を使用することになる。
+普通、そのためには、636 番ポート (ldaps) でサーバに接続していなければならない。
+.TP  6n
+\fBSSL\fP \fIstart_tls\fP
+\fBSSL\fP パラメータを start_tls  に設定すると、LDAP サーバへの接続を平文で開始し、
+バインド操作のために認証情報を送信する直前に、TLS の暗号化を始めることになる。
+これには、暗号化された通信のために専用のポートを必要としないという長所がある。
+このパラメータをサポートしているのは、
+OpenLDAP サーバや Tivoli ディレクトリ・サーバのような
+start_tls 拡張に対応している LDAP サーバのみである。
+.TP  6n
+\fBSUDOERS_BASE\fP \fIbase\fP
+\fBsudo\fP が LDAP の問い合わせを行うときに使用するベース DN を指定する。
+ドメインが example.com ならば、普通 ou=SUDOers,dc=example,dc=com
+という形になる。\fBSUDOERS_BASE\fP を複数回指定してもよい。
+その場合は、指定された順番で問い合わせが行われることになる。
+.TP  6n
+\fBSUDOERS_DEBUG\fP \fIdebug_level\fP
+\fBsudo\fP が LDAP の問い合わせをするときのデバッグレベルを決める。
 デバック情報の出力先は標準エラーである。値を 1 にすると、
 多からず少なからずほどほどのデバック情報が表示される。
 値を 2 にすると、マッチの結果そのものも出力される。
 実用環境では、このパラメータを設定するべきではない。
 ユーザが余計な情報に混乱しかねないからだ。
-.IP "\fB\s-1BINDDN\s0\fR \s-1DN\s0" 4
-.IX Item "BINDDN DN"
-.\"O The \fB\s-1BINDDN\s0\fR parameter specifies the identity, in the form of a
-.\"O Distinguished Name (\s-1DN\s0), to use when performing \s-1LDAP\s0 operations.
-.\"O If not specified, \s-1LDAP\s0 operations are performed with an anonymous
-.\"O identity.  By default, most \s-1LDAP\s0 servers will allow anonymous access.
-\&\fB\s-1BINDDN\s0\fR パラメータは、誰の名前で \s-1LDAP\s0 の操作を行うかを、
-識別名 (\s-1DN\s0) を使って指定する。これが指定されていない場合、
-\&\s-1LDAP\s0 の操作は anonymous の名前で実行される。\s-1LDAP\s0 サーバは、
-たいていデフォルトで anonymous によるアクセスを許可しているものである。
-.IP "\fB\s-1BINDPW\s0\fR secret" 4
-.IX Item "BINDPW secret"
-.\"O The \fB\s-1BINDPW\s0\fR parameter specifies the password to use when performing
-.\"O \&\s-1LDAP\s0 operations.  This is typically used in conjunction with the
-.\"O \&\fB\s-1BINDDN\s0\fR parameter.
-\&\fB\s-1BINDPW\s0\fR パラメータは、
-\&\s-1LDAP\s0 の操作を行うときに使用するパスワードを指定する。
-通例、このパラメータは、\fB\s-1BINDDN\s0\fR パラメータと組み合わせて使用する。
-.IP "\fB\s-1ROOTBINDDN\s0\fR \s-1DN\s0" 4
-.IX Item "ROOTBINDDN DN"
-.\"O The \fB\s-1ROOTBINDDN\s0\fR parameter specifies the identity, in the form of
-.\"O a Distinguished Name (\s-1DN\s0), to use when performing privileged \s-1LDAP\s0
-.\"O operations, such as \fIsudoers\fR queries.  The password corresponding
-.\"O to the identity should be stored in \fI/etc/ldap.secret\fR.
-.\"O If not specified, the \fB\s-1BINDDN\s0\fR identity is used (if any).
-\&\fB\s-1ROOTBINDDN\s0\fR パラメータは、sudo 設定の参照のような、
-特権的な \s-1LDAP\s0 操作をするとき、誰の名前で行うかを識別名 (\s-1DN\s0)
-を使って指定する。その名前に対応するパスワードは \fI/etc/ldap.secret\fR
-に書き込んでおくべきだ。このパラメータが設定されていない場合は、
-\&\fB\s-1BINDDN\s0\fR で指定した名前があるならば、それが使用される。
-.IP "\fB\s-1LDAP_VERSION\s0\fR number" 4
-.IX Item "LDAP_VERSION number"
-.\"O The version of the \s-1LDAP\s0 protocol to use when connecting to the server.
-.\"O The default value is protocol version 3.
-サーバに接続するときに使用する \s-1LDAP\s0 プロトコルのバージョン。
-デフォルトの値は、プロトコルバージョン 3 である。
-.IP "\fB\s-1SSL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "SSL on/true/yes/off/false/no"
-.\"O If the \fB\s-1SSL\s0\fR parameter is set to \f(CW\*(C`on\*(C'\fR, \f(CW\*(C`true\*(C'\fR or \f(CW\*(C`yes\*(C'\fR, \s-1TLS\s0
-.\"O (\s-1SSL\s0) encryption is always used when communicating with the \s-1LDAP\s0
-.\"O server.  Typically, this involves connecting to the server on port
-.\"O 636 (ldaps).
-\&\fB\s-1SSL\s0\fR パラメータが
-\&\f(CW\*(C`on\*(C'\fR, \f(CW\*(C`true\*(C'\fR, \f(CW\*(C`yes\*(C'\fR
-になっていると、\s-1LDAP\s0 サーバと通信する際に、常に
-\&\s-1TLS\s0 (\s-1SSL\s0) の暗号化を使用することになる。
-通例、それは 636 番ポート (ldaps) を通してサーバに接続することである。
-.IP "\fB\s-1SSL\s0\fR start_tls" 4
-.IX Item "SSL start_tls"
-.\"O If the \fB\s-1SSL\s0\fR parameter is set to \f(CW\*(C`start_tls\*(C'\fR, the \s-1LDAP\s0 server
-.\"O connection is initiated normally and \s-1TLS\s0 encryption is begun before
-.\"O the bind credentials are sent.  This has the advantage of not
-.\"O requiring a dedicated port for encrypted communications.  This
-.\"O parameter is only supported by \s-1LDAP\s0 servers that honor the \f(CW\*(C`start_tls\*(C'\fR
-.\"O extension, such as the OpenLDAP server.
-\&\fB\s-1SSL\s0\fR パラメータを \f(CW\*(C`start_tls\*(C'\fR に設定すると、
-\&\s-1LDAP\s0 サーバへの接続を平文で開始し、
-バインド操作のために認証情報を送信する直前に、
-\&\s-1TLS\s0 の暗号化を始めることになる。
-これには、暗号化された通信のために専用のポートを必要としないという長所がある。
-このパラメータをサポートしているのは、
-OpenLDAP サーバのような \f(CW\*(C`start_tls\*(C'\fR 拡張に対応している
-\&\s-1LDAP\s0 サーバのみである。
-.IP "\fB\s-1TLS_CHECKPEER\s0\fR on/true/yes/off/false/no" 4
-.IX Item "TLS_CHECKPEER on/true/yes/off/false/no"
-.\"O If enabled, \fB\s-1TLS_CHECKPEER\s0\fR will cause the \s-1LDAP\s0 server's \s-1TLS\s0
-.\"O certificated to be verified.  If the server's \s-1TLS\s0 certificate cannot
-.\"O be verified (usually because it is signed by an unknown certificate
-.\"O authority), \fBsudo\fR will be unable to connect to it.  If \fB\s-1TLS_CHECKPEER\s0\fR
-.\"O is disabled, no check is made.  Note that disabling the check creates
-.\"O an opportunity for man-in-the-middle attacks since the server's
-.\"O identity will not be authenticated.  If possible, the \s-1CA\s0's certificate
-.\"O should be installed locally so it can be verified.
-\&\fB\s-1TLS_CHECKPEER\s0\fR が有効になっていると、
-\&\s-1LDAP\s0 サーバの \s-1TLS\s0 証明書が正当かどうかチェックが行われる。
-\&\s-1LDAP\s0 サーバの証明書が正当であることを確認できない場合 (たいていは、
-署名している認証局が未知 (unknown) であることが理由だ)、
-\&\fBsudo\fR はそのサーバに接続することができない。
-\&\fB\s-1TLS_CHECKPEER\s0\fR が無効になっている場合は、チェックが行われない。
-気をつけてほしいが、このチェックをやらないことにすると、
-サーバーの身元確認を行わないので、中間者攻撃の可能性が生じる。
-可能ならば、認証局の証明書は、その正当性をチェックできるように、
-手元のマシンにインストールしておくべきである。
-.IP "\fB\s-1TLS_CACERT\s0\fR file name" 4
-.IX Item "TLS_CACERT file name"
-.\"O An alias for \fB\s-1TLS_CACERTFILE\s0\fR for OpenLDAP compatibility.
-\&\fB\s-1TLS_CACERTFILE\s0\fR の別名。OpenLDAP との互換のためにある。
-.IP "\fB\s-1TLS_CACERTFILE\s0\fR file name" 4
-.IX Item "TLS_CACERTFILE file name"
-.\"O The path to a certificate authority bundle which contains the certificates
-.\"O for all the Certificate Authorities the client knows to be valid,
-.\"O e.g. \fI/etc/ssl/ca\-bundle.pem\fR.
-.\"O This option is only supported by the OpenLDAP libraries.
-.\"O Netscape-derived \s-1LDAP\s0 libraries use the same certificate
-.\"O database for \s-1CA\s0 and client certificates (see \fB\s-1TLS_CERT\s0\fR).
+.sp
+\fBSUDOERS_DEBUG\fP パラメータは非推奨であり、
+将来のリリースでは廃止されることになる。今では同じ情報が、
+\fBsudo\fP のデバッグ用フレームワークを通してログに記録されるようになっている。
+\fIdebug_level\fP の値に 1 や 2 を指定する代わりに、サブシステムとして
+"ldap" を使用し、重大度 (priority) にそれぞれ \fIdiag\fP や \fIinfo\fP
+を指定すればよいのだ。
+\fBsudo\fP のデバッグを設定する方法について詳細を知りたければ、
+sudo.conf(5) のマニュアルをご覧になるとよい
+(訳注: sudoers(5) のマニュアルの「デバッギング」セクションも参照)。
+.TP  6n
+\fBSUDOERS_SEARCH_FILTER\fP \fIldap_filter\fP
+\fBsudo\fP が LDAP の問い合わせを行うとき、
+どんな情報を返すかを限定する LDAP のフィルター。通常 \fIldap_filter\fP は、
+attribute=value とか (&(attribute=value)(attribute2=value2))
+という形を取る。デフォルトの検索フィルターは、objectClass=sudoRole である。
+\fIldap_filter\fP の指定を省略すると、検索フィルターが全く使われないことになる。
+.TP  6n
+\fBSUDOERS_TIMED\fP \fIon/true/yes/off/false/no\fP
+属性 sudoNotBefore や sudoNotAfter を評価するか、しないかを指定する。
+この二つの属性によって日時制限のある sudoers
+セキュリティポリシー設定のエントリを実現している。
+.TP  6n
+\fBTIMELIMIT\fP \fIseconds\fP
+\fBTIMELIMIT\fP パラメータでは、
+LDAP の問い合わせに対して応答が返ってくるまでの待ち時間を秒数で指定する。
+.TP  6n
+\fBTIMEOUT\fP \fIseconds\fP
+\fBTIMEOUT\fP パラメータでは、
+様々な LDAP API から応答が返ってくるまでの待ち時間を秒数で指定する。
+.TP  6n
+\fBTLS_CACERT\fP \fIfile name\fP
+\fBTLS_CACERTFILE\fP の別名。OpenLDAP との互換のためにある。
+.TP  6n
+\fBTLS_CACERTFILE\fP \fIfile name\fP
 認証局の証明書を一つにまとめたファイルのパス。たとえば、
-\&\fI/etc/ssl/ca\-bundle.pem\fR といったファイルであり、
-正当なものだとクライアントが認識している、すべての認証局の証明書がそこに入っている。
+\fI/etc/ssl/ca\-bundle.pem\fP といったファイルであり、
+正当なものだとクライアントが認識している、
+すべての認証局の証明書がそこに入っている。
 このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-Netscape 由来の \s-1LDAP\s0 ライブラリは、認証局とクライアント、
+Netscape 由来の LDAP ライブラリは、認証局とクライアント、
 両方の証明書に対して、同一の証明書データベースを使用する
-(\fB\s-1TLS_CERT\s0\fR を参照)。
-.IP "\fB\s-1TLS_CACERTDIR\s0\fR directory" 4
-.IX Item "TLS_CACERTDIR directory"
-.\"O Similar to \fB\s-1TLS_CACERTFILE\s0\fR but instead of a file, it is a
-.\"O directory containing individual Certificate Authority certificates,
-.\"O e.g. \fI/etc/ssl/certs\fR.
-.\"O The directory specified by \fB\s-1TLS_CACERTDIR\s0\fR is checked after
-.\"O \&\fB\s-1TLS_CACERTFILE\s0\fR.
-.\"O This option is only supported by the OpenLDAP libraries.
-\&\fB\s-1TLS_CACERTFILE\s0\fR に似ているが、ファイルではなく、たとえば
-\&\fI/etc/ssl/certs\fR といったディレクトリであり、認証局の証明書が
-1 認証局 1 ファイルの形でそこに入っている。\fB\s-1TLS_CACERTDIR\s0\fR
-で指定したディレクトリは、\fB\s-1TLS_CACERTFILE\s0\fR の後でチェックされる。
-このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-.IP "\fB\s-1TLS_CERT\s0\fR file name" 4
-.IX Item "TLS_CERT file name"
-.\"O The path to a file containing the client certificate which can
-.\"O be used to authenticate the client to the \s-1LDAP\s0 server.
-.\"O The certificate type depends on the \s-1LDAP\s0 libraries used.
+(\fBTLS_CERT\fP を参照)。
+.TP  6n
+\fBTLS_CACERTDIR\fP \fIdirectory\fP
+\fBTLS_CACERTFILE\fP に似ているが、ファイルではなく、たとえば
+\fI/etc/ssl/certs\fP といったディレクトリであり、
+認証局の証明書が 1 認証局 1 ファイルの形でそこに入っている。
+\fBTLS_CACERTDIR\fP で指定したディレクトリは、\fBTLS_CACERTFILE\fP
+の後でチェックされる。このオプションをサポートしているのは、
+OpenLDAP ライブラリだけである。
+.TP  6n
+\fBTLS_CERT\fP \fIfile name\fP
 クライアントの証明書が入っているファイルのパス。この証明書は、
-\&\s-1LDAP\s0 サーバに対するクライアントの認証に使用できる。
-証明書のタイプは、利用する \s-1LDAP\s0 ライブラリによって異なっている。
-.Sp
+LDAP サーバに対するクライアントの認証に使用できる。
+証明書のタイプは、利用する LDAP ライブラリによって異なっている。
+.PP
+.RS 6n
+.PD 0
+.TP  6n
 OpenLDAP:
-    \f(CW\*(C`tls_cert /etc/ssl/client_cert.pem\*(C'\fR
-.Sp
-.\"O Netscape-derived:
+tls_cert /etc/ssl/client_cert.pem
+.PD
+.TP  6n
 Netscape 由来:
-    \f(CW\*(C`tls_cert /var/ldap/cert7.db\*(C'\fR
-.Sp
-.\"O When using Netscape-derived libraries, this file may also contain
-.\"O Certificate Authority certificates.
-Netscape 由来のライブラリを使う場合は、このファイルに認証局の証明書も入れることができる。
-.IP "\fB\s-1TLS_KEY\s0\fR file name" 4
-.IX Item "TLS_KEY file name"
-.\"O The path to a file containing the private key which matches the
-.\"O certificate specified by \fB\s-1TLS_CERT\s0\fR.  The private key must not be
-.\"O password-protected.  The key type depends on the \s-1LDAP\s0 libraries
-.\"O used.
-\&\fB\s-1TLS_CERT\s0\fR で指定した証明書に対応する、
-秘密鍵が入っているファイルのパス。
+tls_cert /var/ldap/cert7.db
+.TP  6n
+Tivoli ディレクトリ・サーバ:
+使用しない。\fBTLS_KEY\fP で指定するキー・データベースに、
+キーと証明書の両方が入っている。
+.sp
+Netscape 由来のライブラリを使う場合は、
+このファイルに認証局の証明書も入れることができる。
+.PD 0
+.PP
+.RE
+.PD
+.TP  6n
+\fBTLS_CHECKPEER\fP \fIon/true/yes/off/false/no\fP
+\fBTLS_CHECKPEER\fP が有効になっていると、
+LDAP サーバの TLS 証明書が正当かどうかチェックが行われる。
+LDAP サーバの証明書が正当であることを確認できない場合
+(たいていは、署名している認証局が未知 (unknown) であることが理由だ)、
+\fBsudo\fP はそのサーバに接続することができない。
+\fBTLS_CHECKPEER\fP が無効になっている場合は、チェックが行われない。
+このチェックをやらないことにすると、サーバーの身元の正真性を確認できないので、
+中間者攻撃の可能性が生じることに気をつけていただきたい。
+可能ならば、認証局の証明書は、その正当性のチェックができるように、
+手元のマシンにインストールしておくべきである。このオプションは、
+Tivoli ディレクトリ・サーバの LDAP ライブラリではサポートされていない。
+.TP  6n
+\fBTLS_KEY\fP \fIfile name\fP
+\fBTLS_CERT\fP で指定した証明書に対応する、秘密鍵が入っているファイルのパス。
 この秘密鍵はパスワードでプロテクトされていてはならない。
-鍵のタイプは利用する \s-1LDAP\s0 ライブラリによって異なっている。
-.Sp
+鍵のタイプは利用する LDAP ライブラリによって異なっている。
+.PP
+.RS 6n
+.PD 0
+.TP  6n
 OpenLDAP:
-    \f(CW\*(C`tls_key /etc/ssl/client_key.pem\*(C'\fR
-.Sp
-.\"O Netscape-derived:
-.Netscape 由来:
-    \f(CW\*(C`tls_key /var/ldap/key3.db\*(C'\fR
-.IP "\fB\s-1TLS_RANDFILE\s0\fR file name" 4
-.IX Item "TLS_RANDFILE file name"
-.\"O The \fB\s-1TLS_RANDFILE\s0\fR parameter specifies the path to an entropy
-.\"O source for systems that lack a random device.  It is generally used
-.\"O in conjunction with \fIprngd\fR or \fIegd\fR.
-.\"O This option is only supported by the OpenLDAP libraries.
-\&\fB\s-1TLS_RANDFILE\s0\fR は、random デバイスを持っていないシステムのために
+tls_key /etc/ssl/client_key.pem
+.PD
+.TP  6n
+Netscape 由来:
+tls_key /var/ldap/key3.db
+.TP  6n
+Tivoli ディレクトリ・サーバ:
+tls_key /usr/ldap/ldapkey.kdb
+.PD 0
+.PP
+Tivoli LDAP ライブラリを使用する場合は、
+このファイルに認証局やクライアントの証明書も入れることができる。
+また、暗号化することもできる。
+.RE
+.PD
+.TP  6n
+\fBTLS_CIPHERS\fP \fIcipher list\fP
+\fBTLS_CIPHERS\fP パラメータを使用すると、
+管理者が TLS (SSL) 接続に使用可能な暗号アルゴリズムを限定することができる。
+有効な暗号のリストについては、
+OpenLDAP や Tivoli ディレクトリ・サーバのマニュアルを参照していただきたい。
+Netscape 由来のライブラリは、このオプションをサポートしていない。
+.TP  6n
+\fBTLS_KEYPW\fP \fIsecret\fP
+\fBTLS_KEYPW\fP では、
+Tivoli ディレクトリ・サーバの LDAP ライブラリを使っているクライアントで、
+キー・データベースを復号するのに使用するパスワードを指定する。
+\fIsecret\fP は、プレーンテキストのパスワードでもよく、
+"base64:" という接頭辞付きの、base64 でエンコードした文字列でもよい。
+たとえば、次のようなものだ。
+.nf
+.sp
+.RS 10n
+TLS_KEYPW base64:dGVzdA==
+.RE
+.fi
+.RS 6n
+.sp
+プレーンテキストのパスワードを使用する場合、
+パスワードは引用符を付けない単なる文字列にするべきだ。
+プレーンテキストのパスワード中には、コメント文字 ('#')
+があってはならない。また、バックスラッシュ ('\e')
+による特殊文字のエスケープはサポートされていない。
+このオプションを使用するのならば、
+\fI/etc/ldap.conf\fP を誰にでも読める状態にしてはいけない。
+さもないと、パスワードを公開してしまうことになる。
+パスワードの公開を避ける別の方法としては、
+\fIstash file\fP を使用することも可能だ。そうすれば、
+パスワードを暗号化した形で格納することができる (下記参照)。
+.sp
+\fBTLS_KEYPW\fP が指定されていない場合、
+\fIstash file\fP が存在すれば、それを使用することになる。\fIstash file\fP は、
+\fBTLS_KEY\fP で指定されるファイルと同じパスを持たなければならないが、
+拡張子には .kdb の代わりに、.sth を使わなければならない。
+たとえば、ldapkey.sth といった具合だ。
+Tivoli ディレクトリ・サーバ出荷時のデフォルトの ldapkey.kdb は、
+ssl_password というパスワードを使って暗号化されている。
+\fIgsk8capicmd\fP というユーティリティを使用すれば、
+キー・データベースの管理と、\fIstash file\fP の作成を行うことができる。
+このオプションをサポートしているのは、Tivoli LDAP ライブラリだけである。
+.RE
+.TP  6n
+\fBTLS_RANDFILE\fP \fIfile name\fP
+\fBTLS_RANDFILE\fP では、random デバイスを持っていないシステムのために
 エントロピー・ソースのパスを指定する。
-これは通例、\fIprngd\fR や \fIegd\fR と組み合わせて使用するものである。
-このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-.IP "\fB\s-1TLS_CIPHERS\s0\fR cipher list" 4
-.IX Item "TLS_CIPHERS cipher list"
-.\"O The \fB\s-1TLS_CIPHERS\s0\fR parameter allows the administer to restrict
-.\"O which encryption algorithms may be used for \s-1TLS\s0 (\s-1SSL\s0) connections.
-.\"O See the OpenSSL manual for a list of valid ciphers.
-.\"O This option is only supported by the OpenLDAP libraries.
-管理者は \fB\s-1TLS_CIPHERS\s0\fR パラメータによって、\s-1TLS\s0
-(\s-1SSL\s0) 接続に使用可能な暗号アルゴリズムを限定することができる。
-有効な暗号のリストについては OpenSSL のマニュアルを参照してほしい。
+これは通例、\fIprngd\fP や \fIegd\fP と組み合わせて使用するものだ。
 このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-.IP "\fB\s-1USE_SASL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "USE_SASL on/true/yes/off/false/no"
-.\"O Enable \fB\s-1USE_SASL\s0\fR for \s-1LDAP\s0 servers that support \s-1SASL\s0 authentication.
-\&\s-1LDAP\s0 サーバが \s-1SASL\s0 認証をサポートしているなら、
-\&\fB\s-1USE_SASL\s0\fR を有効にすること。
-.IP "\fB\s-1SASL_AUTH_ID\s0\fR identity" 4
-.IX Item "SASL_AUTH_ID identity"
-.\"O The \s-1SASL\s0 user name to use when connecting to the \s-1LDAP\s0 server.
-.\"O By default, \fBsudo\fR will use an anonymous connection.
-\&\s-1LDAP\s0 サーバに接続するときに使用する \s-1SASL\s0 ユーザ名。
-デフォルトでは、\fBsudo\fR は anonymous 接続を使用する。
-.IP "\fB\s-1ROOTUSE_SASL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "ROOTUSE_SASL on/true/yes/off/false/no"
-.\"O Enable \fB\s-1ROOTUSE_SASL\s0\fR to enable \s-1SASL\s0 authentication when connecting
-.\"O to an \s-1LDAP\s0 server from a privileged process, such as \fBsudo\fR.
-\&\fB\s-1ROOTUSE_SASL\s0\fR を有効にすると、
-\&\fBsudo\fR のような特権的なプロセスから \s-1LDAP\s0 サーバに接続するときに
-\&\s-1SASL\s0 認証が可能になる。
-.IP "\fB\s-1ROOTSASL_AUTH_ID\s0\fR identity" 4
-.IX Item "ROOTSASL_AUTH_ID identity"
-.\"O The \s-1SASL\s0 user name to use when \fB\s-1ROOTUSE_SASL\s0\fR is enabled.
-\&\fB\s-1ROOTUSE_SASL\s0\fR が有効なとき使用する \s-1SASL\s0 ユーザ名。
-.IP "\fB\s-1SASL_SECPROPS\s0\fR none/properties" 4
-.IX Item "SASL_SECPROPS none/properties"
-.\"O \&\s-1SASL\s0 security properties or \fInone\fR for no properties.  See the
-.\"O \&\s-1SASL\s0 programmer's manual for details.
-\&\s-1SASL\s0 セキュリティ・プロパティを指定する。プロパティなしならば、
-\&\fInone\fR である。
-詳細については、\s-1SASL\s0 プログラマーズ・マニュアルを参照すること。
-.IP "\fB\s-1KRB5_CCNAME\s0\fR file name" 4
-.IX Item "KRB5_CCNAME file name"
-.\"O The path to the Kerberos 5 credential cache to use when authenticating
-.\"O with the remote server.
-リモート・サーバに対して認証をするときに使用する Kerberos 5
-資格証明キャッシュのパス。
-.IP "\fB\s-1DEREF\s0\fR never/searching/finding/always" 4
-.IX Item "DEREF never/searching/finding/always"
-.\"O How alias dereferencing is to be performed when searching.  See the
-.\"O \&\fIldap.conf\fR\|(5) manual for a full description of this option.
-.\"O .PP
-検索を行うときに、alias の参照をどうするかを指定する。
-このオプションについての詳しい説明は、\fIldap.conf\fR\|(5) のマニュアルにある。
+.TP  6n
+\fBURI\fP \fIldap[s]://[hostname[:port]] ...\fP
+接続する一個以上の LDAP サーバ の URI を、空白 (white space)
+で区切ったリストの形で指定する。プロトコルは \fIldap\fP と \fIldaps\fP
+のどちらでもよい。後者は TLS (SSL) 暗号化に対応しているサーバの場合である。
+ポートを指定しないときのデフォルトは、
+ldap:// では 389 番ポート、ldaps:// では 636 番ポートである。
+\fIhostname\fP を一つも指定しないと、
+\fBsudo\fP は \fIlocalhost\fP に接続することになる。\fBURI\fP の行が二行以上ある場合は、
+\fBURI\fP の行に複数のエントリがあるときと同様に処理される。
+OpenSSL ライブラリを使用しているシステムのみが、
+ldap:// と ldaps:// 両方の URI を混ぜて使うことに対応している。
+たいていの商用 Unix では Netscape 由来のライブラリや
+Tivoli LDAP ライブラリが使用されているが、
+そうしたライブラリはどちらか一方に対応することしかできない。
+.TP  6n
+\fBUSE_SASL\fP \fIon/true/yes/off/false/no\fP
+LDAP サーバが SASL 認証をサポートしているとき、
+\fBUSE_SASL\fP を有効にする。
+.TP  6n
+\fBROOTSASL_AUTH_ID\fP \fIidentity\fP
+\fBROOTUSE_SASL\fP が有効なとき使用する SASL ユーザ名。
 .PP
-.\"O See the \f(CW\*(C`ldap.conf\*(C'\fR entry in the \s-1EXAMPLES\s0 section.
-「用例」セクションにある \f(CW\*(C`ldap.conf\*(C'\fR
-のくだりも参照してほしい。
-.\"O .SS "Configuring nsswitch.conf"
+「用例」セクションにある \fIldap.conf\fP のくだりも参照していただきたい。
 .SS "nsswitch.conf の設定"
-.IX Subsection "Configuring nsswitch.conf"
-.\"O Unless it is disabled at build time, \fBsudo\fR consults the Name
-.\"O Service Switch file, \fI/etc/nsswitch.conf\fR, to specify the \fIsudoers\fR
-.\"O search order.  Sudo looks for a line beginning with \f(CW\*(C`sudoers\*(C'\fR: and
-.\"O uses this to determine the search order.  Note that \fBsudo\fR does
-.\"O not stop searching after the first match and later matches take
-.\"O precedence over earlier ones.
-.\"O .PP
-ビルド時に無効にしないかぎり、\fBsudo\fR はネームサービス・スイッチ・ファイル
-\&\fI/etc/nsswitch.conf\fR を調べて、sudo の設定を参照する順番を決める。
-すなわち、\fI/etc/nsswitch.conf\fR で
-\&\f(CW\*(C`sudoers\*(C'\fR: という文字列に始まる行を探し、
+ビルド時に無効にしないかぎり、\fBsudo\fP はネームサービス・スイッチ・ファイル
+\fI/etc/nsswitch.conf\fP を調べて、
+sudoers セキュリティポリシーの設定を参照する順番を決める。
+すなわち、\fI/etc/nsswitch.conf\fP で sudoers: という文字列に始まる行を探し、
 その行によって参照順を決定するのである。
-æ°\97ã\82\92ã\81¤ã\81\91ã\81¦ã\81»ã\81\97ã\81\84ã\81®ã\81¯ã\80\81\fBsudo\fR は参照中、
+æ°\97ã\82\92ã\81¤ã\81\91ã\81¦ã\81\84ã\81\9fã\81 ã\81\8dã\81\9fã\81\84ã\81®ã\81¯ã\80\81\fBsudo\fP は参照中、
 マッチする項目に一度出会ったからと言って、そこで参照を終わりにしないことだ。
 後でマッチしたものが前にマッチしたものよりも優先されるのである。
-.PP
-.\"O The following sources are recognized:
-.\"O .PP
 以下の参照元が有効である。
 .PP
-.Vb 2
-.\"O \&    files       read sudoers from F</etc/sudoers>
-.\"O \&    ldap        read sudoers from LDAP
-\&    files       \fI/etc/sudoers\fR から sudo の設定を読み込む
-\&    ldap        LDAP から sudo の設定を読み込む
-.Ve
+.RS 4n
+.PD 0
+.TP  10n
+files
+\fI/etc/sudoers\fP から sudoers セキュリティポリシーの設定を読み込む
+.TP  10n
+ldap
+LDAP から sudoers セキュリティポリシーの設定を読み込む
+.RE
+.PD
 .PP
-.\"O In addition, the entry \f(CW\*(C`[NOTFOUND=return]\*(C'\fR will short-circuit the
-.\"O search if the user was not found in the preceding source.
-.\"O .PP
-なお、\f(CW\*(C`[NOTFOUND=return]\*(C'\fR の記述があると、
+なお、[NOTFOUND=return] の記述があると、
 先行する参照元にユーザが見つからなかった場合、参照を中断することになる。
 .PP
-.\"O To consult \s-1LDAP\s0 first followed by the local sudoers file (if it
-.\"O exists), use:
-.\"O .PP
-最初に \s-1LDAP\s0 を参照し、その後で (もし存在するならば)
-ローカルマシン上の sudoers ファイルを調べるには、次のように指定する。
-.PP
-.Vb 1
-\&    sudoers: ldap files
-.Ve
+最初に LDAP を参照し、その後で (もし存在するならば)
+ローカルマシン上の \fIsudoers\fP ファイルを調べるには、次のように指定する。
+.nf
+.sp
+.RS 4n
+sudoers: ldap files
+.RE
+.fi
 .PP
-.\"O The local \fIsudoers\fR file can be ignored completely by using:
-.\"O .PP
-ローカルマシン上の \fIsudoers\fR ファイルをまったく無視するには、
+ローカルマシン上の \fIsudoers\fP ファイルをまったく無視するには、
 次のようにする。
+.nf
+.sp
+.RS 4n
+sudoers: ldap
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers: ldap
-.Ve
-.PP
-.\"O If the \fI/etc/nsswitch.conf\fR file is not present or there is no
-.\"O sudoers line, the following default is assumed:
-.\"O .PP
-\&\fI/etc/nsswitch.conf\fR ファイルが存在しなかったり、存在しても sudoers
+\fI/etc/nsswitch.conf\fP ファイルが存在しなかったり、存在しても sudoers
 の行がなかったりした場合は、次のデフォルト設定が使用される。
+.nf
+.sp
+.RS 4n
+sudoers: files
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers: files
-.Ve
-.PP
-.\"O Note that \fI/etc/nsswitch.conf\fR is supported even when the underlying
-.\"O operating system does not use an nsswitch.conf file.
-基盤となるオペーレーティング・システムが nsswitch.conf
-ファイルを使用しない場合でも、\fBsudo\fR は \fI/etc/nsswitch.conf\fR
-をサポートしていることに注意してほしい。
-.\"O .SS "Configuring netsvc.conf"
+使用しているオペーレーティング・システムが nsswitch.conf
+ファイルを使用しない場合でも、\fBsudo\fP は、AIX のシステム以外では
+(次のセクションを参照)、\fI/etc/nsswitch.conf\fP
+をサポートしていることに注意していただきたい。
 .SS "netsvc.conf の設定"
-.IX Subsection "Configuring netsvc.conf"
-.\"O On \s-1AIX\s0 systems, the \fI/etc/netsvc.conf\fR file is consulted instead of
-.\"O \&\fI/etc/nsswitch.conf\fR.  \fBsudo\fR simply treats \fInetsvc.conf\fR as a
-.\"O variant of \fInsswitch.conf\fR; information in the previous section
-.\"O unrelated to the file format itself still applies.
-.\"O .PP
-\&\s-1AIX\s0 システムでは、\fI/etc/nsswitch.conf\fR ではなく、
-\&\fI/etc/netsvc.conf\fR ファイルを調べに行く。\fBsudo\fR としては、
-\fInetsvc.conf\fR を \fInsswitch.conf\fR のバリエーションとして扱うだけだ。
+AIX システムでは、\fI/etc/nsswitch.conf\fP ではなく、
+\fI/etc/netsvc.conf\fP ファイルを調べに行く。\fBsudo\fP としては、
+\fInetsvc.conf\fP を \fInsswitch.conf\fP のバリエーションとして扱うだけだ。
 それ故、上のセクションの記述のうち、ファイルの書式に関係のないものは、
 ここでも当てはまることになる。
 .PP
-.\"O To consult \s-1LDAP\s0 first followed by the local sudoers file (if it
-.\"O exists), use:
-.\"O .PP
-最初に \s-1LDAP\s0 を参照し、その後で (もし存在するならば)
-ローカルマシン上の sudoers ファイルを調べるには、次のように指定する。
-.PP
-.Vb 1
-\&    sudoers = ldap, files
-.Ve
+最初に LDAP を参照し、その後で (もし存在するならば)
+ローカルマシン上の \fIsudoers\fP ファイルを調べるには、次のように指定する。
+.nf
+.sp
+.RS 4n
+sudoers = ldap, files
+.RE
+.fi
 .PP
-.\"O The local \fIsudoers\fR file can be ignored completely by using:
-.\"O .PP
-ローカルマシン上の \fIsudoers\fR ファイルをまったく無視するには、
+ローカルマシン上の \fIsudoers\fP ファイルをまったく無視するには、
 次のようにする。
+.nf
+.sp
+.RS 4n
+sudoers = ldap
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers = ldap
-.Ve
-.PP
-.\"O To treat \s-1LDAP\s0 as authoratative and only use the local sudoers file
-.\"O if the user is not present in \s-1LDAP\s0, use:
-.\"O .PP
-\&\s-1LDAP\s0 を正式の参照元と見なし、
-\&\s-1LDAP\s0 にユーザが見つからなかったときのみ、
-ローカルの sudoers ファイルを使用する。
-.PP
-.Vb 1
-\&    sudoers = ldap = auth, files
-.Ve
+LDAP を正式の参照元と見なし、LDAP にユーザが見つからなかったときのみ、
+ローカルの \fIsudoers\fP ファイルを使用する。
+.nf
+.sp
+.RS 4n
+sudoers = ldap = auth, files
+.RE
+.fi
 .PP
-.\"O Note that in the above example, the \f(CW\*(C`auth\*(C'\fR qualfier only affects
-.\"O user lookups; both \s-1LDAP\s0 and \fIsudoers\fR will be queried for \f(CW\*(C`Defaults\*(C'\fR
-.\"O entries.
-.\"O .PP
-上記の例において、\f(CW\*(C`auth\*(C'\fR 修飾子が影響を及ぼすのは、
-ユーザを照合するときだけであることに注意してほしい。
-\&\f(CW\*(C`Defaults\*(C'\fR エントリについては、
-\&\s-1LDAP\s0 と \fIsudoers\fR の両方が参照される。
+注意していただきたいが、上記の例において、auth 修飾子が影響を及ぼすのは、
+ユーザを検索するときだけである。
+Defaults エントリについては、LDAP と \fIsudoers\fP の両方が参照される。
 .PP
-.\"O If the \fI/etc/netsvc.conf\fR file is not present or there is no
-.\"O sudoers line, the following default is assumed:
-.\"O .PP
-\&\fI/etc/netsvc.conf\fR ファイルが存在しなかったり、存在しても
+\fI/etc/netsvc.conf\fP ファイルが存在しなかったり、存在しても
 sudoers の行がなかったりした場合は、次のデフォルト設定が使用される。
-.PP
-.Vb 1
-\&    sudoers = files
-.Ve
-.\"O .SH "FILES"
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/ldap.conf\fR" 24
-.el .IP "\fI/etc/ldap.conf\fR" 24
-.IX Item "/etc/ldap.conf"
-.\"O \&\s-1LDAP\s0 configuration file
-\&\s-1LDAP\s0 の設定ファイル
-.ie n .IP "\fI/etc/nsswitch.conf\fR" 24
-.el .IP "\fI/etc/nsswitch.conf\fR" 24
-.IX Item "/etc/nsswitch.conf"
-.\"O determines sudoers source order
-sudo の設定の参照元の順番を決める
-.ie n .IP "\fI/etc/netsvc.conf\fR" 24
-.el .IP "\fI/etc/netsvc.conf\fR" 24
-.IX Item "/etc/netsvc.conf"
-.\"O determines sudoers source order on \s-1AIX\s0
-\&\s-1AIX\s0 で sudo の設定の参照元の順番を決める
-.\"O .SH "EXAMPLES"
-.SH "用例"
-.IX Header "EXAMPLES"
-.\"O .SS "Example ldap.conf"
+.nf
+.sp
+.RS 4n
+sudoers = files
+.RE
+.fi
+.SS "sssd との統合"
+\fISystem Security Services Daemon\fP (SSSD) を使用しているシステムで、
+\fBsudo\fP が SSSD サポートを有効にしてビルドされている場合は、
+LDAP の \fIsudoers\fP ルールをキャッシュするのに SSSD を使用することができる。
+\fIsudoers\fP の参照先として SSSD を使用するためには、
+\fI/etc/nsswitch.conf\fP の sudoers のエントリで ldap の代わりに
+sssd を使わねばならない。なお、SSSD 用の \fBsudo\fP のバックエンドは、
+\fI/etc/ldap.conf\fP ファイルを使用しないことに気をつけていただきたい。
+SSSD と共に使用するときの \fBsudo\fP の設定についてより詳しい情報をお知りになりたかったら、
+sssd\-sudo(5) をご覧になるとよい。
+.SH ファイル
+.TP  26n
+\fI/etc/ldap.conf\fP
+LDAP の設定ファイル
+.TP  26n
+\fI/etc/nsswitch.conf\fP
+sudoers セキュリティポリシー設定の参照元の順番を決める
+.TP  26n
+\fI/etc/netsvc.conf\fP
+AIX で sudoers セキュリティポリシー設定の参照元の順番を決める
+.SH 用例
 .SS "ldap.conf の一例"
-.IX Subsection "Example ldap.conf"
-.Vb 10
-.\"O \&  # Either specify one or more URIs or one or more host:port pairs.
-.\"O \&  # If neither is specified sudo will default to localhost, port 389.
-\&  # URI か host:port の組み合わせを一つ以上指定する。
-\&  # どちらも指定されていない場合、sudo は localhost と 389 番
-\&  # ポートを使用する。
-\&  #
-\&  #host          ldapserver
-\&  #host          ldapserver1 ldapserver2:390
-\&  #
-.\"O \&  # Default port if host is specified without one, defaults to 389.
-\&  # host がポートなしで指定されている場合のポート番号。
-\&  # デフォルトは 389 である。
-\&  #port          389
-\&  #
-.\"O \&  # URI will override the host and port settings.
-\&  # URI の指定は、host と port による指定に優先する。
-\&  uri            ldap://ldapserver
-\&  #uri            ldaps://secureldapserver
-\&  #uri            ldaps://secureldapserver ldap://ldapserver
-\&  #
-.\"O \&  # The amount of time, in seconds, to wait while trying to connect to
-.\"O \&  # an LDAP server.
-\&  #  LDAP サーバに接続しようとしているときの、秒単位の待ち時間。
-\&  bind_timelimit 30
-\&  #
-.\"O \&  # The amount of time, in seconds, to wait while performing an LDAP query.
-\&  # LDAP の参照を行っているときの、秒単位の待ち時間。
-\&  timelimit 30
-\&  #
-.\"O \&  # Must be set or sudo will ignore LDAP; may be specified multiple times.
-\&  # 必ず設定すること。さもないと、sudo は LDAP を無視することになる。
-\&  # 複数回指定してもよい。
-\&  sudoers_base   ou=SUDOers,dc=example,dc=com
-\&  #
-.\"O \&  # verbose sudoers matching from ldap
-\&  # LDAP を参照したとき、sudo 設定のマッチングについて詳細情報を
-\&  # 表示する。
-\&  #sudoers_debug 2
-\&  #
-.\"O \&  # Enable support for time\-based entries in sudoers.
-\&  # sudo 設定中で日時制限のあるエントリのサポートを有効にする。
-\&  #sudoers_timed yes
-\&  #
-.\"O \&  # optional proxy credentials
-\&  # LDAP の操作を行う者の認証情報 (設定する、しないは任意)。
-\&  #binddn        <who to search as>
-\&  #bindpw        <password>
-\&  #rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
-\&  #
-.\"O \&  # LDAP protocol version, defaults to 3
-\&  # LDAP プロトコルのバージョン。デフォルトは 3 である。
-\&  #ldap_version 3
-\&  #
-.\"O \&  # Define if you want to use an encrypted LDAP connection.
-.\"O \&  # Typically, you must also set the port to 636 (ldaps).
-\&  # LDAP 接続を暗号化したいなら、on にする。
-\&  # 通例、ポートを 636 (ldaps) にすることも必要。
-\&  #ssl on
-\&  #
-.\"O \&  # Define if you want to use port 389 and switch to
-.\"O \&  # encryption before the bind credentials are sent.
-.\"O \&  # Only supported by LDAP servers that support the start_tls
-.\"O \&  # extension such as OpenLDAP.
-\&  # ポート 389 を使用し、バインド操作のために認証情報が
-\&  # 送信される前に、暗号化セッションに切り替えたい場合に設定する。
-\&  # これをサポートしているのは、OpenLDAP のような start_tls 拡張に
-\&  # 対応している LDAP サーバだけである。
-\&  #ssl start_tls
-\&  #
-.\"O \&  # Additional TLS options follow that allow tweaking of the
-.\"O \&  # SSL/TLS connection.
-\&  # さらに以下の TLS 関連オプションを使うことで SSL/TLS 接続を
-\&  # 微調整できる。
-\&  #
-.\"O \&  #tls_checkpeer yes # verify server SSL certificate
-.\"O \&  #tls_checkpeer no  # ignore server SSL certificate
-\&  #tls_checkpeer yes # サーバの SSL 証明書の正当性をチェックする。
-\&  #tls_checkpeer no  # サーバの SSL 証明書の正当性をチェックしない。
-\&  #
-.\"O \&  # If you enable tls_checkpeer, specify either tls_cacertfile
-.\"O \&  # or tls_cacertdir.  Only supported when using OpenLDAP.
-\&  # tls_checkpeer を有効にするときは、 tls_cacertfile か
-\&  # tls_cacertdir のどちらかを指定すること。tls_cacertfile や
-\&  # tls_cacertdir は OpenLDAP の使用時のみ使える。
-\&  #
-\&  #tls_cacertfile /etc/certs/trusted_signers.pem
-\&  #tls_cacertdir  /etc/certs
-\&  #
-.\"O \&  # For systems that don\*(Aqt have /dev/random
-.\"O \&  # use this along with PRNGD or EGD.pl to seed the
-.\"O \&  # random number pool to generate cryptographic session keys.
-.\"O \&  # Only supported when using OpenLDAP.
-\&  # /dev/random がないシステムでは、下記の設定を PRNGD、あるいは
-\&  # EGD.pl と一緒に使用すれば、暗号セッション用の鍵を生成するための
-\&  # 乱数プールの種を供給できる。このオプションが使えるのは、
-\&  # OpenLDAP を使用しているときだけである。
-\&  #
-\&  #tls_randfile /etc/egd\-pool
-\&  #
-.\"O \&  # You may restrict which ciphers are used.  Consult your SSL
-.\"O \&  # documentation for which options go here.
-.\"O \&  # Only supported when using OpenLDAP.
-\&  # 使用する暗号を限定することができる。どの暗号が使えるかに
-\&  # ついては、SSL の文書を参照してほしい。このオプションが
-\&  # 使えるのは、OpenLDAP を使用しているときだけである。
-\&  #
-\&  #tls_ciphers <cipher\-list>
-\&  #
-.\"O \&  # Sudo can provide a client certificate when communicating to
-.\"O \&  # the LDAP server.
-.\"O \&  # Tips:
-.\"O \&  #   * Enable both lines at the same time.
-.\"O \&  #   * Do not password protect the key file.
-.\"O \&  #   * Ensure the keyfile is only readable by root.
-\&  # sudo は LDAP サーバと交信するときに、クライアントの証明書を
-\&  # 提示することができる。
-\&  # 注意:
-\&  #   * 両方の行を同時に有効にすること。
-\&  #   * キーファイルをパスワードでプロテクトしてはいけない。
-\&  #   * キーファイルが読めるのは root だけにするのを忘れずに。
-\&  #
-.\"O \&  # For OpenLDAP:
-\&  # OpenLDAP の場合:
-\&  #tls_cert /etc/certs/client_cert.pem
-\&  #tls_key  /etc/certs/client_key.pem
-\&  #
-.\"O \&  # For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either
-.\"O \&  # a directory, in which case the files in the directory must have the
-.\"O \&  # default names (e.g. cert8.db and key4.db), or the path to the cert
-.\"O \&  # and key files themselves.  However, a bug in version 5.0 of the LDAP
-.\"O \&  # SDK will prevent specific file names from working.  For this reason
-.\"O \&  # it is suggested that tls_cert and tls_key be set to a directory,
-.\"O \&  # not a file name.
-\&  # SunONE や iPlanet LDAP の場合:
-\&  # こちらの場合は、tls_cert や tls_key で指定するのは、
-\&  # 証明書やキーファイルの入っているディレクトリでもよく、
-\&  # ファイルそのもののパスでもよい。
-\&  # 前者の場合、ディレクトリ中のファイルは、既定の名前 (たとえば
-\&  # cert8.db と key4.db) でなければならない。もっとも、ファイルの
-\&  # パスを指定した場合は、バージョン 5.0 の LDAP SDK にはバグが
-\&  # あるので、ファイル名によってはうまく動作しないことがある。
-\&  # この理由から、tls_cert や tls_key には、ファイル名ではなく、
-\&  # ディレクトリを指定する方をお薦めする。
-\&  #
-.\"O \&  # The certificate database specified by tls_cert may contain CA certs
-.\"O \&  # and/or the client\*(Aqs cert.  If the client\*(Aqs cert is included, tls_key
-.\"O \&  # should be specified as well.
-.\"O \&  # For backward compatibility, "sslpath" may be used in place of tls_cert.
-\&  # tls_cert で指定した証明書のデータベースには、認証局の証明書と
-\&  # クライアントの証明書が、どちらか一方だけ入っていてもよく、
-\&  # 両方入っていてもよい。クライアントの証明書が入っている場合は、
-\&  # tls_key も指定するべきである。
-\&  # 後方互換のため、tls_cert のかわりに sslpath を使うこともできる。
-\&  #tls_cert /var/ldap
-\&  #tls_key /var/ldap
-\&  #
-.\"O \&  # If using SASL authentication for LDAP (OpenSSL)
-\&  # LDAP に SASL 認証を使用する場合 (OpenSSL)
-\&  # use_sasl yes
-\&  # sasl_auth_id <SASL user name>
-\&  # rootuse_sasl yes
-\&  # rootsasl_auth_id <SASL user name for root access>
-\&  # sasl_secprops none
-\&  # krb5_ccname /etc/.ldapcache
-.Ve
-.\"O .SS "Sudo schema for OpenLDAP"
-.SS "OpenLDAP 用の Sudo のスキーマ"
-.IX Subsection "Sudo schema for OpenLDAP"
-.\"O The following schema, in OpenLDAP format, is included with \fBsudo\fR
-.\"O source and binary distributions as \fIschema.OpenLDAP\fR.  Simply copy
-.\"O it to the schema directory (e.g. \fI/etc/openldap/schema\fR), add the
-.\"O proper \f(CW\*(C`include\*(C'\fR line in \f(CW\*(C`slapd.conf\*(C'\fR and restart \fBslapd\fR.
-.\"O .PP
+.nf
+.RS 2n
+# URI または host:port の組み合わせを一つ以上指定する。
+# どちらも指定されていない場合、sudo はデフォルトの localhost と
+# 389 番ポートを使用する。
+#
+#host          ldapserver
+#host          ldapserver1 ldapserver2:390
+#
+# host がポートなしで指定されている場合のポート番号。
+# デフォルトは 389 である。
+#port          389
+#
+# URI による指定は、host と port による指定に優先する。
+uri            ldap://ldapserver
+#uri            ldaps://secureldapserver
+#uri            ldaps://secureldapserver ldap://ldapserver
+#
+# LDAP サーバに接続しようとしているときの、秒単位の待ち時間。
+bind_timelimit 30
+#
+# LDAP に問い合わせを行っているときの、秒単位の待ち時間。
+timelimit 30
+#
+# 必ず設定すること。さもないと、sudo は LDAP を無視することになる。
+# 複数回指定してもよい。
+sudoers_base   ou=SUDOers,dc=example,dc=com
+#
+# LDAP で sudoers セキュリティポリシー設定を問い合わせる際の
+# マッチングについて詳細情報を表示する。
+#sudoers_debug 2
+#
+# sudoers セキュリティポリシー設定中で日時制限のあるエントリの
+# サポートを有効にする。
+#sudoers_timed yes
+#
+# LDAP の操作を行う者の認証情報 (設定する、しないは任意)。
+#binddn        <who to search as>
+#bindpw        <password>
+#rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
+#
+# LDAP プロトコルのバージョン。デフォルトは 3 である。
+#ldap_version 3
+#
+# LDAP 接続を暗号化したい場合に設定する。
+# 通例、ポートを 636 (ldaps) にすることも必要。
+#ssl on
+#
+# ポート 389 を使用し、バインド操作のために認証情報が
+# 送信される直前に、暗号化セッションに切り替えたい場合に設定する。
+# これをサポートしているのは、OpenLDAP のような start_tls 拡張に
+# 対応している LDAP サーバだけである。
+#ssl start_tls
+#
+# さらに以下の TLS 関連オプションを使うことで SSL/TLS 接続の
+# 細かい調整ができる。
+#
+#tls_checkpeer yes # サーバの SSL 証明書の正当性をチェックする。
+#tls_checkpeer no  # サーバの SSL 証明書の正当性をチェックしない。
+#
+# tls_checkpeer を有効にするときは、 tls_cacertfile か
+# tls_cacertdir のどちらかを指定すること。tls_cacertfile や
+# tls_cacertdir は OpenLDAP の使用時のみ使える。
+#
+#tls_cacertfile /etc/certs/trusted_signers.pem
+#tls_cacertdir  /etc/certs
+#
+# /dev/random がないシステムでは、下記の設定を PRNGD、あるいは
+# EGD.pl と一緒に使用すれば、暗号セッション用の鍵を生成するための
+# 乱数プールの種を供給できる。このオプションが使えるのは、
+# OpenLDAP を使用しているときだけである。
+#
+#tls_randfile /etc/egd\-pool
+#
+# 使用する暗号を限定することができる。どの暗号が使えるかに
+# ついては、SSL の文書を参照すること。このオプションが
+# 使えるのは、OpenLDAP を使用しているときだけである。
+#
+#tls_ciphers <cipher\-list>
+#
+# sudo は LDAP サーバと交信するときに、クライアントの証明書を
+# 提示することができる。
+# 注意:
+#   * 両方の行を同時に有効にすること。
+#   * キーファイルをパスワードでプロテクトしてはいけない。
+#   * キーファイルが読めるのは root だけにするのを忘れずに。
+#
+# OpenLDAP の場合:
+#tls_cert /etc/certs/client_cert.pem
+#tls_key  /etc/certs/client_key.pem
+#
+# SunONE や iPlanet LDAP (訳注: Netscape 由来) の場合:
+# こちらの場合は、tls_cert や tls_key で指定するのは、証明書や
+# キーファイルの入っているディレクトリでもよく、ファイルそのものの
+# パスでもよい。前者の場合、ディレクトリ中のファイルは、所定の名前
+# (たとえばcert8.db と key4.db) でなければならない。もっとも、
+# ファイルのパスを指定した場合は、バージョン 5.0 の LDAP SDK には
+# バグがあるので、ファイル名によってはうまく動作しないことがある。
+# この理由から、tls_cert や tls_key には、ファイル名ではなく、
+# ディレクトリを指定する方をお薦めする。
+#
+# tls_cert で指定した証明書のデータベースには、認証局の証明書と
+# クライアントの証明書が、どちらか一方だけ入っていてもよく、
+# 両方入っていてもよい。クライアントの証明書が入っている場合は、
+# tls_key も指定するべきである。
+# 後方互換のため、tls_cert のかわりに sslpath を使うこともできる。
+#tls_cert /var/ldap
+#tls_key /var/ldap
+#
+# LDAP に SASL 認証を使用する場合 (OpenSSL)
+# use_sasl yes
+# sasl_auth_id <SASL user name>
+# rootuse_sasl yes
+# rootsasl_auth_id <SASL user name for root access>
+# sasl_secprops none
+# krb5_ccname /etc/.ldapcache
+.RE
+.fi
+.SS "OpenLDAP 用の sudo のスキーマ"
 下記のスキーマは OpenLDAP 用の形式になっており、
-\&\fBsudo\fR のソースやバイナリの配布に含まれる \fIschema.OpenLDAP\fR と同じものだ。
-このとおりの内容のファイルをスキーマ・ディレクトリ (たとえば、
-\&\fI/etc/openldap/schema\fR) に作成し、適切な \f(CW\*(C`include\*(C'\fR 行を
-\&\f(CW\*(C`slapd.conf\*(C'\fR に追加して、\fBslapd\fR をリスタートすればよい。
+\fBsudo\fP のソースやバイナリの配布には \fIschema.OpenLDAP\fP
+として収録されている。その \fIschema.OpenLDAP\fP
+ファイルをスキーマ・ディレクトリ (たとえば \fI/etc/openldap/schema\fP)
+にそのままコピーし、適切な include 行を \fIslapd.conf\fP に追加して、
+\fBslapd\fP をリスタートすればよい。
+.nf
+.sp
+.RS 2n
+attributetype ( 1.3.6.1.4.1.15953.9.1.1
+   NAME 'sudoUser'
+   DESC 'User(s) who may  run sudo'
+   EQUALITY caseExactIA5Match
+   SUBSTR caseExactIA5SubstringsMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.2
+   NAME 'sudoHost'
+   DESC 'Host(s) who may run sudo'
+   EQUALITY caseExactIA5Match
+   SUBSTR caseExactIA5SubstringsMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.3
+   NAME 'sudoCommand'
+   DESC 'Command(s) to be executed by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.4
+   NAME 'sudoRunAs'
+   DESC 'User(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.5
+   NAME 'sudoOption'
+   DESC 'Options(s) followed by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.6
+   NAME 'sudoRunAsUser'
+   DESC 'User(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.7
+   NAME 'sudoRunAsGroup'
+   DESC 'Group(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.8
+   NAME 'sudoNotBefore'
+   DESC 'Start of time interval for which the entry is valid'
+   EQUALITY generalizedTimeMatch
+   ORDERING generalizedTimeOrderingMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.9
+   NAME 'sudoNotAfter'
+   DESC 'End of time interval for which the entry is valid'
+   EQUALITY generalizedTimeMatch
+   ORDERING generalizedTimeOrderingMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
+    NAME 'sudoOrder'
+    DESC 'an integer to order the sudoRole entries'
+    EQUALITY integerMatch
+    ORDERING integerOrderingMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
+   DESC 'Sudoer Entries'
+   MUST ( cn )
+   MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
+        sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
+        sudoOrder $ description )
+   )
+.RE
+.fi
+.SH 関連項目
+ldap.conf(5), sssd\-sudo(5), sudo.conf(5), sudoers(5)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-.Vb 6
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.1
-\&    NAME \*(AqsudoUser\*(Aq
-\&    DESC \*(AqUser(s) who may  run sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SUBSTR caseExactIA5SubstringsMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.2
-\&    NAME \*(AqsudoHost\*(Aq
-\&    DESC \*(AqHost(s) who may run sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SUBSTR caseExactIA5SubstringsMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.3
-\&    NAME \*(AqsudoCommand\*(Aq
-\&    DESC \*(AqCommand(s) to be executed by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.4
-\&    NAME \*(AqsudoRunAs\*(Aq
-\&    DESC \*(AqUser(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.5
-\&    NAME \*(AqsudoOption\*(Aq
-\&    DESC \*(AqOptions(s) followed by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.6
-\&    NAME \*(AqsudoRunAsUser\*(Aq
-\&    DESC \*(AqUser(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.7
-\&    NAME \*(AqsudoRunAsGroup\*(Aq
-\&    DESC \*(AqGroup(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.8
-\&    NAME \*(AqsudoNotBefore\*(Aq
-\&    DESC \*(AqStart of time interval for which the entry is valid\*(Aq
-\&    EQUALITY generalizedTimeMatch
-\&    ORDERING generalizedTimeOrderingMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.9
-\&    NAME \*(AqsudoNotAfter\*(Aq
-\&    DESC \*(AqEnd of time interval for which the entry is valid\*(Aq
-\&    EQUALITY generalizedTimeMatch
-\&    ORDERING generalizedTimeOrderingMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-\&
-\& attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
-\&     NAME \*(AqsudoOrder\*(Aq
-\&     DESC \*(Aqan integer to order the sudoRole entries\*(Aq
-\&     EQUALITY integerMatch
-\&     ORDERING integerOrderingMatch
-\&     SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-\&
-\& objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME \*(AqsudoRole\*(Aq SUP top STRUCTURAL
-\&    DESC \*(AqSudoer Entries\*(Aq
-\&    MUST ( cn )
-\&    MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
-\&          sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
-\&          sudoOrder $ description )
-\&    )
-.Ve
-.\"O .SH "SEE ALSO"
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIldap.conf\fR\|(5), \fIsudoers\fR\|(5)
-.\"O .SH "CAVEATS"
-.SH "警告"
-.IX Header "CAVEATS"
-.\"O Note that there are differences in the way that LDAP-based \fIsudoers\fR
-.\"O is parsed compared to file-based \fIsudoers\fR.  See the \*(L"Differences
-.\"O between \s-1LDAP\s0 and non-LDAP sudoers\*(R" section for more information.
-LDAP を使用する \fBsudo\fR の設定と \fIsudoers\fR ファイルによる \fBsudo\fR の設定では、
-設定を解析する仕方に相違があるので、注意してほしい。詳細については、
-「\s-1LDAP\s0 を使う場合と使わない場合の
-sudo 設定の相違点」のセクションを参照すること。
-.\"O .SH "BUGS"
-.SH "バグ"
-.IX Header "BUGS"
-.\"O If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-.\"O at http://www.sudo.ws/sudo/bugs/
-\&\fBsudo\fR にバグを発見したと思ったら、下記ページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.\"O .SH "SUPPORT"
-.SH "サポート"
-.IX Header "SUPPORT"
-.\"O Limited free support is available via the sudo-users mailing list,
-.\"O see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
-.\"O search the archives.
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には、下記 URL をご覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.\"O .SH "DISCLAIMER"
-.SH "免責"
-.IX Header "DISCLAIMER"
-.\"O \&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-.\"O including, but not limited to, the implied warranties of merchantability
-.\"O and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-.\"O file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-.\"O for complete details.
-\&\fBsudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH 警告
+LDAP を使用する sudoers セキュリティポリシーの設定と
+\fIsudoers\fP ファイルによる設定では、設定を解析する仕方に相違があるので、
+注意していただきたい。詳細については、「LDAP を使う場合と使わない場合の
+sudoers セキュリティポリシー設定の相違点」のセクションを参照すること。
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
 下記 Web ページをご覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+https://www.sudo.ws/license.html
index e921cae..1ff667b 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo.mdoc.in
+.\"
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
-.\" 
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
 .\"   and 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated Sat Oct  7 14:39:18 JST 2000
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002 by Yuichi SATO
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\"         by Yoichi Chonan
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.nr SL 0
-.nr BA 0
-.nr LC 0
-.nr PT 5
-.\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDO 8"
-.TH SUDO 8 "February  5, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDO 8 "January 19, 2016" "Sudo 1.8.17" "System Manager's Manual"
 .nh
-.\"O .SH "NAME"
-.SH "名前"
-.\"O sudo, sudoedit \- execute a command as another user
-sudo, sudoedit \- コマンドを他のユーザとして実行する
-.\"O .SH "SYNOPSIS"
-.SH "書式"
-.IX Header "SYNOPSIS"
-\&\fBsudo\fR \fB\-h\fR | \fB\-K\fR | \fB\-k\fR | \fB\-V\fR
-.PP
-\&\fBsudo\fR \fB\-v\fR [\fB\-AknS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
-.PP
-\&\fBsudo\fR \fB\-l[l]\fR [\fB\-AknS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-U\fR\ \fIuser\ name\fR] [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] [\fIcommand\fR]
-.PP
-\&\fBsudo\fR [\fB\-AbEHnPS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-C\fR\ \fIfd\fR]
-.if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-.if \n(SL [\fB\-r\fR\ \fIrole\fR] [\fB\-t\fR\ \fItype\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
-[\fB\s-1VAR\s0\fR=\fIvalue\fR] [\fB\-i\fR\ |\ \fB\-s\fR] [\fIcommand\fR]
-.PP
-\&\fBsudoedit\fR [\fB\-AnS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-C\fR\ \fIfd\fR]
-.if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] file ...
-.\"O .SH "DESCRIPTION"
-.SH "説明"
-.IX Header "DESCRIPTION"
-.\"O \&\fBsudo\fR allows a permitted user to execute a \fIcommand\fR as the
-.\"O superuser or another user, as specified by the security policy.
-.\"O The real and effective uid and gid are set to match those of the
-.\"O target user, as specified in the password database, and the group
-.\"O vector is initialized based on the group database (unless the \fB\-P\fR
-.\"O option was specified).
-.\"O .PP
-\&\fBsudo\fR を使用すると、許可されたユーザーが、
-スーパーユーザや他のユーザに変身して、コマンドを実行することが可能になる。
-許可の範囲については、セキュリティ・ポリシーの指定するところに従う。
-実 uid と gid、実効 uid と gid は、変身の対象になるユーザの、
-パスワード・データベースに記載されているものと同一になるようにセットされる。
-所属するグループについても (\fB\-P\fR オプションが指定されていないかぎり)、
-グループ・データベースに基づいて初期化される。
-.PP
-.\"O \&\fBsudo\fR supports a plugin architecture for security policies and
-.\"O input/output logging.  Third parties can develop and distribute
-.\"O their own policy and I/O logging modules to work seamlessly with
-.\"O the \fBsudo\fR front end.  The default security policy is \fIsudoers\fR,
-.\"O which is configured via the file \fI/etc/sudoers\fR, or via
-.\"O \&\s-1LDAP\s0.  See the \s-1PLUGINS\s0 section for more information.
-.\"O .PP
-\&\fBsudo\fR はセキュリティ・ポリシーと入出力のロギングについて、
-プラグイン方式をサポートしている。このため、\fBsudo\fR
-フロントエンドとシームレスに共動するポリシー・モジュールや
-I/O ロギング・モジュールを、サードパーティが独自に開発して配布することが可能である。
-デフォルトのセキュリティ・ポリシーは \fIsudoers\fR であり、その設定は、
-\&\fI/etc/sudoers\fR ファイル、もしくは \s-1LDAP\s0 を通して行われる。
-詳細については、「プラグイン」セクションを参照してほしい。
-.PP
-.\"O The security policy determines what privileges, if any, a user has
-.\"O to run \fBsudo\fR.  The policy may require that users authenticate
-.\"O themselves with a password or another authentication mechanism.  If
-.\"O authentication is required, \fBsudo\fR will exit if the user's password
-.\"O is not entered within a configurable time limit.  This limit is
-.\"O policy-specific; the default password prompt timeout for the
-.\"O \&\fIsudoers\fR security policy is 
-.\"O .ie \n(PT \f(CW\*(C`5\*(C'\fR minutes.
-.\"O .el unlimited.
-.\"O .PP
-セキュリティ・ポリシーによって、あるユーザに \fBsudo\fR
-を使用する権限があるかどうか、
-あるとすれば、どんな権限を持っているかが決定される。
-セキュリティ・ポリシーは、ユーザにパスワードや他の認証方法を使って、
-本人であることを証明するように要求してもよい。認証が必要な場合、
-ユーザがパスワードを (設定によって変更可能な) 制限時間内に入力しないと、
-\&\fBsudo\fR は時間切れで終了する。この制限時間はポリシー次第であり、
-\&\fIsudoers\fR セキュリティ・ポリシーの場合、
-パスワード・プロンプトがタイムアウトするまでのデフォルトの時間は、
-.ie \n(PT \f(CW\*(C`5\*(C'\fR 分間である.
-.el 無制限である.
-.PP
-.\"O Security policies may support credential caching to allow the user
-.\"O to run \fBsudo\fR again for a period of time without requiring
-.\"O authentication.  The \fIsudoers\fR policy caches credentials for
-.\"O \&\f(CW\*(C`5\*(C'\fR minutes, unless overridden in \fIsudoers\fR\|(5).  By
-.\"O running \fBsudo\fR with the \fB\-v\fR option, a user can update the cached
-.\"O credentials without running a \fIcommand\fR.
-.\"O .PP
-セキュリティ・ポリシーは、一定時間内ならユーザが認証なしで \fBsudo\fR
+.if  n .ad l
+.SH 名前
+\fBsudo\fP, \fBsudoedit\fP \- コマンドを他のユーザとして実行する
+.SH 書式
+.HP 5n
+\fBsudo\fP \fB\-h\fP\ |\ \fB\-K\fP\ |\ \fB\-k\fP\ |\ \fB\-V\fP
+.PD 0
+.HP 5n
+\fBsudo\fP \fB\-v\fP [\fB\-AknS\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP] [\fB\-p\fP\ \fIprompt\fP] [\fB\-u\fP\ \fIuser\fP]
+.br
+.HP 5n
+\fBsudo\fP \fB\-l\fP [\fB\-AknS\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP] [\fB\-p\fP\ \fIprompt\fP] [\fB\-U\fP\ \fIuser\fP] [\fB\-u\fP\ \fIuser\fP] [\fIcommand\fP]
+.br
+.HP 5n
+\fBsudo\fP [\fB\-AbEHnPS\fP] [\fB\-C\fP\ \fInum\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP]
+[\fB\-p\fP\ \fIprompt\fP] [\fB\-r\fP\ \fIrole\fP] [\fB\-t\fP\ \fItype\fP] [\fB\-u\fP\ \fIuser\fP]
+[\fIVAR\fP=\fIvalue\fP] [\fB\-i\fP\ |\ \fB\-s\fP] [\fIcommand\fP]
+.br
+.HP 9n
+\fBsudoedit\fP [\fB\-AknS\fP] [\fB\-C\fP\ \fInum\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP]
+[\fB\-p\fP\ \fIprompt\fP] [\fB\-u\fP\ \fIuser\fP] \fIfile\ ...\fP
+.PD
+.SH 説明
+\fBsudo\fP を使用すると、許可されたユーザが、セキュリティポリシーの設定の範囲内で、
+スーパーユーザや他のユーザに変身して、\fIcommand\fP を実行することが可能になる。
+セキュリティポリシーへの問い合わせは、ユーザ名によって行われるが、
+そのユーザ名を決めるのは、\fBsudo\fP を実行するユーザの実ユーザ ID であって、
+実効ユーザ ID ではない。
+.PP
+\fBsudo\fP はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサポートしている。
+従って、サードパーティは、
+\fBsudo\fP フロントエンドとシームレスに協働するポリシー・プラグインや入出力ロギング・プラグインを、
+独自に開発して配布することができる。
+デフォルトのセキュリティポリシーは \fIsudoers\fP であり、その設定は、
+\fI/etc/sudoers\fP ファイル、もしくは LDAP を通して行われる。
+詳細については、「プラグイン」セクションを参照していただきたい。
+.PP
+セキュリティポリシーは、あるユーザに \fBsudo\fP を使用する権限があるかどうか、
+あるとすれば、どんな権限を持っているかを決定する。
+セキュリティポリシーは、ユーザにパスワードや他の認証方法を使って、
+本人であることを証明するように要求することができる。
+認証が必要な場合、ユーザが自分のパスワードを、
+設定によって変更可能な制限時間内に入力しないと、\fBsudo\fP は時間切れで終了する
+(訳注: \fBsudo\fP はデフォルトでは、root や変身対象ユーザのパスワードではなく、
+\fBsudo\fP を実行するユーザ本人のパスワードを要求する)。
+この制限時間はポリシー次第であり、 \fIsudoers\fP セキュリティポリシーの場合、
+パスワード・プロンプトがタイムアウトするまでのデフォルトの時間は、5 分間である。
+.PP
+セキュリティポリシーは、一定時間内ならユーザが認証なしで \fBsudo\fP
 を何度も実行できるように、認証情報の一時保存 (credential caching)
-をサポートしてもよい。\fIsudoers\fR ポリシーでは、\fIsudoers\fR\|(5)
-で変更されないかぎり、認証情報を \f(CW\*(C`5\*(C'\fR 分間保持する。
-ユーザは \fBsudo\fR に \fB\-v\fR を付けて実行することで、
-\&\fIcommand\fR を実行しないでも、保存された認証情報を更新することができる。
+をサポートしてもよい。\fIsudoers\fP ポリシーでは、sudoers(5)
+で変更されないかぎり、認証情報を 5 分間保持する。
+ユーザは \fBsudo\fP に \fB\-v\fP を付けて実行することで、
+\fIcommand\fP を実行しないでも、保存された認証情報を更新することができる。
 .PP
-.\"O When invoked as \fBsudoedit\fR, the \fB\-e\fR option (described below),
-.\"O is implied.
-.\"O .PP
-\&\fBsudoedit\fR というコマンド名で起動するのは、\fBsudo\fR に \fB-e\fR 
+\fBsudoedit\fP というコマンド名で起動するのは、\fBsudo\fP に \fB\-e\fP
 オプション (下記参照) を付けて実行するのと同じである。
 .PP
-.\"O Security policies may log successful and failed attempts to use
-.\"O \&\fBsudo\fR.  If an I/O plugin is configured, the running command's
-.\"O input and output may be logged as well.
-セキュリティ・ポリシーは、ユーザが \fBsudo\fR を使おうとして
-成功した場合も失敗した場合も、それをログに記録することができる。
-I/O プラグインが設定によって組み込まれている場合は、
-実行しているコマンドの入出力もログに残すことができる。
-.\"O .SH "OPTIONS"
-.SH "オプション"
-.IX Header "OPTIONS"
-.\"O \&\fBsudo\fR accepts the following command line options:
-\&\fBsudo\fR では以下のコマンドライン・オプションが使用できる。
-.IP "\-A" 12
-.IX Item "-A"
-.\"O Normally, if \fBsudo\fR requires a password, it will read it from the
-.\"O user's terminal.  If the \fB\-A\fR (\fIaskpass\fR) option is specified,
-.\"O a (possibly graphical) helper program is executed to read the user's
-.\"O password and output the password to the standard output.  If the
-.\"O \&\f(CW\*(C`SUDO_ASKPASS\*(C'\fR environment variable is set, it specifies the path
-.\"O to the helper program.  Otherwise, if \fI/etc/sudo.conf\fR
-.\"O contains a line specifying the askpass program, that value will be
-.\"O used.  For example:
+セキュリティポリシーは、ユーザが \fBsudo\fP
+を使おうとして成功した場合も失敗した場合も、それをログに記録することができる。
+入出力プラグインが設定されている場合は、
+\fBsudo\fP 経由で実行するコマンドの入出力もログに残すことができる。
+.PP
+オプションとして以下のものが使用できる。
+.TP  12n
+\fB\-A\fP, \fB\-\-askpass\fP
 通常 \fBsudo\fR がパスワードを要求するとき、
 パスワードはユーザが使用している端末から読み込まれる。
-\&\fB\-A\fR (\fIaskpass\fR) オプションを指定すると、
+\fB\-A\fP (\fIaskpass\fP) オプションを指定すると、
 ヘルパー・プログラム (グラフィカルなものでもよい)
 が実行され、ユーザのパスワードを読み込んで、それを標準出力に書き出す。
-環境変数 \f(CW\*(C`SUDO_ASKPASS\*(C'\fR が設定されているときは、
+環境変数 SUDO_ASKPASS が設定されているときは、
 それがヘルパー・プログラムのパスになる。それ以外の場合は、
-\fI/etc/sudo.conf\fR に askpass プログラムを指定している行が存在すれば、
+sudo.conf(5) に askpass プログラムを指定している行が存在すれば、
 その値が使用される。一例を挙げよう。
-.Sp
-.Vb 2
-.\"O \&    # Path to askpass helper program
-\&    # askpass ヘルパー・プログラムのパス
-\&    Path askpass /usr/X11R6/bin/ssh\-askpass
-.Ve
-.Sp
-.\"O If no askpass program is available, sudo will exit with an error.
-利用できる askpass プログラムがないと、\fBsudo\fR
-はエラーメッセージを出して、終了する。
-.if \n(BA \{\
-.IP "\-a \fItype\fR" 12
-.IX Item "-a type"
-.\"O The \fB\-a\fR (\fIauthentication type\fR) option causes \fBsudo\fR to use the
-.\"O specified authentication type when validating the user, as allowed
-.\"O by \fI/etc/login.conf\fR.  The system administrator may specify a list
-.\"O of sudo-specific authentication methods by adding an \*(L"auth-sudo\*(R"
-.\"O entry in \fI/etc/login.conf\fR.  This option is only available on systems
-.\"O that support \s-1BSD\s0 authentication.
-\&\fB\-a\fR (\fIauthentication type\fR) オプションを使うと、
-\&\fBsudo\fR はユーザの認証に、指定したタイプの認証方法を使用するようになる。
-ただし、その認証のタイプは \fI/etc/login.conf\fR
-で有効になっていなければならない。システム管理者は \fI/etc/login.conf\fR に
-\&\*(L"auth-sudo\*(R" 項目を追加することによって、
-\&\fBsudo\fR 専用の認証方法のリストを指定することができる。
-このオプションは \s-1BSD\s0 認証に対応したシステムでのみ有効である。
-\}
-.IP "\-b" 12
-.IX Item "-b"
-.\"O The \fB\-b\fR (\fIbackground\fR) option tells \fBsudo\fR to run the given
-.\"O command in the background.  Note that if you use the \fB\-b\fR
-.\"O option you cannot use shell job control to manipulate the process.
-.\"O Most interactive commands will fail to work properly in background
-.\"O mode.
-\&\fB\-b\fR (\fIbackground\fR) オプションを付けると、\fBsudo\fR
-は指定されたコマンドをバックグラウンドで実行する。
-\&\fB-b\fR オプションを使用すると、
-シェルのジョブ制御を使ってプロセスを操作できなくなるので、注意してほしい。
-バックグラウンドモードでは、対話的なコマンドのほとんどがまともに動かないだろう。
-.IP "\-C \fIfd\fR" 12
-.IX Item "-C fd"
-.\"O Normally, \fBsudo\fR will close all open file descriptors other than
-.\"O standard input, standard output and standard error.  The \fB\-C\fR
-.\"O (\fIclose from\fR) option allows the user to specify a starting point
-.\"O above the standard error (file descriptor three).  Values less than
-.\"O three are not permitted.  The security policy may restrict the
-.\"O user's ability to use the \fB\-C\fR option.  The \fIsudoers\fR policy only
-.\"O permits use of the \fB\-C\fR option when the administrator has enabled
-.\"O the \fIclosefrom_override\fR option.
-通常、\fBsudo\fR は、(コマンドを実行する前に) 標準入力、標準出力、
-標準エラーを除いて、
-開いているファイル・ディスクリプタをすべて閉じることになっている。
-\&\fB\-C\fR (\fIclose from\fR) オプションを使えば、
-標準エラーより番号が大きい (すなわち、ファイル・ディスクリプタ 3 以上の)
-どのファイル・ディスクリプタから閉じていくかを、ユーザが指定することができる。
-3 未満の値は指定できない。セキュリティ・ポリシーによっては、ユーザが
-\&\fB\-C\fR オプションを使用するのを制限していることがある。
-\&\fIsudoers\fR ポリシーが \fB\-C\fR オプションの使用を許可するのは、
-管理者が \fIclosefrom_override\fR オプションを有効にしているときのみである。
-.if \n(LC \{\
-.IP "\-c \fIclass\fR" 12
-.IX Item "-c class"
-.\"O The \fB\-c\fR (\fIclass\fR) option causes \fBsudo\fR to run the specified command
-.\"O with resources limited by the specified login class.  The \fIclass\fR
-.\"O argument can be either a class name as defined in \fI/etc/login.conf\fR,
-.\"O or a single '\-' character.  Specifying a \fIclass\fR of \f(CW\*(C`\-\*(C'\fR indicates
-.\"O that the command should be run restricted by the default login
-.\"O capabilities for the user the command is run as.  If the \fIclass\fR
-.\"O argument specifies an existing user class, the command must be run
-.\"O as root, or the \fBsudo\fR command must be run from a shell that is already
-.\"O root.  This option is only available on systems with \s-1BSD\s0 login classes.
-\&\fB\-c\fR (\fIclass\fR) オプションを付けると、その指定した
-login class のリソースの制限内で、\fBsudo\fR は指定されたコマンドを実行する。
-\&\fB-c\fR の引き数 \fIclass\fR に使うことができるのは、
-\&\fI/etc/login.conf\fR で定義された class 名か、一個の '\-' 文字である。
-\&\fIclass\fR に \f(CW\*(C`\-\*(C'\fR を指定すると、コマンドは実行されるとき、
-変身対象ユーザのデフォルトのログイン権限によって制限されることになる。
-引き数 \fIclass\fR が実在する user class を指している場合は、コマンドを
-root として実行するか、あるいはすでに root になったシェルで
-\&\fBsudo\fR コマンドを実行するかしなければならない。 
-このオプションは、\s-1BSD\s0 login class が存在するシステムでのみ有効である。
-\}
-.IP "\-E" 12
-.IX Item "-E"
-.\"O The \fB\-E\fR (\fIpreserve\fR \fIenvironment\fR) option indicates to the
-.\"O security policy that the user wishes to preserve their existing
-.\"O environment variables.  The security policy may return an error if
-.\"O the \fB\-E\fR option is specified and the user does not have permission
-.\"O to preserve the environment.
-\&\fB\-E\fR (\fIpreserve\fR \fIenvironment\fR) オプションを指定すると、
-現在の環境変数をそのまま保持するのがユーザの意向だと、
-セキュリティ・ポリシーに伝えることになる。
-\&\fB\-E\fR を指定しても、ユーザが環境を保持する許可を持っていない場合は、
-セキュリティ・ポリシーがたぶんエラーを返すだろう。
-.IP "\-e" 12
-.IX Item "-e"
-.\"O The \fB\-e\fR (\fIedit\fR) option indicates that, instead of running a
-.\"O command, the user wishes to edit one or more files.  In lieu of a
-.\"O command, the string \*(L"sudoedit\*(R" is used when consulting the security
-.\"O policy.  If the user is authorized by the policy, the following
-.\"O steps are taken:
-\&\fB\-e\fR (\fIedit\fR) オプションを指定するのは、
-ユーザがコマンドの実行ではなく、
-一個以上のファイルを編集しようとしていることを意味する。
-セキュリティ・ポリシーの参照では、
-コマンド名として文字列 \*(L"sudoedit\*(R" が使用される。
-セキュリティ・ポリシーによってユーザに権限があることが認められると、
-次のようなことが順番に行われる。
-.RS 12
-.IP "1." 4
-.\"O Temporary copies are made of the files to be edited with the owner
-.\"O set to the invoking user.
+.nf
+.sp
+.RS 16n
+# askpass ヘルパー・プログラムのパス
+Path askpass /usr/X11R6/bin/ssh\-askpass
+.RE
+.fi
+.RS 12n
+.sp
+利用できる askpass プログラムがないと、\fBsudo\fP はエラーメッセージを出して、
+終了する。
+.RE
+.TP  12n
+\fB\-a\fP \fItype\fP, \fB\-\-auth\-type\fP=\fItype\fP
+\fI/etc/login.conf\fP で使用可になっていれば、ユーザを認証する際に指定された
+BSD の認証方法 \fItype\fP を使用する。システム管理者は、\fI/etc/login.conf\fP
+に "auth\-sudo" エントリを追加することで、
+sudo 専用の認証方法のリストを指定することができる。このオプションは、
+BSD 認証をサポートするシステムでのみ使用できる。
+.TP  12n
+\fB\-b\fP, \fB\-\-background\fP
+指定されたコマンドをバックグラウンドで実行する。
+\fBsudo\fP 経由で起動したバックグラウンド・プロセスは、
+シェルのジョブ制御を使って操作できないことに注意していただきたい。
+バックグラウンドモードでは、ほとんどの対話的なコマンドがうまく動かないだろう。
+.TP  12n
+\fB\-C\fP \fInum\fP, \fB\-\-close\-from\fP=\fInum\fP
+コマンドを実行するに先立って、\fInum\fP 以上の番号のファイル・ディスクリプタをすべてクローズする。
+3 未満の値は指定できない。デフォルトでは、コマンドを実行する際に、
+\fBsudo\fP は、標準入力、標準出力、標準エラー以外の、
+オープンしているすべてのファイル・ディスクリプタを閉じることになっている。
+セキュリティポリシーは、ユーザによるこのオプションの使用を制限することができる。
+\fIsudoers\fP ポリシーが \fB\-C\fP オプションの使用を許可するのは、
+管理者が \fIclosefrom_override\fP オプションを有効にしているときのみである。
+.TP  12n
+\fB\-c\fP \fIclass\fP, \fB\-\-login\-class\fP=\fIclass\fP
+指定されたログインクラス \fIclass\fP のリソース・リミットとスケジューリング優先度で、
+コマンドを実行する。引き数 \fIclass\fP に使用できるのは、\fI/etc/login.conf\fP
+で定義されたクラス名か、単独の '\-' 文字のどちらかである。
+\fIclass\fP が \fB\-\fP ならば、変身対象ユーザのデフォルトのログインクラスが使用されることになる。
+それ以外の場合は、コマンドをスーパーユーザ (ユーザ ID が 0) として実行するか、
+あるいは、すでにスーパーユーザとして実行しているシェルから
+\fBsudo\fP を実行するかのどちらかでなければならない。
+実行されるコマンドがログイン・シェルである場合は、
+umask や環境変数といった \fI/etc/login.conf\fP の他の設定も、
+存在すれば適用されることになる。
+このオプションは BSD ログインクラスを採用しているシステムでのみ有効である。
+.TP  12n
+\fB\-E\fP, \fB\-\-preserve\-env\fP
+現在の環境変数をそのまま保持するのがユーザの意向だと、セキュリティポリシーに指示する。
+ユーザが環境を保持する許可を持っていない場合は、
+セキュリティポリシーがエラーを返すことになるだろう。
+.TP  12n
+\fB\-e\fP, \fB\-\-edit\fP
+何らかのコマンドを実行するのではなく、1 個以上のファイルを編集する。
+セキュリティポリシーの参照では、コマンドのパス名の代わりに
+"sudoedit" という文字列が使用される。
+セキュリティポリシーによってユーザに権限があることが認められると、
+次のことが順番に行われる。
+.RS 16n
+.TP  5n
+1.\&
 編集対象のファイルのコピーをテンポラリファイルとして作成する。
-テンポラリファイルのオーナーは \fBsudo\fR を起動したユーザである。
-.IP "2." 4
-.\"O The editor specified by the policy is run to edit the temporary files.
-.\"O The \fIsudoers\fR policy uses the \f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR and \f(CW\*(C`EDITOR\*(C'\fR
-.\"O environment variables (in that order).  If none of \f(CW\*(C`SUDO_EDITOR\*(C'\fR,
-.\"O \&\f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR are set, the first program listed in the
-.\"O \&\fIeditor\fR \fIsudoers\fR\|(5) option is used.
-セキュリティ・ポリシーによって指定されたエディタを起動して、
-テンポラリファイルを編集する。\fIsudoers\fR ポリシーでは、環境変数の
-\&\f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR,
-\&\f(CW\*(C`EDITOR\*(C'\fR を (この順番で) 使用する。
-\&\f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR, 
-\&\f(CW\*(C`EDITOR\*(C'\fR のどれも設定されていない場合は、\fIsudoers\fR\|(5)
-の \fIeditor\fR オプションにリストされたプログラムのうち、
+テンポラリファイルのオーナーは \fBsudo\fP を起動したユーザである。
+.TP  5n
+2.\&
+セキュリティポリシーによって指定されたエディタを起動して、
+テンポラリファイルを編集する。\fIsudoers\fP ポリシーでは、環境変数
+SUDO_EDITOR, VISUAL, EDITOR を (この順番で) 使用する。
+SUDO_EDITOR, VISUAL, EDITOR のどれも設定されていない場合は、
+sudoers(5) の \fIeditor\fP オプションにリストされたプログラムのうち、
 最初のものが使われる。
-.IP "3." 4
-.\"O If they have been modified, the temporary files are copied back to
-.\"O their original location and the temporary versions are removed.
-編集作業がすむと、テンポラリファイルをオリジナルのファイルに書き戻して、
+.TP  5n
+3.\&
+編集作業がすむと、テンポラリファイルをオリジナルのファイルにコピーして、
 テンポラリファイルを消去する。
 .RE
-.RS 12
-.Sp
-.\"O If the specified file does not exist, it will be created.  Note
-.\"O that unlike most commands run by \fBsudo\fR, the editor is run with
-.\"O the invoking user's environment unmodified.  If, for some reason,
-.\"O \&\fBsudo\fR is unable to update a file with its edited version, the
-.\"O user will receive a warning and the edited copy will remain in a
-.\"O temporary file.
+.RS 12n
+.sp
+編集する権限のないファイルを編集できないようにするため、
+セキュリティポリシーによって明示的に許可されていないかぎり、
+以下の制限が行われる。
+.RS 16n
+.TP  4n
+\fB\(bu\fP
+シンボリックリンクの編集は許可しない (バージョン 1.8.15 以上)。
+.TP  4n
+\fB\(bu\fP
+\fBsudo\fP を実行するのが root であるときを除いて、
+編集するファイルのパス中にシンボリックリンクがある場合、
+そのリンクの親ディレクトリが \fBsudo\fP を実行するユーザにとって書き込み可能ならば、
+リンクをたどらない (バージョン 1.8.16 以上)。
+.TP  4n
+\fB\(bu\fP
+\fBsudo\fP を実行するのが root であるときを除いて、
+ファイルが \fBsudo\fP を実行するユーザにとって書き込み可能なディレクトリにある場合、
+そのファイルの編集を許可しない (バージョン 1.8.16 以上)。
+.RE
+.sp
+ユーザがデバイス・スペシャルファイルの編集を許可されることは絶対にない。
+.sp
 指定されたファイルが存在しない場合は作成する。ここで注意すべきは、
-\&\fBsudo\fR によって実行されるコマンドの大部分と違って、
-\&\fB\-e\fR でエディタが実行されるときは、\fBsudo\fR
-を起動したユーザの環境が、変更を受けずにそのまま使われるということだ。
-何らかの理由で \fBsudo\fR が編集した内容でファイルを更新できないときは、
+\fBsudo\fP によって実行されるコマンドの大部分と違って、
+\fB\-e\fP でエディタが実行されるときは、\fBsudo\fP を起動したユーザの環境が、
+変更を受けずに使われるということだ。
+何らかの理由で \fBsudo\fP が編集した内容でファイルを更新できないときは、
 ユーザに警告を発し、編集した内容をテンポラリファイルに保存することになる。
 .RE
-.IP "\-g \fIgroup\fR" 12
-.IX Item "-g group"
-.\"O Normally, \fBsudo\fR runs a command with the primary group set to the
-.\"O one specified by the password database for the user the command is
-.\"O being run as (by default, root).  The \fB\-g\fR (\fIgroup\fR) option causes
-.\"O \&\fBsudo\fR to run the command with the primary group set to \fIgroup\fR
-.\"O instead.  To specify a \fIgid\fR instead of a \fIgroup name\fR, use
-.\"O \&\fI#gid\fR.  When running commands as a \fIgid\fR, many shells require
-.\"O that the '#' be escaped with a backslash ('\e').  If no \fB\-u\fR option
-.\"O is specified, the command will be run as the invoking user (not
-.\"O root).  In either case, the primary group will be set to \fIgroup\fR.
-通常 \fBsudo\fR はコマンドを実行するとき、プライマリ・グループを、
-パスワード・データベースで変身対象ユーザ (デフォルトでは root である)
-のプライマリ・グループとして指定されているグループに設定する。これに対して、
-\&\fB\-g\fR (\fIgroup\fR) オプションを使用すると、
-\&\fBsudo\fR はプライマリ・グループを \fIgroup\fR に設定して、
-コマンドを実行することになる。グループ名の代わりに \fIgid\fR を指定するときは、
-\&\fI#gid\fR という書き方をする。\fIgid\fR としてコマンドを実行する場合、
-多くのシェルでは '#' をバックスラッシュ ('\e')
-でエスケープしなければならない。
-なお、\fB\-u\fR オプションが同時に指定されていない場合、コマンドは
-(root としてではなく) \fBsudo\fR を起動したユーザの資格で実行される。
-いづれにしろ、プライマリ・グループが \fIgroup\fR
-に設定されることに変わりはない。
-(訳注: \fB\-g\fR オプションを使用するには、
-\&\fIsudoers\fR ポリシーの場合なら、\fIsudoers\fR ファイルのユーザ設定で、
+.TP  12n
+\fB\-g\fP \fIgroup\fP, \fB\-\-group\fP=\fIgroup\fP
+コマンドを実行するとき、
+プライマリ・グループをパスワード・データベースの変身対象ユーザの項目で指定されているものではなく、
+\fIgroup\fP に設定する。\fIgroup\fP は、グループ名でもよく、'#' 記号にグループ
+ID 番号 (GID) を続けたものでもよい (たとえば、GID 0 なら #0)。
+GID としてコマンドを実行する場合、ほとんどのシェルでは、
+\&'#' をバックスラッシュ ('\e') でエスケープする必要がある。
+なお、\fB\-u\fP オプションが指定されていない場合、コマンドは
+\fBsudo\fP を起動したユーザの資格で実行される。いづれにしろ、
+プライマリ・グループが \fIgroup\fP に設定されることに変わりはない。
+(訳注: \fB\-g\fP オプションを使用するには、
+\fIsudoers\fP ポリシーの場合なら、\fIsudoers\fP ファイルのユーザ設定で、
 変身対象となるグループを設定しておく必要がある。詳細については、
-\&\fIsudoers\fR\|(5) のマニュアルの該当個所を参照してほしい。)
-.IP "\-H" 12
-.IX Item "-H"
-.\"O The \fB\-H\fR (\fI\s-1HOME\s0\fR) option requests that the security policy set
-.\"O the \f(CW\*(C`HOME\*(C'\fR environment variable to the home directory of the target
-.\"O user (root by default) as specified by the password database.
-.\"O Depending on the policy, this may be the default behavior.
-\&\fB\-H\fR (\fI\s-1HOME\s0\fR) オプションを指定すると、
-セキュリティ・ポリシーは、環境変数 \f(CW\*(C`HOME\*(C'\fR
-を、パスワード・データベースで変身対象ユーザ (デフォルトでは root)
-のホームディレクトリとして指定されているディレクトリに設定することになる。
+sudoers(5) のマニュアルの該当個所を参照していただきたい。)
+.TP  12n
+\fB\-H\fP, \fB\-\-set\-home\fP
+HOME 環境変数を、パスワード・データベースの変身対象ユーザの項目で、
+ホームディレクトリとして指定されているものに設定するように、
+セキュリティポリシーに要求する。
 ポリシーによっては、それがデフォルトの動作になっていることもある。
-.IP "\-h" 12
-.IX Item "-h"
-.\"O The \fB\-h\fR (\fIhelp\fR) option causes \fBsudo\fR to print a short help message
-.\"O to the standard output and exit.
-\&\fB-h\fR (\fIhelp\fR) オプションを指定すると、
-\&\fBsudo\fR は簡単なヘルプメッセージを標準出力に表示して、終了する。
-.IP "\-i [command]" 12
-.IX Item "-i [command]"
-.\"O The \fB\-i\fR (\fIsimulate initial login\fR) option runs the shell specified
-.\"O by the password database entry of the target user as a login shell.
-.\"O This means that login-specific resource files such as \f(CW\*(C`.profile\*(C'\fR
-.\"O or \f(CW\*(C`.login\*(C'\fR will be read by the shell.  If a command is specified,
-.\"O it is passed to the shell for execution via the shell's \fB\-c\fR option.
-.\"O If no command is specified, an interactive shell is executed.
-.\"O \&\fBsudo\fR attempts to change to that user's home directory before
-.\"O running the shell.  The security policy shall initialize the
-.\"O environment to a minimal set of variables, similar to what is present
-.\"O when a user logs in.  The \fICommand Environment\fR section in the
-.\"O \&\fIsudoers\fR\|(5) manual documents how the \fB\-i\fR option affects the
-.\"O environment in which a command is run when the \fIsudoers\fR policy
-.\"O is in use.
-\&\fB\-i\fR (\fIsimulate initial login\fR) オプションを指定すると、
-パスワード・データベースの変身対象ユーザのエントリで指定されてているシェルが、
-ログイン・シェルとして実行される。すなわち、\f(CW\*(C`.profile\*(C'\fR や
-\&\f(CW\*(C`.login\*(C'\fR といった、ログイン用のリソースファイルが、
-シェルによって読み込まれるわけだ。コマンドを指定すると、
-それがシェルに渡され、シェルの  \fB\-c\fR オプションを使って実行される。
-コマンドを指定しない場合は、対話的シェルが起動されることになる。\fBsudo\fR は、
+.TP  12n
+\fB\-h\fP, \fB\-\-help\fP
+簡単なヘルプメッセージを標準出力に表示して、終了する。
+.TP  12n
+\fB\-h\fP \fIhost\fP, \fB\-\-host\fP=\fIhost\fP
+セキュリティポリシー・プラグインがリモート・コマンドをサポートしているなら、
+指定された \fIhost\fP でコマンドを実行する。
+\fIsudoers\fP プラグインは、現在のところ、
+リモート・コマンドの実行をサポートしていないことに注意していただきたい。
+このオプションを \fB\-l\fP オプションと一緒に使えば、
+リモート・ホストにおけるユーザの権限のリストを得ることができる。
+(訳注: このオプションについは、sudo_plugin(5) のマニュアルの
+"Remote command execution" セクションもご覧いただきたい。
+そちらの説明が詳しい。)
+.TP  12n
+\fB\-i\fP, \fB\-\-login\fP
+パスワード・データベースの変身対象ユーザの項目でログイン・シェルとして指定されているシェルを実行する。すなわち、
+\&\fI.profile\fP や \fI.login\fP といったログイン用のリソース・ファイルが、
+シェルによって読み込まれることになる。コマンドを指定すると、
+それがシェルに渡され、シェルの  \fB\-c\fP オプションを使って実行される。
+コマンドを指定しない場合は、対話的シェルが起動される。\fBsudo\fP は、
 シェルを実行する前に、変身対象ユーザのホームディレクトリに移動しようとする。
-セキュリティ・ポリシーは、環境変数が最小限になるように、すなわち、
-ユーザが普通にログインしたときの環境と同様になるように、
-環境を初期化すべきである。
-\&\fIsudoers\fR ポリシーを使用している場合に、
-\&\fB\-i\fR オプションがコマンドの実行環境にどんな影響を与えるかについては、
-\&\fIsudoers\fR\|(5) のマニュアルの「コマンド環境」セクションに説明がある。
-.IP "\-K" 12
-.IX Item "-K"
-.\"O The \fB\-K\fR (sure \fIkill\fR) option is like \fB\-k\fR except that it removes
-.\"O the user's cached credentials entirely and may not be used in
-.\"O conjunction with a command or other option.  This option does not
-.\"O require a password.  Not all security policies support credential
-.\"O caching.
-\&\fB\-K\fR (sure \fIkill\fR) オプションは \fB\-k\fR オプションに似ているが、
-ユーザの保存された認証情報を完全に消去してしまう点と、
-コマンドや他のオプションと組み合わせて使用できない点で異なっている。
-このオプションはパスワードを要求しない。
-すべてのセキュリティ・ポリシーが
+コマンドの実行は、ユーザが普通にログインしたときの環境とほぼ同じ環境で行われる。
+\fIsudoers\fP ポリシーを使用している場合に、
+\fB\-i\fP オプションがコマンドの実行環境にどんな影響を与えるかについては、
+sudoers(5) のマニュアルの「コマンド環境」セクションに説明がある。
+.TP  12n
+\fB\-K\fP, \fB\-\-remove\-timestamp\fP
+\fB\-k\fP オプションに似ているが、ユーザの保存された認証情報を完全に消去してしまう点と、
+コマンドや他のオプションと組み合わせて使えない点が異なっている。
+このオプションはパスワードを要求しない。すべてのセキュリティポリシーが、
 認証情報の一時保存をサポートしているわけではない。
-.IP "\-k [command]" 12
-.IX Item "-k [command]"
-.\"O When used alone, the \fB\-k\fR (\fIkill\fR) option to \fBsudo\fR invalidates
-.\"O the user's cached credentials.  The next time \fBsudo\fR is run a
-.\"O password will be required.  This option does not require a password
-.\"O and was added to allow a user to revoke \fBsudo\fR permissions from a
-.\"O \&.logout file.  Not all security policies support credential
-.\"O caching.
-\&\fB\-k\fR (\fIkill\fR) オプションを単独で使うと、
-\&\fBsudo\fR はユーザの保存された認証情報を無効にする。
-次回 \fBsudo\fR を実行するとき、パスワードが要求されることになるわけだ。
-このオプション自体はパスワードを必要としない。
-なお、このオプションが追加されたのは、ユーザが .logout ファイルで、\fBsudo\fR
+.TP  12n
+\fB\-k\fP, \fB\-\-reset\-timestamp\fP
+コマンドを伴わずに使用した場合は、ユーザの保存された認証情報を無効にする。
+言い換えると、次回 \fBsudo\fP を実行するときに、
+パスワードが要求されるということだ。このオプション自体は、
+パスワードを要求しない。このオプションが追加されたのは、
+ユーザが \fI.logout\fP ファイルで、\fBsudo\fP
 をパスワードなしで実行できる期間を終了させることができるようにするためである。
-すべてのセキュリティ・ポリシーが認証情報の一時保存をサポートしているわけではない。
-.Sp
-.\"O When used in conjunction with a command or an option that may require
-.\"O a password, the \fB\-k\fR option will cause \fBsudo\fR to ignore the user's
-.\"O cached credentials.  As a result, \fBsudo\fR will prompt for a password
-.\"O (if one is required by the security policy) and will not update the
-.\"O user's cached credentials.
-\&\fB\-k\fR オプションをコマンドや、
-パスワードを必要とするような他のオプションと組み合わせて使用すると、
-\&\fBsudo\fR はユーザの保存された認証情報を無視することになる。
-その結果、\fBsudo\fR は
-(セキュリティ・ポリシーでパスワードを要求するようになっているならば)
-プロンプトを出してパスワードを要求する。このとき、
-ユーザの保存された認証情報の更新は行わない。
-.IP "\-l[l] [\fIcommand\fR]" 12
-.IX Item "-l[l] [command]"
-.\"O If no \fIcommand\fR is specified, the \fB\-l\fR (\fIlist\fR) option will list
-.\"O the allowed (and forbidden) commands for the invoking user (or the
-.\"O user specified by the \fB\-U\fR option) on the current host.  If a
-.\"O \&\fIcommand\fR is specified and is permitted by the security policy,
-.\"O the fully-qualified path to the command is displayed along with any
-.\"O command line arguments.  If \fIcommand\fR is specified but not allowed,
-.\"O \&\fBsudo\fR will exit with a status value of 1.  If the \fB\-l\fR option
-.\"O is specified with an \fBl\fR argument (i.e. \fB\-ll\fR), or if \fB\-l\fR is
-.\"O specified multiple times, a longer list format is used.
-\&\fIcommand\fR を指定しない場合、\fB\-l\fR (\fIlist\fR) オプションは、
-\&\fBsudo\fR を実行しているユーザ (あるいは、\fB\-U\fR で指定したユーザ) が、
-現在ログインしているホストで許可されている (及び、禁じられている)
-コマンドを列挙する。\fIcommand\fR を指定した場合は、
-セキュリティ・ポリシーで許可されているコマンドならば、その絶対パスを表示する。
-指定する \fIcommand\fR に引数を付けると、それも一緒に表示される
-(訳注: セキュリティ・ポリシーで、許可するコマンドに引数まで指定している場合は、
-それにマッチする引数を \fB\-l\fR に続く \fIcommand\fR にも必ず付けなければならない)。
+.sp
+コマンドや、パスワードを必要とするような他のオプションと組み合わせて、
+このオプションを使用すると、
+\fBsudo\fP がユーザの保存された認証情報を無視することになる。
+その結果、\fBsudo\fP は (セキュリティポリシーがパスワードを要求するならば)、
+プロンプトを出して、パスワードを要求する。
+このとき、ユーザの保存された認証情報の更新は行われない。
+.sp
+すべてのセキュリティポリシーが、認証情報の一時保存をサポートしているわけではない。
+.TP  12n
+\fB\-l\fP, \fB\-\-list\fP
+コマンドを指定しない場合は、\fBsudo\fP を実行しているユーザ (あるいは、
+\fB\-U\fP オプションで指定したユーザ) が、現在ログインしているホストで許可されている
+(及び、禁じられている) コマンドのリストを表示する。
+このオプションを複数回指定すると、
+セキュリティポリシーが詳細な出力形式をサポートしていれば、
+長い方のリスト形式が使用される。
+.sp
+コマンドを指定した場合は、その実行がセキュリティポリシーによって許可されていれば、
+コマンドの絶対パスが表示される。
+コマンドラインでコマンドに引き数まで指定すると
+(訳注: その引き数が許可されていれば)、それも一緒に表示される。
 指定したコマンドが許可されていない場合は、
-\&\fBsudo\fR がステータス 1 で終了する。\fB\-l\fR オプションに
-\&\fBl\fR という引数を付けた場合や (すなわち \fB\-ll\fR)、
-\&\fB\-l\fR を複数回指定した場合は、長い方のリスト形式が使用される。
-.IP "\-n" 12
-.IX Item "-n"
-.\"O The \fB\-n\fR (\fInon-interactive\fR) option prevents \fBsudo\fR from prompting
-.\"O the user for a password.  If a password is required for the command
-.\"O to run, \fBsudo\fR will display an error messages and exit.
-\&\fB\-n\fR (\fInon-interactive\fR) オプションがあると、
-\&\fBsudo\fR は ユーザにパスワードを要求するプロンプトを出さない。
-実行するコマンドにパスワードが必要な場合、
-\&\fBsudo\fR はエラーメッセージを表示して、終了する。
-.IP "\-P" 12
-.IX Item "-P"
-.\"O The \fB\-P\fR (\fIpreserve\fR \fIgroup vector\fR) option causes \fBsudo\fR to
-.\"O preserve the invoking user's group vector unaltered.  By default,
-.\"O the \fIsudoers\fR policy will initialize the group vector to the list
-.\"O of groups the target user is in.  The real and effective group IDs,
-.\"O however, are still set to match the target user.
-\&\fB\-P\fR (\fIpreserve\fR \fIgroup vector\fR) オプションを指定すると、
-\&\fBsudo\fR は、\fBsudo\fR を実行するユーザが所属するグループのリストを、
-変更せずにそのまま使用する。\fIsudoers\fR ポリシーの場合、デフォルトでは、
-所属グループの初期値として、
-変身対象となるユーザが所属するグループのリストを設定するのである。とは言え、
-実 gid や 実効 gid が変身対象ユーザと同一になるようにセットされる点には、
-変わりがない。
-.IP "\-p \fIprompt\fR" 12
-.IX Item "-p prompt"
-.\"O The \fB\-p\fR (\fIprompt\fR) option allows you to override the default
-.\"O password prompt and use a custom one.  The following percent (`\f(CW\*(C`%\*(C'\fR')
-.\"O escapes are supported by the \fIsudoers\fR policy:
-\&\fB\-p\fR (\fIprompt\fR) オプションを使うと、
-デフォルトのパスワードプロンプトを変更して、好きな文句にすることができる。
-\&\fIsudoers\fR ポリシーでは以下のパーセント (`\f(CW\*(C`%\*(C'\fR')
-エスケープが使用できる。
-.RS 12
-.ie n .IP "%H" 4
-.el .IP "\f(CW%H\fR" 4
-.IX Item "%H"
-.\"O expanded to the host name including the domain name (on if
-.\"O the machine's host name is fully qualified or the \fIfqdn\fR option
-.\"O is set in \fIsudoers\fR\|(5))
+\fBsudo\fP はステータス 1 で終了することになる。
+.TP  12n
+\fB\-n\fP, \fB\-\-non\-interactive\fP
+プロンプトを出してユーザに入力を求めることを一切しない。
+コマンドを実行するのにパスワードが必要な場合、
+\fBsudo\fP はエラーメッセージを出して、終了することになる。
+.TP  12n
+\fB\-P\fP, \fB\-\-preserve\-groups\fP
+\fBsudo\fP を実行するユーザの所属グループのリストを、変更せずにそのまま使用する。
+デフォルトでは、\fIsudoers\fP ポリシーの場合、所属グループは初期化されて、
+変身対象ユーザが所属しているグループのリストが使われることになっているのである。
+とは言え、実グループ ID と実効グループ ID が、
+変身対象ユーザと同一になるようにセットされる点には変わりがない。
+.TP  12n
+\fB\-p\fP \fIprompt\fP, \fB\-\-prompt\fP=\fIprompt\fP
+パスワードプロンプトに好みの文字列を使用する。文字列には、
+エスケープシーケンスが使用できる。\fIsudoers\fP では、
+以下のパーセント ('%') エスケープシーケンスをサポートしている。
+.PP
+.RS 12n
+.PD 0
+.TP  4n
+%H
 ドメイン名を含むホスト名に展開される (マシンのホスト名が完全修飾名であるか、
-\&\fIsudoers\fR\|(5) で \fIfqdn\fR オプションがセットされている場合に有効)
-.ie n .IP "%h" 4
-.el .IP "\f(CW%h\fR" 4
-.IX Item "%h"
-.\"O expanded to the local host name without the domain name
+sudoers(5) で \fIfqdn\fP オプションがセットされている場合に有効)
+.PD
+.TP  4n
+%h
 ドメイン名なしのローカルホスト名に展開
-.ie n .IP "%p" 4
-.el .IP "\f(CW%p\fR" 4
-.IX Item "%p"
-.\"O expanded to the name of the user whose password is being requested
-.\"O (respects the \fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags in
-.\"O \&\fIsudoers\fR\|(5))
-パスワードを要求されるユーザ名に展開 (\fIsudoers\fR\|(5) の
-\&\fIrootpw\fR, \fItargetpw\fR, \fIrunaspw\fR フラグを尊重する)
-.ie n .IP "%U" 4
-.el .IP "\f(CW%U\fR" 4
-.IX Item "%U"
-.\"O expanded to the login name of the user the command will be run as
-.\"O (defaults to root unless the \f(CW\*(C`\-u\*(C'\fR option is also specified)
-変身対象になるユーザ (\f(CW\*(C`\-u\*(C'\fR
-オプションが同時に指定されていない場合は、root がデフォルト)
-のログイン名に展開される
-.ie n .IP "%u" 4
-.el .IP "\f(CW%u\fR" 4
-.IX Item "%u"
-.\"O expanded to the invoking user's login name
-\&\fBsudo\fR を起動するユーザのログイン名に展開される
-.ie n .IP "\*(C`%%\*(C'" 4
-.el .IP "\f(CW\*(C`%%\*(C'\fR" 4
-.IX Item "%%"
-.\"O two consecutive \f(CW\*(C`%\*(C'\fR characters are collapsed into a single \f(CW\*(C`%\*(C'\fR character
-連続した二つの \f(CW\*(C`%\*(C'\fR は、一個の \f(CW\*(C`%\*(C'\fR
-文字そのものを意味する
+.TP  4n
+%p
+パスワードを要求されているユーザ名に展開 (sudoers(5) の \fIrootpw\fP,
+\fItargetpw\fP, \fIrunaspw\fP フラグを尊重する)
+.TP  4n
+\&%U
+変身対象になるユーザ (\fB\-u\fP オプションが同時に指定されていないときは、root
+がデフォルト) のログイン名に展開される
+.TP  4n
+%u
+\fBsudo\fP を起動するユーザのログイン名に展開される
+.TP  4n
+%%
+連続する二つの '%' 文字は、1 個の '%' 文字そのものを意味する。
+.PP
+自家特製のプロンプトが、
+PAM をサポートしているシステムでシステムのパスワードプロンプトに置き替わるのは、
+\fIsudoers\fP で \fIpassprompt_override\fP フラグが無効になっていない場合である
+(訳注: sudoers(5) の passprompt_override の項も参照していただきたい)。
 .RE
-.RS 12
-.Sp
-.\"O The prompt specified by the \fB\-p\fR option will override the system
-.\"O password prompt on systems that support \s-1PAM\s0 unless the
-.\"O \&\fIpassprompt_override\fR flag is disabled in \fIsudoers\fR.
-\&\fB\-p\fR で指定したプロンプトが、\s-1PAM\s0
-をサポートしているシステムで、システムのパスワードプロンプトを上書きするのは、
-\&\fIsudoers\fR で \fIpassprompt_override\fR が有効になっている場合である
-(訳注: 実際にはもうすこし複雑なので、\fIsudoers\fR\|(5) の
-passprompt_override の項も参照してほしい)。
-.RE
-.if \n(SL \{\
-.IP "\-r \fIrole\fR" 12
-.IX Item "-r role"
-.\"O The \fB\-r\fR (\fIrole\fR) option causes the new (SELinux) security context to 
-.\"O have the role specified by \fIrole\fR.
-\&\fB\-r\fR (\fIrole\fR) オプションを使うと、(SELinux の)
-新しいセキュリティ・コンテキストが \fIrole\fR
-で指定されたロールを持つようになる。
-\}
-.IP "\-S" 12
-.IX Item "-S"
-.\"O The \fB\-S\fR (\fIstdin\fR) option causes \fBsudo\fR to read the password from
-.\"O the standard input instead of the terminal device.  The password must
-.\"O be followed by a newline character.
-\&\fB\-S\fR (\fIstdin\fR) オプションを指定すると、
-\&\fBsudo\fR はパスワードをターミナルデバイスからではなく、
-標準入力から読み込む。パスワードは末尾に改行を付けなければならない。
-.IP "\-s [command]" 12
-.IX Item "-s [command]"
-.\"O The \fB\-s\fR (\fIshell\fR) option runs the shell specified by the \fI\s-1SHELL\s0\fR
-.\"O environment variable if it is set or the shell as specified in the
-.\"O password database.  If a command is specified, it is passed to the
-.\"O shell for execution via the shell's \fB\-c\fR option.  If no command
-.\"O is specified, an interactive shell is executed.
-\&\fB\-s\fR (\fIshell\fR) は、環境変数 \fI\s-1SHELL\s0\fR が設定されていれば、
-そのシェルを、さもなければ、
-パスワード・データベースで指定されているシェルを実行する。
-コマンドが指定されている場合には、それをシェルに渡し、シェルの
-\&\fB\-c\fR オプションを通じて実行させる。
-コマンドが指定されていなければ、対話的シェルを開く。
-.if \n(SL \{\
-.IP "\-t \fItype\fR" 12
-.\"O .IX Item "-t type"
-.\"O The \fB\-t\fR (\fItype\fR) option causes the new (SELinux) security context to 
-.\"O have the type specified by \fItype\fR.  If no type is specified, the default
-.\"O type is derived from the specified role.
-\&\fB\-t\fR (\fItype\fR) オプションを使用すると、(SELinux の)
-新しい セキュリティ・コンテキストが \fItype\fR
-で指定されたタイプを持つようになる。
-type が指定されない場合は、デフォルトのタイプが、
-指定された role から導き出される。
-\}
-.IP "\-U \fIuser\fR" 12
-.IX Item "-U user"
-.\"O The \fB\-U\fR (\fIother user\fR) option is used in conjunction with the
-.\"O \&\fB\-l\fR option to specify the user whose privileges should be listed.
-.\"O The security policy may restrict listing other users' privileges.
-.\"O The \fIsudoers\fR policy only allows root or a user with the \f(CW\*(C`ALL\*(C'\fR
-.\"O privilege on the current host to use this option.
-\&\fB\-U\fR (\fIother user\fR) オプションは、\fB\-l\fR と組み合わせて使用し、
-誰の権限の一覧を表示するかを指定する。自分以外のユーザの権限の表示は、
-セキュリティ・ポリシーによって禁止されているかもしれない。
-\&\fIsudoers\fR ポリシーでこのオプションの使用が認められているのは、
-root ユーザを別にすると、現在使用中のホストで許可するコマンドに
-\&\f(CW\*(C`ALL\*(C'\fR が指定してあるユーザだけである。
-.IP "\-u \fIuser\fR" 12
-.IX Item "-u user"
-.\"O The \fB\-u\fR (\fIuser\fR) option causes \fBsudo\fR to run the specified
-.\"O command as a user other than \fIroot\fR.  To specify a \fIuid\fR instead
-.\"O of a \fIuser name\fR, use \fI#uid\fR.  When running commands as a \fIuid\fR,
-.\"O many shells require that the '#' be escaped with a backslash ('\e').
-.\"O Security policies may restrict \fIuid\fRs to those listed in the
-.\"O password database.  The \fIsudoers\fR policy allows \fIuid\fRs that are
-.\"O not in the password database as long as the \fItargetpw\fR option is
-.\"O not set.  Other security policies may not support this.
-\&\fB\-u\fR (\fIuser\fR) オプションを指定すると、\fBsudo\fR
-は指定されたコマンドを \fIroot\fR 以外のユーザとして実行する。
-ユーザ名の代わりに \fIuid\fR を指定するときは、\fI#uid\fR という書き方をする。
-多くのシェルでは、\fIuid\fR の資格でコマンドを実行するときは、
+.TP  12n
+\fB\-r\fP \fIrole\fP, \fB\-\-role\fP=\fIrole\fP
+指定された \fIrole\fP を含む
+SELinux のセキュリティ・コンテキストでコマンドを実行する。
+.TP  12n
+\fB\-S\fP, \fB\-\-stdin\fP
+プロンプトを標準エラーに表示するが、パスワードの読み込みは、
+ターミナルデバイスを使わずに、標準入力から行う。パスワードは、
+末尾に改行を付けなければならない。
+.TP  12n
+\fB\-s\fP, \fB\-\-shell\fP
+環境変数 SHELL が設定されていれば、そのシェルを、
+設定されていなければ、パスワード・データベースで
+\fBsudo\fP を起動するユーザのシェルとして指定されているシェルを実行する。
+コマンドが指定されている場合は、それをシェルに渡し、シェルの
+\fB\-c\fP オプションを使って実行する。コマンドが指定されていない場合は、
+対話的シェルを開く。
+.TP  12n
+\fB\-t\fP \fItype\fP, \fB\-\-type\fP=\fItype\fP
+指定された \fItype\fP を含む
+SELinux のセキュリティ・コンテキストでコマンドを実行する。
+\fItype\fP が指定されていない場合は、ロールからデフォルトのタイプを推測する。
+.TP  12n
+\fB\-U\fP \fIuser\fP, \fB\-\-other\-user\fP=\fIuser\fP
+\fBsudo\fP を実行しているユーザではなく、
+\fIuser\fP というユーザの権限の一覧を表示するために、
+\fB\-l\fP オプションと組み合わせて使用する。自分以外のユーザの権限の表示は、
+セキュリティポリシーによって禁止されているかもしれない。
+\fIsudoers\fP ポリシーでこのオプションの使用が認められているのは、
+root ユーザを別にすれば、現在使用中のホストで許可するコマンドに
+ALL が指定してあるユーザだけである。
+.TP  12n
+\fB\-u\fP \fIuser\fP, \fB\-\-user\fP=\fIuser\fP
+コマンドをデフォルトの変身対象ユーザ (通常は \fIroot\fP)
+以外のユーザとして実行する。\fIuser\fP に指定するのは、ユーザ名でもよく、
+\&'#' 記号を頭に付けたユーザ ID 番号 (UID) でもよい
+(たとえば、UID が 0 なら、#0 と指定する)。多くのシェルでは、
+UID の資格でコマンドを実行するには、
 \&'#' をバックスラッシュ ('\e') でエスケープしなければならない。
-セキュリティ・ポリシーによっては、使用できる \fIuid\fR
-をパスワード・データベースに記載されているものに限定していることもある。
-\&\fIsudoers\fR ポリシーでは、
-\&\fItargetpw\fR オプションが設定されていないかぎり、
-パスワード・データベースに存在しない \fIuid\fR も認めている。
-他のセキュリティ・ポリシーでは、これは許されないかもしれない。
-.IP "\-V" 12
-.IX Item "-V"
-.\"O The \fB\-V\fR (\fIversion\fR) option causes \fBsudo\fR to print its version
-.\"O string and the version string of the security policy plugin and any
-.\"O I/O plugins.  If the invoking user is already root the \fB\-V\fR option
-.\"O will display the arguments passed to configure when \fIsudo\fR was
-.\"O built and plugins may display more verbose information such as
-.\"O default options.
-\&\fB\-V\fR (\fIversion\fR) オプションを指定すると、
-\&\fBsudo\fR はそのバージョン文字列を、セキュリティ・ポリシー・プラグインや
-I/O プラグインのバージョン文字列とともに表示する。
-\&\fBsudo \-V\fR を実行するユーザがあらかじめ root になっている場合は、
-\&\fIsudo\fR がビルドされたときに configure
-スクリプトに渡された引数が表示される。また、プラグインについても、
+セキュリティポリシーによっては、使用できる UID
+をパスワード・データベースに登録されているものに限定していることもある。
+\fIsudoers\fP ポリシーでは、\fItargetpw\fP オプションが設定されていないかぎり、
+パスワード・データベースに存在しない UID も認めている。
+他のセキュリティポリシーでは、それは許されないかもしれない。
+.TP  12n
+\fB\-V\fP, \fB\-\-version\fP
+\fBsudo\fP のバージョン文字列を、セキュリティポリシー・プラグインや
+入出力プラグインのバージョン文字列とともに表示する。
+\fBsudo\fP を実行するユーザがあらかじめ root になっている場合は、
+\fBsudo\fP がビルドされたときに configure スクリプトに渡された引き数が表示される。
+プラグインについては、
 デフォルト・オプションのようなより詳細な情報が表示されるかもしれない。
-.IP "\-v" 12
-.IX Item "-v"
-.\"O When given the \fB\-v\fR (\fIvalidate\fR) option, \fBsudo\fR will update the
-.\"O user's cached credentials, authenticating the user's password if
-.\"O necessary.  For the \fIsudoers\fR plugin, this extends the \fBsudo\fR
-.\"O timeout for another \f(CW\*(C`5\*(C'\fR minutes (or whatever the timeout
-.\"O is set to in \fIsudoers\fR) but does not run a command.  Not all
-.\"O security policies support cached credentials.
-\&\fB\-v\fR (\fIvalidate\fR) オプションを指定すると、\fBsudo\fR は
+.TP  12n
+\fB\-v\fP, \fB\-\-validate\fP
 ユーザの保存された認証情報を更新する。このとき、必要ならば、
-パスワードによる認証を行う。\fIsudoers\fR プラグインでは、
-このオプションによって \fBsudo\fR のタイムアウト時間がもう
-\&\f(CW\*(C`5\*(C'\fR 分間 (あるいは、何分であれ、\fIsudoers\fR
-で設定されたタイムアウト時間) 伸びるが、
-このオプションがコマンドを実行することはない。
-すべてのセキュリティ・ポリシーが認証情報の一時保存に対応しているわけではない。
-.IP "\-\-" 12
-.\"O The \fB\-\-\fR option indicates that \fBsudo\fR should stop processing command
-.\"O line arguments.
-\&\fB\-\-\fR オプションがあると、
-\&\fBsudo\fR はそこでコマンドライン引き数の処理をやめる。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1"
-このほか、sudo-1.8.4 では使用できなくなくなったが、sudo-1.8.3 には \fB\-D\fR
-というオプションも存在した。ご参考のため挙げておくと、
-次のようなものである。
-.RS 8
-.IP "\-D \fIlevel\fR" 12
-.IX Item "-D level"
-\&\fBsudo\fR そのもの、及び \fBsudo\fR プラグインのデバッグを有効にする。
-\&\fIlevel\fR には 1 から 9 までの値を指定できる。
-.RE
-.PP
-.\"O Environment variables to be set for the command may also be passed
-.\"O on the command line in the form of \fB\s-1VAR\s0\fR=\fIvalue\fR, e.g.
-.\"O \&\fB\s-1LD_LIBRARY_PATH\s0\fR=\fI/usr/local/pkg/lib\fR.  Variables passed on the
-.\"O command line are subject to the same restrictions as normal environment
-.\"O variables with one important exception.  If the \fIsetenv\fR option
-.\"O is set in \fIsudoers\fR, the command to be run has the \f(CW\*(C`SETENV\*(C'\fR tag
-.\"O set or the command matched is \f(CW\*(C`ALL\*(C'\fR, the user may set variables
-.\"O that would otherwise be forbidden.  See \fIsudoers\fR\|(5) for more information.
-さらに、コマンドのためにセットしたい環境変数も、\fB\s-1VAR\s0\fR=\fIvalue\fR、
-たとえば \fB\s-1LD_LIBRARY_PATH\s0\fR=\fI/usr/local/pkg/lib\fR
-といった形でコマンドラインから渡すことができる。
-コマンドラインから渡される変数は、通常の環境変数と同じ制限の対象になるが、
-一つだけ重要な違いがある。\fIsudoers\fR で \fIsetenv\fR
-オプションが設定されているか、実行されるコマンドに
-\&\f(CW\*(C`SETENV\*(C'\fR タグがついているか、
-あるいは、マッチするコマンドが \f(CW\*(C`ALL\*(C'\fR である場合は、
-ユーザがほかの状況でなら禁じられているような変数をセットすることができるのだ。
-詳細については \fIsudoers\fR\|(5) を参照してほしい。
-.\"O .SH "PLUGINS"
-.SH "プラグイン"
-.IX Header "PLUGINS"
-.\"O Plugins are dynamically loaded based on the contents of the
-.\"O \&\fI/etc/sudo.conf\fR file.  If no \fI/etc/sudo.conf\fR
-.\"O file is present, or it contains no \f(CW\*(C`Plugin\*(C'\fR lines, \fBsudo\fR
-.\"O will use the traditional \fIsudoers\fR security policy and I/O logging,
-.\"O which corresponds to the following \fI/etc/sudo.conf\fR file.
-プラグインは \fI/etc/sudo.conf\fR の内容に基づいて、動的にロードされる。
-\&\fI/etc/sudo.conf\fR が存在しない場合や、存在しても
-\&\f(CW\*(C`Plugin\*(C'\fR の行がない場合は、
-\&\fBsudo\fR はこれまでどおり、
-\&\fIsudoers\fR のセキュリティ・ポリシーと I/O ロギングを使用する。
-それは、次のように \fI/etc/sudo.conf\fR ファイルに記述するのと同じことである。
-.PP
-.Vb 10
-\& #
-\& # Default /etc/sudo.conf file
-\& #
-.\"O \& # Format:
-\& # 書式:
-\& #   Plugin plugin_name plugin_path
-\& #   Path askpass /path/to/askpass
-\& #   Path noexec /path/to/noexec.so
-\& #   Debug sudo /var/log/sudo_debug all@warn
-\& #   Set disable_coredump true
-\& #
-.\"O \& # The plugin_path is relative to /usr/local/libexec unless
-.\"O \& #   fully qualified.
-.\"O \& # The plugin_name corresponds to a global symbol in the plugin
-.\"O \& #   that contains the plugin interface structure.
-\& # The plugin_path が絶対パスでない場合は、 /usr/local/libexec からの
-\& # 相対パスである。、
-\& # plugin_name は、プラグイン中の、プラグインのインターフェース構造を
-\& # 含むグローバルシンボルと同じものである。
-\& #
-.\"O \& Plugin policy_plugin sudoers.so
-.\"O \& Plugin io_plugin sudoers.so
-\& Plugin sudoers_policy sudoers.so
-\& Plugin sudoers_io sudoers.so
-.Ve
-.PP
-.\"O A \f(CW\*(C`Plugin\*(C'\fR line consists of the \f(CW\*(C`Plugin\*(C'\fR keyword, followed by the
-.\"O \&\fIsymbol_name\fR and the \fIpath\fR to the shared object containing the
-.\"O plugin.  The \fIsymbol_name\fR is the name of the \f(CW\*(C`struct policy_plugin\*(C'\fR
-.\"O or \f(CW\*(C`struct io_plugin\*(C'\fR in the plugin shared object.  The \fIpath\fR
-.\"O may be fully qualified or relative.  If not fully qualified it is
-.\"O relative to the \fI/usr/local/libexec\fR directory.  Any additional
-.\"O parameters after the \fIpath\fR are ignored.  Lines that don't begin
-.\"O with \f(CW\*(C`Plugin\*(C'\fR or \f(CW\*(C`Path\*(C'\fR are silently ignored
-\&\f(CW\*(C`Plugin\*(C'\fR 行は、キーワード \f(CW\*(C`Plugin\*(C'\fR に始まり、
-\&\fIsymbol_name\fR と \fIpath\fR が続く。
-\&\fIpath\fR は、プラグインを含む共有オブジェクト・ファイルへのパスである。
-\&\fIsymbol_name\fR はプラグイン共有オブジェクト中の
-\&\f(CW\*(C`policy_plugin\*(C'\fR 構造体や \f(CW\*(C`io_plugin\*(C'\fR
-構造体の名前である。 \fIpath\fR は絶対パスでも相対パスでもよい。
-相対パスの場合は、
-\&\fI/usr/local/libexec\fR ディレクトリを基点にした相対パスである。
-\&\fIpath\fR の後ろに他のパラメータを付けても、無視される。
-\&\f(CW\*(C`Plugin\*(C'\fR や \f(CW\*(C`Path\*(C'\fR で始まらない行は、
-ただ単に無視される。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote2"
-sudo-1.8.3 までは、上記の説明どおり、キーワードに \f(CW\*(C`Plugin\*(C'\fR と
-\&\f(CW\*(C`Path\*(C'\fR しか使用できなかった。
-.Sp
-sudo-1.8.4 以上では、上記の書式にもあるように、\f(CW\*(C`Debug\*(C'\fR や
-\&\f(CW\*(C`Set\*(C'\fR で始まる行も有効である。「デバッグ・フラグ」や
-「セキュリティに関する注意点」セクションも参照していただきたい。
-.Sp
-また、sudo-1.8.5 以上では、\fIpath\fR の後ろにパラメータを続けて書くことで
-(複数個あるときは空白で区切る)、
-それをオプションとしてプラグインに渡すことが可能になっている。
-たとえば、以下のようにだ。
-.Sp
-\&  Plugin sudoers_policy sudoers.so sudoers_file=/etc/sudoers sudoers_uid=0 sudoers_gid=0 sudoers_mode=0440
-.PP
-.\"O For more information, see the \fIsudo_plugin\fR\|(8) manual.
-詳細については、\fIsudo_plugin\fR\|(8) のマニュアルをご覧になること。
-.\"O .SH "PATHS"
-.SH "パス"
-.IX Header "PATHS"
-.\"O A \f(CW\*(C`Path\*(C'\fR line consists of the \f(CW\*(C`Path\*(C'\fR keyword, followed by the
-.\"O name of the path to set and its value.  E.g.
-\&\f(CW\*(C`Path\*(C'\fR 行は、キーワード \f(CW\*(C`Path\*(C'\fR に始まり、
-設定するパスの名前とその値が続く。一例を挙げる。
-.PP
-.Vb 2
-\& Path noexec /usr/local/libexec/sudo_noexec.so
-\& Path askpass /usr/X11R6/bin/ssh\-askpass
-.Ve
-.PP
-.\"O The following plugin-agnostic paths may be set in the
-.\"O \&\fI/etc/sudo.conf\fR file.
-次のようなプラグインではないプログラムやライブラリのパスを
-\&\fI/etc/sudo.conf\fR ファイルで設定することができる。
-.IP "askpass" 16
-.IX Item "askpass"
-.\"O The fully qualified path to a helper program used to read the user's
-.\"O password when no terminal is available.  This may be the case when
-.\"O \&\fBsudo\fR is executed from a graphical (as opposed to text-based)
-.\"O application.  The program specified by \fIaskpass\fR should display
-.\"O the argument passed to it as the prompt and write the user's password
-.\"O to the standard output.  The value of \fIaskpass\fR may be overridden
-.\"O by the \f(CW\*(C`SUDO_ASKPASS\*(C'\fR environment variable.
-端末が利用できないときに、
-ユーザのパスワードを読み込むのに使用するヘルパー・プログラムの絶対パス。
-たとえば、 \fBsudo\fR がグラフィカルな (つまり、テキストベースではない)
-アプリケーションから実行される場合がこれに当たる。
-\&\fIaskpass\fR で指定されたプログラムは、
-自分に渡された引数をプロンプトとして表示し、
-ユーザのパスワードを標準出力に書き出すべきである。
-\&\fIaskpass\fR の値は、環境変数
-\&\f(CW\*(C`SUDO_ASKPASS\*(C'\fR によって上書きすることができる。
-.IP "noexec" 16
-.IX Item "noexec"
-.\"O The fully-qualified path to a shared library containing dummy
-.\"O versions of the \fIexecv()\fR, \fIexecve()\fR and \fIfexecve()\fR library functions
-.\"O that just return an error.  This is used to implement the \fInoexec\fR
-.\"O functionality on systems that support \f(CW\*(C`LD_PRELOAD\*(C'\fR or its equivalent.
-.\"O Defaults to \fI/usr/local/libexec/sudo_noexec.so\fR.
-ライブラリ関数 \fIexecv()\fR, \fIexecve()\fR, \fIfexecve()\fR のダミー版
-(単にエラーを返すだけの関数) が入っている共有ライブラリの絶対パス。
-これは \f(CW\*(C`LD_PRELOAD\*(C'\fR
-やそれに相当するものをサポートしているシステムで
-\&\fInoexec\fR 機能を実現するために使用される。
-デフォルトでは  \fI/usr/local/libexec/sudo_noexec.so\fR になっている。
-.\"O .SH "DEBUG FLAGS"
-.SH "デバッグ・フラグ (sudo-1.8.4 の新機能)"
-.IX Header "DEBUG FLAGS"
-.\"O \&\fBsudo\fR versions 1.8.4 and higher support a flexible debugging
-.\"O framework that can help track down what \fBsudo\fR is doing internally
-.\"O if there is a problem.
-.\"O .PP
-バージョン 1.8.4 以上の \fBsudo\fR は、
-デバッグのための柔軟な枠組みに対応しており、
-問題が発生したとき、\fBsudo\fR の内部で何が起きているかを突き止めるために、
-それを利用することができる。
-.PP
-.\"O A \f(CW\*(C`Debug\*(C'\fR line consists of the \f(CW\*(C`Debug\*(C'\fR keyword, followed by the
-.\"O name of the program to debug (\fBsudo\fR, \fBvisudo\fR, \fBsudoreplay\fR),
-.\"O the debug file name and a comma-separated list of debug flags.
-.\"O The debug flag syntax used by \fBsudo\fR and the \fIsudoers\fR plugin is
-.\"O \&\fIsubsystem\fR@\fIpriority\fR but the plugin is free to use a different
-.\"O format so long as it does not include a command \f(CW\*(C`,\*(C'\fR.
-.\"O .PP
-\&\f(CW\*(C`Debug\*(C'\fR 行の構成は、\f(CW\*(C`Debug\*(C'\fR
-というキーワードに始まり、それに、デバッグ対象のプログラム名
-(\fBsudo\fR, \fBvisudo\fR, \fBsudoreplay\fR) とデバッグファイル名が続き、
-最後にコンマで区切ったデバッグ・フラグのリストが来るという形になっている
-(訳注: \f(CW\*(C`Debug\*(C'\fR 行も \fI/etc/sudo.conf\fR に記載する)。
-デバッグフラグのシンタクスは、\&\fBsudo\fR と \fIsudoers\fR プラグインでは、
-\&\fIsubsystem\fR@\fIpriority\fR という書式を用いるが、
-「\f(CW\*(C`,\*(C'\fR」というコマンドを含まないかぎり、
-プラグインが別の書式を使っても構わない。
-.PP
-\"O For instance:
-.\"O .PP
-一例を挙げよう。
-.PP
-.Vb 1
-\& Debug sudo /var/log/sudo_debug all@warn,plugin@info
-.Ve
-.PP
-.\"O would log all debugging statements at the \fIwarn\fR level and higher
-.\"O in addition to those at the \fIinfo\fR level for the plugin subsystem.
-.\"O .PP
-上記のように指定すれば、\fIwarn\fR レベル以上のすべてのデバッグメッセージを
-ログに記録することになる。さらに、plugin サブシステムに関しては、
-\&\fIinfo\fR レベルのメッセージも記録する。 
-.PP
-.\"O Currently, only one \f(CW\*(C`Debug\*(C'\fR entry per program is supported.  The
-.\"O \&\f(CW\*(C`sudo\*(C'\fR \f(CW\*(C`Debug\*(C'\fR entry is shared by the \fBsudo\fR front end, \fBsudoedit\fR
-.\"O and the plugins.  A future release may add support for per-plugin
-.\"O \&\f(CW\*(C`Debug\*(C'\fR lines and/or support for multiple debugging files for a
-.\"O single program.
-.\"O .PP
-現在のところ、一プログラムあたり一行の \f(CW\*(C`Debug\*(C'\fR
-エントリしか使用できない。
-プログラム名が \f(CW\*(C`sudo\*(C'\fR の \f(CW\*(C`Debug\*(C'\fR 行は、
-\&\fBsudo\fR フロントエンド、\fBsudoedit\fR、及び \fBsudo\fR
-のプラグインによって共有される。将来のリリースでは、プラグインごとの 
-\&\f(CW\*(C`Debug\*(C'\fR 行をサポートするかもしれない。
-また、一つのプログラムに対する複数のデバッグファイルをサポートするかもしれない。
-.PP
-.\"O The priorities used by the \fBsudo\fR front end, in order of decreasing
-.\"O severity, are: \fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR,
-.\"O \&\fItrace\fR and \fIdebug\fR.  Each priority, when specified, also includes
-.\"O all priorities higher than it.  For example, a priority of \fInotice\fR
-.\"O would include debug messages logged at \fInotice\fR and higher.
-.\"O .PP
-\&\fBsudo\fR フロントエンドが使用する priority (重大度) を
-深刻なものから挙げると、\fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR,
-\&\fIdiag\fR, \fIinfo\fR, \fItrace\fR, \fIdebug\fR である。
-ある  priority を指定すると、
-それよりも深刻なすべての priority も同時に指定したことになる。
-たとえば、\fInotice\fR という priority を指定すれば、 \fInotice\fR
-レベル以上のデバッグメッセージがログに記録されるわけである。
-.PP
-.\"O The following subsystems are used by \fBsudo\fR:
-\&\fBsudo\fR では以下のサブシステムが使用できる。
-.IP "\fIall\fR" 10
-.IX Item "all"
-.\"O matches every subsystem
-あらゆるサブシステムにマッチする
-.IP "\fIargs\fR" 10
-.IX Item "args"
-.\"O command line argument processing
-コマンドライン引数の処理
-.IP "\fIconv\fR" 10
-.IX Item "conv"
-.\"O user conversation
-ユーザとのやりとり
-.IP "\fIedit\fR" 10
-.IX Item "edit"
-.\"O sudoedit
-sudoedit
-.IP "\fIexec\fR" 10
-.IX Item "exec"
-.\"O command execution
-コマンドの実行
-.IP "\fImain\fR" 10
-.IX Item "main"
-.\"O \&\fBsudo\fR main function
-\&\fBsudo\fR のメイン関数
-.IP "\fInetif\fR" 10
-.IX Item "netif"
-.\"O network interface handling
-ネットワーク・インターフェースの取扱い
-.IP "\fIpcomm\fR" 10
-.IX Item "pcomm"
-.\"O communication with the plugin
-プラグインとのやりとり
-.IP "\fIplugin\fR" 10
-.IX Item "plugin"
-.\"O plugin configuration
-プラグインの設定
-.IP "\fIpty\fR" 10
-.IX Item "pty"
-.\"O pseudo-tty related code
-擬似 tty に関連したコード
-.IP "\fIselinux\fR" 10
-.IX Item "selinux"
-.\"O SELinux-specific handling
-SELinux に特有の取扱い
-.IP "\fIutil\fR" 10
-.IX Item "util"
-.\"O utility functions
-ユーティリティ関数群
-.IP "\fIutmp\fR" 10
-.IX Item "utmp"
-.\"O utmp handling
-utmp の取扱い
-.\"O .SH "RETURN VALUES"
-.SH "返り値"
-.IX Header "RETURN VALUES"
-.\"O Upon successful execution of a program, the exit status from \fBsudo\fR
-.\"O will simply be the exit status of the program that was executed.
-プログラムの実行に成功した場合、\fBsudo\fR が返す終了ステータスは、
-実行したプログラムの終了ステータスそのものである。
-.PP
-.\"O Otherwise, \fBsudo\fR exits with a value of 1 if there is a
-.\"O configuration/permission problem or if \fBsudo\fR cannot execute the
-.\"O given command.  In the latter case the error string is printed to
-.\"O the standard error.  If \fBsudo\fR cannot \fIstat\fR\|(2) one or more entries
-.\"O in the user's \f(CW\*(C`PATH\*(C'\fR, an error is printed on stderr.  (If the
-.\"O directory does not exist or if it is not really a directory, the
-.\"O entry is ignored and no error is printed.)  This should not happen
-.\"O under normal circumstances.  The most common reason for \fIstat\fR\|(2)
-.\"O to return \*(L"permission denied\*(R" is if you are running an automounter
-.\"O and one of the directories in your \f(CW\*(C`PATH\*(C'\fR is on a machine that is
-.\"O currently unreachable.
-そうでない場合、設定やパーミッションに問題があったり、
-\&\fBsudo\fR が指定されたコマンドを実行できなかったりしたときは、
-\&\fBsudo\fR は返り値 1 で終了する。
-後者の場合は、エラーメッセージが標準エラーに表示される。
-また、\fBsudo\fR がユーザの \f(CW\*(C`PATH\*(C'\fR
-にある一つ以上のエントリを \fIstat\fR\|(2) できなかったときも、
-エラーが標準エラーに出力される (ただし、そのディレクトリが存在しなかったり、
-実際にはディレクトリでなかったりした場合は、
-そのエントリは無視され、エラーは表示されない)。そうしたことは、
-正常な環境では起きないはずのことである。\fIstat\fR\|(2) が
-\&\*(L"permission denied\*(R" を返す理由で一番よくあるのは、
-ユーザーがオートマウントを使用していて、\f(CW\*(C`PATH\*(C'\fR
-にあるディレクトリの一つが目下到達不可能なマシンにある場合だ。
-.\"O .SH "SECURITY NOTES"
-.SH "セキュリティに関する注意点"
-.IX Header "SECURITY NOTES"
-.\"O \&\fBsudo\fR tries to be safe when executing external commands.
-\&\fBsudo\fR は外部のコマンドをできるだけ安全に実行しようとする。
-.PP
-.\"O To prevent command spoofing, \fBsudo\fR checks \*(L".\*(R" and "" (both denoting
-.\"O current directory) last when searching for a command in the user's
-.\"O \&\s-1PATH\s0 (if one or both are in the \s-1PATH\s0).  Note, however, that the
-.\"O actual \f(CW\*(C`PATH\*(C'\fR environment variable is \fInot\fR modified and is passed
-.\"O unchanged to the program that \fBsudo\fR executes.
-偽コマンドの実行 (command spoofing) を防止するため、
-\&\fBsudo\fR はコマンドを捜してユーザの \s-1PATH\s0 を検索する際に、
-\&\*(L".\*(R" と "" (どちらもカレントディレクトリを意味する) を最後に調べる
-(そのどちらか、あるいは両方が \s-1PATH\s0 中に存在すればだが)。
-とは言え、環境変数 \f(CW\*(C`PATH\*(C'\fR そのものは変更されずに、
-そのまま \fBsudo\fR が実行するプログラムに渡されることに注意してほしい。
-.PP
-.\"O Please note that \fBsudo\fR will normally only log the command it
-.\"O explicitly runs.  If a user runs a command such as \f(CW\*(C`sudo su\*(C'\fR or
-.\"O \&\f(CW\*(C`sudo sh\*(C'\fR, subsequent commands run from that shell are not subject
-.\"O to \fBsudo\fR's security policy.  The same is true for commands that
-.\"O offer shell escapes (including most editors).  If I/O logging is
-.\"O enabled, subsequent commands will have their input and/or output
-.\"O logged, but there will not be traditional logs for those commands.
-.\"O Because of this, care must be taken when giving users access to
-.\"O commands via \fBsudo\fR to verify that the command does not inadvertently
-.\"O give the user an effective root shell.  For more information, please
-.\"O see the \f(CW\*(C`PREVENTING SHELL ESCAPES\*(C'\fR section in \fIsudoers\fR\|(5).
-.\"O .PP
-\&\fBsudo\fR は通常、
-自分が明示的に実行したコマンドしかログに記録しないことに気を付けてほしい。
-ユーザが \f(CW\*(C`sudo su\*(C'\fR や \f(CW\*(C`sudo sh\*(C'\fR
-といったコマンドを実行した場合、そのシェルから続いて実行されるコマンドは
-\&\fBsudo\fR のセキュリティ・ポリシーの対象にならない。
-シェル・エスケープを提供するコマンドについても (たいていのエディタが
-それに含まれる) 同じことが言える。
-確かに、I/O ロギングが有効になっている場合は、
-シェルから続いて実行されるコマンドも、その入力や出力を記録されることになるが、
-従来からあるログに記録されるわけではないのである。
-こうしたことから、ユーザに \fBsudo\fR 経由でコマンドの使用を許すときは、
-そのコマンドが事実上ルート・シェルをうっかりユーザに与えていないかを、
-念には念を入れて確認しなければならない。もっと詳しいことが知りたかったら、
-\&\fIsudoers\fR\|(5) の「シェル・エスケープを防止する」
-のセクションを御覧になるとよい。
+ユーザの認証を行う。\fIsudoers\fP プラグインでは、このオプションによって
+\fBsudo\fP のタイムアウト時間がもう 5 分間 (これがデフォルトのタイムアウト時間)
+伸びるが、このオプションがコマンドを実行することはない。
+すべてのセキュリティポリシーが認証情報の一時保存に対応しているわけではない。
+.TP  12n
+\fB\-\-\fP
+\fB\-\-\fP オプションがあると、
+\fBsudo\fP はそこでコマンドライン引き数の処理をやめる。
+.PP
+さらに、コマンドのために設定したい環境変数も、\fIVAR\fP=\fIvalue\fP、たとえば
+LD_LIBRARY_PATH=\fI/usr/local/pkg/lib\fP
+といった形でコマンドラインで渡すことができる。コマンドラインで渡す環境変数は、
+セキュリティポリシー・プラグインによって課される制限の対象になる。
+\fIsudoers\fP ポリシーの場合、コマンドラインで渡される環境変数は、
+通常の環境変数と同じ制限の対象になるが、一つだけ重要な相違がある。
+\fIsudoers\fP で \fIsetenv\fP オプションが設定されているか、実行するコマンドに
+SETENV タグが付いているか、あるいは、マッチするコマンドが ALL である場合は、
+ユーザは他の状況なら禁じられているような環境変数を設定することができるのだ。
+詳細については、sudoers(5) のマニュアルを参照していただきたい。
+.SH コマンドの実行
+\fBsudo\fP がコマンドを実行するとき、
+セキュリティポリシーによってコマンドの実行環境が設定される。たいていの場合、
+実ユーザ、実効ユーザ、実グループ、実効グループ、及びその ID 番号が、変身対象ユーザの、
+パスワード・データベースに記載されているものと同一になるようにセットされる。
+所属グループのリストも、(\fB\-P\fP オプションが指定されていないかぎり)
+グループ・データベースに基づいて、初期化される。
+.PP
+セキュリティポリシーは、以下のパラメータを設定することができる。
+.TP  4n
+\fB\(bu\fP
+実ユーザ ID と実効ユーザ ID
+.TP  4n
+\fB\(bu\fP
+実グループ ID と実効グループ ID
+.TP  4n
+\fB\(bu\fP
+補助グループ ID
+.TP  4n
+\fB\(bu\fP
+環境のリスト
+.TP  4n
+\fB\(bu\fP
+カレント・ワーキング・ディレクトリ
+.TP  4n
+\fB\(bu\fP
+ファイル作成時のモード・マスク (umask)
+.TP  4n
+\fB\(bu\fP
+SELinux の role と type
+.TP  4n
+\fB\(bu\fP
+Solaris の project
+.TP  4n
+\fB\(bu\fP
+Solaris の privilege
+.TP  4n
+\fB\(bu\fP
+BSD のログインクラス (login class)
+.TP  4n
+\fB\(bu\fP
+スケジューリング優先度 (nice value とも言う)
+.SS プロセス・モデル
+\fBsudo\fP は、コマンドを実行するとき、まず fork(2) を呼び、
+実行環境を上記のように設定してから、子プロセスで execve システムコールを呼び出す。
+メインの \fBsudo\fP プロセスは、コマンドが完了するまで wait し、完了したら、
+コマンドの終了ステータスをセキュリティポリシーの close 関数に渡してから、
+終了する。入出力ロギング・プラグインが設定されている場合や、
+セキュリティポリシーが明示的にそれを要求している場合は、
+擬似端末 ("pty") が新規に作成され、二つ目の \fBsudo\fP プロセスが、
+既に存在しているユーザの pty と、コマンドがそこで実行されている新しい pty との間で、
+ジョブ制御シグナルを中継するために使用される。
+この二つ目の \fBsudo\fP プロセスによって、たとえば、
+コマンドのサスペンドやレジュームといったことが可能になるのである。
+この仕組みがなければ、コマンドは、POSIX で "orphaned process group"
+と言われる状態に陥り、どんなジョブ制御シグナルも受け取れないことになってしまうだろう。
+なお、特殊ケースとして次のことがある。ポリシー・プラグインが
+close 関数を定義していず、しかも、pty が要求されていない場合は、
+\fBsudo\fP は fork(2) を最初に呼ぶことをせず、直接コマンドを実行する。
+\fIsudoers\fP ポリシー・プラグインで close 関数が定義されることになるのは、
+入出力ロギングが有効か、pty が要求されているか、\fIpam_session\fP または
+\fIpam_setcred\fP が有効な場合だけである。PAM を使用しているシステムでは、
+デフォルトで \fIpam_session\fP と \fIpam_setcred\fP
+が有効になることに注意していただきたい。
+(訳注: 上記の「特殊ケースとして」以下についてだが、最近の \fBsudo\fP では、
+\fIsudoers\fP ポリシーにおける \fIpam_session\fP や \fIpam_setcred\fP
+の有効/無効に関係なく、pty が要求されていない場合は、
+fork せずに直接コマンドを実行するようである。)
+.SS シグナルの処理
+コマンドが \fBsudo\fP プロセスの子プロセスとして実行されているとき、
+\fBsudo\fP は自分が受け取ったシグナルをそのコマンドに中継する。
+ただし、SIGINT や SIGQUIT シグナルが中継されるのは、
+そのコマンドが新たに開いた pty で実行されているときか、
+シグナルがカーネルではなく、ユーザ・プロセスによって送出されたときだけである。
+そうなっていることで、ユーザが control\-C を入力するたびに、
+コマンドが SIGINT シグナルを二重に受け取らないようにしているのだ。
+SIGSTOP や SIGKILL のようないくつかのシグナルは、
+捕獲できないので、コマンドに中継されることもない。
+だから、\fBsudo\fP によって実行されているコマンドをサスペンドしたかったら、
+原則として、SIGSTOP ではなく、SIGTSTP コマンドを使用するべきである。
+.PP
+\fBsudo\fP は原則として、自分が受け取ったシグナルを子プロセスに中継するわけだが、
+自分が実行しているコマンドから来たシグナルは、中継しないという例外がある。
+コマンドが意図に反して自分自身を殺してしまわないようにしているのだ。
+システムによっては、reboot(8) コマンドが、システムをリブートする前に、
+自分自身を除くすべてのノン・システム・プロセスに SIGTERM を送るものがある。
+そうした場合も、中継の抑制があるため、\fBsudo\fP は自分が受け取った
+SIGTERM シグナルを reboot(8) に送り返さない。もし送り返すようになっていたら、
+システムが実際にリブートする前に reboot(8) が終了して、
+システムがシングルユーザ・モードによく似た半分死んだ状態 (half\-dead state)
+に陥ってしまうだろう。とは言え、注意していただきたいが、
+この中継の抑制が行われるのは、\fBsudo\fP によって直接実行されるコマンドに対してのみであり、
+そのコマンドが生成するかもしれない他のどんなプロセスに対しても当てはまらない。
+それ故、reboot(8) や shutdown(8) を呼び出すスクリプトを
+\fBsudo\fP 経由で実行すると、システムがそうしたわけのわからない状態に陥ることがある。
+reboot(8) や shutdown(8) の実行に \fBexec\fP() ファミリーの関数ではなく、
+\fBsystem\fP() 関数を使用していると、
+(\fBsystem\fP() は、呼び出しプロセスとコマンドの間にシェルを挟むため)
+そうしたことが起こりかねないのだ。
+.PP
+入出力ロギング・プラグインがロードされていない場合に、
+ポリシー・プラグインが \fBclose\fP() 関数を定義してもいず、
+コマンドのタイムアウトを設定していることもなく、コマンドを新たに開いた pty
+で実行することを要求してもいなかったならば、\fBsudo\fP は、
+コマンドを子プロセスとしてではなく、直接実行するかもしれない。
+.SS プラグイン
+プラグインは、sudo.conf(5) ファイルの Plugin 命令 (directive)
+で指定することができる。プラグインは、(システムがサポートしていれば)
+動的な共有オブジェクト (dynamic shared object) としてロードすることもできるし、
+また、\fBsudo\fP のバイナリに直接組み込むこともできる。sudo.conf(5)
+ファイルが存在しない場合や、sudo.conf(5) ファイルに Plugin の行がない場合は、
+\fBsudo\fP は従来どおり、\fIsudoers\fP のセキュリティポリシーと入出力ロギングを使用することになる。
+\fI/etc/sudo.conf\fP ファイルの詳細については、
+sudo.conf(5) のマニュアルを参照していただきたい。
+\fBsudo\fP プラグインの設計についての詳しい情報は、
+sudo_plugin(5) のマニュアルにある。
+.SH 終了ステータス
+コマンドの実行に成功した場合、\fBsudo\fP が返す終了ステータスは、
+実行したプログラムの終了ステータスである。
+コマンドがシグナルを受け取ることによって終了した場合は、
+\fBsudo\fP はコマンドを終了させたシグナルを自分自身に送るようになっている。
+.PP
+それ以外の場合、設定やパーミッションに問題があったり、
+\fBsudo\fP が指定されたコマンドを実行できなかったりしたときは、
+\fBsudo\fP は終了ステータス 1 で終了する。後者の場合は、
+エラーメッセージが標準エラーに表示される。\fBsudo\fP がユーザの
+PATH にある一つ以上のエントリを stat(2) できなかったときも、
+エラーが標準エラーに表示される (ただし、PATH
+中のディレクトリが存在しなかったときや、実際にはディレクトリでなかったときは、
+そのエントリは無視され、エラーは表示されない)。そういったことは、
+通常の状態では起きるはずがないことである。stat(2) が "permission denied"
+を返す理由で一番よくあるのは、ユーザがオートマウンターを使用していて、
+PATH 中のディレクトリの一つが目下到達不可能なマシンにある場合だ。
+.SH セキュリティに関するメモ
+\fBsudo\fP は、外部のコマンドをできるだけ安全に実行しようとする。
+.PP
+偽コマンドの実行 (command spoofing) を防止するため、\fBsudo\fP
+はコマンドを捜してユーザの PATH を検索する際に、"." や ""
+(どちらもカレント・ディレクトリを意味する) を最後に調べる (そのどちらか、
+あるいは両方が、PATH 中に存在すればだが)。とは言え、環境変数 PATH そのものは変更されずに、
+そのまま \fBsudo\fP が実行するプログラムに渡されることに注意していただきたい。
+.PP
+次のようなファイルを実行する \fBsudo\fP 権限を、絶対にユーザに許可してはいけない。
+すなわち、そのユーザに書き込みできるファイルや、
+そのユーザに書き込みできるディレクトリにあるファイルを実行する権限である。
+もし、ユーザがコマンドを書き換えたり、別のコマンドと置き換えたりできるならば、
+そのユーザは自分が実行できるコマンドに何でも追加できるわけで、
+それを制限する方法はまったくないのだ。
+.PP
+\fBsudo\fP は通常、自分が明示的に実行するコマンドしかログに記録しないことに注意していただきたい。
+ユーザが sudo su や sudo sh といったコマンドを実行した場合、
+そのシェルからさらに実行されるコマンドは、
+\fBsudo\fP のセキュリティポリシーの対象にはならないのだ。
+同じことが、シェル・エスケープを提供するコマンド (たいていのエディターが、
+それに含まれる) についても言える。確かに、入出力ロギングが有効になっている場合は、
+シェルからさらに実行されるコマンドも、その入力や出力を記録されることになるが、
+従来からあるログファイルに記録されるわけではないのである。従って、
+ユーザに \fBsudo\fP 経由で、あるコマンドを実行する権限を与えるときは、
+そのコマンドが事実上ルート・シェルをユーザにうっかり与えていないことを、
+念には念を入れて確認しなければならない。もっと詳しいことをお知りになりたかったら、
+sudoers(5) のマニュアルの「シェル・エスケープを防止する」というセクションをご覧になるとよい。
 .PP
-.\"O To prevent the disclosure of potentially sensitive information,
-.\"O \&\fBsudo\fR disables core dumps by default while it is executing (they
-.\"O are re-enabled for the command that is run).  To aid in debugging
-.\"O \&\fBsudo\fR crashes, you may wish to re-enable core dumps by setting
-.\"O \&\*(L"disable_coredump\*(R" to false in the \fI/etc/sudo.conf\fR file.
-.\"O .PP
 セキュリティ上問題になりかねない情報を漏洩しないように、
-\&\fBsudo\fR はデフォルトでは、自己を実行中のコアダンプを抑止している
-(指定されたコマンドを実行するときには、コアダンプを有効にし直すのである)。
-\&\fBsudo\fR そのもののクラッシュをデバッグするために、
-コアダンプを有効に戻したいならば、
-\&\fI/etc/sudo.conf\fR ファイルで \*(L"disable_coredump\*(R" を
-false にすればよい。(訳注: キーワード Set は sudo-1.8.4 以上でなければ、
-使用できない。)
-.PP
-.Vb 1
-\& Set disable_coredump false
-.Ve
-.PP
-.\"O Note that by default, most operating systems disable core dumps
-.\"O from setuid programs, which includes \fBsudo\fR.  To actually get a
-.\"O \&\fBsudo\fR core file you may need to enable core dumps for setuid
-.\"O processes.  On \s-1BSD\s0 and Linux systems this is accomplished via the
-.\"O sysctl command, on Solaris the coreadm command can be used.
-注意してほしいのは、たいていのオペレーティングシステムが、
-デフォルトでは setuid プログラムのコアダンプを抑止していることだ。
-\&\fBsudo\fR もそうしたプログラムの一つである。
-そこで、実際に \fBsudo\fR のコアダンプ・ファイルを取得するには、
-setuid プロセスに対するコアダンプを有効にする必要があるかもしれない。
-\&\s-1BSD\s0 や Linux のシステムでは、これは sysctl コマンドによって行われる。 
-Solaris では coreadm コマンドが使用できる。
-.\"O .SH "ENVIRONMENT"
-.SH "環境変数"
-.IX Header "ENVIRONMENT"
-.\"O \&\fBsudo\fR utilizes the following environment variables.  The security
-.\"O policy has control over the content of the command's environment.
-\&\fBsudo\fR は以下の環境変数を利用する。実行するコマンドの環境の内容は、
-セキュリティ・ポリシーによる制御の対象になる。
-.ie n .IP "\*(C`EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
-.IX Item "EDITOR"
-.\"O Default editor to use in \fB\-e\fR (sudoedit) mode if neither \f(CW\*(C`SUDO_EDITOR\*(C'\fR
-.\"O nor \f(CW\*(C`VISUAL\*(C'\fR is set
-環境変数 \f(CW\*(C`SUDO_EDITOR\*(C'\fR や \f(CW\*(C`VISUAL\*(C'\fR
-が設定されていないとき、
-\&\fB\-e\fR (sudoedit) モードで使用するデフォルトのエディタ
-.ie n .IP "\*(C`MAIL\*(C'" 16
-.el .IP "\f(CW\*(C`MAIL\*(C'\fR" 16
-.IX Item "MAIL"
-.\"O In \fB\-i\fR mode or when \fIenv_reset\fR is enabled in \fIsudoers\fR, set
-.\"O to the mail spool of the target user
-\&\fB\-i\fR オプションが指定された場合や、
-\&\fIsudoers\fR で \fIenv_reset\fR が有効になっている場合に、
-変身対象ユーザのメールスプールにセットされる
-.ie n .IP "\*(C`HOME\*(C'" 16
-.el .IP "\f(CW\*(C`HOME\*(C'\fR" 16
-.IX Item "HOME"
-.\"O Set to the home directory of the target user if \fB\-i\fR or \fB\-H\fR are
-.\"O specified, \fIenv_reset\fR or \fIalways_set_home\fR are set in \fIsudoers\fR,
-.\"O or when the \fB\-s\fR option is specified and \fIset_home\fR is set in
-.\"O \&\fIsudoers\fR
-\&\fB\-i\fR や \fB\-H\fR オプションが指定された場合や、
-\&\fIsudoers\fR で \fIenv_reset\fR や \fIalways_set_home\fR
-が設定されている場合、あるいは \fIsudoers\fR で \fIset_home\fR が設定され、
-かつ \fB\-s\fR オプションが指定された場合に、
-変身対象ユーザのホームディレクトリにセットされる
-.ie n .IP "\*(C`PATH\*(C'" 16
-.el .IP "\f(CW\*(C`PATH\*(C'\fR" 16
-.IX Item "PATH"
-.\"O May be overridden by the security policy.
-セキュリティ・ポリシーによって上書きされるかもしれない
-.ie n .IP "\*(C`SHELL\*(C'" 16
-.el .IP "\f(CW\*(C`SHELL\*(C'\fR" 16
-.IX Item "SHELL"
-.\"O Used to determine shell to run with \f(CW\*(C`\-s\*(C'\fR option
-\&\fB\-s\fR オプションで起動するシェルを決めるのに使用する
-.ie n .IP "\*(C`SUDO_ASKPASS\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_ASKPASS\*(C'\fR" 16
-.IX Item "SUDO_ASKPASS"
-.\"O Specifies the path to a helper program used to read the password
-.\"O if no terminal is available or if the \f(CW\*(C`\-A\*(C'\fR option is specified.
-ターミナルが利用できない場合や、
-\&\f(CW\*(C`\-A\*(C'\fR オプションが指定されている場合に、
-パスワードを読み込むのに使用するヘルパープログラムのパスを指定する
-.ie n .IP "\*(C`SUDO_COMMAND\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_COMMAND\*(C'\fR" 16
-.IX Item "SUDO_COMMAND"
-.\"O Set to the command run by sudo
-sudo が実行するコマンドにセットされる
-.ie n .IP "\*(C`SUDO_EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_EDITOR\*(C'\fR" 16
-.IX Item "SUDO_EDITOR"
-.\"O Default editor to use in \fB\-e\fR (sudoedit) mode
-\&\fB\-e\fR (sudoedit) モードで使用するデフォルトのエディタ
-.ie n .IP "\*(C`SUDO_GID\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_GID\*(C'\fR" 16
-.IX Item "SUDO_GID"
-.\"O Set to the group \s-1ID\s0 of the user who invoked sudo
-sudo を起動したユーザのグループ \s-1ID\s0 にセットされる
-.ie n .IP "\*(C`SUDO_PROMPT\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_PROMPT\*(C'\fR" 16
-.IX Item "SUDO_PROMPT"
-.\"O Used as the default password prompt
-デフォルトのパスワード・プロンプトとして使用する
-.ie n .IP "\*(C`SUDO_PS1\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_PS1\*(C'\fR" 16
-.IX Item "SUDO_PS1"
-.\"O If set, \f(CW\*(C`PS1\*(C'\fR will be set to its value for the program being run
-設定すると、
-実行されるプログラムの \f(CW\*(C`PS1\*(C'\fR がこの変数の値にセットされる
-.ie n .IP "\*(C`SUDO_UID\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_UID\*(C'\fR" 16
-.IX Item "SUDO_UID"
-.\"O Set to the user \s-1ID\s0 of the user who invoked sudo
-sudo を起動したユーザのユーザ \s-1ID\s0 にセットされる
-.ie n .IP "\*(C`SUDO_USER\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_USER\*(C'\fR" 16
-.IX Item "SUDO_USER"
-.\"O Set to the login of the user who invoked sudo
-sudo を起動したユーザのログイン名にセットされる
-.ie n .IP "\*(C`USER\*(C'" 16
-.el .IP "\f(CW\*(C`USER\*(C'\fR" 16
-.IX Item "USER"
-.\"O Set to the target user (root unless the \fB\-u\fR option is specified)
-変身対象ユーザにセットされる (オプション \fB\-u\fR が指定されていなければ、
-root になる)
-.ie n .IP "\*(C`VISUAL\*(C'" 16
-.el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
-.IX Item "VISUAL"
-.\"O Default editor to use in \fB\-e\fR (sudoedit) mode if \f(CW\*(C`SUDO_EDITOR\*(C'\fR
-.\"O is not set
-変数 \f(CW\*(C`SUDO_EDITOR\*(C'\fR が設定されていない場合に、
-\&\fB\-e\fR (sudoedit) モードで使用するデフォルトのエディタ
-.\"O .SH "FILES"
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudo.conf\fR" 24
-.el .IP "\fI/etc/sudo.conf\fR" 24
-.IX Item "/etc/sudo.conf"
-.\"O \&\fBsudo\fR front end configuration
-\&\fBsudo\fR フロントエンドの設定ファイル
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote3"
-念のため、次の二つを追加しておく。詳細については \fIsudoers\fR\|(5)
-をご覧いただきたい。
-.RS 4
-.IP "\fI/etc/sudoers\fR" 20
-.IX Item "/etc/sudoers"
-誰が何を実行できるかを設定するファイル
-.IP "\fI/var/lib/sudo\fR" 20
-.IX Item "/var/lib/sudo"
-\&\fBsudo\fR が認証情報の保存に使用するタイムスタンプを置く、
-デフォルトのディレクトリ
+\fBsudo\fP はデフォルトでは、自己を実行中のコアダンプを抑止している
+(指定されたコマンドを実行するときに、コアダンプを有効にし直すのだ)。
+この動作は昔からのものであり、たいていのオペレーティングシステムが
+setuid プロセスにデフォルトではコアダンプを許していた時代からそうなっていた。
+\fBsudo\fP 自体のクラッシュをデバッグするためにコアダンプを有効に戻したいならば、
+以下のように、sudo.conf(5) ファイルで "disable_coredump" を
+false にすればよい。
+.nf
+.sp
+.RS 6n
+Set disable_coredump false
 .RE
-.\"O .SH "EXAMPLES"
-.SH "用例"
-.IX Header "EXAMPLES"
-.\"O Note: the following examples assume a properly configured security policy.
-注意: 以下の例は、
-セキュリティ・ポリシーが適切に設定されていることを前提にしている。
+.fi
 .PP
-.\"O To get a file listing of an unreadable directory:
-読み取り不可のディレクトリのファイル一覧を取得する。
+詳細については、sudo.conf(5) のマニュアルを参照していただきたい。
+.SH 環境変数
+\fBsudo\fP は以下の環境変数を利用する。
+実行するコマンドの環境が実際にどうなるかは、セキュリティポリシー次第である。
+.TP  17n
+EDITOR
+環境変数 SUDO_EDITOR や VISUAL が設定されていないとき、
+\fB\-e\fP (sudoedit) モードで使用するデフォルトのエディタ。
+.TP  17n
+MAIL
+\fB\-i\fP オプションが指定された場合や、\fIsudoers\fP で \fIenv_reset\fP
+が有効になっている場合には (\fIenv_keep\fP のリストに
+MAIL が存在しないかぎり)、変身対象ユーザのメールスプールにセットされる。
+.TP  17n
+HOME
+次の場合には、変身対象ユーザのホームディレクトリにセットされる。
+\fB\-i\fP や \fB\-H\fP オプションが指定された場合、
+\fB\-s\fP オプションが指定され、かつ \fIsudoers\fP で \fIset_home\fP が設定されている場合、
+\fIalways_set_home\fP が \fIsudoers\fP で有効になっている場合、
+あるいは、\fIenv_reset\fP が \fIsudoers\fP で有効になっていて、
+しかも \fIHOME\fP が \fIenv_keep\fP のリストに存在しない場合。
+.TP  17n
+LOGNAME
+次の場合には、変身対象ユーザのログイン名にセットされる。
+\fB\-i\fP オプションが指定された場合、
+\fIset_logname\fP オプションが \fIsudoers\fP で有効になっている場合、
+あるいは、\fIenv_reset\fP オプションが \fIsudoers\fP で有効になっていて、
+LOGNAME が \fIenv_keep\fP のリストに存在しない場合。
+.TP  17n
+PATH
+セキュリティポリシーによって上書きされるかもしれない。
+.TP  17n
+SHELL
+\fB\-s\fP オプションで起動するシェルを決めるのに使用する。
+.TP  17n
+SUDO_ASKPASS
+ターミナルが利用できない場合や、\fB\-A\fP オプションが指定された場合に、
+パスワードを読み込むのに使用するヘルパー・プログラムのパスを指定する。
+.TP  17n
+SUDO_COMMAND
+sudo が実行するコマンドにセットされる。
+.TP  17n
+SUDO_EDITOR
+\fB\-e\fP (sudoedit) モードで使用するデフォルトのエディタ。
+.TP  17n
+SUDO_GID
+sudo を起動したユーザのグループ ID にセットされる。
+.TP  17n
+SUDO_PROMPT
+デフォルトのパスワード・プロンプトとして使用する。
+.TP  17n
+SUDO_PS1
+設定すると、実行されるプログラムの PS1 がこの変数の値にセットされる。
+.TP  17n
+SUDO_UID
+sudo を起動したユーザのユーザ ID にセットされる。
+.TP  17n
+SUDO_USER
+sudo を起動したユーザのログイン名にセットされる。
+.TP  17n
+USER
+上で述べた LOGNAME と同じ値にセットされる。
+.TP  17n
+USERNAME
+USER と同じ。
+.TP  17n
+VISUAL
+SUDO_EDITOR が設定されていない場合に、\fB\-e\fP (sudoedit)
+モードで使用するデフォルトのエディタ。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+\fBsudo\fP フロントエンドの設定ファイル
+.SH 用例
+注意: 以下の例は、セキュリティポリシーが適切に設定されていることを前提にしている。
 .PP
-.Vb 1
-\& $ sudo ls /usr/local/protected
-.Ve
+読み取り不可のディレクトリのファイル一覧を取得する。
+.nf
+.sp
+.RS 6n
+$ sudo ls /usr/local/protected
+.RE
+.fi
 .PP
-.\"O To list the home directory of user yaz on a machine where the
-.\"O file system holding ~yaz is not exported as root:
-ユーザ yaz のホームディレクトリのファイル一覧を取得したいのだが、
-~yaz を含むファイルシステムが別のマシンにあって、
+ユーザ yaz のホームディレクトリのファイル一覧を取得する。
+ただし、~yaz を含むファイルシステムが、別のマシンにあって、
 root でアクセスできるようにエクスポートされていない場合。
+.nf
+.sp
+.RS 6n
+$ sudo \-u yaz ls ~yaz
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-u yaz ls ~yaz
-.Ve
-.PP
-.\"O To edit the \fIindex.html\fR file as user www:
-ユーザ www として \fIindex.html\fR ファイルを編集する。
-.PP
-.Vb 1
-\& $ sudo \-u www vi ~www/htdocs/index.html
-.Ve
+ユーザ www として \fIindex.html\fP ファイルを編集する。
+.nf
+.sp
+.RS 6n
+$ sudo \-u www vi ~www/htdocs/index.html
+.RE
+.fi
 .PP
-.\"O To view system logs only accessible to root and users in the adm group:
 root と adm グループのユーザだけがアクセスできるシステムログを閲覧する。
+.nf
+.sp
+.RS 6n
+$ sudo \-g adm view /var/log/syslog
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-g adm view /var/log/syslog
-.Ve
-.PP
-.\"O To run an editor as jim with a different primary group:
-jim に変身してエディタを実行する。
-プライマリグループには別のグループを指定する。
-.PP
-.Vb 1
-\& $ sudo \-u jim \-g audio vi ~jim/sound.txt
-.Ve
+jim に変身してエディタを実行する。プライマリグループには別のグループを指定する。
+.nf
+.sp
+.RS 6n
+$ sudo \-u jim \-g audio vi ~jim/sound.txt
+.RE
+.fi
 .PP
-.\"O To shutdown a machine:
 マシンをリブートする。
+.nf
+.sp
+.RS 6n
+$ sudo shutdown \-r +15 "quick reboot"
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo shutdown \-r +15 "quick reboot"
-.Ve
-.PP
-.\"O To make a usage listing of the directories in the /home
-.\"O partition.  Note that this runs the commands in a sub-shell
-.\"O to make the \f(CW\*(C`cd\*(C'\fR and file redirection work.
 /home パーティションに存在するディレクトリのディスク使用量リストを作成する。
-\&\f(CW\*(C`cd\*(C'\fR やファイル・リダイレクションがきちんと動作するように、
-コマンドをサブシェルで実行していることに注目してほしい。
-.PP
-.Vb 1
-\& $ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
-.Ve
-.\"O .SH "SEE ALSO"
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIgrep\fR\|(1), \fIsu\fR\|(1), \fIstat\fR\|(2),
-.if \n(LC \&\fIlogin_cap\fR\|(3),
-\&\fIpasswd\fR\|(5), \fIsudoers\fR\|(5), \fIsudo_plugin\fR\|(8), \fIsudoreplay\fR\|(8), \fIvisudo\fR\|(8)
-.\"O .SH "AUTHORS"
-.SH "作者"
-.IX Header "AUTHORS"
-.\"O Many people have worked on \fBsudo\fR over the years; this
-.\"O version consists of code written primarily by:
-多数の人々が長年に渡って \fBsudo\fR の開発に取り組んできた。当バージョ
-ンは主として次の者が書いたコードからできている。
-.PP
-.Vb 1
-\&        Todd C. Miller
-.Ve
+cd やファイル・リダイレクションがきちんと動作するように、
+コマンドをサブシェルで実行している点に注目していただきたい。
+.nf
+.sp
+.RS 6n
+$ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
+.RE
+.fi
+.SH 参照項目
+su(1), stat(2), passwd(5), sudo.conf(5), sudoers(5), sudo_plugin(5),
+sudoreplay(8), visudo(8)
+.SH 履歴
+sudo の簡単な履歴については、\fBsudo\fP の配布に含まれている
+HISTORY ファイルをご覧いただきたい。
+(https://www.sudo.ws/history.html)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-.\"O See the \s-1CONTRIBUTORS\s0 file in the \fBsudo\fR distribution
-.\"O (http://www.sudo.ws/sudo/contributors.html) for a list of people
-.\"O who have contributed to \fBsudo\fR.
-\&\fBsudo\fR の開発に貢献してくださった方々のリストについては、
-\&\fBsudo\fR の配布に含まれる \s-1CONTRIBUTORS\s0 ファイルをご覧いただきたい
-(http://www.sudo.ws/sudo/contributors.html)。 
-.\"O .SH "HISTORY"
-.SH "履歴"
-.IX Header "HISTORY"
-.\"O See the \s-1HISTORY\s0 file in the \fBsudo\fR distribution
-.\"O (http://www.sudo.ws/sudo/history.html) for a brief history of sudo.
-\&\fBsudo\fR の簡単な履歴については、
-配布物中の \s-1HISTORY\s0 ファイルをご覧いただきたい
-(http://www.sudo.ws/sudo/history.html)。
-.\"O .SH "CAVEATS"
-.SH "警告"
-.IX Header "CAVEATS"
-.\"O There is no easy way to prevent a user from gaining a root shell
-.\"O if that user is allowed to run arbitrary commands via \fBsudo\fR.
-.\"O Also, many programs (such as editors) allow the user to run commands
-.\"O via shell escapes, thus avoiding \fBsudo\fR's checks.  However, on
-.\"O most systems it is possible to prevent shell escapes with the
-.\"O \&\fIsudoers\fR\|(5) module's \fInoexec\fR functionality.
-ユーザが \fBsudo\fR 経由で任意のコマンドを実行することを許可されているならば、
-そのユーザがルート・シェルを獲得するのを防止する簡単な方法はない。
-また、(エディタを含む) 多くのプログラムが、
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH 警告
+もし、ユーザが \fBsudo\fP 経由で任意のコマンドを実行することを許可されているなら、
+そのユーザがルート・シェルを手に入れるのを防止する簡単な方法は存在しない。
+また、(エディタをはじめとする) 多くのプログラムが、
 シェル・エスケープを通してユーザがコマンドを実行できるようにしており、
-この方法でユーザは \fBsudo\fR のチェックを回避することができる。
-とは言え、たいていのシステムでは、
-\&\fIsudoers\fR\|(5) モジュールの \fInoexec\fR 機能を用いて、
-シェル・エスケープを抑止することが可能である。
-.PP
-.\"O It is not meaningful to run the \f(CW\*(C`cd\*(C'\fR command directly via sudo, e.g.,
-下記のように sudo の中で直に \f(CW\*(C`cd\*(C'\fR
-コマンドを実行しても意味がない。
+この方法でユーザは \fBsudo\fP によるチェックをすり抜けることができる。
+とは言え、たいていのシステムでは、sudoers(5) プラグインの \fInoexec\fP
+機能を使用することでシェルエスケープを抑止することが可能だ。
 .PP
-.Vb 1
-\& $ sudo cd /usr/local/protected
-.Ve
+下記のように \fBsudo\fP 中で直に \fBcd\fP コマンドを実行しても意味がない。
+.nf
+.sp
+.RS 6n
+$ sudo cd /usr/local/protected
+.RE
+.fi
 .PP
-.\"O since when the command exits the parent process (your shell) will
-.\"O still be the same.  Please see the \s-1EXAMPLES\s0 section for more information.
-なぜなら、このコマンドが終了したとき、その親プロセス (つまり、
-\&\fBsudo\fR を実行したシェル) は相変わらず元の状態のままだからだ。
-より詳しく知りたかったら、「用例」セクションを御覧になってほしい。
+なぜなら、このコマンドが終了したとき、その親プロセス (すなわち、\fBsudo\fP
+を実行したシェル) は、\fBsudo\fP を実行する前と同じ状態に戻るからだ。
+\fBcd\fP については、「用例」セクションもご覧になっていただきたい。
 .PP
-.\"O Running shell scripts via \fBsudo\fR can expose the same kernel bugs that
-.\"O make setuid shell scripts unsafe on some operating systems (if your \s-1OS\s0
-.\"O has a /dev/fd/ directory, setuid shell scripts are generally safe).
-\&\fBsudo\fR を介してシェルスクリプトを実行すると、
-ある種のオペレーティングシステムで
+\fBsudo\fP を介してシェルスクリプトを実行すると、ある種のオペレーティング・システムで
 setuid シェルスクリプトを危険なものにしているのと同一の、
-カーネルのバグが表面化するおそれがある (使用している \s-1OS\s0 に 
-/dev/fd/ ディレクトリがあれば、setuid シェルスクリプトはたいてい安全である)。
-.\"O .SH "BUGS"
-.SH "バグ"
-.IX Header "BUGS"
-.\"O If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-.\"O at http://www.sudo.ws/sudo/bugs/
-\&\fBsudo\fR にバクを発見したと思ったら、下記のページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.\"O .SH "SUPPORT"
-.SH "サポート"
-.IX Header "SUPPORT"
-.\"O Limited free support is available via the sudo-users mailing list,
-.\"O see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
-.\"O search the archives.
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には下記 URL を御覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.\"O .SH "DISCLAIMER"
-.SH "免責"
-.IX Header "DISCLAIMER"
-.\"O \&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-.\"O including, but not limited to, the implied warranties of merchantability
-.\"O and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-.\"O file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-.\"O for complete details.
-\&\fBsudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+カーネルのバグが表面化するおそれがある (使用している OS に /dev/fd/
+ディレクトリがあれば、setuid シェルスクリプトはたいてい安全である)。
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index 01c2978..b720903 100644 (file)
@@ -1,9 +1,12 @@
-.\" Copyright (c) 2009-2011 Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoreplay.mdoc.in
+.\"
+.\" Copyright (c) 2009-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
-.\" Japanese Version Copyright (c) 2012 Yoichi Chonan
-.\"         all rights reserved.
-.\" Translated (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
-.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
+.\"*******************************************************************
 .\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
+.\"*******************************************************************
 .\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
+.\" Japanese Version Copyright (c) 2012 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.IX Title "SUDOREPLAY 8"
-.TH SUDOREPLAY 8 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDOREPLAY 8 "May 4, 2016" "Sudo 1.8.17" "System Manager's Manual"
 .nh
-.\"O .SH "NAME"
-.\"O sudoreplay \- replay sudo session logs
-.SH "名前"
-sudoreplay \- sudo のセッションログを再生する
-.\"O .SH "SYNOPSIS"
-.SH "書式"
-.IX Header "SYNOPSIS"
-\&\fBsudoreplay\fR [\fB\-h\fR] [\fB\-d\fR \fIdirectory\fR] [\fB\-f\fR \fIfilter\fR] [\fB\-m\fR \fImax_wait\fR] [\fB\-s\fR \fIspeed_factor\fR] \s-1ID\s0
-.PP
-\&\fBsudoreplay\fR [\fB\-h\fR] [\fB\-d\fR \fIdirectory\fR] \-l [search expression]
-.\"O .SH "DESCRIPTION"
-.SH "説明"
-.IX Header "DESCRIPTION"
-.\"O \&\fBsudoreplay\fR plays back or lists the output logs created by \fBsudo\fR.
-.\"O When replaying, \fBsudoreplay\fR can play the session back in real-time,
-.\"O or the playback speed may be adjusted (faster or slower) based on
-.\"O the command line options.
-.\"O .PP
-\&\fBsudoreplay\fR は、\fBsudo\fR が生成した出力ログの再生、
+.if  n .ad l
+.SH 名前
+\fBsudoreplay\fP \- sudo のセッションログを再生する
+.SH 書式
+.HP 11n
+\fBsudoreplay\fP [\fB\-h\fP] [\fB\-d\fP\ \fIdir\fP] [\fB\-f\fP\ \fIfilter\fP] [\fB\-m\fP\ \fInum\fP]
+[\fB\-s\fP\ \fInum\fP] ID
+.HP 11n
+\fBsudoreplay\fP [\fB\-h\fP] [\fB\-d\fP\ \fIdir\fP] \fB\-l\fP [search\ expression]
+.SH 説明
+\fBsudoreplay\fP は、\fBsudo\fP が生成した出力ログの再生、
 または一覧表示を行う。再生する場合、
-\&\fBsudoreplay\fR はセッションの再生をリアルタイムで実行することもできるし、
+\fBsudoreplay\fP はセッションの再生をリアルタイムで実行することもできるし、
 コマンドライン・オプションによって再生速度を (早くしたり、
-遅くしたり) 調節することもできる。 
+遅くしたり) 調節することもできる。
 .PP
-.\"O The \fI\s-1ID\s0\fR should either be a six character sequence of digits and
-.\"O upper case letters, e.g. \f(CW\*(C`0100A5\*(C'\fR, or a pattern matching the
-.\"O \&\fIiolog_file\fR option in the \fIsudoers\fR file.  When a command is run
-.\"O via \fBsudo\fR with \fIlog_output\fR enabled in the \fIsudoers\fR file, a
-.\"O \&\f(CW\*(C`TSID=ID\*(C'\fR string is logged via syslog or to the \fBsudo\fR log file.
-.\"O The \fI\s-1ID\s0\fR may also be determined using \fBsudoreplay\fR's list mode.
-.\"O .PP
-上記書式の一つ目 (再生モード) で指定する \fI\s-1ID\s0\fR は、
-たとえば、\f(CW\*(C`0100A5\*(C'\fR のような、
+上記書式の一つ目 (再生モード) で指定する引数 \fIID\fP は、たとえば 0100A5 のような、
 数字とアルファベットの大文字からなる 6 字の文字列か、
-\&\fIsudoers\fR の \fIiolog_file\fR オプションにマッチするパターンかの、
-どちらかでなければならない。\fIsudoers\fR の \fIlog_output\fR
-オプションが有効な状態で、\fBsudo\fR を使ってコマンドを実行すると、
-\&\f(CW\*(C`TSID=ID\*(C'\fR という文字列が syslog 経由で
-あるいは \fBsudo\fR 独自のログファイルに記録される。
-また、\fI\s-1ID\s0\fRは、\fBsudoreplay\fR のリストモードを使用して、
-特定することもできる。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1" 
-セッションの出力のロギングを有効にするには、\fIsudoers\fR ファイルの
-Defaults 行で \fIlog_output\fR を指定するか
-あるいは、同ファイルのユーザ設定でコマンドに \fILOG_OUTPUT\fR タグを付ける。
-\&\fIsudoers\fR のマニュアルを参照してほしい。
+\fIsudoers\fP ファイルの \fIiolog_file\fP オプションにマッチするパターンかの、
+どちらかでなければならない。
+\fIsudoers\fP ファイルの \fIlog_output\fP オプションが有効な状態で
+\fBsudo\fP を使ってコマンドを実行すると
+TSID=ID という文字列が、syslog 経由や \fBsudo\fP 独自のログファイルに記録される
+(訳注: その ID を引数として指定するのである)。
+また、\fIID\fP は、\fBsudoreplay\fP のリストモード (上記書式の二つ目) を使用して、
+突き止めることもできる。
+.IP "[\fB訳注\fP]:" 8
+セッションの出力のロギングを有効にするには、\fIsudoers\fP ファイルの 
+Defaults 行で \fIlog_output\fP を指定するか、あるいは
+同ファイルのユーザ設定でコマンドに \fILOG_OUTPUT\fP タグを付ける。
+詳細については、\fIsudoers\fP のマニュアルを参照していただきたい。
 .PP
-.\"O In list mode, \fBsudoreplay\fR can be used to find the \s-1ID\s0 of a session
-.\"O based on a number of criteria such as the user, tty or command run.
-.\"O .PP
-リストモードで \fBsudoreplay\fR を使用すれば、ユーザ、使用した端末 (tty)、
-実行したコマンドなど、いくつかの条件に基づいて、セッションの \s-1ID\s0
+リストモードで \fBsudoreplay\fP を使用すると、ユーザ、使用した端末 (tty)、
+実行したコマンドなど、いくつかの条件に基づいて、セッションの ID
 を知ることができる。
 .PP
-.\"O In replay mode, if the standard output has not been redirected,
-.\"O \&\fBsudoreplay\fR will act on the following keys:
 再生モードでは、標準出力がリダイレクトされていないかぎり、
 以下のキーが有効である。
-.IP "' ' (space)" 8
-.IX Item "' ' (space)"
-.\"O Pause output; press any key to resume.
+.TP  14n
+\&'\en' または '\er'
+次の再生イベントに飛ぶ。イベント間の休止が長いとき便利。
+.TP  14n
+\&'\ ' (space)
 出力を停止する。任意のキーを押せば、続行する。
-.IP "'<'" 8
-.\"O Reduce the playback speed by one half.
+.TP  14n
+\&'<'
 再生速度を半分に下げる。
-.IP "'>'" 8
-.\"O Double the playback speed.
+.TP  14n
+\&'>'
 再生速度を倍にする。
-.\"O .SH "OPTIONS"
-.SH "オプション"
-.IX Header "OPTIONS"
-.\"O \&\fBsudoreplay\fR accepts the following command line options:
-\&\fBsudoreplay\fR では、以下のコマンドライン・オプションが使える。
-.IP "\-d \fIdirectory\fR" 12
-.IX Item "-d directory"
-.\"O Use \fIdirectory\fR to for the session logs instead of the default,
-.\"O \&\fI/var/log/sudo\-io\fR.
-セッションログが格納されているディレクトリとして、デフォルトの
-\&\fI/var/log/sudo\-io\fR の代わりに、\fIdirectory\fR を使用する。
-.IP "\-f \fIfilter\fR" 12
-.IX Item "-f filter"
-.\"O By default, \fBsudoreplay\fR will play back the command's standard
-.\"O output, standard error and tty output.  The \fI\-f\fR option can be
-.\"O used to select which of these to output.  The \fIfilter\fR argument
-.\"O is a comma-separated list, consisting of one or more of following:
-.\"O \&\fIstdout\fR, \fIstderr\fR, and \fIttyout\fR.
-デフォルトでは、\fBsudoreplay\fR はコマンドの標準出力と標準エラー、
-それに端末 (tty) への出力を再生する。\fI\-f\fR を使えば、
-そのうちのどれを出力するかを選択することができる。引き数 \fIfilter\fR は、
-コンマで区切られたリストであり、\fIstdout\fR, \fIstderr\fR, \fIttyout\fR
-から一つ以上指定する。
-.IP "\-h" 12
-.IX Item "-h"
-.\"O The \fB\-h\fR (\fIhelp\fR) option causes \fBsudoreplay\fR to print a short
-.\"O help message to the standard output and exit.
-\&\fB\-h\fR (\fIhelp\fR) オプションを指定すると、
-\&\fBsudoreplay\fR は簡単なヘルプ・メッセージを標準出力に表示して、終了する。
-.IP "\-l [\fIsearch expression\fR]" 12
-.IX Item "-l [search expression]"
-.\"O Enable \*(L"list mode\*(R".  In this mode, \fBsudoreplay\fR will list available
-.\"O session IDs.  If a \fIsearch expression\fR is specified, it will be
-.\"O used to restrict the IDs that are displayed.  An expression is
-.\"O composed of the following predicates:
-「リストモード」を有効にする。このモードでは、\fBsudoreplay\fR
-は再生可能なセッション ID を一覧表示することになる。検索式
-(\fIsearch expression\fR) を指定すると、表示する ID を絞り込むために、
-それが使用される。検索式は以下の述語 (predicate) から構成される。
-.RS
-.IP "[\fB訳注\fR]:" 8
-.IX "footnote2"
-このマニュアルで「ID」という言葉は、リストモードで表示される、
-ある ID を持つセッションそのものや、
-そのセッションの情報の意味でも使われている。
-.RE
-.RS 12
-.IP "command \fIcommand pattern\fR" 8
-.IX Item "command command pattern"
-.\"O Evaluates to true if the command run matches \fIcommand pattern\fR.
-.\"O On systems with \s-1POSIX\s0 regular expression support, the pattern may
-.\"O be an extended regular expression.  On systems without \s-1POSIX\s0 regular
-.\"O expression support, a simple substring match is performed instead.
-実行されたコマンドが \fIcommand pattern\fR にマッチすれば、真になる。
-\&\s-1POSIX\s0 の正規表現をサポートするシステムでは、
-パターンに拡張正規表現が使える。
-\&\s-1POSIX\s0 の正規表現をサポートしていないシステムでは、
-単なる部分文字列のマッチが行われる。
-.IP "cwd \fIdirectory\fR" 8
-.IX Item "cwd directory"
-.\"O Evaluates to true if the command was run with the specified current
-.\"O working directory.
-指定したディレクトリをカレントディレクトリとして、
-コマンドが実行されていれば、真になる。
-.IP "fromdate \fIdate\fR" 8
-.IX Item "fromdate date"
-.\"O Evaluates to true if the command was run on or after \fIdate\fR.
-.\"O See \*(L"Date and time format\*(R" for a description of supported
-.\"O date and time formats.
-コマンドを実行した日付が \fIdate\fR 以後なら、真になる。
+.PP
+オプションとして以下のものが使用できる。
+.TP  12n
+\fB\-d\fP \fIdir\fP, \fB\-\-directory\fP=\fIdir\fP
+セッションログは、デフォルトの \fI/var/log/sudo\-io\fP ではなく、
+\fIdir\fP にある。
+.TP  12n
+\fB\-f\fP \fIfilter\fP, \fB\-\-filter\fP=\fIfilter\fP
+再生する I/O タイプを選択する。
+デフォルトでは、\fBsudoreplay\fP はコマンドの標準出力、標準エラー、
+それに端末 (tty) への出力を表示することになっている。
+引き数 \fIfilter\fP は、コンマで区切ったリストであり、\fIstdout\fP, \fIstderr\fP,
+\fIttyout\fP から一つ以上指定する。
+.TP  12n
+\fB\-h\fP, \fB\-\-help\fP
+簡単なヘルプ・メッセージを標準出力に表示して終了する。
+.TP  12n
+\fB\-l\fP, \fB\-\-list\fP [\fIsearch expression\fP]
+「リスト・モード」を有効にする。
+このモードでは、\fBsudoreplay\fP は、再生可能なセッションのリストを、
+\fBsudo\fP のログファイルにおける表記と同じような書式で、
+/var/log/sudo\-io 以下のファイル名 (すなわち、シーケンス・ナンバー)
+によってソートして表示する。検索式 (\fIsearch expression\fP) を指定すると、
+表示する ID を絞り込むために、それが使用されることになる。
+検索式は以下の述語 (predicate) から構成される。
+.PP
+.RS 12n
+.PD 0
+.TP  8n
+command \fIpattern\fP
+実行されたコマンドが POSIX の拡張正規表現 \fIpattern\fP にマッチすれば、
+真になる。
+.PD
+.TP  8n
+cwd \fIdirectory\fP
+指定したディレクトリをカレントディレクトリとしてコマンドが実行されていれば、
+真になる。
+.TP  8n
+fromdate \fIdate\fP
+コマンドを実行した日付が \fIdate\fP 以後なら、真になる。
 サポートしている日時のフォーマットについては、
 「日付と時刻のフォーマット」を参照すること。
-.IP "group \fIrunas_group\fR" 8
-.IX Item "group runas_group"
-.\"O Evaluates to true if the command was run with the specified
-.\"O \&\fIrunas_group\fR.  Note that unless a \fIrunas_group\fR was explicitly
-.\"O specified when \fBsudo\fR was run this field will be empty in the log.
-指定された \fIrunas_group\fR としてコマンドが実行されていれば、真になる。
-\&\fIrunas_group\fR を明示的に指定して、
-\&\fBsudo\fR を実行しないかぎり、
-この欄はログに書き込まれないことに注意してほしい。
-.IP "runas \fIrunas_user\fR" 8
-.IX Item "runas runas_user"
-.\"O Evaluates to true if the command was run as the specified \fIrunas_user\fR.
-.\"O Note that \fBsudo\fR runs commands as user \fIroot\fR by default.
-指定された \fIrunas_user\fR としてコマンドが実行されていれば、真になる。
-\&\fBsudo\fR は、デフォルトでは
-\&\fIroot\fR ユーザとしてコマンドを実行することを忘れないように。
-.IP "todate \fIdate\fR" 8
-.IX Item "todate date"
-.\"O Evaluates to true if the command was run on or prior to \fIdate\fR.
-.\"O See \*(L"Date and time format\*(R" for a description of supported
-.\"O date and time formats.
-コマンドを実行した日付が \fIdate\fR 以前なら、真になる。
+.TP  8n
+group \fIrunas_group\fP
+指定された \fIrunas_group\fP としてコマンドが実行されていれば、真になる。
+\fIrunas_group\fP を明示的に指定して、
+\fBsudo\fP を実行していないかぎり、
+この欄はログに書き込まれないことに注意していただきたい。
+.TP  8n
+runas \fIrunas_user\fP
+指定された \fIrunas_user\fP としてコマンドが実行されていれば、真になる。
+\fBsudo\fP は、デフォルトでは
+\fIroot\fP ユーザとしてコマンドを実行することをお忘れなく。
+.TP  8n
+todate \fIdate\fP
+コマンドを実行した日付が \fIdate\fP 以前なら、真になる。
 サポートしている日付のフォーマットについては、
 「日付と時刻のフォーマット」を参照すること。
-.IP "tty \fItty\fR" 8
-.IX Item "tty tty"
-.\"O Evaluates to true if the command was run on the specified terminal
-.\"O device.  The \fItty\fR should be specified without the \fI/dev/\fR prefix,
-.\"O e.g.  \fItty01\fR instead of \fI/dev/tty01\fR.
+.TP  8n
+tty \fItty name\fP
 コマンドを実行したのが指定した端末デバイスならば、
-真になる。\fItty\fR は \fI/dev/\fR の部分を取って、指定する。
-たとえば、\fI/dev/tty01\fR ではなく、\fItty01\fR というように。
-(訳注: この説明は sudo-1.7.4 のころの指定法である。
-最近の \fBsudoreplay\fR では、\fI/dev/tty01\fR などと指定する必要があるようだ。)
-.IP "user \fIuser name\fR" 8
-.IX Item "user user name"
-.\"O Evaluates to true if the \s-1ID\s0 matches a command run by \fIuser name\fR.
-コマンドを実行したユーザが \fIuser name\fR なら、真になる。
-.RE
-.RS 12
-.Sp
-.\"O Predicates may be abbreviated to the shortest unique string (currently
-.\"O all predicates may be shortened to a single character).
-述語は、他と区別できるなら、最短の文字列にまで短縮できる
-.\" (現在のところ、すべての述語は、文字一個にまで短縮できる)。
-.\" [訳注]: command や cwd を c に短縮することはできない。ということは、
-.\" このカッコ内の文は、古い記述がそのままになっているのだと思う。そこで、
-.\" man コマンドで見えないようにし、代わりに以下の文を追加しておく。
-(たとえば、現在のところ、述語 user の代わりに u が使える)。
-.Sp
-.\"O Predicates may be combined using \fIand\fR, \fIor\fR and \fI!\fR operators
-.\"O as well as \f(CW\*(Aq(\*(Aq\fR and \f(CW\*(Aq)\*(Aq\fR for grouping (note that parentheses
-.\"O must generally be escaped from the shell).  The \fIand\fR operator is
-.\"O optional, adjacent predicates have an implied \fIand\fR unless separated
-.\"O by an \fIor\fR.
-述語は \fIand\fR, \fIor\fR, \fI!\fR 演算子を使って、結合することができる。
-また、\f(CW\*(Aq(\*(Aq\fR と \f(CW\*(Aq)\*(Aq\fR を使えば、グループ化が可能だ
+真になる。\fItty name\fP は \fI/dev/\fP の部分を取って指定するべきである。
+たとえば、\fI/dev/tty01\fP ではなく、\fItty01\fP のように。
+(訳注: この説明は sudo\-1.7.4 のころの指定法である。
+最近の \fBsudoreplay\fP では、\fI/dev/tty01\fP などと指定する必要があるようだ。)
+.TP  8n
+user \fIuser name\fP
+コマンドを実行したユーザが \fIuser name\fP なら、真になる。
+.PP
+述語は、他と区別できるなら、最短の文字列にまで短縮することができる
+(訳注: たとえば、現在のところ、述語 user の代わりに u が使える)。
+.sp
+述語は、\fIand\fP, \fIor\fP, \fI\&!\fP 演算子を使って、組み合わせることができる。
+また、'\&(' と '\&)' によるグループ化も可能だ
 (ただし、たいていの場合、カッコはシェルに解釈されないように、
-エスケープしなければならない)。\fIand\fR 演算子の指定はしてもしなくてもよい。
-隣り合った述語は、間に \fIor\fR がないかぎり、\fIand\fR で結合していると見なされるからだ。
+エスケープしなければならない)。\fIand\fP 演算子は省略可能である。
+隣り合った述語は、間に \fIor\fP がないかぎり、
+\fIand\fP で結合していると見なされるからだ。
 .RE
-.IP "\-m \fImax_wait\fR" 12
-.IX Item "-m max_wait"
-.\"O Specify an upper bound on how long to wait between key presses or
-.\"O output data.  By default, \fBsudo_replay\fR will accurately reproduce
-.\"O the delays between key presses or program output.  However, this
-.\"O can be tedious when the session includes long pauses.  When the
-.\"O \&\fI\-m\fR option is specified, \fBsudoreplay\fR will limit these pauses
-.\"O to at most \fImax_wait\fR seconds.  The value may be specified as a
-.\"O floating point number, .e.g. \fI2.5\fR.
+.TP  12n
+\fB\-m\fP, \fB\-\-max\-wait\fP \fImax_wait\fP
 キーを押してから次のキーを押すまでの間や、データ出力同士の間にある
-待ち時間の上限を指定する。\fBsudo\fR はデフォルトでは、
+待ち時間の上限を指定する。\fBsudoreplay\fP はデフォルトでは、
 キーの押し下げやプログラムの出力の間にある経過時間を正確に再現する。
 しかし、それだと、セッション中に長い間合いがある場合など、
 うんざりすることになりかねない。
-\&\fI\-m\fR オプションを指定すれば、\fBsudoreplay\fR はそうした間合いを、
-長くても \fImax_wait\fR 秒以内に抑えるようになる。この値は、
-たとえば \fI2.5\fR といった、浮動小数点数で指定することも可能だ。
-.IP "\-s \fIspeed_factor\fR" 12
-.IX Item "-s speed_factor"
-.\"O This option causes \fBsudoreplay\fR to adjust the number of seconds
-.\"O it will wait between key presses or program output.  This can be
-.\"O used to slow down or speed up the display.  For example, a
-.\"O \&\fIspeed_factor\fR of \fI2\fR would make the output twice as fast whereas
-.\"O a \fIspeed_factor\fR of <.5> would make the output twice as slow.
-このオプションを指定すると、\fBsudoreplay\fR
-は、キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。
-このオプションを使えば、表示速度を早くしたり遅くしたりできるわけだ。
-たとえば、\fIspeed_factor\fR に \fI2\fR を指定すれば、
-出力の速度が 2 倍になるし、\fI\.5\fR を指定すれば、出力の速度が半分になる。
-.IP "\-V" 12
-.IX Item "-V"
-.\"O The \fB\-V\fR (version) option causes \fBsudoreplay\fR to print its version number
-.\"O and exit.
-\&\fB\-V\fR (version) オプションを指定すると、
-\&\fBsudoreplay\fR はバージョン番号を表示して終了する。
-.\"O .SS "Date and time format"
-.SS "日付と時刻のフォーマット"
-.IX Subsection "Date and time format"
-.\"O The time and date may be specified multiple ways, common formats include:
+\fI\-m\fP オプションを指定すると、\fBsudoreplay\fP はそうした間合いを、
+長くても \fImax_wait\fP 秒以内に抑えるようになる。この値は、
+たとえば \fI2.5\fP といった、浮動小数点数で指定することも可能だ。
+.TP  12n
+\fB\-s\fP, \fB\-\-speed\fP \fIspeed_factor\fP
+このオプションを指定すると、\fBsudoreplay\fP は、
+キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。
+このオプションを使えば、再生速度を早くしたり遅くしたりできるわけだ。
+たとえば、\fIspeed_factor\fP に \fI2\fP を指定すれば、再生速度が 2 倍になるし、
+\&\fI.5\fP を指定すれば、再生速度が半分になる。
+.TP  12n
+\fB\-V\fP, \fB\-\-version\fP
+\fBsudoreplay\fP のバージョン番号を表示して終了する。
+.SS 日付と時刻のフォーマット
 日付と時刻の指定には、幾通りもの方法がある。よく使うフォーマットには、
 次のものがある。
-.IP "\s-1HH:MM:SS\s0 am \s-1MM/DD/CCYY\s0 timezone" 8
-.IX Item "HH:MM:SS am MM/DD/CCYY timezone"
-.\"O 24 hour time may be used in place of am/pm.
+.TP  8n
+HH:MM:SS am MM/DD/CCYY timezone
 午前/午後 (am/pm) の代わりに 24 時間制の時刻を使ってもよい。
-.\"O .IP "\s-1HH:MM:SS\s0 am Month, Day Year timezone" 8
-.IP "\s-1HH:MM:SS\s0 am Month Day, Year timezone" 8
-.IX Item "HH:MM:SS am Month, Day Year timezone"
-.\"O 24 hour time may be used in place of am/pm, and month and day names
-.\"O may be abbreviated.  Note that month and day of the week names must
-.\"O be specified in English.
+.TP  8n
+HH:MM:SS am Month Day, Year timezone
 午前/午後 (am/pm) の代わりに 24 時間制の時刻を使ってもよい。
 月や曜日の名前には短縮形を使うこともできる。
 月や曜日の名前は、英語で指定しなければならないのに注意すること。
 (訳注: 曜日を指定する場合は、月と日にちの間以外なら、
 たいていの場所に置くことができる。
-なお、上記書式のように、年の前にコンマを入れるかどうかは、任意である。)
-.IP "CCYY-MM-DD \s-1HH:MM:SS\s0" 8
-.IX Item "CCYY-MM-DD HH:MM:SS"
-.\"O \&\s-1ISO\s0 time format
-\&\s-1ISO\s0 の日時フォーマット。
-.IP "\s-1DD\s0 Month \s-1CCYY\s0 \s-1HH:MM:SS\s0" 8
-.IX Item "DD Month CCYY HH:MM:SS"
-.\"O The month name may be abbreviated.
+なお、上記書式のように、日にちの後ろにコンマを入れるかどうかは、任意である。)
+.TP  8n
+CCYY\-MM\-DD HH:MM:SS
+ISO の日時フォーマット。
+.TP  8n
+DD Month CCYY HH:MM:SS
 月の名前には短縮形も使える。
 .PP
-.\"O Either time or date may be omitted, the am/pm and timezone are
-.\"O optional.  If no date is specified, the current day is assumed; if
-.\"O no time is specified, the first second of the specified date is
-.\"O used.  The less significant parts of both time and date may also
-.\"O be omitted, in which case zero is assumed.  For example, the following
-.\"O are all valid:
-日付と時刻の一方を省略することができる。 am/pm とタイムゾーンは、
+日付と時刻の一方を省略することができる。am/pm とタイムゾーンは、
 指定してもしなくてもよい。日付が指定されない場合は、
 当日が指定されたものと見なされる。時刻が指定されない場合は、
 指定された日にちの 00:00:00 が使用される。
 時刻や日付のそれほど重要ではない部分も省略できるが、
 その場合は 0 が指定されたものと見なされる。
-たとえば、以下の表記は、すべて有効である。
 .PP
-.\"O The following are all valid time and date specifications:
 以下の表記は、すべて有効な日時の指定である。
-.IP "now" 8
-.IX Item "now"
-.\"O The current time and date.
+.TP  8n
+now
 今日の今。
-.IP "tomorrow" 8
-.IX Item "tomorrow"
-.\"O Exactly one day from now.
+.TP  8n
+tomorrow
 今からちょうど 1 日後。
-.IP "yesterday" 8
-.IX Item "yesterday"
-.\"O 24 hours ago.
+.TP  8n
+yesterday
 24 時間前。
-.IP "2 hours ago" 8
-.IX Item "2 hours ago"
-.\"O 2 hours ago.
+.TP  8n
+2 hours ago
 2 時間前。
-.IP "next Friday" 8
-.IX Item "next Friday"
-.\"O The first second of the next Friday.
-次の金曜日の 00:00:00。
-.IP "this week" 8
-.IX Item "this week"
-.\"O The current time but the first day of the coming week.
-時刻は現在時刻。日付は来週の最初の日。
-.IP "a fortnight ago" 8
-.IX Item "a fortnight ago"
-.\"O The current time but 14 days ago.
+.TP  8n
+next Friday
+来週の (やがて来る週の) 金曜日の 00:00:00。
+"this friday" と混同してはいけない。
+"this friday" ならば、今週の金曜日とマッチする。
+.TP  8n
+last week
+7 日前の現在時刻。"a week ago" と同じ。
+.TP  8n
+a fortnight ago
 14 日前の現在時刻。
-.IP "10:01 am 9/17/2009" 8
-.IX Item "10:01 am 9/17/2009"
-.\"O 10:01 am, September 17, 2009.
+.TP  8n
+10:01 am 9/17/2009
 2009 年 9 月 17 日 午前 10 時 01 分。
-.IP "10:01 am" 8
-.IX Item "10:01 am"
-.\"O 10:01 am on the current day.
+.TP  8n
+10:01 am
 今日の午前 10 時 01 分。
-.IP "10" 8
-.IX Item "10"
-.\"O 10:00 am on the current day.
+.TP  8n
+10
 今日の午前 10 時 00 分。
-.IP "9/17/2009" 8
-.IX Item "9/17/2009"
-.\"O 00:00 am, September 17, 2009.
+.TP  8n
+9/17/2009
 2009 年 9 月 17 日 午前 0 時 00 分。
-.IP "10:01 am Sep 17, 2009" 8
-.IX Item "10:01 am Sep 17, 2009"
-.\"O 10:01 am, September 17, 2009.
+.TP  8n
+10:01 am Sep 17, 2009
 2009 年 9 月 17 日 午前 10 時 01 分。
-.\"O .SH "FILES"
-.SH "ファイル"
-.IX Header "FILES"
-.IP "\fI/var/log/sudo\-io\fR" 24
-.IX Item "/var/log/sudo-io"
-.\"O The default I/O log directory.
-I/O ログを格納するデフォルトのディレクトリ。
-.IP "\fI/var/log/sudo\-io/00/00/01/log\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/log"
-.\"O Example session log info.
-セッションログの情報 (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/stdin\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stdin"
-.\"O Example session standard input log.
-セッションの標準入力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/stdout\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stdout"
-.\"O Example session standard output log.
-セッションの標準出力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/stderr\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stderr"
-.\"O Example session standard error log.
-セッションの標準エラーのログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/ttyin\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/ttyin"
-.\"O Example session tty input file.
-セッションの tty 入力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/ttyout\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/ttyout"
-.\"O Example session tty output file.
-セッションの tty 出力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/timing\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/timing"
-.\"O Example session timing file.
-セッションのタイミングを記録したファイル (一例)。
 .PP
-.\"O Note that the \fIstdin\fR, \fIstdout\fR and \fIstderr\fR files will be empty
-.\"O unless \fBsudo\fR was used as part of a pipeline for a particular
-.\"O command.
-\&\fBsudo\fR があるコマンドのためにパイプラインの一部として使用されたときを除いて、
-\&\fIstdin\fR, \fIstdout\fR, \fIstderr\fR
-用のファイルは空になることに注意してほしい。
-.\"O .SH "EXAMPLES"
-.SH "用例"
-.IX Header "EXAMPLES"
-.\"O List sessions run by user \fImillert\fR:
-ユーザ \fImillert\fR が実行したセッションを列挙する。
+注意していただきたいが、相対的な日時指定は、
+必ずしも期待通りに動作するとはかぎらない。
+たとえば、"next" 修飾子は、"next Monday" などのように、
+曜日と一緒に使うようになっている。
+week, month, year などの単位と組み合わせて使った場合は、結果が期待よりも
+1 多いものになってしまうのだ。たとえば、"next week" は、
+今からちょうど 2 週間後の日時を指すことになってしまい、
+意図したところとはたぶん違うだろう。この問題については、
+\fBsudoreplay\fP の将来のバージョンで対処するつもりだ。
+.SS "sudoreplay のデバッグ"
+バージョン 1.8.4 以上の \fBsudoreplay\fP は、
+柔軟なデバッグ用の枠組みをサポートしており、
+sudo.conf(5) ファイルの Debug 行で設定するようになっている。
 .PP
-.Vb 1
-\& sudoreplay \-l user millert
-.Ve
+sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
+sudo.conf(5) のマニュアルをご覧になっていただきたい。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+デバッグ用枠組みの設定
+.TP  26n
+\fI/var/log/sudo\-io\fP
+入出力ログを格納するデフォルトのディレクトリ
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/log\fP
+セッションログについての情報 (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/stdin\fP
+セッションの標準入力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/stdout\fP
+セッションの標準出力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/stderr\fP
+セッションの標準エラーのログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/ttyin\fP
+セッションの tty 入力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/ttyout\fP
+セッションの tty 出力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/timing\fP
+セッションのタイミングを記録したファイル (一例)
 .PP
-.\"O List sessions run by user \fIbob\fR with a command containing the string vi:
-ユーザ \fIbob\fR が実行したセッションのうち、
-コマンドに vi という文字列が含まれるものを列挙する。 
+\fBsudo\fP があるコマンドのパイプラインの一部として使用されたときを除いて、
+\fIstdin\fP, \fIstdout\fP, \fIstderr\fP ファイルは空になることに注意していただきたい。
+.SH 用例
+ユーザ \fImillert\fP が実行したセッションを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l user millert
+.RE
+.fi
 .PP
-.Vb 1
-\& sudoreplay \-l user bob command vi
-.Ve
+ユーザ \fIbob\fP が実行したセッションのうち、
+コマンドに vi という文字列が含まれるものを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l user bob command vi
+.RE
+.fi
 .PP
-.\"O List sessions run by user \fIjeff\fR that match a regular expression:
-ユーザ \fIjeff\fR が実行したセッションのうち、
+ユーザ \fIjeff\fP が実行したセッションのうち、
 コマンドが下記の正規表現にマッチするものを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l user jeff command '/bin/[a\-z]*sh'
+.RE
+.fi
 .PP
-.Vb 1
-\& sudoreplay \-l user jeff command \*(Aq/bin/[a\-z]*sh\*(Aq
-.Ve
-.PP
-.\"O List sessions run by jeff or bob on the console:
-\&\fIjeff\fR か \fIbob\fR がコンソールで実行したセッションを列挙する。
-.PP
-.Vb 1
-\& sudoreplay \-l ( user jeff or user bob ) tty console
-.Ve
-.\"O .SH "SEE ALSO"
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIsudo\fR\|(8), \fIscript\fR\|(1)
-.\"O .SH "AUTHOR"
-.SH "作者"
-.IX Header "AUTHOR"
+\fIjeff\fP か \fIbob\fP がコンソールで実行したセッションを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l \e( user jeff or user bob \e) tty console
+.RE
+.fi
+.SH 関連項目
+script(1), sudo.conf(5), sudo(8)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
 Todd C. Miller
-.\"O .SH "BUGS"
-.SH "バグ"
-.IX Header "BUGS"
-.\"O If you feel you have found a bug in \fBsudoreplay\fR, please submit a bug report
-.\"O at http://www.sudo.ws/sudo/bugs/
-\&\fBsudoreplay\fR にバグを発見したと思ったら、下記にアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.\"O .SH "SUPPORT"
-.SH "サポート"
-.IX Header "SUPPORT"
-.\"O Limited free support is available via the sudo-users mailing list,
-.\"O see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
-.\"O search the archives.
-ある程度の無料サポートが sudo-users メーリングリストを通じて利用できる。
-購読やアーカイブの検索をなさりたかったら、下記 URL をご覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.\"O .SH "DISCLAIMER"
-.SH "免責"
-.IX Header "DISCLAIMER"
-.\"O \&\fBsudoreplay\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-.\"O including, but not limited to, the implied warranties of merchantability
-.\"O and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-.\"O file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-.\"O for complete details.
-\&\fBsudoreplay\fR は「現状のまま」提供される。
+.RE
+.PP
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH バグ
+\fBsudoreplay\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudoreplay\fP は「現状のまま」提供される。
 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index f4f4bb6..9145ac5 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1996,1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM visudo.mdoc.in
+.\"
+.\" Copyright (c) 1996,1998-2005, 2007-2015
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\" 
 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
 .\"   and 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated Sat Oct  7 14:39:18 JST 2000
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002 by Yuichi SATO
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\"         by Yoichi Chonan
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "VISUDO 8"
-.TH VISUDO 8 "March 12, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH VISUDO 8 "November 20, 2015" "Sudo 1.8.17" "System Manager's Manual"
 .nh
-.\"O .SH "NAME"
-.SH "名前"
-\"O visudo \- edit the sudoers file
-visudo \- sudoers ファイルを編集する
-.\"O .SH "SYNOPSIS"
-.SH "書式"
-.IX Header "SYNOPSIS"
-\&\fBvisudo\fR [\fB\-chqsV\fR] [\fB\-f\fR \fIsudoers\fR]
-.\"O .SH "DESCRIPTION"
-.SH "説明"
-.IX Header "DESCRIPTION"
-.\"O \&\fBvisudo\fR edits the \fIsudoers\fR file in a safe fashion, analogous to
-.\"O \&\fIvipw\fR\|(8).  \fBvisudo\fR locks the \fIsudoers\fR file against multiple
-.\"O simultaneous edits, provides basic sanity checks, and checks
-.\"O for parse errors.  If the \fIsudoers\fR file is currently being
-.\"O edited you will receive a message to try again later.
-.\"O .PP
-\&\fBvisudo\fR は \fIvipw\fR\|(8) によく似た安全なやり方で 
-\&\fIsudoers\fR ファイルを編集する。 \fBvisudo\fR は \fIsudoers\fR 
-ファイルをロックして、重複した編集が同時に行われないようにするとともに、
+.if  n .ad l
+.SH 名前
+\fBvisudo\fP \- sudoers ファイルを編集する
+.SH 書式
+.HP 7n
+\fBvisudo\fP [\fB\-chqsV\fP] [\fB\-f\fP\ \fIsudoers\fP] [\fB\-x\fP\ \fIoutput_file\fP]
+.SH 説明
+\fBvisudo\fP は vipw(8) によく似た安全なやり方で \fIsudoers\fP ファイルを編集する。
+\fBvisudo\fP は \fIsudoers\fP ファイルをロックして、
+重複した編集が同時に行われないようにするとともに、
 整合性をざっと調べ、文法エラーのチェックを行う。
-\&\fIsudoers\fR ファイルが現在編集中だった場合は、
+\fIsudoers\fP ファイルが現在編集中だった場合は、
 「try again later」というメッセージを端末に表示する。
 .PP
-.\"O There is a hard-coded list of one or more editors that \fBvisudo\fR will
-.\"O use set at compile-time that may be overridden via the \fIeditor\fR \fIsudoers\fR
-.\"O \&\f(CW\*(C`Default\*(C'\fR variable.  This list defaults to \f(CW"/usr/bin/vi"\fR.  Normally,
-.\"O \&\fBvisudo\fR does not honor the \f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR environment
-.\"O variables unless they contain an editor in the aforementioned editors
-.\"O list.  However, if \fBvisudo\fR is configured with the \fI\-\-with\-env\-editor\fR
-.\"O option or the \fIenv_editor\fR \f(CW\*(C`Default\*(C'\fR variable is set in \fIsudoers\fR,
-.\"O \&\fBvisudo\fR will use any the editor defines by \f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR.
-.\"O Note that this can be a security hole since it allows the user to
-.\"O execute any program they wish simply by setting \f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR.
-.\"O .PP
-\&\fBvisudo\fR が使用するエディタについては、コンパイル時に設定された
-一つ以上のエディタからなるリストがプログラムに埋め込まれているが、
-\&\fIsudoers\fR ファイルの \f(CW\*(C`Defaults\*(C'\fR 行で
-\&\fIeditor\fR オプションを使えば、それを変更することができる。
-このリストはデフォルトでは、\f(CW"/usr/bin/vi"\fR になっている。
-通常 \fBvisudo\fR は、
-環境変数 \f(CW\*(C`VISUAL\*(C'\fR や \f(CW\*(C`EDITOR\*(C'\fR
+\fBvisudo\fP が使用するエディタについては、
+コンパイル時に設定された一つ以上のエディタからなるリストがプログラムに埋め込まれているが、
+\fIsudoers\fP ファイルの Defaults 行で \fIeditor\fP オプションを使えば、
+それを変更することができる。このリストは、デフォルトでは vi になっている。
+通常 \fBvisudo\fP は、環境変数 VISUAL や EDITOR
 の値が上述のエディタ・リストに含まれるエディタでないかぎり、
 そうした環境変数を使用しない。とは言え、
-\&\fBvisudo\fR が
-\&\fI\-\-with\-env\-editor\fR オプションを付けて configure されている場合や、
-\&\fIsudoeres\fR ファイルの \f(CW\*(C`Defaults\*(C'\fR 行で
-\&\fIenv_editor\fR オプションがセットされている場合は、\fBvisudo\fR は
-\&\f(CW\*(C`VISUAL\*(C'\fR や \f(CW\*(C`EDITOR\*(C'\fR によって指定された
-どんなエディタでも使用することになる。
-これがセキュリティホールになりかねないことに注意してほしい。
-単に \f(CW\*(C`VISUAL\*(C'\fR や \f(CW\*(C`EDITOR\*(C'\fR を設定するだけで、
+\fBvisudo\fP が \-\-with\-env\-editor オプションを付けて configure されている場合や、
+\fIsudoeres\fP ファイルの Defaults 行で \fIenv_editor\fP オプションがセットされている場合は、
+\fBvisudo\fP は VISUAL や EDITOR によって指定されたどんなエディタでも使用することになる。
+これがセキュリティホールになりかねないことに注意していただきたい。
+単に VISUAL や EDITOR を設定するだけで、
 ユーザが任意のプログラムを実行できるようになってしまうからだ。
 .PP
-.\"O \&\fBvisudo\fR parses the \fIsudoers\fR file after the edit and will
-.\"O not save the changes if there is a syntax error.  Upon finding
-.\"O an error, \fBvisudo\fR will print a message stating the line number(s)
-.\"O where the error occurred and the user will receive the
-.\"O \&\*(L"What now?\*(R" prompt.  At this point the user may enter \*(L"e\*(R"
-.\"O to re-edit the \fIsudoers\fR file, \*(L"x\*(R" to exit without
-.\"O saving the changes, or \*(L"Q\*(R" to quit and save changes.  The
-.\"O \&\*(L"Q\*(R" option should be used with extreme care because if \fBvisudo\fR
-.\"O believes there to be a parse error, so will \fBsudo\fR and no one
-.\"O will be able to \fBsudo\fR again until the error is fixed.
-.\"O If \*(L"e\*(R" is typed to edit the  \fIsudoers\fR file after a parse error
-.\"O has been detected, the cursor will be placed on the line where the
-.\"O error occurred (if the editor supports this feature).
-\&\fBvisudo\fR は編集が終わると、\fIsudoers\fR ファイルの文法解析を行い、
-文法エラーがあれば、変更を保存しない。\fBvisudo\fR はエラーを発見すると、
-エラーが起きた行番号を知らせるメッセージを表示し、\*(L"What now?\*(R"
-というプロンプトを出す。このとき、\*(L"e\*(R" を押せば、
-\&\fIsudoers\fR ファイルを再編集できる。\*(L"x\*(R" を押せば、
-変更を保存せず終了だし、\*(L"Q\*(R" を押せば、変更を保存して終了だ。
-\&\*(L"Q\*(R" の選択は、くれぐれも慎重にやってほしい。なぜなら、
-\&\fBvisudo\fR が文法エラーがあると考えるのなら、\fBsudo\fR
-も同様に考えるはずであり、エラーが訂正されるまで、もう誰にも \fBsudo\fR
-が使えなくなってしまうからだ。文法エラーが発見されたとき、\*(L"e\*(R"
-を押して \fIsudoers\fR ファイルを編集しようとすると、
-カーソルがファイルのエラーが起きた行に飛ぶ (エディタにその機能があればだが)。
-.\"O .SH "OPTIONS"
-.SH "オプション"
-.IX Header "OPTIONS"
-.\"O \&\fBvisudo\fR accepts the following command line options:
-\&\fBvisudo\fR では以下のコマンドラインオプションが使用できる。
-.IP "\-c" 12
-.IX Item "-c"
-.\"O Enable \fBcheck-only\fR mode.  The existing \fIsudoers\fR file will be
-.\"O checked for syntax errors, owner and mode.  A message will be printed
-.\"O to the standard output describing the status of \fIsudoers\fR unless
-.\"O the \fB\-q\fR option was specified.  If the check completes successfully,
-.\"O \&\fBvisudo\fR will exit with a value of 0.  If an error is encountered,
-.\"O \&\fBvisudo\fR will exit with a value of 1.
-\&\fBcheck-only\fR モードを有効にする。現在の \fIsudoers\fR ファイルの
-文法エラー、所有者、アクセス権をチェックする
-(訳注: 所有者とアクセス権のチェックをするのは sudo-1.8.4p3 以降である)。
-\&\fB\-q\fR オプションが指定されていない場合は、メッセージを標準出力に表示して、
-\&\fIsudoers\fR の状態を報告する。チェックが成功裡に終わった場合は、
-\&\fBvisudo\fR は返り値 0 で終了する。
-エラーに出会った場合の返り値は 1 である。
-.IP "\-f \fIsudoers\fR" 12
-.IX Item "-f sudoers"
-.\"O Specify and alternate \fIsudoers\fR file location.  With this option
-.\"O \&\fBvisudo\fR will edit (or check) the \fIsudoers\fR file of your choice,
-.\"O instead of the default, \fI/etc/sudoers\fR.  The lock file used
-.\"O is the specified \fIsudoers\fR file with \*(L".tmp\*(R" appended to it.
-.\"O In \fBcheck-only\fR mode only, the argument to \fB\-f\fR may be \*(L"\-\*(R",
-.\"O indicating that \fIsudoers\fR will be read from the standard input.
-\&\fIsudoers\fR ファイルの位置を指定・変更する。このオプションを付けると、
-\&\fBvisudo\fR はデフォルトの \fI/etc/sudoers\fR ではなく、
-ユーザが選んだ \fIsudoers\fR ファイルを編集 (あるいは、チェック)
-することになる。ロックファイルとしては、指定された \fIsudoers\fR
-ファイルの名前の末尾に \*(L".tmp\*(R" を付けたものが使われる。なお、
-\&\fBcheck-only\fR モードの場合だけ、\fB\-f\fR の引数に \*(L"\-\*(R"
-を指定することができる。
-これは、標準入力から \fIsudoers\fR が読み込まれるということである。
-.IP "\-h" 12
-.IX Item "-h"
-.\"O The \fB\-h\fR (\fIhelp\fR) option causes \fBvisudo\fR to print a short help message
-.\"O to the standard output and exit.
-\&\fB\-h\fR (\fIhelp\fR) オプションを指定すると、
-\&\fBvisudo\fR は標準出力に簡単なヘルプメッセージを表示して、終了する。
-.IP "\-q" 12
-.IX Item "-q"
-.\"O Enable \fBquiet\fR mode.  In this mode details about syntax errors
-.\"O are not printed.  This option is only useful when combined with
-.\"O the \fB\-c\fR option.
-\&\fBquiet\fR モードを有効にする。このモードでは、
-文法エラーの詳細情報は表示されない。このオプションが役に立つのは、
-\&\fB\-c\fR オプションと組み合わせたときだけである。
-.IP "\-s" 12
-.IX Item "-s"
-.\"O Enable \fBstrict\fR checking of the \fIsudoers\fR file.  If an alias is
-.\"O used before it is defined, \fBvisudo\fR will consider this a parse
-.\"O error.  Note that it is not possible to differentiate between an
-.\"O alias and a host name or user name that consists solely of uppercase
-.\"O letters, digits, and the underscore ('_') character.
-\&\fIsudoers\fR ファイルの\fB厳密\fR (\fBstrict\fR) チェックを有効にする。
+\fBvisudo\fP は編集が終わると、\fIsudoers\fP ファイルの文法解析を行い、
+文法エラーがあれば、変更を保存しない。\fBvisudo\fP はエラーを発見すると、
+エラーが起きた行番号を知らせるメッセージを表示し、
+"What now?" というプロンプトを出す。このとき、'e' を押せば、
+\fIsudoers\fP ファイルを再編集できる。'x' を押せば、
+変更を保存せずに終了し、'Q' を押せば、変更を保存して終了する。
+\&'Q' の選択は、くれぐれも慎重になさっていただきたい。なぜなら、
+\fBvisudo\fP が文法エラーがあると考えるのなら、\fBsudo\fP も同様に考えるはずであり、
+エラーが訂正されるまで、もう誰にも \fBsudo\fP を実行できなくなってしまうからだ。
+文法エラーが発見されたとき、'e' を押して \fIsudoers\fP
+ファイルを編集しようとすると、カーソルがファイルのエラーが起きた行に飛ぶ
+(エディタにその機能があればだが)。
+.PP
+オプションとして以下のものが使用できる。
+.TP  12n
+\fB\-c\fP, \fB\-\-check\fP
+\fIcheck\-only\fP モードを有効にする。
+現在の \fIsudoers\fP ファイルの文法エラー、所有者、アクセス権をチェックする。
+\fB\-q\fP オプションが指定されていない場合は、メッセージを標準出力に表示して、
+\fIsudoers\fP の状態を報告する。チェックが成功裡に終わった場合、
+\fBvisudo\fP は返り値 0 で終了する。エラーに出会った場合の返り値は 1 である。
+.TP  12n
+\fB\-f\fP \fIsudoers\fP, \fB\-\-file\fP=\fIsudoers\fP
+デフォルト以外の \fIsudoers\fP ファイルの位置を指定する。
+このオプションを付けると、\fBvisudo\fP はデフォルトの \fI/etc/sudoers\fP ではなく、
+ユーザが選んだ \fIsudoers\fP ファイルを編集 (あるいは、チェック) することになる。
+ロックファイルとしては、指定された \fIsudoers\fP ファイルの名前の末尾に
+".tmp" を付けたものが使われる。なお、\fIcheck\-only\fP モードの場合だけは、
+\fB\-f\fP の引数に '\-' を指定することができる。
+これは、標準入力から \fIsudoers\fP を読み込むということである。
+.TP  12n
+\fB\-h\fP, \fB\-\-help\fP
+標準出力に簡単なヘルプメッセージを表示して終了する。
+.TP  12n
+\fB\-q\fP, \fB\-\-quiet\fP
+\fIquiet\fP モードを有効にする。このモードでは、文法エラーの詳細は表示されない。
+このオプションが役に立つのは、\fB\-c\fP オプションと組み合わせたときだけである。
+.TP  12n
+\fB\-s\fP, \fB\-\-strict\fP
+\fIsudoers\fP ファイルの\fI厳密\fP (strict) チェックを有効にする。
 エイリアスを定義する前に使用すると、
-\&\fBvisudo\fR がそれを文法エラーと見なすようになるわけだ
+\fBvisudo\fP がそれを文法エラーと見なすようになる
 ホスト名やユーザ名がアルファベットの大文字、数字、アンダースコア ('_')
-だけから構成されている場合は、
-そうしたものとエイリアスとの区別が付かないことに注意してほしい。
-.IP "\-V" 12
-.IX Item "-V"
-.\"O The \fB\-V\fR (version) option causes \fBvisudo\fR to print its version number
-.\"O and exit.
-\&\fB\-V\fR (version) オプションを指定すると、
-\&\fBvisudo\fR はバージョン番号を表示して、終了する。
-.\"O .SH "ENVIRONMENT"
-.SH "環境変数"
-.IX Header "ENVIRONMENT"
-.\"O The following environment variables may be consulted depending on
-.\"O the value of the \fIeditor\fR and \fIenv_editor\fR \fIsudoers\fR variables:
-以下の環境変数が参照されるかどうかは、\fIsudoers\fR の \fIeditor\fR や
-\&\fIenv_editor\fR オプションの値次第である。
-.ie n .IP "\*(C`VISUAL\*(C'" 16
-.el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
-.IX Item "VISUAL"
-.\"O Invoked by visudo as the editor to use
-visudo が起動するエディタ
-.ie n .IP "\*(C`EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
-.IX Item "EDITOR"
-.\"O Used by visudo if \s-1VISUAL\s0 is not set
-\&\s-1VISUAL\s0 が設定されていないとき visudo が使用するエディタ
-.\"O .SH "FILES"
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudoers\fR" 24
-.el .IP "\fI/etc/sudoers\fR" 24
-.IX Item "/etc/sudoers"
-.\"O List of who can run what
+だけから構成されている場合には、
+そうしたものとエイリアスとの区別が付かないことに注意していただきたい。
+.TP  12n
+\fB\-V\fP, \fB\-\-version\fP
+\fBvisudo\fP のバージョンと \fIsudoers\fP の文法バージョンを表示して終了する。
+.TP  12n
+\fB\-x\fP \fIoutput_file\fP, \fB\-\-export\fP=\fIoutput_file\fP
+\fIsudoers\fP を JSON フォーマットに変換 (export) して、
+\fIoutput_file\fP に書き出す。\fIoutput_file\fP が '\-' の場合は、
+変換された \fIsudoers\fP ポリシーが標準出力に書き出されることになる。
+デフォルトでは、\fI/etc/sudoers\fP
+(及び、それにインクルードされているすべてのファイル) が変換の対象になる。
+\fB\-f\fP を使用すれば、それ以外の \fIsudoers\fP
+ファイルを変換対象として指定することができる。
+フォーマットを変換するのは、サードパーティのアプリケーションにとって、
+従来の \fIsudoers\fP のフォーマットよりも解析しやすくするためである。
+様々な値は明示的なタイプを持ち、そうすることで従来の \fIsudoers\fP
+フォーマットの持つ曖昧さの多くを排除している。
+.SS "デバッグと sudoers プラグインへの引き数"
+バージョン 1.8.4 以上の \fBvisudo\fP は、
+柔軟なデバッグ用の枠組みをサポートしており、
+sudo.conf(5) ファイルの Debug 行で設定するようになっている。
+.PP
+\fBsudo\fP 1.8.12 以降の \fBvisudo\fP は、
+(訳注: \fI/etc/sudo.conf\fP で指定された)
+\fIsudoers\fP プラグインに対する引き数も理解する。
+そうした引き数は、\fIsudoers\fP ファイルのパス名、UID、GID、
+ファイルのモードを、デフォルトのものから変更しているのである。
+そうした引き数が存在する場合は、プラグインのパスの後ろに
+(すなわち、\fIsudoers.so\fP の後ろに) 列挙することになっている。
+複数の引き数があるときは、ホワイトスペースで区切って指定すればよい。
+一例を挙げる。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0400
+.RE
+.fi
+.PP
+以下の引き数が使用できる。
+.TP  10n
+sudoers_file=pathname
+\fIsudoers_file\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+sudoers_uid=uid
+\fIsudoers_uid\fP 引き数を使用すると、
+\fIsudoers\fP ファイルの所有者をデフォルトのものから変更することができる。
+指定には、ユーザ ID 番号を使うべきである。
+.TP  10n
+sudoers_gid=gid
+\fIsudoers_gid\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのグループをデフォルトのものから変更することができる。
+指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。
+.TP  10n
+sudoers_mode=mode
+\fIsudoers_mode\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのファイル・モードをデフォルトのものから変更することができる。
+指定には、8 進数の値を使うべきである。
+.PP
+sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
+sudo.conf(5) のマニュアルをご覧になっていただきたい。
+.SH 環境変数
+以下の環境変数が参照されるかどうかは、\fIsudoers\fP における
+\fIeditor\fP や \fIenv_editor\fP の値次第である。
+.TP  17n
+VISUAL
+\fBvisudo\fP が起動するエディタ
+.TP  17n
+EDITOR
+VISUAL が設定されていないとき \fBvisudo\fP が使用するエディタ
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+sudo のフロントエンドの設定
+.TP  26n
+\fI/etc/sudoers\fP
 誰が何を実行できるかのリスト
-.ie n .IP "\fI/etc/sudoers.tmp\fR" 24
-.el .IP "\fI/etc/sudoers.tmp\fR" 24
-.IX Item "/etc/sudoers.tmp"
-.\"O Lock file for visudo
+.TP  26n
+\fI/etc/sudoers.tmp\fP
 visudo が使うロックファイル
-.\"O .SH "DIAGNOSTICS"
-.SH "メッセージによる診断"
-.IX Header "DIAGNOSTICS"
-.IP "sudoers file busy, try again later." 4
-.IX Item "sudoers file busy, try again later."
-.\"O Someone else is currently editing the \fIsudoers\fR file.
-現在、ほかの誰かが \fIsudoers\fR ファイルを編集中である。
-.ie n .IP "/etc/sudoers.tmp: Permission denied" 4
-.el .IP "\f(CW@sysconfdir\fR@/sudoers.tmp: Permission denied" 4
-.\"O .IX Item "/etc/sudoers.tmp: Permission denied"
-.\"O You didn't run \fBvisudo\fR as root.
-\&\fBvisudo\fR を root として実行しなかった。
-.IP "Can't find you in the passwd database" 4
-.IX Item "Can't find you in the passwd database"
-.\"O Your userid does not appear in the system passwd file.
-あなたのユーザ ID はシステムの passwd ファイルに載っていない。
-.IP "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined" 4
-.IX Item "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined"
-.\"O Either you are trying to use an undeclare {User,Runas,Host,Cmnd}_Alias
-.\"O or you have a user or host name listed that consists solely of
-.\"O uppercase letters, digits, and the underscore ('_') character.  In
-.\"O the latter case, you can ignore the warnings (\fBsudo\fR will not
-.\"O complain).  In \fB\-s\fR (strict) mode these are errors, not warnings.
+.SH "エラー (警告) メッセージ"
+.TP  6n
+sudoers file busy, try again later.
+現在、ほかの誰かが \fIsudoers\fP ファイルを編集中である。
+.TP  6n
+/etc/sudoers.tmp: Permission denied
+\fBvisudo\fP を root として実行しなかった。
+.TP  6n
+Can't find you in the passwd database
+あなたのユーザ ID はシステムの passwd ファイルに存在しない。
+.TP  6n
+Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined
 User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias)
 を、定義しないまま使用しようとしている。
 あるいは、記載したユーザ名かホスト名の中に、アルファベットの大文字、
 数字、アンダースコア ('_') のみからなるものがある。後者の場合は、
-この warning を無視して構わない (\fBsudo\fR は警告を出さないないだろう)。
-\&\fB\-s\fR (strict) モードでは、warning ではなく、error になる。
-.IP "Warning: unused {User,Runas,Host,Cmnd}_Alias" 4
-.IX Item "Warning: unused {User,Runas,Host,Cmnd}_Alias"
-.\"O The specified {User,Runas,Host,Cmnd}_Alias was defined but never
-.\"O used.  You may wish to comment out or remove the unused alias.  In
-.\"O \&\fB\-s\fR (strict) mode this is an error, not a warning.
+この warning を無視して構わない (\fBsudo\fP は文句を言わないだろう)。
+\fB\-s\fP (strict) モードでは、
+warning ではなく、error になる。
+.TP  6n
+Warning: unused {User,Runas,Host,Cmnd}_Alias
 指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、
 定義されているが、一度も使用されていない。そうした使用しないエイリアスは、
 コメントアウトするなり、消去するなりしてもよい。
-\&\fB\-s\fR (strict) モードでは、warning ではなく、error になる。
-.IP "Warning: cycle in {User,Runas,Host,Cmnd}_Alias" 4
-.IX Item "Warning: cycle in {User,Runas,Host,Cmnd}_Alias"
-.\"O The specified {User,Runas,Host,Cmnd}_Alias includes a reference to
-.\"O itself, either directly or through an alias it includes.  This is
-.\"O only a warning by default as \fBsudo\fR will ignore cycles when parsing
-.\"O the \fIsudoers\fR file.
+.TP  6n
+Warning: cycle in {User,Runas,Host,Cmnd}_Alias
 指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、
 直接自分自身を参照しているか、
 構成要素のエイリアスを通して自分自身を参照している。
-\&\fBsudo\fR は \fIsudoers\fR を解析するとき、
-循環を無視するので、これはデフォルトでは、単なる警告になっている。
-.\"O .SH "SEE ALSO"
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIvi\fR\|(1), \fIsudoers\fR\|(5), \fIsudo\fR\|(8), \fIvipw\fR\|(8)
-.\"O .SH "AUTHOR"
-.SH "作者"
-.IX Header "AUTHOR"
-.\"O Many people have worked on \fBsudo\fR over the years; this version of
-.\"O \&\fBvisudo\fR was written by:
-.\"O .PP
-多数の人々が長年に渡って \fBsudo\fR の開発に取り組んできた。
-\&\fBvisudo\fR の当バージョンを書いたのは、
-.PP
-.Vb 1
-\& Todd Miller
-.Ve
+\fBsudo\fP は \fIsudoers\fP ファイルを解析するとき、
+循環を無視するので、デフォルトでは単なる警告になっている。
+.TP  6n
+visudo: /etc/sudoers: input and output files must be different
+\fB\-x\fP オプションを使用する際に引数として指定した
+\fIoutput_file\fP ファイルのパス名が、
+変換対象である \fIsudoers\fP ファイルのパス名と同じである。
+.SH 関連項目
+vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に取り組んできた。
+このバージョンは、主として次の者が書いたコードからなっている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-.\"O See the \s-1CONTRIBUTORS\s0 file in the \fBsudo\fR distribution
-.\"O (http://www.sudo.ws/sudo/contributors.html) for a list of people
-.\"O who have contributed to \fBsudo\fR.
-である。\fBsudo\fR の開発に貢献してくださった方々のリストについては、
-\&\fBsudo\fR の配布に含まれる \s-1CONTRIBUTORS\s0 ファイルをご覧いただきたい
-(http://www.sudo.ws/sudo/contributors.html)。 
-.\"O .SH "CAVEATS"
-.SH "警告"
-.IX Header "CAVEATS"
-.\"O There is no easy way to prevent a user from gaining a root shell if 
-.\"O the editor used by \fBvisudo\fR allows shell escapes.
-\&\fBvisudo\fR が使用するエディタでシェル・エスケープが可能なかぎり、
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい
+(https://www.sudo.ws/contributors.html)。
+.SH 警告
+\fBvisudo\fP が使用するエディタでシェル・エスケープが可能なかぎり、
 ユーザがルート・シェルを獲得するのを防止する簡単な方法はない。
-.\"O .SH "BUGS"
-.SH "バグ"
-.IX Header "BUGS"
-.\"O If you feel you have found a bug in \fBvisudo\fR, please submit a bug report
-.\"O at http://www.sudo.ws/sudo/bugs/
-\&\fBvisudo\fR にバクを発見したと思ったら、下記のページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.\"O .SH "SUPPORT"
-.SH "サポート"
-.IX Header "SUPPORT"
-.\"O Limited free support is available via the sudo-users mailing list,
-.\"O see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
-.\"O search the archives.
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には下記 URL を御覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.\"O .SH "DISCLAIMER"
-.SH "免責"
-.IX Header "DISCLAIMER"
-.\"O \&\fBvisudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-.\"O including, but not limited to, the implied warranties of merchantability
-.\"O and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-.\"O file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-.\"O for complete details.
-\&\fBvisudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+.SH バグ
+\fBvisudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBvisudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index d5a0b22..8127d9e 100644 (file)
@@ -9,7 +9,7 @@ Where to find sudo
 Before you try and build sudo, *please* make sure you have the current
 version.  The latest sudo may always be gotten via anonymous ftp from
 ftp.sudo.ws in the directory /pub/sudo/ or from the sudo web site,
-http://www.sudo.ws/
+https://www.sudo.ws/
 
 The distribution is sudo-M.m.tar.gz where `M' is the major version
 number and `m' is the minor version number.  BETA versions of sudo may
@@ -21,7 +21,7 @@ What's new
 See the NEWS file for a list of major changes in this release.
 For a complete list of changes, see the ChangeLog file.  For a
 summary of major changes to the current stable release, see the web
-page, http://www.sudo.ws/sudo/stable.html.
+page, https://www.sudo.ws/stable.html.
 
 If you are upgrading from an earlier version of Sudo, please see
 the UPGRADE file in the doc directory.
@@ -29,26 +29,10 @@ the UPGRADE file in the doc directory.
 For a history of sudo please see the HISTORY file in the doc directory.
 You can find a list of contributors to sudo in the doc/CONTRIBUTORS file.
 
-System requirements
-===================
-To build sudo from the source distribution you need a POSIX-compliant
-operating system (any modern version of BSD, Linux or Unix should
-work), an ANSI/ISO C compiler that supports variadic marcos (a C99
-feature) and the ar, make and ranlib utilities.
-
-If you wish to modify the parser then you will need flex version
-2.5.2 or later and either bison or byacc (sudo comes with a pre-flex'd
-tokenizer and pre-yacc'd grammar parser).  You'll also have to
-uncomment a few lines from the Makefile or run configure with the
---with-devel option.  You can get flex from http://flex.sourceforge.net/.
-You can get GNU bison from ftp://ftp.gnu.org/pub/gnu/bison/ or any
-GNU mirror.
-
 Building the release
 ====================
-Please read the installation guide in the `INSTALL' file before
-trying to build sudo.  Pay special attention to the "OS dependent notes"
-section.
+Please read the installation guide in the `INSTALL' file before trying to
+build sudo.  Pay special attention to the "OS dependent notes" section.
 
 Copyright
 =========
@@ -59,17 +43,17 @@ Mailing lists
 =============
 sudo-announce  This list receives announcements whenever a new version
                of sudo is released.
-               http://www.sudo.ws/mailman/listinfo/sudo-announce
+               https://www.sudo.ws/mailman/listinfo/sudo-announce
 
 sudo-users     This list is for questions and general discussion about sudo.
-               http://www.sudo.ws/mailman/listinfo/sudo-users
+               https://www.sudo.ws/mailman/listinfo/sudo-users
 
 sudo-workers   This list is for people working on and porting sudo.
-               http://www.sudo.ws/mailman/listinfo/sudo-workers
+               https://www.sudo.ws/mailman/listinfo/sudo-workers
 
 sudo-commits   This list receives a message for each commit made to
                the sudo source repository.
-               http://www.sudo.ws/mailman/listinfo/sudo-commits
+               https://www.sudo.ws/mailman/listinfo/sudo-commits
 
 To subscribe to a list, visit its url (as listed above) and enter
 your email address to subscribe.  Digest versions are available but
@@ -81,14 +65,14 @@ for the appropriate links.
 
 Web page
 ========
-There is a sudo web page at http://www.sudo.ws/ that contains
-an overview of sudo, documentation, downloads, information about
-beta versions and other useful info.
+There is a sudo web page at https://www.sudo.ws/ that contains an
+overview of sudo, documentation, downloads, a bug tracker, information
+about beta versions and other useful info.
 
 Bug reports
 ===========
 If you have found what you believe to be a bug, you can file a bug
-report in the sudo bug database, on the web at http://www.sudo.ws/bugs/.
+report in the sudo bug database, on the web at https://bugzilla.sudo.ws/.
 
 Please read over the `TROUBLESHOOTING' file in the doc directory *before*
 submitting a bug report.  When reporting bugs, please be sure to include
index 348694b..985aacc 100644 (file)
@@ -7,3 +7,11 @@ Ubuntu 12.04 
 
 2012-04-03 Akihiro MOTOKI
 
+
+sudo 1.8.17 ¤Î man ¥Ú¡¼¥¸¤Ë¤Ä¤¤¤Æ¡£
+original ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¸¶Ê¸¤Ï¡¢https://www.sudo.ws ¤«¤é
+sudo-1.8.17.tar.gz ¤ò¥À¥¦¥ó¥í¡¼¥É¤·¡¢debian jessie ¤Ç
+¼¡¤Î¤è¤¦¤Ë¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ configure ¤·¡¢make ¤·¤¿¤â¤Î¤Ç¤¹¡£
+./configure --with-man --with-selinux --with-ldap
+
+2016-09-12 Chonan Yoichi
diff --git a/manual/sudo/original/man5/sudo.conf.5 b/manual/sudo/original/man5/sudo.conf.5
new file mode 100644 (file)
index 0000000..f4b0c1a
--- /dev/null
@@ -0,0 +1,722 @@
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo.conf.mdoc.in
+.\"
+.\" Copyright (c) 2010-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.TH "SUDO.CONF" "5" "June 15, 2016" "Sudo 1.8.17" "File Formats Manual"
+.nh
+.if n .ad l
+.SH "NAME"
+\fBsudo.conf\fR
+\- configuration for sudo front end
+.SH "DESCRIPTION"
+The
+\fBsudo.conf\fR
+file is used to configure the
+\fBsudo\fR
+front end.
+It specifies the security policy and I/O logging plugins, debug flags
+as well as plugin-agnostic path names and settings.
+.PP
+The
+\fBsudo.conf\fR
+file supports the following directives, described in detail below.
+.TP 10n
+Plugin
+a security policy or I/O logging plugin
+.TP 10n
+Path
+a plugin-agnostic path
+.TP 10n
+Set
+a front end setting, such as
+\fIdisable_coredump\fR
+or
+\fIgroup_source\fR
+.TP 10n
+Debug
+debug flags to aid in debugging
+\fBsudo\fR,
+\fBsudoreplay\fR,
+\fBvisudo\fR,
+and the
+\fBsudoers\fR
+plugin.
+.PP
+The pound sign
+(\(oq#\(cq)
+is used to indicate a comment.
+Both the comment character and any text after it, up to the end of
+the line, are ignored.
+.PP
+Long lines can be continued with a backslash
+(\(oq\e\(cq)
+as the last character on the line.
+Note that leading white space is removed from the beginning of lines
+even when the continuation character is used.
+.PP
+Non-comment lines that don't begin with
+\fRPlugin\fR,
+\fRPath\fR,
+\fRDebug\fR,
+or
+\fRSet\fR
+are silently ignored.
+.PP
+The
+\fBsudo.conf\fR
+file is always parsed in the
+\(Lq\fRC\fR\(Rq
+locale.
+.SS "Plugin configuration"
+\fBsudo\fR
+supports a plugin architecture for security policies and input/output
+logging.
+Third parties can develop and distribute their own policy and I/O
+logging plugins to work seamlessly with the
+\fBsudo\fR
+front end.
+Plugins are dynamically loaded based on the contents of
+\fBsudo.conf\fR.
+.PP
+A
+\fRPlugin\fR
+line consists of the
+\fRPlugin\fR
+keyword, followed by the
+\fIsymbol_name\fR
+and the
+\fIpath\fR
+to the dynamic shared object that contains the plugin.
+The
+\fIsymbol_name\fR
+is the name of the
+\fRstruct policy_plugin\fR
+or
+\fRstruct io_plugin\fR
+symbol contained in the plugin.
+The
+\fIpath\fR
+may be fully qualified or relative.
+If not fully qualified, it is relative to the directory
+specified by the
+\fIplugin_dir\fR
+\fRPath\fR
+setting, which defaults to
+\fI/usr/local/libexec/sudo\fR.
+In other words:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+.RE
+.fi
+.PP
+is equivalent to:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so
+.RE
+.fi
+.PP
+If the plugin was compiled statically into the
+\fBsudo\fR
+binary instead of being installed as a dynamic shared object, the
+\fIpath\fR
+should be specified without a leading directory,
+as it does not actually exist in the file system.
+For example:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+.RE
+.fi
+.PP
+Starting with
+\fBsudo\fR
+1.8.5, any additional parameters after the
+\fIpath\fR
+are passed as arguments to the plugin's
+\fIopen\fR
+function.
+For example, to override the compile-time default sudoers file mode:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0440
+.RE
+.fi
+.PP
+See the
+sudoers(5)
+manual for a list of supported arguments.
+.PP
+The same dynamic shared object may contain multiple plugins,
+each with a different symbol name.
+The file must be owned by uid 0 and only writable by its owner.
+Because of ambiguities that arise from composite policies, only a single
+policy plugin may be specified.
+This limitation does not apply to I/O plugins.
+.PP
+If no
+\fBsudo.conf\fR
+file is present, or if it contains no
+\fRPlugin\fR
+lines, the
+\fBsudoers\fR
+plugin will be used as the default security policy and for I/O logging
+(if enabled by the policy).
+This is equivalent to the following:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+.RE
+.fi
+.PP
+For more information on the
+\fBsudo\fR
+plugin architecture, see the
+sudo_plugin(8)
+manual.
+.SS "Path settings"
+A
+\fRPath\fR
+line consists of the
+\fRPath\fR
+keyword, followed by the name of the path to set and its value.
+For example:
+.nf
+.sp
+.RS 6n
+Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+Path askpass /usr/X11R6/bin/ssh-askpass
+.RE
+.fi
+.PP
+If no path name is specified, features relying on the specified
+setting will be disabled.
+Disabling
+\fRPath\fR
+settings is only supported in
+\fBsudo\fR
+version 1.8.16 and higher.
+.PP
+The following plugin-agnostic paths may be set in the
+\fI/etc/sudo.conf\fR
+file:
+.TP 10n
+askpass
+The fully qualified path to a helper program used to read the user's
+password when no terminal is available.
+This may be the case when
+\fBsudo\fR
+is executed from a graphical (as opposed to text-based) application.
+The program specified by
+\fIaskpass\fR
+should display the argument passed to it as the prompt and write
+the user's password to the standard output.
+The value of
+\fIaskpass\fR
+may be overridden by the
+\fRSUDO_ASKPASS\fR
+environment variable.
+.TP 10n
+noexec
+The fully-qualified path to a shared library containing dummy
+versions of the
+\fBexecl\fR(),
+\fBexecle\fR(),
+\fBexeclp\fR(),
+\fBexect\fR(),
+\fBexecv\fR(),
+\fBexecve\fR(),
+\fBexecvP\fR(),
+\fBexecvp\fR(),
+\fBexecvpe\fR(),
+\fBfexecve\fR(),
+\fBpopen\fR(),
+\fBposix_spawn\fR(),
+\fBposix_spawnp\fR(),
+and
+\fBsystem\fR()
+library functions that just return an error.
+This is used to implement the
+\fInoexec\fR
+functionality on systems that support
+\fRLD_PRELOAD\fR
+or its equivalent.
+The default value is:
+\fI/usr/local/libexec/sudo/sudo_noexec.so\fR.
+.TP 10n
+plugin_dir
+The default directory to use when searching for plugins
+that are specified without a fully qualified path name.
+The default value is
+\fI/usr/local/libexec/sudo\fR.
+.TP 10n
+sesh
+The fully-qualified path to the
+\fBsesh\fR
+binary.
+This setting is only used when
+\fBsudo\fR
+is built with SELinux support.
+The default value is
+\fI/usr/local/libexec/sudo/sesh\fR.
+.SS "Other settings"
+The
+\fBsudo.conf\fR
+file also supports the following front end settings:
+.TP 10n
+disable_coredump
+Core dumps of
+\fBsudo\fR
+itself are disabled by default to prevent the disclosure of potentially
+sensitive information.
+To aid in debugging
+\fBsudo\fR
+crashes, you may wish to re-enable core dumps by setting
+\(Lqdisable_coredump\(Rq
+to false in
+\fBsudo.conf\fR
+as follows:
+.nf
+.sp
+.RS 16n
+Set disable_coredump false
+.RE
+.fi
+.RS 10n
+.sp
+All modern operating systems place restrictions on core dumps
+from setuid processes like
+\fBsudo\fR
+so this option can be enabled without compromising security.
+To actually get a
+\fBsudo\fR
+core file you will likely need to enable core dumps for setuid processes.
+On BSD and Linux systems this is accomplished in the
+sysctl
+command.
+On Solaris, the
+coreadm
+command is used to configure core dump behavior.
+.sp
+This setting is only available in
+\fBsudo\fR
+version 1.8.4 and higher.
+.RE
+.TP 10n
+group_source
+\fBsudo\fR
+passes the invoking user's group list to the policy and I/O plugins.
+On most systems, there is an upper limit to the number of groups that
+a user may belong to simultaneously (typically 16 for compatibility
+with NFS).
+On systems with the
+getconf(1)
+utility, running:
+.RS 16n
+getconf NGROUPS_MAX
+.RE
+.RS 10n
+will return the maximum number of groups.
+.sp
+However, it is still possible to be a member of a larger number of
+groups--they simply won't be included in the group list returned
+by the kernel for the user.
+Starting with
+\fBsudo\fR
+version 1.8.7, if the user's kernel group list has the maximum number
+of entries,
+\fBsudo\fR
+will consult the group database directly to determine the group list.
+This makes it possible for the security policy to perform matching by group
+name even when the user is a member of more than the maximum number of groups.
+.sp
+The
+\fIgroup_source\fR
+setting allows the administrator to change this default behavior.
+Supported values for
+\fIgroup_source\fR
+are:
+.TP 10n
+static
+Use the static group list that the kernel returns.
+Retrieving the group list this way is very fast but it is subject
+to an upper limit as described above.
+It is
+\(Lqstatic\(Rq
+in that it does not reflect changes to the group database made
+after the user logs in.
+This was the default behavior prior to
+\fBsudo\fR
+1.8.7.
+.TP 10n
+dynamic
+Always query the group database directly.
+It is
+\(Lqdynamic\(Rq
+in that changes made to the group database after the user logs in
+will be reflected in the group list.
+On some systems, querying the group database for all of a user's
+groups can be time consuming when querying a network-based group
+database.
+Most operating systems provide an efficient method of performing
+such queries.
+Currently,
+\fBsudo\fR
+supports efficient group queries on AIX, BSD, HP-UX, Linux and
+Solaris.
+.TP 10n
+adaptive
+Only query the group database if the static group list returned
+by the kernel has the maximum number of entries.
+This is the default behavior in
+\fBsudo\fR
+1.8.7 and higher.
+.PP
+For example, to cause
+\fBsudo\fR
+to only use the kernel's static list of groups for the user:
+.nf
+.sp
+.RS 16n
+Set group_source static
+.RE
+.fi
+.sp
+This setting is only available in
+\fBsudo\fR
+version 1.8.7 and higher.
+.RE
+.TP 10n
+max_groups
+The maximum number of user groups to retrieve from the group database.
+Values less than one will be ignored.
+This setting is only used when querying the group database directly.
+It is intended to be used on systems where it is not possible to detect
+when the array to be populated with group entries is not sufficiently large.
+By default,
+\fBsudo\fR
+will allocate four times the system's maximum number of groups (see above)
+and retry with double that number if the group database query fails.
+However, some systems just return as many entries as will fit and
+do not indicate an error when there is a lack of space.
+.sp
+This setting is only available in
+\fBsudo\fR
+version 1.8.7 and higher.
+.TP 10n
+probe_interfaces
+By default,
+\fBsudo\fR
+will probe the system's network interfaces and pass the IP address
+of each enabled interface to the policy plugin.  This makes it
+possible for the plugin to match rules based on the IP address
+without having to query DNS.  On Linux systems with a large number
+of virtual interfaces, this may take a non-negligible amount of time.
+If IP-based matching is not required, network interface probing
+can be disabled as follows:
+.nf
+.sp
+.RS 16n
+Set probe_interfaces false
+.RE
+.fi
+.RS 10n
+.sp
+This setting is only available in
+\fBsudo\fR
+version 1.8.10 and higher.
+.RE
+.SS "Debug flags"
+\fBsudo\fR
+versions 1.8.4 and higher support a flexible debugging framework
+that can help track down what
+\fBsudo\fR
+is doing internally if there is a problem.
+.PP
+A
+\fRDebug\fR
+line consists of the
+\fRDebug\fR
+keyword, followed by the name of the program (or plugin) to debug
+(\fBsudo\fR, \fBvisudo\fR, \fBsudoreplay\fR, \fBsudoers\fR),
+the debug file name and a comma-separated list of debug flags.  The
+debug flag syntax used by
+\fBsudo\fR
+and the
+\fBsudoers\fR
+plugin is
+\fIsubsystem\fR@\fIpriority\fR
+but a plugin is free to use a different format so long as it does
+not include a comma
+(\(oq\&,\(cq).
+.PP
+For example:
+.nf
+.sp
+.RS 6n
+Debug sudo /var/log/sudo_debug all@warn,plugin@info
+.RE
+.fi
+.PP
+would log all debugging statements at the
+\fIwarn\fR
+level and higher in addition to those at the
+\fIinfo\fR
+level for the plugin subsystem.
+.PP
+As of
+\fBsudo\fR
+1.8.12, multiple
+\fRDebug\fR
+entries may be specified per program.
+Older versions of
+\fBsudo\fR
+only support a single
+\fRDebug\fR
+entry per program.
+Plugin-specific
+\fRDebug\fR
+entries are also supported starting with
+\fBsudo\fR
+1.8.12 and are matched by either the base name of the plugin that was loaded
+(for example
+\fRsudoers.so\fR)
+or by the plugin's fully-qualified path name.
+Previously, the
+\fBsudoers\fR
+plugin shared the same
+\fRDebug\fR
+entry as the
+\fBsudo\fR
+front end and could not be configured separately.
+.PP
+The following priorities are supported, in order of decreasing severity:
+\fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR, \fItrace\fR
+and
+\fIdebug\fR.
+Each priority, when specified, also includes all priorities higher
+than it.  For example, a priority of
+\fInotice\fR
+would include debug messages logged at
+\fInotice\fR
+and higher.
+.PP
+The priorities
+\fItrace\fR
+and
+\fIdebug\fR
+also include function call tracing which logs when a function is
+entered and when it returns.
+For example, the following trace is for the get_user_groups()
+function located in src/sudo.c:
+.nf
+.sp
+.RS 6n
+sudo[123] -> get_user_groups @ src/sudo.c:385
+sudo[123] <- get_user_groups @ src/sudo.c:429 := groups=10,0,5
+.RE
+.fi
+.PP
+When the function is entered, indicated by a right arrow
+\(oq->\(cq,
+the program, process ID, function, source file and line number
+are logged.
+When the function returns, indicated by a left arrow
+\(oq<-\(cq,
+the same information is logged along with the return value.
+In this case, the return value is a string.
+.PP
+The following subsystems are used by the
+\fBsudo\fR
+front-end:
+.TP 12n
+\fIall\fR
+matches every subsystem
+.TP 12n
+\fIargs\fR
+command line argument processing
+.TP 12n
+\fIconv\fR
+user conversation
+.TP 12n
+\fIedit\fR
+sudoedit
+.TP 12n
+\fIevent\fR
+event subsystem
+.TP 12n
+\fIexec\fR
+command execution
+.TP 12n
+\fImain\fR
+\fBsudo\fR
+main function
+.TP 12n
+\fInetif\fR
+network interface handling
+.TP 12n
+\fIpcomm\fR
+communication with the plugin
+.TP 12n
+\fIplugin\fR
+plugin configuration
+.TP 12n
+\fIpty\fR
+pseudo-tty related code
+.TP 12n
+\fIselinux\fR
+SELinux-specific handling
+.TP 12n
+\fIutil\fR
+utility functions
+.TP 12n
+\fIutmp\fR
+utmp handling
+.PP
+The
+sudoers(5)
+plugin includes support for additional subsystems.
+.SH "FILES"
+.TP 26n
+\fI/etc/sudo.conf\fR
+\fBsudo\fR
+front end configuration
+.SH "EXAMPLES"
+.nf
+.RS 0n
+#
+# Default /etc/sudo.conf file
+#
+# Format:
+#   Plugin plugin_name plugin_path plugin_options ...
+#   Path askpass /path/to/askpass
+#   Path noexec /path/to/sudo_noexec.so
+#   Debug sudo /var/log/sudo_debug all@warn
+#   Set disable_coredump true
+#
+# The plugin_path is relative to /usr/local/libexec/sudo unless
+#   fully qualified.
+# The plugin_name corresponds to a global symbol in the plugin
+#   that contains the plugin interface structure.
+# The plugin_options are optional.
+#
+# The sudoers plugin is used by default if no Plugin lines are
+# present.
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+
+#
+# Sudo askpass:
+#
+# An askpass helper program may be specified to provide a graphical
+# password prompt for "sudo -A" support.  Sudo does not ship with
+# its own askpass program but can use the OpenSSH askpass.
+#
+# Use the OpenSSH askpass
+#Path askpass /usr/X11R6/bin/ssh-askpass
+#
+# Use the Gnome OpenSSH askpass
+#Path askpass /usr/libexec/openssh/gnome-ssh-askpass
+
+#
+# Sudo noexec:
+#
+# Path to a shared library containing dummy versions of the execv(),
+# execve() and fexecve() library functions that just return an error.
+# This is used to implement the "noexec" functionality on systems that
+# support C<LD_PRELOAD> or its equivalent.
+# The compiled-in value is usually sufficient and should only be
+# changed if you rename or move the sudo_noexec.so file.
+#
+#Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+
+#
+# Core dumps:
+#
+# By default, sudo disables core dumps while it is executing
+# (they are re-enabled for the command that is run).
+# To aid in debugging sudo problems, you may wish to enable core
+# dumps by setting "disable_coredump" to false.
+#
+#Set disable_coredump false
+
+#
+# User groups:
+#
+# Sudo passes the user's group list to the policy plugin.
+# If the user is a member of the maximum number of groups (usually 16),
+# sudo will query the group database directly to be sure to include
+# the full list of groups.
+#
+# On some systems, this can be expensive so the behavior is configurable.
+# The "group_source" setting has three possible values:
+#   static   - use the user's list of groups returned by the kernel.
+#   dynamic  - query the group database to find the list of groups.
+#   adaptive - if user is in less than the maximum number of groups.
+#              use the kernel list, else query the group database.
+#
+#Set group_source static
+.RE
+.fi
+.SH "SEE ALSO"
+sudoers(5),
+sudo(8),
+sudo_plugin(8)
+.SH "HISTORY"
+See the HISTORY file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/history.html) for a brief
+history of sudo.
+.SH "AUTHORS"
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
+.SH "BUGS"
+If you feel you have found a bug in
+\fBsudo\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
+.SH "SUPPORT"
+Limited free support is available via the sudo-users mailing list,
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
+search the archives.
+.SH "DISCLAIMER"
+\fBsudo\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
diff --git a/manual/sudo/original/man5/sudo_plugin.5 b/manual/sudo/original/man5/sudo_plugin.5
new file mode 100644 (file)
index 0000000..150cbb1
--- /dev/null
@@ -0,0 +1,2788 @@
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo_plugin.mdoc.in
+.\"
+.\" Copyright (c) 2009-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.TH "SUDO_PLUGIN" "5" "January 20, 2016" "Sudo 1.8.17" "File Formats Manual"
+.nh
+.if n .ad l
+.SH "NAME"
+\fBsudo_plugin\fR
+\- Sudo Plugin API
+.SH "DESCRIPTION"
+Starting with version 1.8,
+\fBsudo\fR
+supports a plugin API
+for policy and session logging.
+Plugins may be compiled as dynamic shared objects (the default on
+systems that support them) or compiled statically into the
+\fBsudo\fR
+binary itself.
+By default, the
+\fBsudoers\fR
+policy plugin and an associated I/O logging plugin are used.
+Via the plugin API,
+\fBsudo\fR
+can be configured to use alternate policy and/or I/O logging plugins
+provided by third parties.
+The plugins to be used are specified in the
+sudo.conf(5)
+file.
+.PP
+The API is versioned with a major and minor number.
+The minor version number is incremented when additions are made.
+The major number is incremented when incompatible changes are made.
+A plugin should be check the version passed to it and make sure that the
+major version matches.
+.PP
+The plugin API is defined by the
+\fRsudo_plugin.h\fR
+header file.
+.SS "Policy plugin API"
+A policy plugin must declare and populate a
+\fRpolicy_plugin\fR
+struct in the global scope.
+This structure contains pointers to the functions that implement the
+\fBsudo\fR
+policy checks.
+The name of the symbol should be specified in
+sudo.conf(5)
+along with a path to the plugin so that
+\fBsudo\fR
+can load it.
+.nf
+.sp
+.RS 0n
+struct policy_plugin {
+#define SUDO_POLICY_PLUGIN     1
+    unsigned int type; /* always SUDO_POLICY_PLUGIN */
+    unsigned int version; /* always SUDO_API_VERSION */
+    int (*open)(unsigned int version, sudo_conv_t conversation,
+                sudo_printf_t plugin_printf, char * const settings[],
+                char * const user_info[], char * const user_env[],
+                char * const plugin_options[]);
+    void (*close)(int exit_status, int error);
+    int (*show_version)(int verbose);
+    int (*check_policy)(int argc, char * const argv[],
+                        char *env_add[], char **command_info[],
+                        char **argv_out[], char **user_env_out[]);
+    int (*list)(int argc, char * const argv[], int verbose,
+                const char *list_user);
+    int (*validate)(void);
+    void (*invalidate)(int remove);
+    int (*init_session)(struct passwd *pwd, char **user_env[]);
+    void (*register_hooks)(int version,
+       int (*register_hook)(struct sudo_hook *hook));
+    void (*deregister_hooks)(int version,
+       int (*deregister_hook)(struct sudo_hook *hook));
+};
+.RE
+.fi
+.PP
+The policy_plugin struct has the following fields:
+.TP 6n
+type
+The
+\fRtype\fR
+field should always be set to SUDO_POLICY_PLUGIN.
+.TP 6n
+version
+The
+\fRversion\fR
+field should be set to
+\fRSUDO_API_VERSION\fR.
+.sp
+This allows
+\fBsudo\fR
+to determine the API version the plugin was
+built against.
+.TP 6n
+open
+.nf
+.RS 6n
+int (*open)(unsigned int version, sudo_conv_t conversation,
+            sudo_printf_t plugin_printf, char * const settings[],
+            char * const user_info[], char * const user_env[],
+            char * const plugin_options[]);
+.RE
+.fi
+.RS 6n
+.sp
+Returns 1 on success, 0 on failure, \-1 if a general error occurred,
+or \-2 if there was a usage error.
+In the latter case,
+\fBsudo\fR
+will print a usage message before it exits.
+If an error occurs, the plugin may optionally call the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present additional error information to the user.
+.sp
+The function arguments are as follows:
+.TP 6n
+version
+The version passed in by
+\fBsudo\fR
+allows the plugin to determine the
+major and minor version number of the plugin API supported by
+\fBsudo\fR.
+.TP 6n
+conversation
+A pointer to the
+\fBconversation\fR()
+function that can be used by the plugin to interact with the user (see below).
+Returns 0 on success and \-1 on failure.
+.TP 6n
+plugin_printf
+A pointer to a
+\fBprintf\fR()-style
+function that may be used to display informational or error messages
+(see below).
+Returns the number of characters printed on success and \-1 on failure.
+.TP 6n
+settings
+A vector of user-supplied
+\fBsudo\fR
+settings in the form of
+\(Lqname=value\(Rq
+strings.
+The vector is terminated by a
+\fRNULL\fR
+pointer.
+These settings correspond to flags the user specified when running
+\fBsudo\fR.
+As such, they will only be present when the corresponding flag has
+been specified on the command line.
+.sp
+When parsing
+\fIsettings\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.PP
+.RS 6n
+.PD 0
+.TP 6n
+bsdauth_type=string
+Authentication type, if specified by the
+\fB\-a\fR
+flag, to use on
+systems where BSD authentication is supported.
+.PD
+.TP 6n
+closefrom=number
+If specified, the user has requested via the
+\fB\-C\fR
+flag that
+\fBsudo\fR
+close all files descriptors with a value of
+\fInumber\fR
+or higher.
+The plugin may optionally pass this, or another value, back in the
+\fIcommand_info\fR
+list.
+.TP 6n
+debug_flags=string
+A debug file path name followed by a space and a comma-separated
+list of debug flags that correspond to the plugin's
+\fRDebug\fR
+entry in
+sudo.conf(5),
+if there is one.
+The flags are passed to the plugin exactly as they appear in
+sudo.conf(5).
+The syntax used by
+\fBsudo\fR
+and the
+\fBsudoers\fR
+plugin is
+\fIsubsystem\fR@\fIpriority\fR
+but a plugin is free to use a different
+format so long as it does not include a comma
+(\(oq,\&\(cq).
+Prior to
+\fBsudo\fR
+1.8.12, there was no way to specify plugin-specific
+\fIdebug_flags\fR
+so the value was always the same as that used by the
+\fBsudo\fR
+front end and did not include a path name, only the flags themselves.
+As of version 1.7 of the plugin interface,
+\fBsudo\fR
+will only pass
+\fIdebug_flags\fR
+if
+sudo.conf(5)
+contains a plugin-specific
+\fRDebug\fR
+entry.
+.TP 6n
+debug_level=number
+This setting has been deprecated in favor of
+\fIdebug_flags\fR.
+.TP 6n
+ignore_ticket=bool
+Set to true if the user specified the
+\fB\-k\fR
+flag along with a
+command, indicating that the user wishes to ignore any cached
+authentication credentials.
+\fIimplied_shell\fR
+to true.
+This allows
+\fBsudo\fR
+with no arguments
+to be used similarly to
+su(1).
+If the plugin does not to support this usage, it may return a value of \-2
+from the
+\fBcheck_policy\fR()
+function, which will cause
+\fBsudo\fR
+to print a usage message and
+exit.
+.TP 6n
+implied_shell=bool
+If the user does not specify a program on the command line,
+\fBsudo\fR
+will pass the plugin the path to the user's shell and set
+.TP 6n
+login_class=string
+BSD login class to use when setting resource limits and nice value,
+if specified by the
+\fB\-c\fR
+flag.
+.TP 6n
+login_shell=bool
+Set to true if the user specified the
+\fB\-i\fR
+flag, indicating that
+the user wishes to run a login shell.
+.TP 6n
+max_groups=int
+The maximum number of groups a user may belong to.
+This will only be present if there is a corresponding setting in
+sudo.conf(5).
+.TP 6n
+network_addrs=list
+A space-separated list of IP network addresses and netmasks in the
+form
+\(Lqaddr/netmask\(Rq,
+e.g.\&
+\(Lq192.168.1.2/255.255.255.0\(Rq.
+The address and netmask pairs may be either IPv4 or IPv6, depending on
+what the operating system supports.
+If the address contains a colon
+(\(oq:\&\(cq),
+it is an IPv6 address, else it is IPv4.
+.TP 6n
+noninteractive=bool
+Set to true if the user specified the
+\fB\-n\fR
+flag, indicating that
+\fBsudo\fR
+should operate in non-interactive mode.
+The plugin may reject a command run in non-interactive mode if user
+interaction is required.
+.TP 6n
+plugin_dir=string
+The default plugin directory used by the
+\fBsudo\fR
+front end.
+This is the default directory set at compile time and may not
+correspond to the directory the running plugin was loaded from.
+It may be used by a plugin to locate support files.
+.TP 6n
+plugin_path=string
+The path name of plugin loaded by the
+\fBsudo\fR
+front end.
+The path name will be a fully-qualified unless the plugin was
+statically compiled into
+\fBsudo\fR.
+.TP 6n
+preserve_environment=bool
+Set to true if the user specified the
+\fB\-E\fR
+flag, indicating that
+the user wishes to preserve the environment.
+.TP 6n
+preserve_groups=bool
+Set to true if the user specified the
+\fB\-P\fR
+flag, indicating that
+the user wishes to preserve the group vector instead of setting it
+based on the runas user.
+.TP 6n
+progname=string
+The command name that sudo was run as, typically
+\(Lqsudo\(Rq
+or
+\(Lqsudoedit\(Rq.
+.TP 6n
+prompt=string
+The prompt to use when requesting a password, if specified via
+the
+\fB\-p\fR
+flag.
+.TP 6n
+remote_host=string
+The name of the remote host to run the command on, if specified via
+the
+\fB\-h\fR
+option.
+Support for running the command on a remote host is meant to be implemented
+via a helper program that is executed in place of the user-specified command.
+The
+\fBsudo\fR
+front end is only capable of executing commands on the local host.
+Only available starting with API version 1.4.
+.TP 6n
+run_shell=bool
+Set to true if the user specified the
+\fB\-s\fR
+flag, indicating that the user wishes to run a shell.
+.TP 6n
+runas_group=string
+The group name or gid to run the command as, if specified via
+the
+\fB\-g\fR
+flag.
+.TP 6n
+runas_user=string
+The user name or uid to run the command as, if specified via the
+\fB\-u\fR
+flag.
+.TP 6n
+selinux_role=string
+SELinux role to use when executing the command, if specified by
+the
+\fB\-r\fR
+flag.
+.TP 6n
+selinux_type=string
+SELinux type to use when executing the command, if specified by
+the
+\fB\-t\fR
+flag.
+.TP 6n
+set_home=bool
+Set to true if the user specified the
+\fB\-H\fR
+flag.
+If true, set the
+\fRHOME\fR
+environment variable to the target user's home directory.
+.TP 6n
+sudoedit=bool
+Set to true when the
+\fB\-e\fR
+flag is is specified or if invoked as
+\fBsudoedit\fR.
+The plugin shall substitute an editor into
+\fIargv\fR
+in the
+\fBcheck_policy\fR()
+function or return \-2 with a usage error
+if the plugin does not support
+\fIsudoedit\fR.
+For more information, see the
+\fIcheck_policy\fR
+section.
+.PP
+Additional settings may be added in the future so the plugin should
+silently ignore settings that it does not recognize.
+.RE
+.TP 6n
+user_info
+A vector of information about the user running the command in the form of
+\(Lqname=value\(Rq
+strings.
+The vector is terminated by a
+\fRNULL\fR
+pointer.
+.sp
+When parsing
+\fIuser_info\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.PP
+.RS 6n
+.PD 0
+.TP 6n
+cols=int
+The number of columns the user's terminal supports.
+If there is no terminal device available, a default value of 80 is used.
+.PD
+.TP 6n
+cwd=string
+The user's current working directory.
+.TP 6n
+egid=gid_t
+The effective group ID of the user invoking
+\fBsudo\fR.
+.TP 6n
+euid=uid_t
+The effective user ID of the user invoking
+\fBsudo\fR.
+.TP 6n
+gid=gid_t
+The real group ID of the user invoking
+\fBsudo\fR.
+.TP 6n
+groups=list
+The user's supplementary group list formatted as a string of
+comma-separated group IDs.
+.TP 6n
+host=string
+The local machine's hostname as returned by the
+gethostname(2)
+system call.
+.TP 6n
+lines=int
+The number of lines the user's terminal supports.
+If there is
+no terminal device available, a default value of 24 is used.
+.TP 6n
+pgid=int
+The ID of the process group that the running
+\fBsudo\fR
+process is a member of.
+Only available starting with API version 1.2.
+.TP 6n
+pid=int
+The process ID of the running
+\fBsudo\fR
+process.
+Only available starting with API version 1.2.
+.TP 6n
+plugin_options
+Any (non-comment) strings immediately after the plugin path are
+passed as arguments to the plugin.
+These arguments are split on a white space boundary and are passed to
+the plugin in the form of a
+\fRNULL\fR-terminated
+array of strings.
+If no arguments were
+specified,
+\fIplugin_options\fR
+will be the
+\fRNULL\fR
+pointer.
+.sp
+NOTE: the
+\fIplugin_options\fR
+parameter is only available starting with
+API version 1.2.
+A plugin
+\fBmust\fR
+check the API version specified
+by the
+\fBsudo\fR
+front end before using
+\fIplugin_options\fR.
+Failure to do so may result in a crash.
+.TP 6n
+ppid=int
+The parent process ID of the running
+\fBsudo\fR
+process.
+Only available starting with API version 1.2.
+.TP 6n
+sid=int
+The session ID of the running
+\fBsudo\fR
+process or 0 if
+\fBsudo\fR
+is not part of a POSIX job control session.
+Only available starting with API version 1.2.
+.TP 6n
+tcpgid=int
+The ID of the foreground process group associated with the terminal
+device associated with the
+\fBsudo\fR
+process or \-1 if there is no
+terminal present.
+Only available starting with API version 1.2.
+.TP 6n
+tty=string
+The path to the user's terminal device.
+If the user has no terminal device associated with the session,
+the value will be empty, as in
+\(Lq\fRtty=\fR\(Rq.
+.TP 6n
+uid=uid_t
+The real user ID of the user invoking
+\fBsudo\fR.
+.TP 6n
+user=string
+The name of the user invoking
+\fBsudo\fR.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+user_env
+The user's environment in the form of a
+\fRNULL\fR-terminated vector of
+\(Lqname=value\(Rq
+strings.
+.sp
+When parsing
+\fIuser_env\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+close
+.br
+.nf
+.RS 6n
+void (*close)(int exit_status, int error);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBclose\fR()
+function is called when the command being run by
+\fBsudo\fR
+finishes.
+.sp
+The function arguments are as follows:
+.TP 6n
+exit_status
+The command's exit status, as returned by the
+wait(2)
+system call.
+The value of
+\fRexit_status\fR
+is undefined if
+\fRerror\fR
+is non-zero.
+.TP 6n
+error
+.br
+If the command could not be executed, this is set to the value of
+\fRerrno\fR
+set by the
+execve(2)
+system call.
+The plugin is responsible for displaying error information via the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function.
+If the command was successfully executed, the value of
+\fRerror\fR
+is 0.
+.PP
+If no
+\fBclose\fR()
+function is defined, no I/O logging plugins are loaded,
+and neither the
+\fItimeout\fR
+not
+\fIuse_pty\fR
+options are set in the
+\fRcommand_info\fR
+list, the
+\fBsudo\fR
+front end may execute the command directly instead of running
+it as a child process.
+.RE
+.TP 6n
+show_version
+.nf
+.RS 6n
+int (*show_version)(int verbose);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBshow_version\fR()
+function is called by
+\fBsudo\fR
+when the user specifies
+the
+\fB\-V\fR
+option.
+The plugin may display its version information to the user via the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function using
+\fRSUDO_CONV_INFO_MSG\fR.
+If the user requests detailed version information, the verbose flag will be set.
+.RE
+.TP 6n
+check_policy
+.nf
+.RS 6n
+int (*check_policy)(int argc, char * const argv[]
+                    char *env_add[], char **command_info[],
+                    char **argv_out[], char **user_env_out[]);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBcheck_policy\fR()
+function is called by
+\fBsudo\fR
+to determine
+whether the user is allowed to run the specified commands.
+.sp
+If the
+\fIsudoedit\fR
+option was enabled in the
+\fIsettings\fR
+array
+passed to the
+\fBopen\fR()
+function, the user has requested
+\fIsudoedit\fR
+mode.
+\fIsudoedit\fR
+is a mechanism for editing one or more files
+where an editor is run with the user's credentials instead of with
+elevated privileges.
+\fBsudo\fR
+achieves this by creating user-writable
+temporary copies of the files to be edited and then overwriting the
+originals with the temporary copies after editing is complete.
+If the plugin supports
+\fIsudoedit\fR,
+it should choose the editor to be used, potentially from a variable
+in the user's environment, such as
+\fREDITOR\fR,
+and include it in
+\fIargv_out\fR
+(note that environment
+variables may include command line flags).
+The files to be edited should be copied from
+\fIargv\fR
+into
+\fIargv_out\fR,
+separated from the
+editor and its arguments by a
+\(Lq\fR--\fR\(Rq
+element.
+The
+\(Lq\fR--\fR\(Rq
+will
+be removed by
+\fBsudo\fR
+before the editor is executed.
+The plugin should also set
+\fIsudoedit=true\fR
+in the
+\fIcommand_info\fR
+list.
+.sp
+The
+\fBcheck_policy\fR()
+function returns 1 if the command is allowed,
+0 if not allowed, \-1 for a general error, or \-2 for a usage error
+or if
+\fIsudoedit\fR
+was specified but is unsupported by the plugin.
+In the latter case,
+\fBsudo\fR
+will print a usage message before it
+exits.
+If an error occurs, the plugin may optionally call the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present additional error information to the user.
+.sp
+The function arguments are as follows:
+.TP 6n
+argc
+The number of elements in
+\fIargv\fR,
+not counting the final
+\fRNULL\fR
+pointer.
+.TP 6n
+argv
+The argument vector describing the command the user wishes to run,
+in the same form as what would be passed to the
+execve(2)
+system call.
+The vector is terminated by a
+\fRNULL\fR
+pointer.
+.TP 6n
+env_add
+Additional environment variables specified by the user on the command
+line in the form of a
+\fRNULL\fR-terminated
+vector of
+\(Lqname=value\(Rq
+strings.
+The plugin may reject the command if one or more variables
+are not allowed to be set, or it may silently ignore such variables.
+.sp
+When parsing
+\fIenv_add\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.TP 6n
+command_info
+Information about the command being run in the form of
+\(Lqname=value\(Rq
+strings.
+These values are used by
+\fBsudo\fR
+to set the execution
+environment when running a command.
+The plugin is responsible for creating and populating the vector,
+which must be terminated with a
+\fRNULL\fR
+pointer.
+The following values are recognized by
+\fBsudo\fR:
+.PP
+.RS 6n
+.PD 0
+.TP 6n
+chroot=string
+The root directory to use when running the command.
+.PD
+.TP 6n
+closefrom=number
+If specified,
+\fBsudo\fR
+will close all files descriptors with a value
+of
+\fInumber\fR
+or higher.
+.TP 6n
+command=string
+Fully qualified path to the command to be executed.
+.TP 6n
+cwd=string
+The current working directory to change to when executing the command.
+.TP 6n
+exec_background=bool
+By default,
+\fBsudo\fR
+runs a command as the foreground process as long as
+\fBsudo\fR
+itself is running in the foreground.
+When
+\fIexec_background\fR
+is enabled and the command is being run in a pty (due to I/O logging
+or the
+\fIuse_pty\fR
+setting), the command will be run as a background process.
+Attempts to read from the controlling terminal (or to change terminal
+settings) will result in the command being suspended with the
+\fRSIGTTIN\fR
+signal (or
+\fRSIGTTOU\fR
+in the case of terminal settings).
+If this happens when
+\fBsudo\fR
+is a foreground process, the command will be granted the controlling terminal
+and resumed in the foreground with no user intervention required.
+The advantage of initially running the command in the background is that
+\fBsudo\fR
+need not read from the terminal unless the command explicitly requests it.
+Otherwise, any terminal input must be passed to the command, whether it
+has required it or not (the kernel buffers terminals so it is not possible
+to tell whether the command really wants the input).
+This is different from historic
+\fIsudo\fR
+behavior or when the command is not being run in a pty.
+.sp
+For this to work seamlessly, the operating system must support the
+automatic restarting of system calls.
+Unfortunately, not all operating systems do this by default,
+and even those that do may have bugs.
+For example, Mac OS X fails to restart the
+\fBtcgetattr\fR()
+and
+\fBtcsetattr\fR()
+system calls (this is a bug in Mac OS X).
+Furthermore, because this behavior depends on the command stopping with the
+\fRSIGTTIN\fR
+or
+\fRSIGTTOU\fR
+signals, programs that catch these signals and suspend themselves
+with a different signal (usually
+\fRSIGTOP\fR)
+will not be automatically foregrounded.
+Some versions of the linux
+su(1)
+command behave this way.
+Because of this, a plugin should not set
+\fIexec_background\fR
+unless it is explicitly enabled by the administrator and there should
+be a way to enabled or disable it on a per-command basis.
+.sp
+This setting has no effect unless I/O logging is enabled or
+\fIuse_pty\fR
+is enabled.
+.TP 6n
+execfd=number
+If specified,
+\fBsudo\fR
+will use the
+fexecve(2)
+system call to execute the command instead of
+execve(2).
+The specified
+\fInumber\fR
+must refer to an open file descriptor.
+.TP 6n
+iolog_compress=bool
+Set to true if the I/O logging plugins, if any, should compress the
+log data.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+.TP 6n
+iolog_path=string
+Fully qualified path to the file or directory in which I/O log is
+to be stored.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+If no I/O logging plugin is loaded, this setting has no effect.
+.TP 6n
+iolog_stdin=bool
+Set to true if the I/O logging plugins, if any, should log the
+standard input if it is not connected to a terminal device.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+.TP 6n
+iolog_stdout=bool
+Set to true if the I/O logging plugins, if any, should log the
+standard output if it is not connected to a terminal device.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+.TP 6n
+iolog_stderr=bool
+Set to true if the I/O logging plugins, if any, should log the
+standard error if it is not connected to a terminal device.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+.TP 6n
+iolog_ttyin=bool
+Set to true if the I/O logging plugins, if any, should log all
+terminal input.
+This only includes input typed by the user and not from a pipe or
+redirected from a file.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+.TP 6n
+iolog_ttyout=bool
+Set to true if the I/O logging plugins, if any, should log all
+terminal output.
+This only includes output to the screen, not output to a pipe or file.
+This is a hint to the I/O logging plugin which may choose to ignore it.
+.TP 6n
+login_class=string
+BSD login class to use when setting resource limits and nice value
+(optional).
+This option is only set on systems that support login classes.
+.TP 6n
+nice=int
+Nice value (priority) to use when executing the command.
+The nice value, if specified, overrides the priority associated with the
+\fIlogin_class\fR
+on BSD systems.
+.TP 6n
+noexec=bool
+If set, prevent the command from executing other programs.
+.TP 6n
+preserve_fds=list
+A comma-separated list of file descriptors that should be
+preserved, regardless of the value of the
+\fIclosefrom\fR
+setting.
+Only available starting with API version 1.5.
+.TP 6n
+preserve_groups=bool
+If set,
+\fBsudo\fR
+will preserve the user's group vector instead of
+initializing the group vector based on
+\fRrunas_user\fR.
+.TP 6n
+runas_egid=gid
+Effective group ID to run the command as.
+If not specified, the value of
+\fIrunas_gid\fR
+is used.
+.TP 6n
+runas_euid=uid
+Effective user ID to run the command as.
+If not specified, the value of
+\fIrunas_uid\fR
+is used.
+.TP 6n
+runas_gid=gid
+Group ID to run the command as.
+.TP 6n
+runas_groups=list
+The supplementary group vector to use for the command in the form
+of a comma-separated list of group IDs.
+If
+\fIpreserve_groups\fR
+is set, this option is ignored.
+.TP 6n
+runas_uid=uid
+User ID to run the command as.
+.TP 6n
+selinux_role=string
+SELinux role to use when executing the command.
+.TP 6n
+selinux_type=string
+SELinux type to use when executing the command.
+.TP 6n
+set_utmp=bool
+Create a utmp (or utmpx) entry when a pseudo-tty is allocated.
+By default, the new entry will be a copy of the user's existing utmp
+entry (if any), with the tty, time, type and pid fields updated.
+.TP 6n
+sudoedit=bool
+Set to true when in
+\fIsudoedit\fR
+mode.
+The plugin may enable
+\fIsudoedit\fR
+mode even if
+\fBsudo\fR
+was not invoked as
+\fBsudoedit\fR.
+This allows the plugin to perform command substitution and transparently
+enable
+\fIsudoedit\fR
+when the user attempts to run an editor.
+.TP 6n
+sudoedit_checkdir=bool
+Set to false to disable directory writability checks in
+\fBsudoedit\fR.
+By default,
+\fBsudoedit\fR
+1.8.16 and higher will check all directory components of the path to be
+edited for writability by the invoking user.
+Symbolic links will not be followed in writable directories and
+\fBsudoedit\fR
+will refuse to edit a file located in a writable directory.
+These restrictions are not enforced when
+\fBsudoedit\fR
+is run by root.
+The
+\fIsudoedit_follow\fR
+option can be set to false to disable this check.
+Only available starting with API version 1.8.
+.TP 6n
+sudoedit_follow=bool
+Set to true to allow
+\fBsudoedit\fR
+to edit files that are symbolic links.
+By default,
+\fBsudoedit\fR
+1.8.15 and higher will refuse to open a symbolic link.
+The
+\fIsudoedit_follow\fR
+option can be used to restore the older behavior and allow
+\fBsudoedit\fR
+to open symbolic links.
+Only available starting with API version 1.8.
+.TP 6n
+timeout=int
+Command timeout.
+If non-zero then when the timeout expires the command will be killed.
+.TP 6n
+umask=octal
+The file creation mask to use when executing the command.
+.TP 6n
+use_pty=bool
+Allocate a pseudo-tty to run the command in, regardless of whether
+or not I/O logging is in use.
+By default,
+\fBsudo\fR
+will only run
+the command in a pty when an I/O log plugin is loaded.
+.TP 6n
+utmp_user=string
+User name to use when constructing a new utmp (or utmpx) entry when
+\fIset_utmp\fR
+is enabled.
+This option can be used to set the user field in the utmp entry to
+the user the command runs as rather than the invoking user.
+If not set,
+\fBsudo\fR
+will base the new entry on
+the invoking user's existing entry.
+.PP
+Unsupported values will be ignored.
+.RE
+.TP 6n
+argv_out
+The
+\fRNULL\fR-terminated
+argument vector to pass to the
+execve(2)
+system call when executing the command.
+The plugin is responsible for allocating and populating the vector.
+.TP 6n
+user_env_out
+The
+\fRNULL\fR-terminated
+environment vector to use when executing the command.
+The plugin is responsible for allocating and populating the vector.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+list
+.nf
+.RS 6n
+int (*list)(int verbose, const char *list_user,
+            int argc, char * const argv[]);
+.RE
+.fi
+.RS 6n
+.sp
+List available privileges for the invoking user.
+Returns 1 on success, 0 on failure and \-1 on error.
+On error, the plugin may optionally call the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present additional error information to
+the user.
+.sp
+Privileges should be output via the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function using
+\fRSUDO_CONV_INFO_MSG\fR,
+.TP 6n
+verbose
+Flag indicating whether to list in verbose mode or not.
+.TP 6n
+list_user
+The name of a different user to list privileges for if the policy
+allows it.
+If
+\fRNULL\fR,
+the plugin should list the privileges of the invoking user.
+.TP 6n
+argc
+The number of elements in
+\fIargv\fR,
+not counting the final
+\fRNULL\fR
+pointer.
+.TP 6n
+argv
+If
+non-\fRNULL\fR,
+an argument vector describing a command the user
+wishes to check against the policy in the same form as what would
+be passed to the
+execve(2)
+system call.
+If the command is permitted by the policy, the fully-qualified path
+to the command should be displayed along with any command line arguments.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+validate
+.nf
+.RS 6n
+int (*validate)(void);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBvalidate\fR()
+function is called when
+\fBsudo\fR
+is run with the
+\fB\-v\fR
+flag.
+For policy plugins such as
+\fBsudoers\fR
+that cache
+authentication credentials, this function will validate and cache
+the credentials.
+.sp
+The
+\fBvalidate\fR()
+function should be
+\fRNULL\fR
+if the plugin does not support credential caching.
+.sp
+Returns 1 on success, 0 on failure and \-1 on error.
+On error, the plugin may optionally call the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present additional
+error information to the user.
+.RE
+.TP 6n
+invalidate
+.nf
+.RS 6n
+void (*invalidate)(int remove);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBinvalidate\fR()
+function is called when
+\fBsudo\fR
+is called with
+the
+\fB\-k\fR
+or
+\fB\-K\fR
+flag.
+For policy plugins such as
+\fBsudoers\fR
+that
+cache authentication credentials, this function will invalidate the
+credentials.
+If the
+\fIremove\fR
+flag is set, the plugin may remove
+the credentials instead of simply invalidating them.
+.sp
+The
+\fBinvalidate\fR()
+function should be
+\fRNULL\fR
+if the plugin does not support credential caching.
+.RE
+.TP 6n
+init_session
+.nf
+.RS 6n
+int (*init_session)(struct passwd *pwd, char **user_envp[);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBinit_session\fR()
+function is called before
+\fBsudo\fR
+sets up the
+execution environment for the command.
+It is run in the parent
+\fBsudo\fR
+process and before any uid or gid changes.
+This can be used to perform session setup that is not supported by
+\fIcommand_info\fR,
+such as opening the PAM session.
+The
+\fBclose\fR()
+function can be
+used to tear down the session that was opened by
+\fRinit_session\fR.
+.sp
+The
+\fIpwd\fR
+argument points to a passwd struct for the user the
+command will be run as if the uid the command will run as was found
+in the password database, otherwise it will be
+\fRNULL\fR.
+.sp
+The
+\fIuser_env\fR
+argument points to the environment the command will
+run in, in the form of a
+\fRNULL\fR-terminated
+vector of
+\(Lqname=value\(Rq
+strings.
+This is the same string passed back to the front end via
+the Policy Plugin's
+\fIuser_env_out\fR
+parameter.
+If the
+\fBinit_session\fR()
+function needs to modify the user environment, it should update the
+pointer stored in
+\fIuser_env\fR.
+The expected use case is to merge the contents of the PAM environment
+(if any) with the contents of
+\fIuser_env\fR.
+NOTE: the
+\fIuser_env\fR
+parameter is only available
+starting with API version 1.2.
+A plugin
+\fBmust\fR
+check the API
+version specified by the
+\fBsudo\fR
+front end before using
+\fIuser_env\fR.
+Failure to do so may result in a crash.
+.sp
+Returns 1 on success, 0 on failure and \-1 on error.
+On error, the plugin may optionally call the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present additional
+error information to the user.
+.RE
+.TP 6n
+register_hooks
+.nf
+.RS 6n
+void (*register_hooks)(int version,
+   int (*register_hook)(struct sudo_hook *hook));
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBregister_hooks\fR()
+function is called by the sudo front end to
+register any hooks the plugin needs.
+If the plugin does not support hooks,
+\fRregister_hooks\fR
+should be set to the
+\fRNULL\fR
+pointer.
+.sp
+The
+\fIversion\fR
+argument describes the version of the hooks API
+supported by the
+\fBsudo\fR
+front end.
+.sp
+The
+\fBregister_hook\fR()
+function should be used to register any supported
+hooks the plugin needs.
+It returns 0 on success, 1 if the hook type is not supported and \-1
+if the major version in
+\fRstruct hook\fR
+does not match the front end's major hook API version.
+.sp
+See the
+\fIHook function API\fR
+section below for more information
+about hooks.
+.sp
+NOTE: the
+\fBregister_hooks\fR()
+function is only available starting
+with API version 1.2.
+If the
+\fBsudo\fR
+front end doesn't support API
+version 1.2 or higher,
+\fRregister_hooks\fR
+will not be called.
+.RE
+.TP 6n
+deregister_hooks
+.nf
+.RS 6n
+void (*deregister_hooks)(int version,
+   int (*deregister_hook)(struct sudo_hook *hook));
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBderegister_hooks\fR()
+function is called by the sudo front end
+to deregister any hooks the plugin has registered.
+If the plugin does not support hooks,
+\fRderegister_hooks\fR
+should be set to the
+\fRNULL\fR
+pointer.
+.sp
+The
+\fIversion\fR
+argument describes the version of the hooks API
+supported by the
+\fBsudo\fR
+front end.
+.sp
+The
+\fBderegister_hook\fR()
+function should be used to deregister any
+hooks that were put in place by the
+\fBregister_hook\fR()
+function.
+If the plugin tries to deregister a hook that the front end does not support,
+\fRderegister_hook\fR
+will return an error.
+.sp
+See the
+\fIHook function API\fR
+section below for more information
+about hooks.
+.sp
+NOTE: the
+\fBderegister_hooks\fR()
+function is only available starting
+with API version 1.2.
+If the
+\fBsudo\fR
+front end doesn't support API
+version 1.2 or higher,
+\fRderegister_hooks\fR
+will not be called.
+.RE
+.PP
+\fIPolicy Plugin Version Macros\fR
+.nf
+.sp
+.RS 0n
+/* Plugin API version major/minor. */
+#define SUDO_API_VERSION_MAJOR 1
+#define SUDO_API_VERSION_MINOR 2
+#define SUDO_API_MKVERSION(x, y) ((x << 16) | y)
+#define SUDO_API_VERSION SUDO_API_MKVERSION(SUDO_API_VERSION_MAJOR,\e
+                                            SUDO_API_VERSION_MINOR)
+
+/* Getters and setters for API version */
+#define SUDO_API_VERSION_GET_MAJOR(v) ((v) >> 16)
+#define SUDO_API_VERSION_GET_MINOR(v) ((v) & 0xffff)
+#define SUDO_API_VERSION_SET_MAJOR(vp, n) do { \e
+    *(vp) = (*(vp) & 0x0000ffff) | ((n) << 16); \e
+} while(0)
+#define SUDO_API_VERSION_SET_MINOR(vp, n) do { \e
+    *(vp) = (*(vp) & 0xffff0000) | (n); \e
+} while(0)
+.RE
+.fi
+.SS "I/O plugin API"
+.nf
+.RS 0n
+struct io_plugin {
+#define SUDO_IO_PLUGIN 2
+    unsigned int type; /* always SUDO_IO_PLUGIN */
+    unsigned int version; /* always SUDO_API_VERSION */
+    int (*open)(unsigned int version, sudo_conv_t conversation,
+                sudo_printf_t plugin_printf, char * const settings[],
+                char * const user_info[], char * const command_info[],
+                int argc, char * const argv[], char * const user_env[],
+                char * const plugin_options[]);
+    void (*close)(int exit_status, int error); /* wait status or error */
+    int (*show_version)(int verbose);
+    int (*log_ttyin)(const char *buf, unsigned int len);
+    int (*log_ttyout)(const char *buf, unsigned int len);
+    int (*log_stdin)(const char *buf, unsigned int len);
+    int (*log_stdout)(const char *buf, unsigned int len);
+    int (*log_stderr)(const char *buf, unsigned int len);
+    void (*register_hooks)(int version,
+       int (*register_hook)(struct sudo_hook *hook));
+    void (*deregister_hooks)(int version,
+       int (*deregister_hook)(struct sudo_hook *hook));
+};
+.RE
+.fi
+.PP
+When an I/O plugin is loaded,
+\fBsudo\fR
+runs the command in a pseudo-tty.
+This makes it possible to log the input and output from the user's
+session.
+If any of the standard input, standard output or standard error do not
+correspond to a tty,
+\fBsudo\fR
+will open a pipe to capture
+the I/O for logging before passing it on.
+.PP
+The log_ttyin function receives the raw user input from the terminal
+device (note that this will include input even when echo is disabled,
+such as when a password is read).
+The log_ttyout function receives output from the pseudo-tty that is
+suitable for replaying the user's session at a later time.
+The
+\fBlog_stdin\fR(),
+\fBlog_stdout\fR()
+and
+\fBlog_stderr\fR()
+functions are only called if the standard input, standard output
+or standard error respectively correspond to something other than
+a tty.
+.PP
+Any of the logging functions may be set to the
+\fRNULL\fR
+pointer if no logging is to be performed.
+If the open function returns 0, no I/O will be sent to the plugin.
+.PP
+If a logging function returns an error
+(\-1),
+the running command will be terminated and all of the plugin's logging
+functions will be disabled.
+Other I/O logging plugins will still receive any remaining
+input or output that has not yet been processed.
+.PP
+If an input logging function rejects the data by returning 0, the
+command will be terminated and the data will not be passed to the
+command, though it will still be sent to any other I/O logging plugins.
+If an output logging function rejects the data by returning 0, the
+command will be terminated and the data will not be written to the
+terminal, though it will still be sent to any other I/O logging plugins.
+.PP
+The io_plugin struct has the following fields:
+.TP 6n
+type
+The
+\fRtype\fR
+field should always be set to
+\fRSUDO_IO_PLUGIN\fR.
+.TP 6n
+version
+The
+\fRversion\fR
+field should be set to
+\fRSUDO_API_VERSION\fR.
+.sp
+This allows
+\fBsudo\fR
+to determine the API version the plugin was
+built against.
+.TP 6n
+open
+.nf
+.RS 6n
+int (*open)(unsigned int version, sudo_conv_t conversation,
+            sudo_printf_t plugin_printf, char * const settings[],
+            char * const user_info[], int argc, char * const argv[],
+            char * const user_env[], char * const plugin_options[]);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBopen\fR()
+function is run before the
+\fBlog_ttyin\fR(),
+\fBlog_ttyout\fR(),
+\fBlog_stdin\fR(),
+\fBlog_stdout\fR(),
+\fBlog_stderr\fR(),
+or
+\fBshow_version\fR()
+functions are called.
+It is only called if the version is being requested or if the
+policy plugin's
+\fBcheck_policy\fR()
+function has returned successfully.
+It returns 1 on success, 0 on failure, \-1 if a general error occurred,
+or \-2 if there was a usage error.
+In the latter case,
+\fBsudo\fR
+will print a usage message before it exits.
+If an error occurs, the plugin may optionally call the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present
+additional error information to the user.
+.sp
+The function arguments are as follows:
+.TP 6n
+version
+The version passed in by
+\fBsudo\fR
+allows the plugin to determine the
+major and minor version number of the plugin API supported by
+\fBsudo\fR.
+.TP 6n
+conversation
+A pointer to the
+\fBconversation\fR()
+function that may be used by the
+\fBshow_version\fR()
+function to display version information (see
+\fBshow_version\fR()
+below).
+The
+\fBconversation\fR()
+function may also be used to display additional error message to the user.
+The
+\fBconversation\fR()
+function returns 0 on success and \-1 on failure.
+.TP 6n
+plugin_printf
+A pointer to a
+\fBprintf\fR()-style
+function that may be used by the
+\fBshow_version\fR()
+function to display version information (see
+show_version below).
+The
+\fBplugin_printf\fR()
+function may also be used to display additional error message to the user.
+The
+\fBplugin_printf\fR()
+function returns number of characters printed on success and \-1 on failure.
+.TP 6n
+settings
+A vector of user-supplied
+\fBsudo\fR
+settings in the form of
+\(Lqname=value\(Rq
+strings.
+The vector is terminated by a
+\fRNULL\fR
+pointer.
+These settings correspond to flags the user specified when running
+\fBsudo\fR.
+As such, they will only be present when the corresponding flag has
+been specified on the command line.
+.sp
+When parsing
+\fIsettings\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.sp
+See the
+\fIPolicy plugin API\fR
+section for a list of all possible settings.
+.TP 6n
+user_info
+A vector of information about the user running the command in the form of
+\(Lqname=value\(Rq
+strings.
+The vector is terminated by a
+\fRNULL\fR
+pointer.
+.sp
+When parsing
+\fIuser_info\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.sp
+See the
+\fIPolicy plugin API\fR
+section for a list of all possible strings.
+.TP 6n
+argc
+The number of elements in
+\fIargv\fR,
+not counting the final
+\fRNULL\fR
+pointer.
+.TP 6n
+argv
+If
+non-\fRNULL\fR,
+an argument vector describing a command the user
+wishes to run in the same form as what would be passed to the
+execve(2)
+system call.
+.TP 6n
+user_env
+The user's environment in the form of a
+\fRNULL\fR-terminated
+vector of
+\(Lqname=value\(Rq
+strings.
+.sp
+When parsing
+\fIuser_env\fR,
+the plugin should split on the
+\fBfirst\fR
+equal sign
+(\(oq=\(cq)
+since the
+\fIname\fR
+field will never include one
+itself but the
+\fIvalue\fR
+might.
+.TP 6n
+plugin_options
+Any (non-comment) strings immediately after the plugin path are
+treated as arguments to the plugin.
+These arguments are split on a white space boundary and are passed to
+the plugin in the form of a
+\fRNULL\fR-terminated
+array of strings.
+If no arguments were specified,
+\fIplugin_options\fR
+will be the
+\fRNULL\fR
+pointer.
+.sp
+NOTE: the
+\fIplugin_options\fR
+parameter is only available starting with
+API version 1.2.
+A plugin
+\fBmust\fR
+check the API version specified
+by the
+\fBsudo\fR
+front end before using
+\fIplugin_options\fR.
+Failure to do so may result in a crash.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+close
+.br
+.nf
+.RS 6n
+void (*close)(int exit_status, int error);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBclose\fR()
+function is called when the command being run by
+\fBsudo\fR
+finishes.
+.sp
+The function arguments are as follows:
+.TP 6n
+exit_status
+The command's exit status, as returned by the
+wait(2)
+system call.
+The value of
+\fRexit_status\fR
+is undefined if
+\fRerror\fR
+is non-zero.
+.TP 6n
+error
+.br
+If the command could not be executed, this is set to the value of
+\fRerrno\fR
+set by the
+execve(2)
+system call.
+If the command was successfully executed, the value of
+\fRerror\fR
+is 0.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+show_version
+.nf
+.RS 6n
+int (*show_version)(int verbose);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBshow_version\fR()
+function is called by
+\fBsudo\fR
+when the user specifies
+the
+\fB\-V\fR
+option.
+The plugin may display its version information to the user via the
+\fBconversation\fR()
+or
+\fBplugin_printf\fR()
+function using
+\fRSUDO_CONV_INFO_MSG\fR.
+If the user requests detailed version information, the verbose flag will be set.
+.RE
+.TP 6n
+log_ttyin
+.nf
+.RS 6n
+int (*log_ttyin)(const char *buf, unsigned int len);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBlog_ttyin\fR()
+function is called whenever data can be read from
+the user but before it is passed to the running command.
+This allows the plugin to reject data if it chooses to (for instance
+if the input contains banned content).
+Returns 1 if the data should be passed to the command, 0 if the data
+is rejected (which will terminate the running command) or \-1 if an
+error occurred.
+.sp
+The function arguments are as follows:
+.TP 6n
+buf
+The buffer containing user input.
+.TP 6n
+len
+The length of
+\fIbuf\fR
+in bytes.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+log_ttyout
+.nf
+.RS 6n
+int (*log_ttyout)(const char *buf, unsigned int len);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBlog_ttyout\fR()
+function is called whenever data can be read from
+the command but before it is written to the user's terminal.
+This allows the plugin to reject data if it chooses to (for instance
+if the output contains banned content).
+Returns 1 if the data should be passed to the user, 0 if the data is rejected
+(which will terminate the running command) or \-1 if an error occurred.
+.sp
+The function arguments are as follows:
+.TP 6n
+buf
+The buffer containing command output.
+.TP 6n
+len
+The length of
+\fIbuf\fR
+in bytes.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+log_stdin
+.nf
+.RS 6n
+int (*log_stdin)(const char *buf, unsigned int len);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBlog_stdin\fR()
+function is only used if the standard input does
+not correspond to a tty device.
+It is called whenever data can be read from the standard input but
+before it is passed to the running command.
+This allows the plugin to reject data if it chooses to
+(for instance if the input contains banned content).
+Returns 1 if the data should be passed to the command, 0 if the data is
+rejected (which will terminate the running command) or \-1 if an error occurred.
+.sp
+The function arguments are as follows:
+.TP 6n
+buf
+The buffer containing user input.
+.TP 6n
+len
+The length of
+\fIbuf\fR
+in bytes.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+log_stdout
+.nf
+.RS 6n
+int (*log_stdout)(const char *buf, unsigned int len);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBlog_stdout\fR()
+function is only used if the standard output does not correspond
+to a tty device.
+It is called whenever data can be read from the command but before
+it is written to the standard output.
+This allows the plugin to reject data if it chooses to
+(for instance if the output contains banned content).
+Returns 1 if the data should be passed to the user, 0 if the data is
+rejected (which will terminate the running command) or \-1 if an error occurred.
+.sp
+The function arguments are as follows:
+.TP 6n
+buf
+The buffer containing command output.
+.TP 6n
+len
+The length of
+\fIbuf\fR
+in bytes.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+log_stderr
+.nf
+.RS 6n
+int (*log_stderr)(const char *buf, unsigned int len);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBlog_stderr\fR()
+function is only used if the standard error does
+not correspond to a tty device.
+It is called whenever data can be read from the command but before it
+is written to the standard error.
+This allows the plugin to reject data if it chooses to
+(for instance if the output contains banned content).
+Returns 1 if the data should be passed to the user, 0 if the data is
+rejected (which will terminate the running command) or \-1 if an error occurred.
+.sp
+The function arguments are as follows:
+.TP 6n
+buf
+The buffer containing command output.
+.TP 6n
+len
+The length of
+\fIbuf\fR
+in bytes.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+register_hooks
+See the
+\fIPolicy plugin API\fR
+section for a description of
+\fRregister_hooks\fR.
+.TP 6n
+deregister_hooks
+See the
+\fIPolicy plugin API\fR
+section for a description of
+\fRderegister_hooks.\fR
+.PP
+\fII/O Plugin Version Macros\fR
+.PP
+Same as for the
+\fIPolicy plugin API\fR.
+.SS "Signal handlers"
+The
+\fBsudo\fR
+front end installs default signal handlers to trap common signals
+while the plugin functions are run.
+The following signals are trapped by default before the command is
+executed:
+.TP 4n
+\fB\(bu\fR
+\fRSIGALRM\fR
+.PD 0
+.TP 4n
+\fB\(bu\fR
+\fRSIGHUP\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGINT\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGPIPE\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGQUIT\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGTERM\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGTSTP\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGUSR1\fR
+.TP 4n
+\fB\(bu\fR
+\fRSIGUSR2\fR
+.PD
+.PP
+If a fatal signal is received before the command is executed,
+\fBsudo\fR
+will call the plugin's
+\fBclose\fR()
+function with an exit status of 128 plus the value of the signal
+that was received.
+This allows for consistent logging of commands killed by a signal
+for plugins that log such information in their
+\fBclose\fR()
+function.
+An exception to this is
+\fRSIGPIPE\fR,
+which is ignored until the command is executed.
+.PP
+A plugin may temporarily install its own signal handlers but must
+restore the original handler before the plugin function returns.
+.SS "Hook function API"
+Beginning with plugin API version 1.2, it is possible to install
+hooks for certain functions called by the
+\fBsudo\fR
+front end.
+.PP
+Currently, the only supported hooks relate to the handling of
+environment variables.
+Hooks can be used to intercept attempts to get, set, or remove
+environment variables so that these changes can be reflected in
+the version of the environment that is used to execute a command.
+A future version of the API will support hooking internal
+\fBsudo\fR
+front end functions as well.
+.PP
+\fIHook structure\fR
+.PP
+Hooks in
+\fBsudo\fR
+are described by the following structure:
+.nf
+.sp
+.RS 0n
+typedef int (*sudo_hook_fn_t)();
+
+struct sudo_hook {
+    unsigned int hook_version;
+    unsigned int hook_type;
+    sudo_hook_fn_t hook_fn;
+    void *closure;
+};
+.RE
+.fi
+.PP
+The
+\fRsudo_hook\fR
+structure has the following fields:
+.TP 6n
+hook_version
+The
+\fRhook_version\fR
+field should be set to
+\fRSUDO_HOOK_VERSION\fR.
+.TP 6n
+hook_type
+The
+\fRhook_type\fR
+field may be one of the following supported hook types:
+.PP
+.RS 6n
+.PD 0
+.TP 6n
+\fRSUDO_HOOK_SETENV\fR
+The C library
+setenv(3)
+function.
+Any registered hooks will run before the C library implementation.
+The
+\fRhook_fn\fR
+field should
+be a function that matches the following typedef:
+.nf
+.sp
+.RS 6n
+typedef int (*sudo_hook_fn_setenv_t)(const char *name,
+   const char *value, int overwrite, void *closure);
+.RE
+.fi
+.RS 6n
+.sp
+If the registered hook does not match the typedef the results are
+unspecified.
+.RE
+.PD
+.TP 6n
+\fRSUDO_HOOK_UNSETENV\fR
+The C library
+unsetenv(3)
+function.
+Any registered hooks will run before the C library implementation.
+The
+\fRhook_fn\fR
+field should
+be a function that matches the following typedef:
+.nf
+.sp
+.RS 6n
+typedef int (*sudo_hook_fn_unsetenv_t)(const char *name,
+   void *closure);
+.RE
+.fi
+.TP 6n
+\fRSUDO_HOOK_GETENV\fR
+The C library
+getenv(3)
+function.
+Any registered hooks will run before the C library implementation.
+The
+\fRhook_fn\fR
+field should
+be a function that matches the following typedef:
+.nf
+.sp
+.RS 6n
+typedef int (*sudo_hook_fn_getenv_t)(const char *name,
+   char **value, void *closure);
+.RE
+.fi
+.RS 6n
+.sp
+If the registered hook does not match the typedef the results are
+unspecified.
+.RE
+.TP 6n
+\fRSUDO_HOOK_PUTENV\fR
+The C library
+putenv(3)
+function.
+Any registered hooks will run before the C library implementation.
+The
+\fRhook_fn\fR
+field should
+be a function that matches the following typedef:
+.nf
+.sp
+.RS 6n
+typedef int (*sudo_hook_fn_putenv_t)(char *string,
+   void *closure);
+.RE
+.fi
+.RS 6n
+.sp
+If the registered hook does not match the typedef the results are
+unspecified.
+.RE
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+hook_fn
+sudo_hook_fn_t hook_fn;
+.sp
+The
+\fRhook_fn\fR
+field should be set to the plugin's hook implementation.
+The actual function arguments will vary depending on the
+\fRhook_type\fR
+(see
+\fRhook_type\fR
+above).
+In all cases, the
+\fRclosure\fR
+field of
+\fRstruct sudo_hook\fR
+is passed as the last function parameter.
+This can be used to pass arbitrary data to the plugin's hook implementation.
+.sp
+The function return value may be one of the following:
+.PP
+.RS 6n
+.PD 0
+.TP 6n
+\fRSUDO_HOOK_RET_ERROR\fR
+The hook function encountered an error.
+.PD
+.TP 6n
+\fRSUDO_HOOK_RET_NEXT\fR
+The hook completed without error, go on to the next hook (including
+the native implementation if applicable).
+For example, a
+getenv(3)
+hook might return
+\fRSUDO_HOOK_RET_NEXT\fR
+if the specified variable was not found in the private copy of the environment.
+.TP 6n
+\fRSUDO_HOOK_RET_STOP\fR
+The hook completed without error, stop processing hooks for this invocation.
+This can be used to replace the native implementation.
+For example, a
+\fRsetenv\fR
+hook that operates on a private copy of
+the environment but leaves
+\fRenviron\fR
+unchanged.
+.PD 0
+.PP
+.RE
+.PD
+.PP
+Note that it is very easy to create an infinite loop when hooking
+C library functions.
+For example, a
+getenv(3)
+hook that calls the
+snprintf(3)
+function may create a loop if the
+snprintf(3)
+implementation calls
+getenv(3)
+to check the locale.
+To prevent this, you may wish to use a static variable in the hook
+function to guard against nested calls.
+For example:
+.nf
+.sp
+.RS 0n
+static int in_progress = 0; /* avoid recursion */
+if (in_progress)
+    return SUDO_HOOK_RET_NEXT;
+in_progress = 1;
+\&...
+in_progress = 0;
+return SUDO_HOOK_RET_STOP;
+.RE
+.fi
+.PP
+\fIHook API Version Macros\fR
+.nf
+.sp
+.RS 0n
+/* Hook API version major/minor */
+#define SUDO_HOOK_VERSION_MAJOR 1
+#define SUDO_HOOK_VERSION_MINOR 0
+#define SUDO_HOOK_VERSION SUDO_API_MKVERSION(SUDO_HOOK_VERSION_MAJOR,\e
+                                              SUDO_HOOK_VERSION_MINOR)
+.RE
+.fi
+.PP
+For getters and setters see the
+\fIPolicy plugin API\fR.
+.SS "Remote command execution"
+The
+\fBsudo\fR
+front end does not have native support for running remote commands.
+However, starting with
+\fBsudo\fR
+1.8.8, the
+\fB\-h\fR
+option may be used to specify a remote host that is passed
+to the policy plugin.
+A plugin may also accept a
+\fIrunas_user\fR
+in the form of
+\(Lquser@hostname\(Rq
+which will work with older versions of
+\fBsudo\fR.
+It is anticipated that remote commands will be supported by executing a
+\(Lqhelper\(Rq
+program.
+The policy plugin should setup the execution environment such that the
+\fBsudo\fR
+front end will run the helper which, in turn, will connect to the
+remote host and run the command.
+.PP
+For example, the policy plugin could utilize
+\fBssh\fR
+to perform remote command execution.
+The helper program would be responsible for running
+\fBssh\fR
+with the proper options to use a private key or certificate
+that the remote host will accept and run a program
+on the remote host that would setup the execution environment
+accordingly.
+.PP
+Note that remote
+\fBsudoedit\fR
+functionality must be handled by the policy plugin, not
+\fBsudo\fR
+itself as the front end has no knowledge that a remote command is
+being executed.
+This may be addressed in a future revision of the plugin API.
+.SS "Conversation API"
+If the plugin needs to interact with the user, it may do so via the
+\fBconversation\fR()
+function.
+A plugin should not attempt to read directly from the standard input
+or the user's tty (neither of which are guaranteed to exist).
+The caller must include a trailing newline in
+\fRmsg\fR
+if one is to be printed.
+.PP
+A
+\fBprintf\fR()-style
+function is also available that can be used to display informational
+or error messages to the user, which is usually more convenient for
+simple messages where no use input is required.
+.PP
+\fIConversation function structures\fR
+.PP
+The conversation function takes as arguments pointers to the following
+structures:
+.nf
+.sp
+.RS 0n
+struct sudo_conv_message {
+#define SUDO_CONV_PROMPT_ECHO_OFF  0x0001 /* do not echo user input */
+#define SUDO_CONV_PROMPT_ECHO_ON   0x0002 /* echo user input */
+#define SUDO_CONV_ERROR_MSG        0x0003 /* error message */
+#define SUDO_CONV_INFO_MSG         0x0004 /* informational message */
+#define SUDO_CONV_PROMPT_MASK      0x0005 /* mask user input */
+#define SUDO_CONV_PROMPT_ECHO_OK   0x1000 /* flag: allow echo if no tty */
+    int msg_type;
+    int timeout;
+    const char *msg;
+};
+
+#define SUDO_CONV_REPL_MAX      255
+
+struct sudo_conv_reply {
+    char *reply;
+};
+
+typedef int (*sudo_conv_callback_fn_t)(int signo, void *closure);
+struct sudo_conv_callback {
+    unsigned int version;
+    void *closure;
+    sudo_conv_callback_fn_t on_suspend;
+    sudo_conv_callback_fn_t on_resume;
+};
+.RE
+.fi
+.PP
+Pointers to the
+\fBconversation\fR()
+and
+\fBprintf\fR()-style
+functions are passed
+in to the plugin's
+\fBopen\fR()
+function when the plugin is initialized.
+The following type definitions can be used in the declaration of the
+\fBopen\fR()
+function:
+.nf
+.sp
+.RS 0n
+typedef int (*sudo_conv_t)(int num_msgs,
+             const struct sudo_conv_message msgs[],
+             struct sudo_conv_reply replies[],
+            struct sudo_conv_callback *callback);
+
+typedef int (*sudo_printf_t)(int msg_type, const char *fmt, ...);
+.RE
+.fi
+.PP
+To use the
+\fBconversation\fR()
+function, the plugin must pass an array of
+\fRsudo_conv_message\fR
+and
+\fRsudo_conv_reply\fR
+structures.
+There must be a
+\fRstruct sudo_conv_message\fR
+and
+\fRstruct sudo_conv_reply\fR
+for
+each message in the conversation.
+The
+\fRstruct sudo_conv_callback\fR
+pointer, if not
+\fRNULL\fR,
+should contain function pointers to be called when the
+\fBsudo\fR
+process is suspended and/or resumed during conversation input.
+The
+\fIon_suspend\fR
+and
+\fIon_resume\fR
+functions are called with the signal that caused
+\fBsudo\fR
+to be suspended and the
+\fIclosure\fR
+pointer from the
+\fRstruct sudo_conv_callback\fR.
+These functions should return 0 on success and \-1 on error.
+On error, the conversation will end and the conversation function
+will return a value of \-1.
+The intended use is to allow the plugin to release resources, such as locks,
+that should not be held indefinitely while suspended and then reacquire them
+when the process is resumed.
+Note that the functions are not actually invoked from within a signal handler.
+.PP
+The plugin is responsible for freeing the reply buffer located in each
+\fRstruct sudo_conv_reply\fR,
+if it is not
+\fRNULL\fR.
+\fRSUDO_CONV_REPL_MAX\fR
+represents the maximum length of the reply buffer (not including
+the trailing NUL character).
+In practical terms, this is the longest password
+\fBsudo\fR
+will support.
+It is also useful as a maximum value for the
+\fBmemset_s\fR()
+function when clearing passwords filled in by the conversation function.
+.PP
+The
+\fBprintf\fR()-style
+function uses the same underlying mechanism as the
+\fBconversation\fR()
+function but only supports
+\fRSUDO_CONV_INFO_MSG\fR
+and
+\fRSUDO_CONV_ERROR_MSG\fR
+for the
+\fImsg_type\fR
+parameter.
+It can be more convenient than using the
+\fBconversation\fR()
+function if no user reply is needed and supports standard
+\fBprintf\fR()
+escape sequences.
+.PP
+See the sample plugin for an example of the
+\fBconversation\fR()
+function usage.
+.SS "Sudoers group plugin API"
+The
+\fBsudoers\fR
+plugin supports its own plugin interface to allow non-Unix
+group lookups.
+This can be used to query a group source other than the standard Unix
+group database.
+Two sample group plugins are bundled with
+\fBsudo\fR,
+\fIgroup_file\fR
+and
+\fIsystem_group\fR,
+are detailed in
+sudoers(5).
+Third party group plugins include a QAS AD plugin available from Quest Software.
+.PP
+A group plugin must declare and populate a
+\fRsudoers_group_plugin\fR
+struct in the global scope.
+This structure contains pointers to the functions that implement plugin
+initialization, cleanup and group lookup.
+.nf
+.sp
+.RS 0n
+struct sudoers_group_plugin {
+   unsigned int version;
+   int (*init)(int version, sudo_printf_t sudo_printf,
+               char *const argv[]);
+   void (*cleanup)(void);
+   int (*query)(const char *user, const char *group,
+                const struct passwd *pwd);
+};
+.RE
+.fi
+.PP
+The
+\fRsudoers_group_plugin\fR
+struct has the following fields:
+.TP 6n
+version
+The
+\fRversion\fR
+field should be set to GROUP_API_VERSION.
+.sp
+This allows
+\fBsudoers\fR
+to determine the API version the group plugin
+was built against.
+.TP 6n
+init
+.nf
+.RS 6n
+int (*init)(int version, sudo_printf_t plugin_printf,
+            char *const argv[]);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBinit\fR()
+function is called after
+\fIsudoers\fR
+has been parsed but
+before any policy checks.
+It returns 1 on success, 0 on failure (or if the plugin is not configured),
+and \-1 if a error occurred.
+If an error occurs, the plugin may call the
+\fBplugin_printf\fR()
+function with
+\fRSUDO_CONF_ERROR_MSG\fR
+to present additional error information
+to the user.
+.sp
+The function arguments are as follows:
+.TP 6n
+version
+The version passed in by
+\fBsudoers\fR
+allows the plugin to determine the
+major and minor version number of the group plugin API supported by
+\fBsudoers\fR.
+.TP 6n
+plugin_printf
+A pointer to a
+\fBprintf\fR()-style
+function that may be used to display informational or error message to the user.
+Returns the number of characters printed on success and \-1 on failure.
+.TP 6n
+argv
+A
+\fRNULL\fR-terminated
+array of arguments generated from the
+\fIgroup_plugin\fR
+option in
+\fIsudoers\fR.
+If no arguments were given,
+\fIargv\fR
+will be
+\fRNULL\fR.
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+cleanup
+.nf
+.RS 6n
+void (*cleanup)();
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBcleanup\fR()
+function is called when
+\fBsudoers\fR
+has finished its
+group checks.
+The plugin should free any memory it has allocated and close open file handles.
+.RE
+.TP 6n
+query
+.br
+.nf
+.RS 6n
+int (*query)(const char *user, const char *group,
+             const struct passwd *pwd);
+.RE
+.fi
+.RS 6n
+.sp
+The
+\fBquery\fR()
+function is used to ask the group plugin whether
+\fIuser\fR
+is a member of
+\fIgroup\fR.
+.sp
+The function arguments are as follows:
+.TP 6n
+user
+The name of the user being looked up in the external group database.
+.TP 6n
+group
+.br
+The name of the group being queried.
+.TP 6n
+pwd
+The password database entry for
+\fIuser\fR,
+if any.
+If
+\fIuser\fR
+is not
+present in the password database,
+\fIpwd\fR
+will be
+\fRNULL\fR.
+.PD 0
+.PP
+.RE
+.PD
+.PP
+\fIGroup API Version Macros\fR
+.nf
+.sp
+.RS 0n
+/* Sudoers group plugin version major/minor */
+#define GROUP_API_VERSION_MAJOR 1
+#define GROUP_API_VERSION_MINOR 0
+#define GROUP_API_VERSION ((GROUP_API_VERSION_MAJOR << 16) | \e
+                           GROUP_API_VERSION_MINOR)
+.RE
+.fi
+For getters and setters see the
+\fIPolicy plugin API\fR.
+.SH "PLUGIN API CHANGELOG"
+The following revisions have been made to the Sudo Plugin API.
+.TP 6n
+Version 1.0
+Initial API version.
+.TP 6n
+Version 1.1 (sudo 1.8.0)
+The I/O logging plugin's
+\fBopen\fR()
+function was modified to take the
+\fRcommand_info\fR
+list as an argument.
+.TP 6n
+Version 1.2 (sudo 1.8.5)
+The Policy and I/O logging plugins'
+\fBopen\fR()
+functions are now passed
+a list of plugin parameters if any are specified in
+sudo.conf(5).
+.sp
+A simple hooks API has been introduced to allow plugins to hook in to the
+system's environment handling functions.
+.sp
+The
+\fRinit_session\fR
+Policy plugin function is now passed a pointer
+to the user environment which can be updated as needed.
+This can be used to merge in environment variables stored in the PAM
+handle before a command is run.
+.TP 6n
+Version 1.3 (sudo 1.8.7)
+Support for the
+\fIexec_background\fR
+entry has been added to the
+\fRcommand_info\fR
+list.
+.sp
+The
+\fImax_groups\fR
+and
+\fIplugin_dir\fR
+entries were added to the
+\fRsettings\fR
+list.
+.sp
+The
+\fBversion\fR()
+and
+\fBclose\fR()
+functions are now optional.
+Previously, a missing
+\fBversion\fR()
+or
+\fBclose\fR()
+function would result in a crash.
+If no policy plugin
+\fBclose\fR()
+function is defined, a default
+\fBclose\fR()
+function will be provided by the
+\fBsudo\fR
+front end that displays a warning if the command could not be
+executed.
+.sp
+The
+\fBsudo\fR
+front end now installs default signal handlers to trap common signals
+while the plugin functions are run.
+.TP 6n
+Version 1.4 (sudo 1.8.8)
+The
+\fIremote_host\fR
+entry was added to the
+\fRsettings\fR
+list.
+.TP 6n
+Version 1.5 (sudo 1.8.9)
+The
+\fIpreserve_fds\fR
+entry was added to the
+\fRcommand_info\fR
+list.
+.TP 6n
+Version 1.6 (sudo 1.8.11)
+The behavior when an I/O logging plugin returns an error
+(\-1)
+has changed.
+Previously, the
+\fBsudo\fR
+front end took no action when the
+\fBlog_ttyin\fR(),
+\fBlog_ttyout\fR(),
+\fBlog_stdin\fR(),
+\fBlog_stdout\fR(),
+or
+\fBlog_stderr\fR()
+function returned an error.
+.sp
+The behavior when an I/O logging plugin returns 0 has changed.
+Previously, output from the command would be displayed to the
+terminal even if an output logging function returned 0.
+.TP 6n
+Version 1.7 (sudo 1.8.12)
+The
+\fIplugin_path\fR
+entry was added to the
+\fRsettings\fR
+list.
+.sp
+The
+\fIdebug_flags\fR
+entry now starts with a debug file path name and may occur multiple
+times if there are multiple plugin-specific Debug lines in the
+sudo.conf(5) file.
+.TP 6n
+Version 1.8 (sudo 1.8.15)
+The
+\fIsudoedit_checkdir\fR
+and
+\fIsudoedit_follow\fR
+entries were added to the
+\fRcommand_info\fR
+list.
+The default value of
+\fIsudoedit_checkdir\fR
+was changed to true in sudo 1.8.16.
+.sp
+The sudo
+\fIconversation\fR
+function now takes a pointer to a
+\fRstruct sudo_conv_callback\fR
+as its fourth argument.
+The
+\fRsudo_conv_t\fR
+definition has been updated to match.
+The plugin must specify that it supports plugin API version 1.8 or higher
+to receive a conversation function pointer that supports this argument.
+.TP 6n
+Version 1.9 (sudo 1.8.16)
+The
+\fIexecfd\fR
+entry was added to the
+\fRcommand_info\fR
+list.
+.SH "SEE ALSO"
+sudo.conf(5),
+sudoers(5),
+sudo(8)
+.SH "AUTHORS"
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
+.SH "BUGS"
+If you feel you have found a bug in
+\fBsudo\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
+.SH "SUPPORT"
+Limited free support is available via the sudo-users mailing list,
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
+search the archives.
+.SH "DISCLAIMER"
+\fBsudo\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
index 8213a43..399b88c 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoers.mdoc.in
+.\"
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
-.\" 
-.nr SL 0
-.nr BA 0
-.nr LC 0
-.\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
 .\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDOERS 5"
-.TH SUDOERS 5 "February  5, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH "SUDOERS" "5" "January 20, 2016" "Sudo 1.8.17" "File Formats Manual"
 .nh
+.if n .ad l
 .SH "NAME"
-sudoers \- default sudo security policy module
+\fBsudoers\fR
+\- default sudo security policy plugin
 .SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-The \fIsudoers\fR policy module determines a user's \fBsudo\fR privileges.
-It is the default \fBsudo\fR policy plugin.  The policy is driven by
-the \fI/etc/sudoers\fR file or, optionally in \s-1LDAP\s0.  The policy
-format is described in detail in the \*(L"\s-1SUDOERS\s0 \s-1FILE\s0 \s-1FORMAT\s0\*(R"
-section.  For information on storing \fIsudoers\fR policy information
-in \s-1LDAP\s0, please see \fIsudoers.ldap\fR\|(5).
-.SS "Authentication and Logging"
-.IX Subsection "Authentication and Logging"
-The \fIsudoers\fR security policy requires that most users authenticate
-themselves before they can use \fBsudo\fR.  A password is not required
+The
+\fBsudoers\fR
+policy plugin determines a user's
+\fBsudo\fR
+privileges.
+It is the default
+\fBsudo\fR
+policy plugin.
+The policy is driven by
+the
+\fI/etc/sudoers\fR
+file or, optionally in LDAP.
+The policy format is described in detail in the
+\fISUDOERS FILE FORMAT\fR
+section.
+For information on storing
+\fBsudoers\fR
+policy information
+in LDAP, please see
+sudoers.ldap(5).
+.SS "Configuring sudo.conf for sudoers"
+\fBsudo\fR
+consults the
+sudo.conf(5)
+file to determine which policy and and I/O logging plugins to load.
+If no
+sudo.conf(5)
+file is present, or if it contains no
+\fRPlugin\fR
+lines,
+\fBsudoers\fR
+will be used for policy decisions and I/O logging.
+To explicitly configure
+sudo.conf(5)
+to use the
+\fBsudoers\fR
+plugin, the following configuration can be used.
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+.RE
+.fi
+.PP
+Starting with
+\fBsudo\fR
+1.8.5, it is possible to specify optional arguments to the
+\fBsudoers\fR
+plugin in the
+sudo.conf(5)
+file.
+These arguments, if present, should be listed after the path to the plugin
+(i.e.\& after
+\fIsudoers.so\fR).
+Multiple arguments may be specified, separated by white space.
+For example:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0400
+.RE
+.fi
+.PP
+The following plugin arguments are supported:
+.TP 10n
+ldap_conf=pathname
+The
+\fIldap_conf\fR
+argument can be used to override the default path to the
+\fIldap.conf\fR
+file.
+.TP 10n
+ldap_secret=pathname
+The
+\fIldap_secret\fR
+argument can be used to override the default path to the
+\fIldap.secret\fR
+file.
+.TP 10n
+sudoers_file=pathname
+The
+\fIsudoers_file\fR
+argument can be used to override the default path to the
+\fIsudoers\fR
+file.
+.TP 10n
+sudoers_uid=uid
+The
+\fIsudoers_uid\fR
+argument can be used to override the default owner of the sudoers file.
+It should be specified as a numeric user ID.
+.TP 10n
+sudoers_gid=gid
+The
+\fIsudoers_gid\fR
+argument can be used to override the default group of the sudoers file.
+It must be specified as a numeric group ID (not a group name).
+.TP 10n
+sudoers_mode=mode
+The
+\fIsudoers_mode\fR
+argument can be used to override the default file mode for the sudoers file.
+It should be specified as an octal value.
+.PP
+For more information on configuring
+sudo.conf(5),
+please refer to its manual.
+.SS "User Authentication"
+The
+\fBsudoers\fR
+security policy requires that most users authenticate
+themselves before they can use
+\fBsudo\fR.
+A password is not required
 if the invoking user is root, if the target user is the same as the
 invoking user, or if the policy has disabled authentication for the
-user or command.  Unlike \fIsu\fR\|(1), when \fIsudoers\fR requires
+user or command.
+Unlike
+su(1),
+when
+\fBsudoers\fR
+requires
 authentication, it validates the invoking user's credentials, not
-the target user's (or root's) credentials.  This can be changed via
-the \fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags, described later.
+the target user's (or root's) credentials.
+This can be changed via
+the
+\fIrootpw\fR,
+\fItargetpw\fR
+and
+\fIrunaspw\fR
+flags, described later.
 .PP
 If a user who is not listed in the policy tries to run a command
-via \fBsudo\fR, mail is sent to the proper authorities.  The address
-used for such mail is configurable via the \fImailto\fR Defaults entry
-(described later) and defaults to \f(CW\*(C`root\*(C'\fR.
-.PP
-Note that mail will not be sent if an unauthorized user tries to
-run \fBsudo\fR with the \fB\-l\fR or \fB\-v\fR option.  This allows users to
+via
+\fBsudo\fR,
+mail is sent to the proper authorities.
+The address
+used for such mail is configurable via the
+\fImailto\fR
+Defaults entry
+(described later) and defaults to
+\fRroot\fR.
+.PP
+Note that no mail will be sent if an unauthorized user tries to run
+\fBsudo\fR
+with the
+\fB\-l\fR
+or
+\fB\-v\fR
+option unless there is an authentication error and
+either the
+\fImail_always\fR
+or
+\fImail_badpass\fR
+flags are enabled.
+This allows users to
 determine for themselves whether or not they are allowed to use
-\&\fBsudo\fR.
-.PP
-If \fBsudo\fR is run by root and the \f(CW\*(C`SUDO_USER\*(C'\fR environment variable
-is set, the \fIsudoers\fR policy will use this value to determine who
-the actual user is.  This can be used by a user to log commands 
-through sudo even when a root shell has been invoked.  It also
-allows the \fB\-e\fR option to remain useful even when invoked via a
-sudo-run script or program.  Note, however, that the \fIsudoers\fR
-lookup is still done for root, not the user specified by \f(CW\*(C`SUDO_USER\*(C'\fR.
-.PP
-\&\fIsudoers\fR uses time stamp files for credential caching.  Once a
-user has been authenticated, a time stamp is updated and the user
-may then use sudo without a password for a short period of time
-(\f(CW\*(C`5\*(C'\fR minutes unless overridden by the \fItimeout\fR option.
-By default, \fIsudoers\fR uses a tty-based time stamp which means that
-there is a separate time stamp for each of a user's login sessions.
-The \fItty_tickets\fR option can be disabled to force the use of a
+\fBsudo\fR.
+All attempts to run
+\fBsudo\fR
+(successful or not)
+will be logged, regardless of whether or not mail is sent.
+.PP
+If
+\fBsudo\fR
+is run by root and the
+\fRSUDO_USER\fR
+environment variable
+is set, the
+\fBsudoers\fR
+policy will use this value to determine who
+the actual user is.
+This can be used by a user to log commands
+through sudo even when a root shell has been invoked.
+It also
+allows the
+\fB\-e\fR
+option to remain useful even when invoked via a
+sudo-run script or program.
+Note, however, that the
+\fIsudoers\fR
+file lookup is still done for root, not the user specified by
+\fRSUDO_USER\fR.
+.PP
+\fBsudoers\fR
+uses per-user time stamp files for credential caching.
+Once a user has been authenticated, a record is written
+containing the uid that was used to authenticate, the
+terminal session ID, and a time stamp
+(using a monotonic clock if one is available).
+The user may then use
+\fBsudo\fR
+without a password for a short period of time
+(\fR5\fR
+minutes unless overridden by the
+\fItimeout\fR
+option)
+\&.
+By default,
+\fBsudoers\fR
+uses a separate record for each tty, which means that
+a user's login sessions are authenticated separately.
+The
+\fItty_tickets\fR
+option can be disabled to force the use of a
 single time stamp for all of a user's sessions.
-.PP
-\&\fIsudoers\fR can log both successful and unsuccessful attempts (as well
-as errors) to \fIsyslog\fR\|(3), a log file, or both.  By default, \fIsudoers\fR
-will log via \fIsyslog\fR\|(3) but this is changeable via the \fIsyslog\fR
-and \fIlogfile\fR Defaults settings.
-.PP
-\&\fIsudoers\fR also supports logging a command's input and output
-streams.  I/O logging is not on by default but can be enabled using
-the \fIlog_input\fR and \fIlog_output\fR Defaults flags as well as the
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR and \f(CW\*(C`LOG_OUTPUT\*(C'\fR command tags.
-.SS "Command Environment"
-.IX Subsection "Command Environment"
-Since environment variables can influence program behavior, \fIsudoers\fR
+.SS "Logging"
+\fBsudoers\fR
+can log both successful and unsuccessful attempts (as well
+as errors) to
+syslog(3),
+a log file, or both.
+By default,
+\fBsudoers\fR
+will log via
+syslog(3)
+but this is changeable via the
+\fIsyslog\fR
+and
+\fIlogfile\fR
+Defaults settings.
+See
+\fILOG FORMAT\fR
+for a description of the log file format.
+.PP
+\fBsudoers\fR
+is also capable of running a command in a pseudo-tty and logging all
+input and/or output.
+The standard input, standard output and standard error can be logged
+even when not associated with a terminal.
+I/O logging is not on by default but can be enabled using
+the
+\fIlog_input\fR
+and
+\fIlog_output\fR
+options as well as the
+\fRLOG_INPUT\fR
+and
+\fRLOG_OUTPUT\fR
+command tags.
+See
+\fII/O LOG FILES\fR
+for details on how I/O log files are stored.
+.SS "Command environment"
+Since environment variables can influence program behavior,
+\fBsudoers\fR
 provides a means to restrict which variables from the user's
-environment are inherited by the command to be run.  There are two
-distinct ways \fIsudoers\fR can deal with environment variables.
-.PP
-By default, the \fIenv_reset\fR option is enabled.  This causes commands
-to be executed with a minimal environment containing the \f(CW\*(C`TERM\*(C'\fR,
-\&\f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR, \f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR, \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR
-and \f(CW\*(C`SUDO_*\*(C'\fR variables in addition to variables from the
-invoking process permitted by the \fIenv_check\fR and \fIenv_keep\fR
-options.  This is effectively a whitelist for environment variables.
-.PP
-If, however, the \fIenv_reset\fR option is disabled, any variables not
-explicitly denied by the \fIenv_check\fR and \fIenv_delete\fR options are
-inherited from the invoking process.  In this case, \fIenv_check\fR
-and \fIenv_delete\fR behave like a blacklist.  Since it is not possible
+environment are inherited by the command to be run.
+There are two
+distinct ways
+\fBsudoers\fR
+can deal with environment variables.
+.PP
+By default, the
+\fIenv_reset\fR
+option is enabled.
+This causes commands
+to be executed with a new, minimal environment.
+On AIX (and Linux
+systems without PAM), the environment is initialized with the
+contents of the
+\fI/etc/environment\fR
+file.
+The new environment contains the
+\fRTERM\fR,
+\fRPATH\fR,
+\fRHOME\fR,
+\fRMAIL\fR,
+\fRSHELL\fR,
+\fRLOGNAME\fR,
+\fRUSER\fR,
+\fRUSERNAME\fR
+and
+\fRSUDO_*\fR
+variables
+in addition to variables from the invoking process permitted by the
+\fIenv_check\fR
+and
+\fIenv_keep\fR
+options.
+This is effectively a whitelist
+for environment variables.
+Environment variables with a value beginning with
+\fR()\fR
+are removed unless both the name and value parts are matched by
+\fIenv_keep\fR
+or
+\fIenv_check\fR,
+as they will be interpreted as functions by older versions of the
+\fBbash\fR
+shell.
+Prior to version 1.8.11, such variables were always removed.
+.PP
+If, however, the
+\fIenv_reset\fR
+option is disabled, any variables not
+explicitly denied by the
+\fIenv_check\fR
+and
+\fIenv_delete\fR
+options are
+inherited from the invoking process.
+In this case,
+\fIenv_check\fR
+and
+\fIenv_delete\fR
+behave like a blacklist.
+Environment variables with a value beginning with
+\fR()\fR
+are always removed, even if they do not match one of the blacklists.
+Since it is not possible
 to blacklist all potentially dangerous environment variables, use
-of the default \fIenv_reset\fR behavior is encouraged.
+of the default
+\fIenv_reset\fR
+behavior is encouraged.
+.PP
+By default, environment variables are matched by name.
+However, if the pattern includes an equal sign
+(\(oq=\&\(cq),
+both the variables name and value must match.
+For example, an old-style (pre-shellshock)
+\fBbash\fR
+shell function could be matched as follows:
+.nf
+.sp
+.RS 4n
+env_keep += "my_func=()*"
+.RE
+.fi
 .PP
-In all cases, environment variables with a value beginning with
-\&\f(CW\*(C`()\*(C'\fR are removed as they could be interpreted as \fBbash\fR functions.
-The list of environment variables that \fBsudo\fR allows or denies is
-contained in the output of \f(CW\*(C`sudo \-V\*(C'\fR when run as root.
+Without the
+\(Lq\fR=()*\fR\(Rq
+suffix, this would not match, as old-style
+\fBbash\fR
+shell functions are not preserved by default.
+.PP
+The complete list of environment variables that
+\fBsudo\fR
+allows or denies is contained in the output of
+\(Lq\fRsudo -V\fR\(Rq
+when run as root.
+Please note that this list varies based on the operating system
+\fBsudo\fR
+is running on.
+.PP
+On systems that support PAM where the
+\fBpam_env\fR
+module is enabled for
+\fBsudo\fR,
+variables in the PAM environment may be merged in to the environment.
+If a variable in the PAM environment is already present in the
+user's environment, the value will only be overridden if the variable
+was not preserved by
+\fBsudoers\fR.
+When
+\fIenv_reset\fR
+is enabled, variables preserved from the invoking user's environment
+by the
+\fIenv_keep\fR
+list take precedence over those in the PAM environment.
+When
+\fIenv_reset\fR
+is disabled, variables present the invoking user's environment
+take precedence over those in the PAM environment unless they
+match a pattern in the
+\fIenv_delete\fR
+list.
 .PP
 Note that the dynamic linker on most operating systems will remove
 variables that can control dynamic linking from the environment of
-setuid executables, including \fBsudo\fR.  Depending on the operating
-system this may include \f(CW\*(C`_RLD*\*(C'\fR, \f(CW\*(C`DYLD_*\*(C'\fR, \f(CW\*(C`LD_*\*(C'\fR, \f(CW\*(C`LDR_*\*(C'\fR,
-\&\f(CW\*(C`LIBPATH\*(C'\fR, \f(CW\*(C`SHLIB_PATH\*(C'\fR, and others.  These type of variables are
-removed from the environment before \fBsudo\fR even begins execution
-and, as such, it is not possible for \fBsudo\fR to preserve them.
-.PP
-As a special case, if \fBsudo\fR's \fB\-i\fR option (initial login) is
-specified, \fIsudoers\fR will initialize the environment regardless
-of the value of \fIenv_reset\fR.  The \fI\s-1DISPLAY\s0\fR, \fI\s-1PATH\s0\fR and \fI\s-1TERM\s0\fR
-variables remain unchanged; \fI\s-1HOME\s0\fR, \fI\s-1MAIL\s0\fR, \fI\s-1SHELL\s0\fR, \fI\s-1USER\s0\fR,
-and \fI\s-1LOGNAME\s0\fR are set based on the target user.  On Linux and \s-1AIX\s0
-systems the contents of \fI/etc/environment\fR are also included.  All
-other environment variables are removed.
-.PP
-Lastly, if the \fIenv_file\fR option is defined, any variables present
-in that file will be set to their specified values.
+setuid executables, including
+\fBsudo\fR.
+Depending on the operating
+system this may include
+\fR_RLD*\fR,
+\fRDYLD_*\fR,
+\fRLD_*\fR,
+\fRLDR_*\fR,
+\fRLIBPATH\fR,
+\fRSHLIB_PATH\fR,
+and others.
+These type of variables are
+removed from the environment before
+\fBsudo\fR
+even begins execution
+and, as such, it is not possible for
+\fBsudo\fR
+to preserve them.
+.PP
+As a special case, if
+\fBsudo\fR's
+\fB\-i\fR
+option (initial login) is
+specified,
+\fBsudoers\fR
+will initialize the environment regardless
+of the value of
+\fIenv_reset\fR.
+The
+\fRDISPLAY\fR,
+\fRPATH\fR
+and
+\fRTERM\fR
+variables remain unchanged;
+\fRHOME\fR,
+\fRMAIL\fR,
+\fRSHELL\fR,
+\fRUSER\fR,
+and
+\fRLOGNAME\fR
+are set based on the target user.
+On AIX (and Linux
+systems without PAM), the contents of
+\fI/etc/environment\fR
+are also
+included.
+All other environment variables are removed.
+.PP
+Finally, if the
+\fIenv_file\fR
+option is defined, any variables present
+in that file will be set to their specified values as long as they
+would not conflict with an existing environment variable.
 .SH "SUDOERS FILE FORMAT"
-.IX Header "SUDOERS FILE FORMAT"
-The \fIsudoers\fR file is composed of two types of entries: aliases
+The
+\fIsudoers\fR
+file is composed of two types of entries: aliases
 (basically variables) and user specifications (which specify who
 may run what).
 .PP
@@ -264,1856 +463,4583 @@ When multiple entries match for a user, they are applied in order.
 Where there are multiple matches, the last match is used (which is
 not necessarily the most specific match).
 .PP
-The \fIsudoers\fR grammar will be described below in Extended Backus-Naur
-Form (\s-1EBNF\s0).  Don't despair if you don't know what \s-1EBNF\s0 is; it is
-fairly simple, and the definitions below are annotated.
-.SS "Quick guide to \s-1EBNF\s0"
-.IX Subsection "Quick guide to EBNF"
-\&\s-1EBNF\s0 is a concise and exact way of describing the grammar of a language.
-Each \s-1EBNF\s0 definition is made up of \fIproduction rules\fR.  E.g.,
-.PP
-.Vb 1
-\& symbol ::= definition | alternate1 | alternate2 ...
-.Ve
-.PP
-Each \fIproduction rule\fR references others and thus makes up a
-grammar for the language.  \s-1EBNF\s0 also contains the following
+The
+\fIsudoers\fR
+file grammar will be described below in Extended Backus-Naur
+Form (EBNF).
+Don't despair if you are unfamiliar with EBNF; it is fairly simple,
+and the definitions below are annotated.
+.SS "Quick guide to EBNF"
+EBNF is a concise and exact way of describing the grammar of a language.
+Each EBNF definition is made up of
+\fIproduction rules\fR.
+E.g.,
+.PP
+\fRsymbol ::= definition\fR | \fRalternate1\fR | \fRalternate2 ...\fR
+.PP
+Each
+\fIproduction rule\fR
+references others and thus makes up a
+grammar for the language.
+EBNF also contains the following
 operators, which many readers will recognize from regular
-expressions.  Do not, however, confuse them with \*(L"wildcard\*(R"
+expressions.
+Do not, however, confuse them with
+\(Lqwildcard\(Rq
 characters, which have different meanings.
-.ie n .IP "\*(C`?\*(C'" 4
-.el .IP "\f(CW\*(C`?\*(C'\fR" 4
-.IX Item "?"
+.TP 6n
+\fR\&?\fR
 Means that the preceding symbol (or group of symbols) is optional.
 That is, it may appear once or not at all.
-.ie n .IP "\*(C`*\*(C'" 4
-.el .IP "\f(CW\*(C`*\*(C'\fR" 4
-.IX Item "*"
+.TP 6n
+\fR*\fR
 Means that the preceding symbol (or group of symbols) may appear
 zero or more times.
-.ie n .IP "\*(C`+\*(C'" 4
-.el .IP "\f(CW\*(C`+\*(C'\fR" 4
-.IX Item "+"
+.TP 6n
+\fR+\fR
 Means that the preceding symbol (or group of symbols) may appear
 one or more times.
 .PP
-Parentheses may be used to group symbols together.  For clarity,
-we will use single quotes ('') to designate what is a verbatim character
-string (as opposed to a symbol name).
+Parentheses may be used to group symbols together.
+For clarity,
+we will use single quotes
+('')
+to designate what is a verbatim character string (as opposed to a symbol name).
 .SS "Aliases"
-.IX Subsection "Aliases"
-There are four kinds of aliases: \f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR,
-\&\f(CW\*(C`Host_Alias\*(C'\fR and \f(CW\*(C`Cmnd_Alias\*(C'\fR.
-.PP
-.Vb 4
-\& Alias ::= \*(AqUser_Alias\*(Aq  User_Alias (\*(Aq:\*(Aq User_Alias)* |
-\&           \*(AqRunas_Alias\*(Aq Runas_Alias (\*(Aq:\*(Aq Runas_Alias)* |
-\&           \*(AqHost_Alias\*(Aq  Host_Alias (\*(Aq:\*(Aq Host_Alias)* |
-\&           \*(AqCmnd_Alias\*(Aq  Cmnd_Alias (\*(Aq:\*(Aq Cmnd_Alias)*
-\&
-\& User_Alias ::= NAME \*(Aq=\*(Aq User_List
-\&
-\& Runas_Alias ::= NAME \*(Aq=\*(Aq Runas_List
-\&
-\& Host_Alias ::= NAME \*(Aq=\*(Aq Host_List
-\&
-\& Cmnd_Alias ::= NAME \*(Aq=\*(Aq Cmnd_List
-\&
-\& NAME ::= [A\-Z]([A\-Z][0\-9]_)*
-.Ve
-.PP
-Each \fIalias\fR definition is of the form
-.PP
-.Vb 1
-\& Alias_Type NAME = item1, item2, ...
-.Ve
-.PP
-where \fIAlias_Type\fR is one of \f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR,
-or \f(CW\*(C`Cmnd_Alias\*(C'\fR.  A \f(CW\*(C`NAME\*(C'\fR is a string of uppercase letters, numbers,
-and underscore characters ('_').  A \f(CW\*(C`NAME\*(C'\fR \fBmust\fR start with an
-uppercase letter.  It is possible to put several alias definitions
-of the same type on a single line, joined by a colon (':').  E.g.,
-.PP
-.Vb 1
-\& Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
-.Ve
-.PP
-The definitions of what constitutes a valid \fIalias\fR member follow.
-.PP
-.Vb 2
-\& User_List ::= User |
-\&               User \*(Aq,\*(Aq User_List
-\&
-\& User ::= \*(Aq!\*(Aq* user name |
-\&          \*(Aq!\*(Aq* #uid |
-\&          \*(Aq!\*(Aq* %group |
-\&          \*(Aq!\*(Aq* %#gid |
-\&          \*(Aq!\*(Aq* +netgroup |
-\&          \*(Aq!\*(Aq* %:nonunix_group |
-\&          \*(Aq!\*(Aq* %:#nonunix_gid |
-\&          \*(Aq!\*(Aq* User_Alias
-.Ve
-.PP
-A \f(CW\*(C`User_List\*(C'\fR is made up of one or more user names, user ids
-(prefixed with '#'), system group names and ids (prefixed with '%'
-and '%#' respectively), netgroups (prefixed with '+'), non-Unix
-group names and IDs (prefixed with '%:' and '%:#' respectively) and
-\&\f(CW\*(C`User_Alias\*(C'\fRes.  Each list item may be prefixed with zero or more
-\&'!' operators.  An odd number of '!' operators negate the value of
-the item; an even number just cancel each other out.
+There are four kinds of aliases:
+\fRUser_Alias\fR,
+\fRRunas_Alias\fR,
+\fRHost_Alias\fR
+and
+\fRCmnd_Alias\fR.
+.nf
+.sp
+.RS 0n
+Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |
+          'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
+          'Host_Alias'  Host_Alias (':' Host_Alias)* |
+          'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*
+
+User_Alias ::= NAME '=' User_List
+
+Runas_Alias ::= NAME '=' Runas_List
+
+Host_Alias ::= NAME '=' Host_List
+
+Cmnd_Alias ::= NAME '=' Cmnd_List
+
+NAME ::= [A-Z]([A-Z][0-9]_)*
+.RE
+.fi
 .PP
-A \f(CW\*(C`user name\*(C'\fR, \f(CW\*(C`uid\*(C'\fR, \f(CW\*(C`group\*(C'\fR, \f(CW\*(C`gid\*(C'\fR, \f(CW\*(C`netgroup\*(C'\fR, \f(CW\*(C`nonunix_group\*(C'\fR
-or \f(CW\*(C`nonunix_gid\*(C'\fR may be enclosed in double quotes to avoid the
-need for escaping special characters.  Alternately, special characters
-may be specified in escaped hex mode, e.g. \ex20 for space.  When
+Each
+\fIalias\fR
+definition is of the form
+.nf
+.sp
+.RS 0n
+Alias_Type NAME = item1, item2, ...
+.RE
+.fi
+.PP
+where
+\fIAlias_Type\fR
+is one of
+\fRUser_Alias\fR,
+\fRRunas_Alias\fR,
+\fRHost_Alias\fR,
+or
+\fRCmnd_Alias\fR.
+A
+\fRNAME\fR
+is a string of uppercase letters, numbers,
+and underscore characters
+(\(oq_\(cq).
+A
+\fRNAME\fR
+\fBmust\fR
+start with an
+uppercase letter.
+It is possible to put several alias definitions
+of the same type on a single line, joined by a colon
+(\(oq:\&\(cq).
+E.g.,
+.nf
+.sp
+.RS 0n
+Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
+.RE
+.fi
+.PP
+It is a syntax error to redefine an existing
+\fIalias\fR.
+It is possible to use the same name for
+\fIaliases\fR
+of different types, but this is not recommended.
+.PP
+The definitions of what constitutes a valid
+\fIalias\fR
+member follow.
+.nf
+.sp
+.RS 0n
+User_List ::= User |
+              User ',' User_List
+
+User ::= '!'* user name |
+         '!'* #uid |
+         '!'* %group |
+         '!'* %#gid |
+         '!'* +netgroup |
+         '!'* %:nonunix_group |
+         '!'* %:#nonunix_gid |
+         '!'* User_Alias
+.RE
+.fi
+.PP
+A
+\fRUser_List\fR
+is made up of one or more user names, user IDs
+(prefixed with
+\(oq#\(cq),
+system group names and IDs (prefixed with
+\(oq%\(cq
+and
+\(oq%#\(cq
+respectively), netgroups (prefixed with
+\(oq+\(cq),
+non-Unix group names and IDs (prefixed with
+\(oq%:\(cq
+and
+\(oq%:#\(cq
+respectively) and
+\fRUser_Alias\fRes.
+Each list item may be prefixed with zero or more
+\(oq\&!\(cq
+operators.
+An odd number of
+\(oq\&!\(cq
+operators negate the value of
+the item; an even number just cancel each other out.
+User netgroups are matched using the user and domain members only;
+the host member is not used when matching.
+.PP
+A
+\fRuser name\fR,
+\fRuid\fR,
+\fRgroup\fR,
+\fRgid\fR,
+\fRnetgroup\fR,
+\fRnonunix_group\fR
+or
+\fRnonunix_gid\fR
+may be enclosed in double quotes to avoid the
+need for escaping special characters.
+Alternately, special characters
+may be specified in escaped hex mode, e.g.\& \ex20 for space.
+When
 using double quotes, any prefix characters must be included inside
 the quotes.
 .PP
-The actual \f(CW\*(C`nonunix_group\*(C'\fR and \f(CW\*(C`nonunix_gid\*(C'\fR syntax depends on
-the underlying group provider plugin (see the \fIgroup_plugin\fR
-description below).  For instance, the \s-1QAS\s0 \s-1AD\s0 plugin supports the
-following formats:
-.IP "\(bu" 4
-Group in the same domain: \*(L"Group Name\*(R"
-.IP "\(bu" 4
-Group in any domain: \*(L"Group Name@FULLY.QUALIFIED.DOMAIN\*(R"
-.IP "\(bu" 4
-Group \s-1SID:\s0 \*(L"S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567\*(R"
-.PP
-Note that quotes around group names are optional.  Unquoted strings
-must use a backslash (\e) to escape spaces and special characters.
-See \*(L"Other special characters and reserved words\*(R" for a list of
+The actual
+\fRnonunix_group\fR
+and
+\fRnonunix_gid\fR
+syntax depends on
+the underlying group provider plugin.
+For instance, the QAS AD plugin supports the following formats:
+.TP 6n
+\fB\(bu\fR
+Group in the same domain: "%:Group Name"
+.TP 6n
+\fB\(bu\fR
+Group in any domain: "%:Group Name@FULLY.QUALIFIED.DOMAIN"
+.TP 6n
+\fB\(bu\fR
+Group SID: "%:S-1-2-34-5678901234-5678901234-5678901234-567"
+.PP
+See
+\fIGROUP PROVIDER PLUGINS\fR
+for more information.
+.PP
+Note that quotes around group names are optional.
+Unquoted strings must use a backslash
+(\(oq\e\(cq)
+to escape spaces and special characters.
+See
+\fIOther special characters and reserved words\fR
+for a list of
 characters that need to be escaped.
+.nf
+.sp
+.RS 0n
+Runas_List ::= Runas_Member |
+               Runas_Member ',' Runas_List
+
+Runas_Member ::= '!'* user name |
+                 '!'* #uid |
+                 '!'* %group |
+                 '!'* %#gid |
+                 '!'* %:nonunix_group |
+                 '!'* %:#nonunix_gid |
+                 '!'* +netgroup |
+                 '!'* Runas_Alias
+.RE
+.fi
 .PP
-.Vb 2
-\& Runas_List ::= Runas_Member |
-\&                Runas_Member \*(Aq,\*(Aq Runas_List
-\&
-\& Runas_Member ::= \*(Aq!\*(Aq* user name |
-\&                  \*(Aq!\*(Aq* #uid |
-\&                  \*(Aq!\*(Aq* %group |
-\&                  \*(Aq!\*(Aq* %#gid |
-\&                  \*(Aq!\*(Aq* %:nonunix_group |
-\&                  \*(Aq!\*(Aq* %:#nonunix_gid |
-\&                  \*(Aq!\*(Aq* +netgroup |
-\&                  \*(Aq!\*(Aq* Runas_Alias
-.Ve
-.PP
-A \f(CW\*(C`Runas_List\*(C'\fR is similar to a \f(CW\*(C`User_List\*(C'\fR except that instead
-of \f(CW\*(C`User_Alias\*(C'\fRes it can contain \f(CW\*(C`Runas_Alias\*(C'\fRes.  Note that
-user names and groups are matched as strings.  In other words, two
+A
+\fRRunas_List\fR
+is similar to a
+\fRUser_List\fR
+except that instead
+of
+\fRUser_Alias\fRes
+it can contain
+\fRRunas_Alias\fRes.
+Note that
+user names and groups are matched as strings.
+In other words, two
 users (groups) with the same uid (gid) are considered to be distinct.
-If you wish to match all user names with the same uid (e.g.\ root
-and toor), you can use a uid instead (#0 in the example given).
-.PP
-.Vb 2
-\& Host_List ::= Host |
-\&               Host \*(Aq,\*(Aq Host_List
-\&
-\& Host ::= \*(Aq!\*(Aq* host name |
-\&          \*(Aq!\*(Aq* ip_addr |
-\&          \*(Aq!\*(Aq* network(/netmask)? |
-\&          \*(Aq!\*(Aq* +netgroup |
-\&          \*(Aq!\*(Aq* Host_Alias
-.Ve
-.PP
-A \f(CW\*(C`Host_List\*(C'\fR is made up of one or more host names, \s-1IP\s0 addresses,
-network numbers, netgroups (prefixed with '+') and other aliases.
-Again, the value of an item may be negated with the '!' operator.
-If you do not specify a netmask along with the network number,
-\&\fBsudo\fR will query each of the local host's network interfaces and,
+If you wish to match all user names with the same uid (e.g.\&
+root and toor), you can use a uid instead (#0 in the example given).
+.nf
+.sp
+.RS 0n
+Host_List ::= Host |
+              Host ',' Host_List
+
+Host ::= '!'* host name |
+         '!'* ip_addr |
+         '!'* network(/netmask)? |
+         '!'* +netgroup |
+         '!'* Host_Alias
+.RE
+.fi
+.PP
+A
+\fRHost_List\fR
+is made up of one or more host names, IP addresses,
+network numbers, netgroups (prefixed with
+\(oq+\(cq)
+and other aliases.
+Again, the value of an item may be negated with the
+\(oq\&!\(cq
+operator.
+Host netgroups are matched using the host (both qualified and unqualified)
+and domain members only; the user member is not used when matching.
+If you specify a network number without a netmask,
+\fBsudo\fR
+will query each of the local host's network interfaces and,
 if the network number corresponds to one of the hosts's network
-interfaces, the corresponding netmask will be used.  The netmask
-may be specified either in standard \s-1IP\s0 address notation
-(e.g.\ 255.255.255.0 or ffff:ffff:ffff:ffff::),
-or \s-1CIDR\s0 notation (number of bits, e.g.\ 24 or 64).  A host name may
-include shell-style wildcards (see the Wildcards section below),
-but unless the \f(CW\*(C`host name\*(C'\fR command on your machine returns the fully
-qualified host name, you'll need to use the \fIfqdn\fR option for
-wildcards to be useful.  Note \fBsudo\fR only inspects actual network
-interfaces; this means that \s-1IP\s0 address 127.0.0.1 (localhost) will
-never match.  Also, the host name \*(L"localhost\*(R" will only match if
-that is the actual host name, which is usually only the case for
-non-networked systems.
-.PP
-.Vb 2
-\& Cmnd_List ::= Cmnd |
-\&               Cmnd \*(Aq,\*(Aq Cmnd_List
-\&
-\& commandname ::= file name |
-\&                 file name args |
-\&                 file name \*(Aq""\*(Aq
-\&
-\& Cmnd ::= \*(Aq!\*(Aq* commandname |
-\&          \*(Aq!\*(Aq* directory |
-\&          \*(Aq!\*(Aq* "sudoedit" |
-\&          \*(Aq!\*(Aq* Cmnd_Alias
-.Ve
-.PP
-A \f(CW\*(C`Cmnd_List\*(C'\fR is a list of one or more commandnames, directories, and other
-aliases.  A commandname is a fully qualified file name which may include
-shell-style wildcards (see the Wildcards section below).  A simple
-file name allows the user to run the command with any arguments he/she
-wishes.  However, you may also specify command line arguments (including
-wildcards).  Alternately, you can specify \f(CW""\fR to indicate that the command
-may only be run \fBwithout\fR command line arguments.  A directory is a
-fully qualified path name ending in a '/'.  When you specify a directory
-in a \f(CW\*(C`Cmnd_List\*(C'\fR, the user will be able to run any file within that directory
-(but not in any subdirectories therein).
-.PP
-If a \f(CW\*(C`Cmnd\*(C'\fR has associated command line arguments, then the arguments
-in the \f(CW\*(C`Cmnd\*(C'\fR must match exactly those given by the user on the command line
-(or match the wildcards if there are any).  Note that the following
-characters must be escaped with a '\e' if they are used in command
-arguments: ',', ':', '=', '\e'.  The special command \f(CW"sudoedit"\fR
-is used to permit a user to run \fBsudo\fR with the \fB\-e\fR option (or
-as \fBsudoedit\fR).  It may take command line arguments just as
-a normal command does.
+interfaces, will use the netmask of that interface.
+The netmask may be specified either in standard IP address notation
+(e.g.\& 255.255.255.0 or ffff:ffff:ffff:ffff::),
+or CIDR notation (number of bits, e.g.\& 24 or 64).
+A host name may include shell-style wildcards (see the
+\fIWildcards\fR
+section below),
+but unless the
+\fRhost name\fR
+command on your machine returns the fully
+qualified host name, you'll need to use the
+\fIfqdn\fR
+option for wildcards to be useful.
+Note that
+\fBsudo\fR
+only inspects actual network interfaces; this means that IP address
+127.0.0.1 (localhost) will never match.
+Also, the host name
+\(Lqlocalhost\(Rq
+will only match if that is the actual host name, which is usually
+only the case for non-networked systems.
+.nf
+.sp
+.RS 0n
+digest ::= [A-Fa-f0-9]+ |
+          [[A-Za-z0-9\+/=]+
+
+Digest_Spec ::= "sha224" ':' digest |
+               "sha256" ':' digest |
+               "sha384" ':' digest |
+               "sha512" ':' digest
+
+Cmnd_List ::= Cmnd |
+              Cmnd ',' Cmnd_List
+
+command name ::= file name |
+                 file name args |
+                 file name '""'
+
+Cmnd ::= Digest_Spec? '!'* command name |
+         '!'* directory |
+         '!'* "sudoedit" |
+         '!'* Cmnd_Alias
+.RE
+.fi
+.PP
+A
+\fRCmnd_List\fR
+is a list of one or more command names, directories, and other aliases.
+A command name is a fully qualified file name which may include
+shell-style wildcards (see the
+\fIWildcards\fR
+section below).
+A simple file name allows the user to run the command with any
+arguments he/she wishes.
+However, you may also specify command line arguments (including
+wildcards).
+Alternately, you can specify
+\fR\&""\fR
+to indicate that the command
+may only be run
+\fBwithout\fR
+command line arguments.
+A directory is a
+fully qualified path name ending in a
+\(oq/\(cq.
+When you specify a directory in a
+\fRCmnd_List\fR,
+the user will be able to run any file within that directory
+(but not in any sub-directories therein).
+.PP
+If a
+\fRCmnd\fR
+has associated command line arguments, then the arguments
+in the
+\fRCmnd\fR
+must match exactly those given by the user on the command line
+(or match the wildcards if there are any).
+Note that the following characters must be escaped with a
+\(oq\e\(cq
+if they are used in command arguments:
+\(oq,\&\(cq,
+\(oq:\&\(cq,
+\(oq=\&\(cq,
+\(oq\e\(cq.
+The built-in command
+\(Lq\fRsudoedit\fR\(Rq
+is used to permit a user to run
+\fBsudo\fR
+with the
+\fB\-e\fR
+option (or as
+\fBsudoedit\fR).
+It may take command line arguments just as a normal command does.
+Note that
+\(Lq\fRsudoedit\fR\(Rq
+is a command built into
+\fBsudo\fR
+itself and must be specified in the
+\fIsudoers\fR
+file without a leading path.
+.PP
+If a
+\fRcommand name\fR
+is prefixed with a
+\fRDigest_Spec\fR,
+the command will only match successfully if it can be verified
+using the specified SHA-2 digest.
+The following digest formats are supported: sha224, sha256, sha384 and sha512.
+The string may be specified in either hex or base64 format
+(base64 is more compact).
+There are several utilities capable of generating SHA-2 digests in hex
+format such as openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum.
+.PP
+For example, using openssl:
+.nf
+.sp
+.RS 0n
+$ openssl dgst -sha224 /bin/ls
+SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25
+.RE
+.fi
+.PP
+It is also possible to use openssl to generate base64 output:
+.nf
+.sp
+.RS 0n
+$ openssl dgst -binary -sha224 /bin/ls | openssl base64
+EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==
+.RE
+.fi
+.PP
+Warning, if the user has write access to the command itself (directly or via a
+\fBsudo\fR
+command), it may be possible for the user to replace the command after the
+digest check has been performed but before the command is executed.
+A similar race condition exists on systems that lack the
+fexecve(2)
+system call when the directory in which the command is located
+is writable by the user.
+.PP
+Command digests are only supported by version 1.8.7 or higher.
 .SS "Defaults"
-.IX Subsection "Defaults"
 Certain configuration options may be changed from their default
-values at runtime via one or more \f(CW\*(C`Default_Entry\*(C'\fR lines.  These
-may affect all users on any host, all users on a specific host, a
+values at run-time via one or more
+\fRDefault_Entry\fR
+lines.
+These may affect all users on any host, all users on a specific host, a
 specific user, a specific command, or commands being run as a specific user.
 Note that per-command entries may not include command line arguments.
-If you need to specify arguments, define a \f(CW\*(C`Cmnd_Alias\*(C'\fR and reference
+If you need to specify arguments, define a
+\fRCmnd_Alias\fR
+and reference
 that instead.
+.nf
+.sp
+.RS 0n
+Default_Type ::= 'Defaults' |
+                 'Defaults' '@' Host_List |
+                 'Defaults' ':' User_List |
+                 'Defaults' '!' Cmnd_List |
+                 'Defaults' '>' Runas_List
+
+Default_Entry ::= Default_Type Parameter_List
+
+Parameter_List ::= Parameter |
+                   Parameter ',' Parameter_List
+
+Parameter ::= Parameter '=' Value |
+              Parameter '+=' Value |
+              Parameter '-=' Value |
+              '!'* Parameter
+.RE
+.fi
 .PP
-.Vb 5
-\& Default_Type ::= \*(AqDefaults\*(Aq |
-\&                  \*(AqDefaults\*(Aq \*(Aq@\*(Aq Host_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq:\*(Aq User_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq!\*(Aq Cmnd_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq>\*(Aq Runas_List
-\&
-\& Default_Entry ::= Default_Type Parameter_List
-\&
-\& Parameter_List ::= Parameter |
-\&                    Parameter \*(Aq,\*(Aq Parameter_List
-\&
-\& Parameter ::= Parameter \*(Aq=\*(Aq Value |
-\&               Parameter \*(Aq+=\*(Aq Value |
-\&               Parameter \*(Aq\-=\*(Aq Value |
-\&               \*(Aq!\*(Aq* Parameter
-.Ve
-.PP
-Parameters may be \fBflags\fR, \fBinteger\fR values, \fBstrings\fR, or \fBlists\fR.
-Flags are implicitly boolean and can be turned off via the '!'
-operator.  Some integer, string and list parameters may also be
-used in a boolean context to disable them.  Values may be enclosed
-in double quotes (\f(CW\*(C`"\*(C'\fR) when they contain multiple words.  Special
-characters may be escaped with a backslash (\f(CW\*(C`\e\*(C'\fR).
-.PP
-Lists have two additional assignment operators, \f(CW\*(C`+=\*(C'\fR and \f(CW\*(C`\-=\*(C'\fR.
+Parameters may be
+\fBflags\fR,
+\fBinteger\fR
+values,
+\fBstrings\fR,
+or
+\fBlists\fR.
+Flags are implicitly boolean and can be turned off via the
+\(oq\&!\(cq
+operator.
+Some integer, string and list parameters may also be
+used in a boolean context to disable them.
+Values may be enclosed
+in double quotes
+(\&"")
+when they contain multiple words.
+Special characters may be escaped with a backslash
+(\(oq\e\(cq).
+.PP
+Lists have two additional assignment operators,
+\fR+=\fR
+and
+\fR-=\fR.
 These operators are used to add to and delete from a list respectively.
-It is not an error to use the \f(CW\*(C`\-=\*(C'\fR operator to remove an element
+It is not an error to use the
+\fR-=\fR
+operator to remove an element
 that does not exist in a list.
 .PP
 Defaults entries are parsed in the following order: generic, host
 and user Defaults first, then runas Defaults and finally command
 defaults.
 .PP
-See \*(L"\s-1SUDOERS\s0 \s-1OPTIONS\s0\*(R" for a list of supported Defaults parameters.
-.SS "User Specification"
-.IX Subsection "User Specification"
-.Vb 2
-\& User_Spec ::= User_List Host_List \*(Aq=\*(Aq Cmnd_Spec_List \e
-\&               (\*(Aq:\*(Aq Host_List \*(Aq=\*(Aq Cmnd_Spec_List)*
-\&
-\& Cmnd_Spec_List ::= Cmnd_Spec |
-\&                    Cmnd_Spec \*(Aq,\*(Aq Cmnd_Spec_List
-\&
-.ie \n(SL \& Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
-.el \& Cmnd_Spec ::= Runas_Spec? Tag_Spec* Cmnd
-\&
-\& Runas_Spec ::= \*(Aq(\*(Aq Runas_List? (\*(Aq:\*(Aq Runas_List)? \*(Aq)\*(Aq
-\&
-.if \n(SL \{\
-\& SELinux_Spec ::= (\*(AqROLE=role\*(Aq | \*(AqTYPE=type\*(Aq)
-\&
-\}
-\& Tag_Spec ::= (\*(AqNOPASSWD:\*(Aq | \*(AqPASSWD:\*(Aq | \*(AqNOEXEC:\*(Aq | \*(AqEXEC:\*(Aq |
-\&               \*(AqSETENV:\*(Aq | \*(AqNOSETENV:\*(Aq | \*(AqLOG_INPUT:\*(Aq | \*(AqNOLOG_INPUT:\*(Aq |
-\&               \*(AqLOG_OUTPUT:\*(Aq | \*(AqNOLOG_OUTPUT:\*(Aq)
-.Ve
-.PP
-A \fBuser specification\fR determines which commands a user may run
-(and as what user) on specified hosts.  By default, commands are
-run as \fBroot\fR, but this can be changed on a per-command basis.
-.PP
-The basic structure of a user specification is `who where = (as_whom)
-what'.  Let's break that down into its constituent parts:
+See
+\fISUDOERS OPTIONS\fR
+for a list of supported Defaults parameters.
+.SS "User specification"
+.nf
+.RS 0n
+User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \e
+              (':' Host_List '=' Cmnd_Spec_List)*
+
+Cmnd_Spec_List ::= Cmnd_Spec |
+                   Cmnd_Spec ',' Cmnd_Spec_List
+
+Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
+
+Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
+
+SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
+
+Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
+              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
+              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
+              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')
+.RE
+.fi
+.PP
+A
+\fBuser specification\fR
+determines which commands a user may run
+(and as what user) on specified hosts.
+By default, commands are
+run as
+\fBroot\fR,
+but this can be changed on a per-command basis.
+.PP
+The basic structure of a user specification is
+\(Lqwho where = (as_whom) what\(Rq.
+Let's break that down into its constituent parts:
 .SS "Runas_Spec"
-.IX Subsection "Runas_Spec"
-A \f(CW\*(C`Runas_Spec\*(C'\fR determines the user and/or the group that a command
-may be run as.  A fully-specified \f(CW\*(C`Runas_Spec\*(C'\fR consists of two
-\&\f(CW\*(C`Runas_List\*(C'\fRs (as defined above) separated by a colon (':') and
-enclosed in a set of parentheses.  The first \f(CW\*(C`Runas_List\*(C'\fR indicates
-which users the command may be run as via \fBsudo\fR's \fB\-u\fR option.
+A
+\fRRunas_Spec\fR
+determines the user and/or the group that a command
+may be run as.
+A fully-specified
+\fRRunas_Spec\fR
+consists of two
+\fRRunas_List\fRs
+(as defined above) separated by a colon
+(\(oq:\&\(cq)
+and enclosed in a set of parentheses.
+The first
+\fRRunas_List\fR
+indicates
+which users the command may be run as via
+\fBsudo\fR's
+\fB\-u\fR
+option.
 The second defines a list of groups that can be specified via
-\&\fBsudo\fR's \fB\-g\fR option.  If both \f(CW\*(C`Runas_List\*(C'\fRs are specified, the
-command may be run with any combination of users and groups listed
-in their respective \f(CW\*(C`Runas_List\*(C'\fRs.  If only the first is specified,
-the command may be run as any user in the list but no \fB\-g\fR option
-may be specified.  If the first \f(CW\*(C`Runas_List\*(C'\fR is empty but the
+\fBsudo\fR's
+\fB\-g\fR
+option.
+If both
+\fRRunas_List\fRs
+are specified, the command may be run with any combination of users
+and groups listed in their respective
+\fRRunas_List\fRs.
+If only the first is specified, the command may be run as any user
+in the list but no
+\fB\-g\fR
+option
+may be specified.
+If the first
+\fRRunas_List\fR
+is empty but the
 second is specified, the command may be run as the invoking user
-with the group set to any listed in the \f(CW\*(C`Runas_List\*(C'\fR.  If no
-\&\f(CW\*(C`Runas_Spec\*(C'\fR is specified the command may be run as \fBroot\fR and
+with the group set to any listed in the
+\fRRunas_List\fR.
+If both
+\fRRunas_List\fRs
+are empty, the command may only be run as the invoking user.
+If no
+\fRRunas_Spec\fR
+is specified the command may be run as
+\fBroot\fR
+and
 no group may be specified.
 .PP
-A \f(CW\*(C`Runas_Spec\*(C'\fR sets the default for the commands that follow it.
+A
+\fRRunas_Spec\fR
+sets the default for the commands that follow it.
 What this means is that for the entry:
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
+.RE
+.fi
 .PP
-.Vb 1
-\& dgb    boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
-.Ve
-.PP
-The user \fBdgb\fR may run \fI/bin/ls\fR, \fI/bin/kill\fR, and
-\&\fI/usr/bin/lprm\fR \*(-- but only as \fBoperator\fR.  E.g.,
-.PP
-.Vb 1
-\& $ sudo \-u operator /bin/ls
-.Ve
-.PP
-It is also possible to override a \f(CW\*(C`Runas_Spec\*(C'\fR later on in an
-entry.  If we modify the entry like so:
-.PP
-.Vb 1
-\& dgb    boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
-.Ve
-.PP
-Then user \fBdgb\fR is now allowed to run \fI/bin/ls\fR as \fBoperator\fR,
-but  \fI/bin/kill\fR and \fI/usr/bin/lprm\fR as \fBroot\fR.
+The user
+\fBdgb\fR
+may run
+\fI/bin/ls\fR,
+\fI/bin/kill\fR,
+and
+\fI/usr/bin/lprm\fR\(embut
+only as
+\fBoperator\fR.
+E.g.,
+.nf
+.sp
+.RS 0n
+$ sudo -u operator /bin/ls
+.RE
+.fi
 .PP
-We can extend this to allow \fBdgb\fR to run \f(CW\*(C`/bin/ls\*(C'\fR with either
-the user or group set to \fBoperator\fR:
+It is also possible to override a
+\fRRunas_Spec\fR
+later on in an entry.
+If we modify the entry like so:
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
+.RE
+.fi
 .PP
-.Vb 2
-\& dgb    boulder = (operator : operator) /bin/ls, (root) /bin/kill, \e
-\&        /usr/bin/lprm
-.Ve
+Then user
+\fBdgb\fR
+is now allowed to run
+\fI/bin/ls\fR
+as
+\fBoperator\fR,
+but
+\fI/bin/kill\fR
+and
+\fI/usr/bin/lprm\fR
+as
+\fBroot\fR.
+.PP
+We can extend this to allow
+\fBdgb\fR
+to run
+\fR/bin/ls\fR
+with either
+the user or group set to
+\fBoperator\fR:
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator : operator) /bin/ls, (root) /bin/kill,\e
+       /usr/bin/lprm
+.RE
+.fi
 .PP
-Note that while the group portion of the \f(CW\*(C`Runas_Spec\*(C'\fR permits the
+Note that while the group portion of the
+\fRRunas_Spec\fR
+permits the
 user to run as command with that group, it does not force the user
-to do so.  If no group is specified on the command line, the command
+to do so.
+If no group is specified on the command line, the command
 will run with the group listed in the target user's password database
-entry.  The following would all be permitted by the sudoers entry above:
-.PP
-.Vb 3
-\& $ sudo \-u operator /bin/ls
-\& $ sudo \-u operator \-g operator /bin/ls
-\& $ sudo \-g operator /bin/ls
-.Ve
+entry.
+The following would all be permitted by the sudoers entry above:
+.nf
+.sp
+.RS 0n
+$ sudo -u operator /bin/ls
+$ sudo -u operator -g operator /bin/ls
+$ sudo -g operator /bin/ls
+.RE
+.fi
 .PP
-In the following example, user \fBtcm\fR may run commands that access
+In the following example, user
+\fBtcm\fR
+may run commands that access
 a modem device file with the dialer group.
-.PP
-.Vb 2
-\& tcm    boulder = (:dialer) /usr/bin/tip, /usr/bin/cu, \e
-\&        /usr/local/bin/minicom
-.Ve
+.nf
+.sp
+.RS 0n
+tcm    boulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\e
+       /usr/local/bin/minicom
+.RE
+.fi
 .PP
 Note that in this example only the group will be set, the command
-still runs as user \fBtcm\fR.  E.g.
-.PP
-.Vb 1
-\& $ sudo \-g dialer /usr/bin/cu
-.Ve
-.PP
-Multiple users and groups may be present in a \f(CW\*(C`Runas_Spec\*(C'\fR, in
-which case the user may select any combination of users and groups
-via the \fB\-u\fR and \fB\-g\fR options.  In this example:
+still runs as user
+\fBtcm\fR.
+E.g.\&
+.nf
+.sp
+.RS 0n
+$ sudo -g dialer /usr/bin/cu
+.RE
+.fi
 .PP
-.Vb 1
-\& alan   ALL = (root, bin : operator, system) ALL
-.Ve
+Multiple users and groups may be present in a
+\fRRunas_Spec\fR,
+in which case the user may select any combination of users and groups via the
+\fB\-u\fR
+and
+\fB\-g\fR
+options.
+In this example:
+.nf
+.sp
+.RS 0n
+alan   ALL = (root, bin : operator, system) ALL
+.RE
+.fi
 .PP
-user \fBalan\fR may run any command as either user root or bin,
+user
+\fBalan\fR
+may run any command as either user root or bin,
 optionally setting the group to operator or system.
-.if \n(SL \{\
 .SS "SELinux_Spec"
-.IX Subsection "SELinux_Spec"
-On systems with SELinux support, \fIsudoers\fR entries may optionally have
-an SELinux role and/or type associated with a command.  If a role or
+On systems with SELinux support,
+\fIsudoers\fR
+file entries may optionally have an SELinux role and/or type associated
+with a command.
+If a role or
 type is specified with the command it will override any default values
-specified in \fIsudoers\fR.  A role or type specified on the command line,
-however, will supercede the values in \fIsudoers\fR.
-\}
+specified in
+\fIsudoers\fR.
+A role or type specified on the command line,
+however, will supersede the values in
+\fIsudoers\fR.
 .SS "Tag_Spec"
-.IX Subsection "Tag_Spec"
-A command may have zero or more tags associated with it.  There are
-eight possible tag values, \f(CW\*(C`NOPASSWD\*(C'\fR, \f(CW\*(C`PASSWD\*(C'\fR, \f(CW\*(C`NOEXEC\*(C'\fR,
-\&\f(CW\*(C`EXEC\*(C'\fR, \f(CW\*(C`SETENV\*(C'\fR, \f(CW\*(C`NOSETENV\*(C'\fR, \f(CW\*(C`LOG_INPUT\*(C'\fR, \f(CW\*(C`NOLOG_INPUT\*(C'\fR,
-\&\f(CW\*(C`LOG_OUTPUT\*(C'\fR and \f(CW\*(C`NOLOG_OUTPUT\*(C'\fR.  Once a tag is set on a \f(CW\*(C`Cmnd\*(C'\fR,
-subsequent \f(CW\*(C`Cmnd\*(C'\fRs in the \f(CW\*(C`Cmnd_Spec_List\*(C'\fR, inherit the tag unless
-it is overridden by the opposite tag (i.e.: \f(CW\*(C`PASSWD\*(C'\fR overrides
-\&\f(CW\*(C`NOPASSWD\*(C'\fR and \f(CW\*(C`NOEXEC\*(C'\fR overrides \f(CW\*(C`EXEC\*(C'\fR).
-.PP
-\fI\s-1NOPASSWD\s0 and \s-1PASSWD\s0\fR
-.IX Subsection "NOPASSWD and PASSWD"
-.PP
-By default, \fBsudo\fR requires that a user authenticate him or herself
-before running a command.  This behavior can be modified via the
-\&\f(CW\*(C`NOPASSWD\*(C'\fR tag.  Like a \f(CW\*(C`Runas_Spec\*(C'\fR, the \f(CW\*(C`NOPASSWD\*(C'\fR tag sets
-a default for the commands that follow it in the \f(CW\*(C`Cmnd_Spec_List\*(C'\fR.
-Conversely, the \f(CW\*(C`PASSWD\*(C'\fR tag can be used to reverse things.
+A command may have zero or more tags associated with it.
+There are
+ten possible tag values:
+\fREXEC\fR,
+\fRNOEXEC\fR,
+\fRFOLLOW\fR,
+\fRNOFOLLOW\fR,
+\fRLOG_INPUT\fR,
+\fRNOLOG_INPUT\fR,
+\fRLOG_OUTPUT\fR,
+\fRNOLOG_OUTPUT\fR,
+\fRMAIL\fR,
+\fRNOMAIL\fR,
+\fRPASSWD\fR,
+\fRNOPASSWD\fR,
+\fRSETENV\fR,
+and
+\fRNOSETENV\fR.
+Once a tag is set on a
+\fRCmnd\fR,
+subsequent
+\fRCmnd\fRs
+in the
+\fRCmnd_Spec_List\fR,
+inherit the tag unless it is overridden by the opposite tag (in other words,
+\fRPASSWD\fR
+overrides
+\fRNOPASSWD\fR
+and
+\fRNOEXEC\fR
+overrides
+\fREXEC\fR).
+.TP 2n
+\fIEXEC\fR and \fINOEXEC\fR
+.sp
+If
+\fBsudo\fR
+has been compiled with
+\fInoexec\fR
+support and the underlying operating system supports it, the
+\fRNOEXEC\fR
+tag can be used to prevent a dynamically-linked executable from
+running further commands itself.
+.sp
+In the following example, user
+\fBaaron\fR
+may run
+\fI/usr/bin/more\fR
+and
+\fI/usr/bin/vi\fR
+but shell escapes will be disabled.
+.nf
+.sp
+.RS 2n
+aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
+.RE
+.fi
+.RS 2n
+.sp
+See the
+\fIPreventing shell escapes\fR
+section below for more details on how
+\fRNOEXEC\fR
+works and whether or not it will work on your system.
+.RE
+.TP 2n
+\fIFOLLOW\fR and \fINOFOLLOW\fR
+Starting with version 1.8.15,
+\fBsudoedit\fR
+will not open a file that is a symbolic link unless the
+\fIsudoedit_follow\fR
+option is enabled.
+The
+\fIFOLLOW\fR
+and
+\fINOFOLLOW\fR
+tags override the value of
+\fIsudoedit_follow\fR
+and can be used to permit (or deny) the editing of symbolic links
+on a per-command basis.
+These tags are only effective for the
+\fIsudoedit\fR
+command and are ignored for all other commands.
+.TP 2n
+\fILOG_INPUT\fR and \fINOLOG_INPUT\fR
+.sp
+These tags override the value of the
+\fIlog_input\fR
+option on a per-command basis.
+For more information, see the description of
+\fIlog_input\fR
+in the
+\fISUDOERS OPTIONS\fR
+section below.
+.TP 2n
+\fILOG_OUTPUT\fR and \fINOLOG_OUTPUT\fR
+.sp
+These tags override the value of the
+\fIlog_output\fR
+option on a per-command basis.
+For more information, see the description of
+\fIlog_output\fR
+in the
+\fISUDOERS OPTIONS\fR
+section below.
+.TP 2n
+\fIMAIL\fR and \fINOMAIL\fR
+.sp
+These tags provide fine-grained control over whether
+mail will be sent when a user runs a command by
+overriding the value of the
+\fImail_all_cmnds\fR
+option on a per-command basis.
+They have no effect when
+\fBsudo\fR
+is run with the
+\fB\-l\fR
+or
+\fB\-v\fR
+options.
+A
+\fINOMAIL\fR
+tag will also override the
+\fImail_always\fR
+and
+\fImail_no_perms\fR
+options.
+For more information, see the descriptions of
+\fImail_all_cmnds\fR,
+\fImail_always\fR,
+and
+\fImail_no_perms\fR
+in the
+\fISUDOERS OPTIONS\fR
+section below.
+.TP 2n
+\fIPASSWD\fR and \fINOPASSWD\fR
+.sp
+By default,
+\fBsudo\fR
+requires that a user authenticate him or herself
+before running a command.
+This behavior can be modified via the
+\fRNOPASSWD\fR
+tag.
+Like a
+\fRRunas_Spec\fR,
+the
+\fRNOPASSWD\fR
+tag sets
+a default for the commands that follow it in the
+\fRCmnd_Spec_List\fR.
+Conversely, the
+\fRPASSWD\fR
+tag can be used to reverse things.
 For example:
-.PP
-.Vb 1
-\& ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
-.Ve
-.PP
-would allow the user \fBray\fR to run \fI/bin/kill\fR, \fI/bin/ls\fR, and
-\&\fI/usr/bin/lprm\fR as \fBroot\fR on the machine rushmore without
-authenticating himself.  If we only want \fBray\fR to be able to
-run \fI/bin/kill\fR without a password the entry would be:
-.PP
-.Vb 1
-\& ray    rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
-.Ve
-.PP
-Note, however, that the \f(CW\*(C`PASSWD\*(C'\fR tag has no effect on users who are
-in the group specified by the \fIexempt_group\fR option.
-.PP
-By default, if the \f(CW\*(C`NOPASSWD\*(C'\fR tag is applied to any of the entries
-for a user on the current host, he or she will be able to run
-\&\f(CW\*(C`sudo \-l\*(C'\fR without a password.  Additionally, a user may only run
-\&\f(CW\*(C`sudo \-v\*(C'\fR without a password if the \f(CW\*(C`NOPASSWD\*(C'\fR tag is present
-for all a user's entries that pertain to the current host.
-This behavior may be overridden via the verifypw and listpw options.
-.PP
-\fI\s-1NOEXEC\s0 and \s-1EXEC\s0\fR
-.IX Subsection "NOEXEC and EXEC"
-.PP
-If \fBsudo\fR has been compiled with \fInoexec\fR support and the underlying
-operating system supports it, the \f(CW\*(C`NOEXEC\*(C'\fR tag can be used to prevent
-a dynamically-linked executable from running further commands itself.
-.PP
-In the following example, user \fBaaron\fR may run \fI/usr/bin/more\fR
-and \fI/usr/bin/vi\fR but shell escapes will be disabled.
-.PP
-.Vb 1
-\& aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-.Ve
-.PP
-See the \*(L"\s-1PREVENTING\s0 \s-1SHELL\s0 \s-1ESCAPES\s0\*(R" section below for more details
-on how \f(CW\*(C`NOEXEC\*(C'\fR works and whether or not it will work on your system.
-.PP
-\fI\s-1SETENV\s0 and \s-1NOSETENV\s0\fR
-.IX Subsection "SETENV and NOSETENV"
-.PP
-These tags override the value of the \fIsetenv\fR option on a per-command
-basis.  Note that if \f(CW\*(C`SETENV\*(C'\fR has been set for a command, the user
-may disable the \fIenv_reset\fR option from the command line via the
-\&\fB\-E\fR option.  Additionally, environment variables set on the command
-line are not subject to the restrictions imposed by \fIenv_check\fR,
-\&\fIenv_delete\fR, or \fIenv_keep\fR.  As such, only trusted users should
-be allowed to set variables in this manner.  If the command matched
-is \fB\s-1ALL\s0\fR, the \f(CW\*(C`SETENV\*(C'\fR tag is implied for that command; this
-default may be overridden by use of the \f(CW\*(C`NOSETENV\*(C'\fR tag.
-.PP
-\fI\s-1LOG_INPUT\s0 and \s-1NOLOG_INPUT\s0\fR
-.IX Subsection "LOG_INPUT and NOLOG_INPUT"
-.PP
-These tags override the value of the \fIlog_input\fR option on a
-per-command basis.  For more information, see the description of
-\&\fIlog_input\fR in the \*(L"\s-1SUDOERS\s0 \s-1OPTIONS\s0\*(R" section below.
-.PP
-\fI\s-1LOG_OUTPUT\s0 and \s-1NOLOG_OUTPUT\s0\fR
-.IX Subsection "LOG_OUTPUT and NOLOG_OUTPUT"
-.PP
-These tags override the value of the \fIlog_output\fR option on a
-per-command basis.  For more information, see the description of
-\&\fIlog_output\fR in the \*(L"\s-1SUDOERS\s0 \s-1OPTIONS\s0\*(R" section below.
+.nf
+.sp
+.RS 2n
+ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
+.RE
+.fi
+.RS 2n
+.sp
+would allow the user
+\fBray\fR
+to run
+\fI/bin/kill\fR,
+\fI/bin/ls\fR,
+and
+\fI/usr/bin/lprm\fR
+as
+\fBroot\fR
+on the machine rushmore without authenticating himself.
+If we only want
+\fBray\fR
+to be able to
+run
+\fI/bin/kill\fR
+without a password the entry would be:
+.nf
+.sp
+.RS 2n
+ray    rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
+.RE
+.fi
+.sp
+Note, however, that the
+\fRPASSWD\fR
+tag has no effect on users who are in the group specified by the
+\fIexempt_group\fR
+option.
+.sp
+By default, if the
+\fRNOPASSWD\fR
+tag is applied to any of the entries for a user on the current host,
+he or she will be able to run
+\(Lq\fRsudo -l\fR\(Rq
+without a password.
+Additionally, a user may only run
+\(Lq\fRsudo -v\fR\(Rq
+without a password if the
+\fRNOPASSWD\fR
+tag is present for all a user's entries that pertain to the current host.
+This behavior may be overridden via the
+\fIverifypw\fR
+and
+\fIlistpw\fR
+options.
+.RE
+.TP 2n
+\fISETENV\fR and \fINOSETENV\fR
+.sp
+These tags override the value of the
+\fIsetenv\fR
+option on a per-command basis.
+Note that if
+\fRSETENV\fR
+has been set for a command, the user may disable the
+\fIenv_reset\fR
+option from the command line via the
+\fB\-E\fR
+option.
+Additionally, environment variables set on the command
+line are not subject to the restrictions imposed by
+\fIenv_check\fR,
+\fIenv_delete\fR,
+or
+\fIenv_keep\fR.
+As such, only trusted users should be allowed to set variables in this manner.
+If the command matched is
+\fBALL\fR,
+the
+\fRSETENV\fR
+tag is implied for that command; this default may be overridden by use of the
+\fRNOSETENV\fR
+tag.
 .SS "Wildcards"
-.IX Subsection "Wildcards"
-\&\fBsudo\fR allows shell-style \fIwildcards\fR (aka meta or glob characters)
-to be used in host names, path names and command line arguments in
-the \fIsudoers\fR file.  Wildcard matching is done via the \fB\s-1POSIX\s0\fR
-\&\fIglob\fR\|(3) and \fIfnmatch\fR\|(3) routines.  Note that these are \fInot\fR
-regular expressions.
-.ie n .IP "\*(C`*\*(C'" 8
-.el .IP "\f(CW\*(C`*\*(C'\fR" 8
-.IX Item "*"
-Matches any set of zero or more characters.
-.ie n .IP "\*(C`?\*(C'" 8
-.el .IP "\f(CW\*(C`?\*(C'\fR" 8
-.IX Item "?"
-Matches any single character.
-.ie n .IP "\*(C`[...]\*(C'" 8
-.el .IP "\f(CW\*(C`[...]\*(C'\fR" 8
-.IX Item "[...]"
+\fBsudo\fR
+allows shell-style
+\fIwildcards\fR
+(aka meta or glob characters)
+to be used in host names, path names and command line arguments in the
+\fIsudoers\fR
+file.
+Wildcard matching is done via the
+glob(3)
+and
+fnmatch(3)
+functions as specified by
+IEEE Std 1003.1 (\(LqPOSIX.1\(Rq).
+.TP 10n
+\fR*\fR
+Matches any set of zero or more characters (including white space).
+.TP 10n
+\fR\&?\fR
+Matches any single character (including white space).
+.TP 10n
+\fR[...]\fR
 Matches any character in the specified range.
-.ie n .IP "\*(C`[!...]\*(C'" 8
-.el .IP "\f(CW\*(C`[!...]\*(C'\fR" 8
-.IX Item "[!...]"
-Matches any character \fBnot\fR in the specified range.
-.ie n .IP "\*(C`\ex\*(C'" 8
-.el .IP "\f(CW\*(C`\ex\*(C'\fR" 8
-.IX Item "x"
-For any character \*(L"x\*(R", evaluates to \*(L"x\*(R".  This is used to
-escape special characters such as: \*(L"*\*(R", \*(L"?\*(R", \*(L"[\*(R", and \*(L"}\*(R".
-.PP
-\&\s-1POSIX\s0 character classes may also be used if your system's \fIglob\fR\|(3)
-and \fIfnmatch\fR\|(3) functions support them.  However, because the
-\&\f(CW\*(Aq:\*(Aq\fR character has special meaning in \fIsudoers\fR, it must be
-escaped.  For example:
-.PP
-.Vb 1
-\&    /bin/ls [[\e:alpha\e:]]*
-.Ve
+.TP 10n
+\fR[!...]\fR
+Matches any character
+\fInot\fR
+in the specified range.
+.TP 10n
+\fR\ex\fR
+For any character
+\(oqx\(cq,
+evaluates to
+\(oqx\(cq.
+This is used to escape special characters such as:
+\(oq*\(cq,
+\(oq\&?\(cq,
+\(oq[\&\(cq,
+and
+\(oq]\&\(cq.
+.PP
+\fBNote that these are not regular expressions.\fR
+Unlike a regular expression there is no way to match one or more
+characters within a range.
+.PP
+Character classes may be used if your system's
+glob(3)
+and
+fnmatch(3)
+functions support them.
+However, because the
+\(oq:\&\(cq
+character has special meaning in
+\fIsudoers\fR,
+it must be
+escaped.
+For example:
+.nf
+.sp
+.RS 4n
+/bin/ls [[\e:\&alpha\e:\&]]*
+.RE
+.fi
 .PP
 Would match any file name beginning with a letter.
 .PP
-Note that a forward slash ('/') will \fBnot\fR be matched by
-wildcards used in the path name.  When matching the command
-line arguments, however, a slash \fBdoes\fR get matched by
-wildcards.  This is to make a path like:
+Note that a forward slash
+(\(oq/\(cq)
+will
+\fInot\fR
+be matched by
+wildcards used in the file name portion of the command.
+This is to make a path like:
+.nf
+.sp
+.RS 4n
+/usr/bin/*
+.RE
+.fi
+.PP
+match
+\fI/usr/bin/who\fR
+but not
+\fI/usr/bin/X11/xterm\fR.
+.PP
+When matching the command line arguments, however, a slash
+\fIdoes\fR
+get matched by wildcards since command line arguments may contain
+arbitrary strings and not just path names.
+.PP
+\fBWildcards in command line arguments should be used with care.\fR
+.br
+Command line arguments are matched as a single, concatenated string.
+This mean a wildcard character such as
+\(oq\&?\(cq
+or
+\(oq*\(cq
+will match across word boundaries, which may be unexpected.
+For example, while a sudoers entry like:
+.nf
+.sp
+.RS 4n
+%operator ALL = /bin/cat /var/log/messages*
+.RE
+.fi
 .PP
-.Vb 1
-\&    /usr/bin/*
-.Ve
+will allow command like:
+.nf
+.sp
+.RS 4n
+$ sudo cat /var/log/messages.1
+.RE
+.fi
 .PP
-match \fI/usr/bin/who\fR but not \fI/usr/bin/X11/xterm\fR.
+It will also allow:
+.nf
+.sp
+.RS 4n
+$ sudo cat /var/log/messages /etc/shadow
+.RE
+.fi
+.PP
+which is probably not what was intended.
+In most cases it is better to do command line processing
+outside of the
+\fIsudoers\fR
+file in a scripting language.
 .SS "Exceptions to wildcard rules"
-.IX Subsection "Exceptions to wildcard rules"
 The following exceptions apply to the above rules:
-.ie n .IP """""" 8
-.el .IP "\f(CW``''\fR" 8
-.IX Item """"""
-If the empty string \f(CW""\fR is the only command line argument in the
-\&\fIsudoers\fR entry it means that command is not allowed to be run
-with \fBany\fR arguments.
+.TP 10n
+\fR\&""\fR
+If the empty string
+\fR\&""\fR
+is the only command line argument in the
+\fIsudoers\fR
+file entry it means that command is not allowed to be run with
+\fIany\fR
+arguments.
+.TP 10n
+sudoedit
+Command line arguments to the
+\fIsudoedit\fR
+built-in command should always be path names, so a forward slash
+(\(oq/\(cq)
+will not be matched by a wildcard.
 .SS "Including other files from within sudoers"
-.IX Subsection "Including other files from within sudoers"
-It is possible to include other \fIsudoers\fR files from within the
-\&\fIsudoers\fR file currently being parsed using the \f(CW\*(C`#include\*(C'\fR and
-\&\f(CW\*(C`#includedir\*(C'\fR directives.
-.PP
-This can be used, for example, to keep a site-wide \fIsudoers\fR file
-in addition to a local, per-machine file.  For the sake of this
-example the site-wide \fIsudoers\fR will be \fI/etc/sudoers\fR and the
-per-machine one will be \fI/etc/sudoers.local\fR.  To include
-\&\fI/etc/sudoers.local\fR from within \fI/etc/sudoers\fR we would use the
-following line in \fI/etc/sudoers\fR:
-.Sp
-.RS 4
-\&\f(CW\*(C`#include /etc/sudoers.local\*(C'\fR
-.RE
-.PP
-When \fBsudo\fR reaches this line it will suspend processing of the
-current file (\fI/etc/sudoers\fR) and switch to \fI/etc/sudoers.local\fR.
-Upon reaching the end of \fI/etc/sudoers.local\fR, the rest of
-\&\fI/etc/sudoers\fR will be processed.  Files that are included may
-themselves include other files.  A hard limit of 128 nested include
-files is enforced to prevent include file loops.
+It is possible to include other
+\fIsudoers\fR
+files from within the
+\fIsudoers\fR
+file currently being parsed using the
+\fR#include\fR
+and
+\fR#includedir\fR
+directives.
+.PP
+This can be used, for example, to keep a site-wide
+\fIsudoers\fR
+file in addition to a local, per-machine file.
+For the sake of this example the site-wide
+\fIsudoers\fR
+file will be
+\fI/etc/sudoers\fR
+and the per-machine one will be
+\fI/etc/sudoers.local\fR.
+To include
+\fI/etc/sudoers.local\fR
+from within
+\fI/etc/sudoers\fR
+we would use the
+following line in
+\fI/etc/sudoers\fR:
+.nf
+.sp
+.RS 4n
+#include /etc/sudoers.local
+.RE
+.fi
+.PP
+When
+\fBsudo\fR
+reaches this line it will suspend processing of the current file
+(\fI/etc/sudoers\fR)
+and switch to
+\fI/etc/sudoers.local\fR.
+Upon reaching the end of
+\fI/etc/sudoers.local\fR,
+the rest of
+\fI/etc/sudoers\fR
+will be processed.
+Files that are included may themselves include other files.
+A hard limit of 128 nested include files is enforced to prevent include
+file loops.
 .PP
 If the path to the include file is not fully-qualified (does not
-begin with a \fI/\fR), it must be located in the same directory as the
-sudoers file it was included from.  For example, if \fI/etc/sudoers\fR
+begin with a
+\(oq/\(cq,
+it must be located in the same directory as the sudoers file it was
+included from.
+For example, if
+\fI/etc/sudoers\fR
 contains the line:
-.Sp
-.RS 4
-\&\f(CW\*(C`#include sudoers.local\*(C'\fR
+.nf
+.sp
+.RS 4n
+\fR#include sudoers.local\fR
 .RE
+.fi
 .PP
-the file that will be included is \fI/etc/sudoers.local\fR.
-.PP
-The file name may also include the \f(CW%h\fR escape, signifying the short form
-of the host name.  I.e., if the machine's host name is \*(L"xerxes\*(R", then
-.PP
-\&\f(CW\*(C`#include /etc/sudoers.%h\*(C'\fR
+the file that will be included is
+\fI/etc/sudoers.local\fR.
 .PP
-will cause \fBsudo\fR to include the file \fI/etc/sudoers.xerxes\fR.
+The file name may also include the
+\fR%h\fR
+escape, signifying the short form of the host name.
+In other words, if the machine's host name is
+\(Lqxerxes\(Rq,
+then
+.nf
+.sp
+.RS 4n
+#include /etc/sudoers.%h
+.RE
+.fi
 .PP
-The \f(CW\*(C`#includedir\*(C'\fR directive can be used to create a \fIsudo.d\fR
-directory that the system package manager can drop \fIsudoers\fR rules
-into as part of package installation.  For example, given:
+will cause
+\fBsudo\fR
+to include the file
+\fI/etc/sudoers.xerxes\fR.
+.PP
+The
+\fR#includedir\fR
+directive can be used to create a
+\fIsudoers.d\fR
+directory that the system package manager can drop
+\fIsudoers\fR
+file rules into as part of package installation.
+For example, given:
+.nf
+.sp
+.RS 4n
+#includedir /etc/sudoers.d
+.RE
+.fi
 .PP
-\&\f(CW\*(C`#includedir /etc/sudoers.d\*(C'\fR
+\fBsudo\fR
+will read each file in
+\fI/etc/sudoers.d\fR,
+skipping file names that end in
+\(oq~\(cq
+or contain a
+\(oq.\&\(cq
+character to avoid causing problems with package manager or editor
+temporary/backup files.
+Files are parsed in sorted lexical order.
+That is,
+\fI/etc/sudoers.d/01_first\fR
+will be parsed before
+\fI/etc/sudoers.d/10_second\fR.
+Be aware that because the sorting is lexical, not numeric,
+\fI/etc/sudoers.d/1_whoops\fR
+would be loaded
+\fIafter\fR
+\fI/etc/sudoers.d/10_second\fR.
+Using a consistent number of leading zeroes in the file names can be used
+to avoid such problems.
+.PP
+Note that unlike files included via
+\fR#include\fR,
+\fBvisudo\fR
+will not edit the files in a
+\fR#includedir\fR
+directory unless one of them contains a syntax error.
+It is still possible to run
+\fBvisudo\fR
+with the
+\fB\-f\fR
+flag to edit the files directly, but this will not catch the
+redefinition of an
+\fIalias\fR
+that is also present in a different file.
+.SS "Other special characters and reserved words"
+The pound sign
+(\(oq#\(cq)
+is used to indicate a comment (unless it is part of a #include
+directive or unless it occurs in the context of a user name and is
+followed by one or more digits, in which case it is treated as a
+uid).
+Both the comment character and any text after it, up to the end of
+the line, are ignored.
+.PP
+The reserved word
+\fBALL\fR
+is a built-in
+\fIalias\fR
+that always causes a match to succeed.
+It can be used wherever one might otherwise use a
+\fRCmnd_Alias\fR,
+\fRUser_Alias\fR,
+\fRRunas_Alias\fR,
+or
+\fRHost_Alias\fR.
+You should not try to define your own
+\fIalias\fR
+called
+\fBALL\fR
+as the built-in alias will be used in preference to your own.
+Please note that using
+\fBALL\fR
+can be dangerous since in a command context, it allows the user to run
+\fIany\fR
+command on the system.
+.PP
+An exclamation point
+(\(oq\&!\(cq)
+can be used as a logical
+\fInot\fR
+operator in a list or
+\fIalias\fR
+as well as in front of a
+\fRCmnd\fR.
+This allows one to exclude certain values.
+For the
+\(oq\&!\(cq
+operator to be effective, there must be something for it to exclude.
+For example, to match all users except for root one would use:
+.nf
+.sp
+.RS 4n
+ALL,!root
+.RE
+.fi
 .PP
-\&\fBsudo\fR will read each file in \fI/etc/sudoers.d\fR, skipping file
-names that end in \f(CW\*(C`~\*(C'\fR or contain a \f(CW\*(C`.\*(C'\fR character to avoid causing
-problems with package manager or editor temporary/backup files.
-Files are parsed in sorted lexical order.  That is,
-\&\fI/etc/sudoers.d/01_first\fR will be parsed before
-\&\fI/etc/sudoers.d/10_second\fR.  Be aware that because the sorting is
-lexical, not numeric, \fI/etc/sudoers.d/1_whoops\fR would be loaded
-\&\fBafter\fR \fI/etc/sudoers.d/10_second\fR.  Using a consistent number
-of leading zeroes in the file names can be used to avoid such
-problems.
+If the
+\fBALL\fR,
+is omitted, as in:
+.nf
+.sp
+.RS 4n
+!root
+.RE
+.fi
 .PP
-Note that unlike files included via \f(CW\*(C`#include\*(C'\fR, \fBvisudo\fR will not
-edit the files in a \f(CW\*(C`#includedir\*(C'\fR directory unless one of them
-contains a syntax error.  It is still possible to run \fBvisudo\fR
-with the \f(CW\*(C`\-f\*(C'\fR flag to edit the files directly.
-.SS "Other special characters and reserved words"
-.IX Subsection "Other special characters and reserved words"
-The pound sign ('#') is used to indicate a comment (unless it is
-part of a #include directive or unless it occurs in the context of
-a user name and is followed by one or more digits, in which case
-it is treated as a uid).  Both the comment character and any text
-after it, up to the end of the line, are ignored.
-.PP
-The reserved word \fB\s-1ALL\s0\fR is a built-in \fIalias\fR that always causes
-a match to succeed.  It can be used wherever one might otherwise
-use a \f(CW\*(C`Cmnd_Alias\*(C'\fR, \f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR, or \f(CW\*(C`Host_Alias\*(C'\fR.
-You should not try to define your own \fIalias\fR called \fB\s-1ALL\s0\fR as the
-built-in alias will be used in preference to your own.  Please note
-that using \fB\s-1ALL\s0\fR can be dangerous since in a command context, it
-allows the user to run \fBany\fR command on the system.
-.PP
-An exclamation point ('!') can be used as a logical \fInot\fR operator
-both in an \fIalias\fR and in front of a \f(CW\*(C`Cmnd\*(C'\fR.  This allows one to
-exclude certain values.  Note, however, that using a \f(CW\*(C`!\*(C'\fR in
-conjunction with the built-in \f(CW\*(C`ALL\*(C'\fR alias to allow a user to
-run \*(L"all but a few\*(R" commands rarely works as intended (see \s-1SECURITY\s0
-\&\s-1NOTES\s0 below).
-.PP
-Long lines can be continued with a backslash ('\e') as the last
-character on the line.
-.PP
-Whitespace between elements in a list as well as special syntactic
-characters in a \fIUser Specification\fR ('=', ':', '(', ')') is optional.
-.PP
-The following characters must be escaped with a backslash ('\e') when
-used as part of a word (e.g.\ a user name or host name):
-\&'!', '=', ':', ',', '(', ')', '\e'.
+it would explicitly deny root but not match any other users.
+This is different from a true
+\(Lqnegation\(Rq
+operator.
+.PP
+Note, however, that using a
+\(oq\&!\(cq
+in conjunction with the built-in
+\fBALL\fR
+alias to allow a user to run
+\(Lqall but a few\(Rq
+commands rarely works as intended (see
+\fISECURITY NOTES\fR
+below).
+.PP
+Long lines can be continued with a backslash
+(\(oq\e\(cq)
+as the last character on the line.
+.PP
+White space between elements in a list as well as special syntactic
+characters in a
+\fIUser Specification\fR
+(\(oq=\&\(cq,
+\(oq:\&\(cq,
+\(oq(\&\(cq,
+\(oq)\&\(cq)
+is optional.
+.PP
+The following characters must be escaped with a backslash
+(\(oq\e\(cq)
+when used as part of a word (e.g.\& a user name or host name):
+\(oq\&!\(cq,
+\(oq=\&\(cq,
+\(oq:\&\(cq,
+\(oq,\&\(cq,
+\(oq(\&\(cq,
+\(oq)\&\(cq,
+\(oq\e\(cq.
 .SH "SUDOERS OPTIONS"
-.IX Header "SUDOERS OPTIONS"
-\&\fBsudo\fR's behavior can be modified by \f(CW\*(C`Default_Entry\*(C'\fR lines, as
-explained earlier.  A list of all supported Defaults parameters,
-grouped by type, are listed below.
-.PP
-\&\fBBoolean Flags\fR:
-.IP "always_set_home" 16
-.IX Item "always_set_home"
-If enabled, \fBsudo\fR will set the \f(CW\*(C`HOME\*(C'\fR environment variable to the
-home directory of the target user (which is root unless the \fB\-u\fR
-option is used).  This effectively means that the \fB\-H\fR option is
-always implied.  Note that \f(CW\*(C`HOME\*(C'\fR is already set when the the
-\&\fIenv_reset\fR option is enabled, so \fIalways_set_home\fR is only
-effective for configurations where either \fIenv_reset\fR is disabled
-or \f(CW\*(C`HOME\*(C'\fR is present in the \fIenv_keep\fR list.
-This flag is \fIoff\fR by default.
-.IP "authenticate" 16
-.IX Item "authenticate"
+\fBsudo\fR's
+behavior can be modified by
+\fRDefault_Entry\fR
+lines, as explained earlier.
+A list of all supported Defaults parameters, grouped by type, are listed below.
+.PP
+\fBBoolean Flags\fR:
+.TP 18n
+always_query_group_plugin
+If a
+\fIgroup_plugin\fR
+is configured, use it to resolve groups of the form %group as long
+as there is not also a system group of the same name.
+Normally, only groups of the form %:group are passed to the
+\fIgroup_plugin\fR.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+always_set_home
+If enabled,
+\fBsudo\fR
+will set the
+\fRHOME\fR
+environment variable to the home directory of the target user
+(which is root unless the
+\fB\-u\fR
+option is used).
+This effectively means that the
+\fB\-H\fR
+option is always implied.
+Note that by default,
+\fRHOME\fR
+will be set to the home directory of the target user when the
+\fIenv_reset\fR
+option is enabled, so
+\fIalways_set_home\fR
+only has an effect for configurations where either
+\fIenv_reset\fR
+is disabled or
+\fRHOME\fR
+is present in the
+\fIenv_keep\fR
+list.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+authenticate
 If set, users must authenticate themselves via a password (or other
-means of authentication) before they may run commands.  This default
-may be overridden via the \f(CW\*(C`PASSWD\*(C'\fR and \f(CW\*(C`NOPASSWD\*(C'\fR tags.
-This flag is \fIon\fR by default.
-.IP "closefrom_override" 16
-.IX Item "closefrom_override"
-If set, the user may use \fBsudo\fR's \fB\-C\fR option which
-overrides the default starting point at which \fBsudo\fR begins
-closing open file descriptors.  This flag is \fIoff\fR by default.
-.IP "compress_io" 16
-.IX Item "compress_io"
-If set, and \fBsudo\fR is configured to log a command's input or output,
-the I/O logs will be compressed using \fBzlib\fR.  This flag is \fIon\fR
-by default when \fBsudo\fR is compiled with \fBzlib\fR support.
-.IP "env_editor" 16
-.IX Item "env_editor"
-If set, \fBvisudo\fR will use the value of the \s-1EDITOR\s0 or \s-1VISUAL\s0
+means of authentication) before they may run commands.
+This default may be overridden via the
+\fRPASSWD\fR
+and
+\fRNOPASSWD\fR
+tags.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+closefrom_override
+If set, the user may use
+\fBsudo\fR's
+\fB\-C\fR
+option which overrides the default starting point at which
+\fBsudo\fR
+begins closing open file descriptors.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+compress_io
+If set, and
+\fBsudo\fR
+is configured to log a command's input or output,
+the I/O logs will be compressed using
+\fBzlib\fR.
+This flag is
+\fIon\fR
+by default when
+\fBsudo\fR
+is compiled with
+\fBzlib\fR
+support.
+.TP 18n
+exec_background
+By default,
+\fBsudo\fR
+runs a command as the foreground process as long as
+\fBsudo\fR
+itself is running in the foreground.
+When the
+\fIexec_background\fR
+flag is enabled and the command is being run in a pty (due to I/O logging
+or the
+\fIuse_pty\fR
+flag), the command will be run as a background process.
+Attempts to read from the controlling terminal (or to change terminal
+settings) will result in the command being suspended with the
+\fRSIGTTIN\fR
+signal (or
+\fRSIGTTOU\fR
+in the case of terminal settings).
+If this happens when
+\fBsudo\fR
+is a foreground process, the command will be granted the controlling terminal
+and resumed in the foreground with no user intervention required.
+The advantage of initially running the command in the background is that
+\fBsudo\fR
+need not read from the terminal unless the command explicitly requests it.
+Otherwise, any terminal input must be passed to the command, whether it
+has required it or not (the kernel buffers terminals so it is not possible
+to tell whether the command really wants the input).
+This is different from historic
+\fIsudo\fR
+behavior or when the command is not being run in a pty.
+.sp
+For this to work seamlessly, the operating system must support the
+automatic restarting of system calls.
+Unfortunately, not all operating systems do this by default,
+and even those that do may have bugs.
+For example, Mac OS X fails to restart the
+\fBtcgetattr\fR()
+and
+\fBtcsetattr\fR()
+system calls (this is a bug in Mac OS X).
+Furthermore, because this behavior depends on the command stopping with the
+\fRSIGTTIN\fR
+or
+\fRSIGTTOU\fR
+signals, programs that catch these signals and suspend themselves
+with a different signal (usually
+\fRSIGTOP\fR)
+will not be automatically foregrounded.
+Some versions of the linux
+su(1)
+command behave this way.
+This flag is
+\fIoff\fR
+by default.
+.sp
+This setting is only supported by version 1.8.7 or higher.
+It has no effect unless I/O logging is enabled or the
+\fIuse_pty\fR
+flag is enabled.
+.TP 18n
+env_editor
+If set,
+\fBvisudo\fR
+will use the value of the
+\fREDITOR\fR
+or
+\fRVISUAL\fR
 environment variables before falling back on the default editor list.
 Note that this may create a security hole as it allows the user to
-run any arbitrary command as root without logging.  A safer alternative
-is to place a colon-separated list of editors in the \f(CW\*(C`editor\*(C'\fR
-variable.  \fBvisudo\fR will then only use the \s-1EDITOR\s0 or \s-1VISUAL\s0 if
-they match a value specified in \f(CW\*(C`editor\*(C'\fR.  This flag is \fIoff\fR by
-default.
-.IP "env_reset" 16
-.IX Item "env_reset"
-If set, \fBsudo\fR will run the command in a minimal environment
-containing the \f(CW\*(C`TERM\*(C'\fR, \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR, \f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR,
-\&\f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR and \f(CW\*(C`SUDO_*\*(C'\fR variables.  Any
-variables in the caller's environment that match the \f(CW\*(C`env_keep\*(C'\fR
-and \f(CW\*(C`env_check\*(C'\fR lists are then added, followed by any variables
-present in the file specified by the \fIenv_file\fR option (if any).
-The default contents of the \f(CW\*(C`env_keep\*(C'\fR and \f(CW\*(C`env_check\*(C'\fR lists are
-displayed when \fBsudo\fR is run by root with the \fI\-V\fR option.  If
-the \fIsecure_path\fR option is set, its value will be used for the
-\&\f(CW\*(C`PATH\*(C'\fR environment variable.  This flag is \fIon\fR by
-default.
-.IP "fast_glob" 16
-.IX Item "fast_glob"
-Normally, \fBsudo\fR uses the \fIglob\fR\|(3) function to do shell-style
-globbing when matching path names.  However, since it accesses the
-file system, \fIglob\fR\|(3) can take a long time to complete for some
-patterns, especially when the pattern references a network file
-system that is mounted on demand (automounted).  The \fIfast_glob\fR
-option causes \fBsudo\fR to use the \fIfnmatch\fR\|(3) function, which does
-not access the file system to do its matching.  The disadvantage
-of \fIfast_glob\fR is that it is unable to match relative path names
-such as \fI./ls\fR or \fI../bin/ls\fR.  This has security implications
-when path names that include globbing characters are used with the
-negation operator, \f(CW\*(Aq!\*(Aq\fR, as such rules can be trivially bypassed.
-As such, this option should not be used when \fIsudoers\fR contains rules 
-that contain negated path names which include globbing characters.
-This flag is \fIoff\fR by default.
-.IP "fqdn" 16
-.IX Item "fqdn"
+run any arbitrary command as root without logging.
+A safer alternative is to place a colon-separated list of editors
+in the
+\fReditor\fR
+variable.
+\fBvisudo\fR
+will then only use the
+\fREDITOR\fR
+or
+\fRVISUAL\fR
+if they match a value specified in
+\fReditor\fR.
+If the
+\fIenv_reset\fR
+flag is enabled, the
+\fREDITOR\fR
+and/or
+\fRVISUAL\fR
+environment variables must be present in the
+\fIenv_keep\fR
+list for the
+\fIenv_editor\fR
+flag to function when
+\fBvisudo\fR
+is invoked via
+\fBsudo\fR.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+env_reset
+If set,
+\fBsudo\fR
+will run the command in a minimal environment containing the
+\fRTERM\fR,
+\fRPATH\fR,
+\fRHOME\fR,
+\fRMAIL\fR,
+\fRSHELL\fR,
+\fRLOGNAME\fR,
+\fRUSER\fR,
+\fRUSERNAME\fR
+and
+\fRSUDO_*\fR
+variables.
+Any
+variables in the caller's environment that match the
+\fRenv_keep\fR
+and
+\fRenv_check\fR
+lists are then added, followed by any variables present in the file
+specified by the
+\fIenv_file\fR
+option (if any).
+The contents of the
+\fRenv_keep\fR
+and
+\fRenv_check\fR
+lists, as modified by global Defaults parameters in
+\fIsudoers\fR,
+are displayed when
+\fBsudo\fR
+is run by root with the
+\fB\-V\fR
+option.
+If the
+\fIsecure_path\fR
+option is set, its value will be used for the
+\fRPATH\fR
+environment variable.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+fast_glob
+Normally,
+\fBsudo\fR
+uses the
+glob(3)
+function to do shell-style globbing when matching path names.
+However, since it accesses the file system,
+glob(3)
+can take a long time to complete for some patterns, especially
+when the pattern references a network file system that is mounted
+on demand (auto mounted).
+The
+\fIfast_glob\fR
+option causes
+\fBsudo\fR
+to use the
+fnmatch(3)
+function, which does not access the file system to do its matching.
+The disadvantage of
+\fIfast_glob\fR
+is that it is unable to match relative path names such as
+\fI./ls\fR
+or
+\fI../bin/ls\fR.
+This has security implications when path names that include globbing
+characters are used with the negation operator,
+\(oq!\&\(cq,
+as such rules can be trivially bypassed.
+As such, this option should not be used when the
+\fIsudoers\fR
+file contains rules that contain negated path names which include globbing
+characters.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+fqdn
 Set this flag if you want to put fully qualified host names in the
-\&\fIsudoers\fR file.  I.e., instead of myhost you would use myhost.mydomain.edu.
+\fIsudoers\fR
+file when the local host name (as returned by the
+\fRhostname\fR
+command) does not contain the domain name.
+In other words, instead of myhost you would use myhost.mydomain.edu.
 You may still use the short form if you wish (and even mix the two).
-Beware that turning on \fIfqdn\fR requires \fBsudo\fR to make \s-1DNS\s0 lookups
-which may make \fBsudo\fR unusable if \s-1DNS\s0 stops working (for example
-if the machine is not plugged into the network).  Also note that
-you must use the host's official name as \s-1DNS\s0 knows it.  That is,
-you may not use a host alias (\f(CW\*(C`CNAME\*(C'\fR entry) due to performance
-issues and the fact that there is no way to get all aliases from
-\&\s-1DNS\s0.  If your machine's host name (as returned by the \f(CW\*(C`hostname\*(C'\fR
-command) is already fully qualified you shouldn't need to set
-\&\fIfqdn\fR.  This flag is \fIoff\fR by default.
-.IP "ignore_dot" 16
-.IX Item "ignore_dot"
-If set, \fBsudo\fR will ignore '.' or '' (current dir) in the \f(CW\*(C`PATH\*(C'\fR
-environment variable; the \f(CW\*(C`PATH\*(C'\fR itself is not modified.  This
-flag is \fIoff\fR by default.
-.IP "ignore_local_sudoers" 16
-.IX Item "ignore_local_sudoers"
-If set via \s-1LDAP\s0, parsing of \fI/etc/sudoers\fR will be skipped.
+This option is only effective when the
+\(Lqcanonical\(Rq
+host name, as returned by the
+\fBgetaddrinfo\fR()
+or
+\fBgethostbyname\fR()
+function, is a fully-qualified domain name.
+This is usually the case when the system is configured to use DNS
+for host name resolution.
+.sp
+If the system is configured to use the
+\fI/etc/hosts\fR
+file in preference to DNS, the
+\(Lqcanonical\(Rq
+host name may not be fully-qualified.
+The order that sources are queried for host name resolution
+is usually specified in the
+\fI/etc/nsswitch.conf\fR,
+\fI/etc/netsvc.conf\fR,
+\fI/etc/host.conf\fR,
+or, in some cases,
+\fI/etc/resolv.conf\fR
+file.
+In the
+\fI/etc/hosts\fR
+file, the first host name of the entry is considered to be the
+\(Lqcanonical\(Rq
+name; subsequent names are aliases that are not used by
+\fBsudoers\fR.
+For example, the following hosts file line for the machine
+\(Lqxyzzy\(Rq
+has the fully-qualified domain name as the
+\(Lqcanonical\(Rq
+host name, and the short version as an alias.
+.sp
+.RS 24n
+192.168.1.1    xyzzy.sudo.ws xyzzy
+.RE
+.RS 18n
+.sp
+If the machine's hosts file entry is not formatted properly, the
+\fIfqdn\fR
+option will not be effective if it is queried before DNS.
+.sp
+Beware that when using DNS for host name resolution, turning on
+\fIfqdn\fR
+requires
+\fBsudoers\fR
+to make DNS lookups which renders
+\fBsudo\fR
+unusable if DNS stops working (for example if the machine is disconnected
+from the network).
+Also note that just like with the hosts file, you must use the
+\(Lqcanonical\(Rq
+name as DNS knows it.
+That is, you may not use a host alias
+(\fRCNAME\fR
+entry)
+due to performance issues and the fact that there is no way to get all
+aliases from DNS.
+.sp
+This flag is
+\fIoff\fR
+by default.
+.RE
+.TP 18n
+ignore_dot
+If set,
+\fBsudo\fR
+will ignore "." or "" (both denoting current directory) in the
+\fRPATH\fR
+environment variable; the
+\fRPATH\fR
+itself is not modified.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+ignore_local_sudoers
+If set via LDAP, parsing of
+\fI/etc/sudoers\fR
+will be skipped.
 This is intended for Enterprises that wish to prevent the usage of local
-sudoers files so that only \s-1LDAP\s0 is used.  This thwarts the efforts of
-rogue operators who would attempt to add roles to \fI/etc/sudoers\fR.
-When this option is present, \fI/etc/sudoers\fR does not even need to
-exist. Since this option tells \fBsudo\fR how to behave when no specific \s-1LDAP\s0
-entries have been matched, this sudoOption is only meaningful for the
-\&\f(CW\*(C`cn=defaults\*(C'\fR section.  This flag is \fIoff\fR by default.
-.IP "insults" 16
-.IX Item "insults"
-If set, \fBsudo\fR will insult users when they enter an incorrect
-password.  This flag is \fIoff\fR by default.
-.IP "log_host" 16
-.IX Item "log_host"
-If set, the host name will be logged in the (non-syslog) \fBsudo\fR log file.
-This flag is \fIoff\fR by default.
-.IP "log_input" 16
-.IX Item "log_input"
-If set, \fBsudo\fR will run the command in a \fIpseudo tty\fR and log all
-user input.
+sudoers files so that only LDAP is used.
+This thwarts the efforts of rogue operators who would attempt to add roles to
+\fI/etc/sudoers\fR.
+When this option is present,
+\fI/etc/sudoers\fR
+does not even need to exist.
+Since this option tells
+\fBsudo\fR
+how to behave when no specific LDAP entries have been matched, this
+sudoOption is only meaningful for the
+\fRcn=defaults\fR
+section.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+insults
+If set,
+\fBsudo\fR
+will insult users when they enter an incorrect password.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+log_host
+If set, the host name will be logged in the (non-syslog)
+\fBsudo\fR
+log file.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+log_input
+If set,
+\fBsudo\fR
+will run the command in a pseudo-tty and log all user input.
 If the standard input is not connected to the user's tty, due to
 I/O redirection or because the command is part of a pipeline, that
 input is also captured and stored in a separate log file.
-.Sp
-Input is logged to the directory specified by the \fIiolog_dir\fR
-option (\fI/var/log/sudo-io\fR by default) using a unique session \s-1ID\s0 that
-is included in the normal \fBsudo\fR log line, prefixed with \fITSID=\fR.
-The \fIiolog_file\fR option may be used to control the format of the
-session \s-1ID\s0.
-.Sp
-Note that user input may contain sensitive information such as
-passwords (even if they are not echoed to the screen), which will
-be stored in the log file unencrypted.  In most cases, logging the
-command output via \fIlog_output\fR is all that is required.
-.IP "log_output" 16
-.IX Item "log_output"
-If set, \fBsudo\fR will run the command in a \fIpseudo tty\fR and log all
-output that is sent to the screen, similar to the \fIscript\fR\|(1) command.
-If the standard output or standard error is not connected to the
-user's tty, due to I/O redirection or because the command is part
-of a pipeline, that output is also captured and stored in separate
-log files.
-.Sp
-Output is logged to the directory specified by the \fIiolog_dir\fR
-option (\fI/var/log/sudo-io\fR by default) using a unique session \s-1ID\s0 that
-is included in the normal \fBsudo\fR log line, prefixed with \fITSID=\fR.
-The \fIiolog_file\fR option may be used to control the format of the
-session \s-1ID\s0.
-.Sp
-Output logs may be viewed with the \fIsudoreplay\fR\|(8) utility, which
-can also be used to list or search the available logs.
-.IP "log_year" 16
-.IX Item "log_year"
-If set, the four-digit year will be logged in the (non-syslog) \fBsudo\fR log file.
-This flag is \fIoff\fR by default.
-.IP "long_otp_prompt" 16
-.IX Item "long_otp_prompt"
-When validating with a One Time Password (\s-1OTP\s0) scheme such as
-\&\fBS/Key\fR or \fB\s-1OPIE\s0\fR, a two-line prompt is used to make it easier
-to cut and paste the challenge to a local window.  It's not as
-pretty as the default but some people find it more convenient.  This
-flag is \fIoff\fR by default.
-.IP "mail_always" 16
-.IX Item "mail_always"
-Send mail to the \fImailto\fR user every time a users runs \fBsudo\fR.
-This flag is \fIoff\fR by default.
-.IP "mail_badpass" 16
-.IX Item "mail_badpass"
-Send mail to the \fImailto\fR user if the user running \fBsudo\fR does not
-enter the correct password.  This flag is \fIoff\fR by default.
-.IP "mail_no_host" 16
-.IX Item "mail_no_host"
-If set, mail will be sent to the \fImailto\fR user if the invoking
-user exists in the \fIsudoers\fR file, but is not allowed to run
-commands on the current host.  This flag is \fIoff\fR by default.
-.IP "mail_no_perms" 16
-.IX Item "mail_no_perms"
-If set, mail will be sent to the \fImailto\fR user if the invoking
-user is allowed to use \fBsudo\fR but the command they are trying is not
-listed in their \fIsudoers\fR file entry or is explicitly denied.
-This flag is \fIoff\fR by default.
-.IP "mail_no_user" 16
-.IX Item "mail_no_user"
-If set, mail will be sent to the \fImailto\fR user if the invoking
-user is not in the \fIsudoers\fR file.  This flag is \fIon\fR
+For more information, see the
+\fII/O LOG FILES\fR
+section.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+log_output
+If set,
+\fBsudo\fR
+will run the command in a pseudo-tty and log all output that is sent
+to the screen, similar to the
+script(1)
+command.
+For more information, see the
+\fII/O LOG FILES\fR
+section.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+log_year
+If set, the four-digit year will be logged in the (non-syslog)
+\fBsudo\fR
+log file.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+long_otp_prompt
+When validating with a One Time Password (OTP) scheme such as
+\fBS/Key\fR
+or
+\fBOPIE\fR,
+a two-line prompt is used to make it easier
+to cut and paste the challenge to a local window.
+It's not as pretty as the default but some people find it more convenient.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+mail_all_cmnds
+Send mail to the
+\fImailto\fR
+user every time a user attempts to run a command via
+\fBsudo\fR
+(this includes
+\fBsudoedit\fR).
+No mail will be sent if the user runs
+\fBsudo\fR
+with the
+\fB\-l\fR
+or
+\fB\-v\fR
+option unless there is an authentication error and the
+\fImail_badpass\fR
+flag is also set.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+mail_always
+Send mail to the
+\fImailto\fR
+user every time a user runs
+\fBsudo\fR.
+This flag is
+\fIoff\fR
 by default.
-.IP "noexec" 16
-.IX Item "noexec"
-If set, all commands run via \fBsudo\fR will behave as if the \f(CW\*(C`NOEXEC\*(C'\fR
-tag has been set, unless overridden by a \f(CW\*(C`EXEC\*(C'\fR tag.  See the
-description of \fI\s-1NOEXEC\s0 and \s-1EXEC\s0\fR below as well as the \*(L"\s-1PREVENTING\s0 \s-1SHELL\s0
-\&\s-1ESCAPES\s0\*(R" section at the end of this manual.  This flag is \fIoff\fR by default.
-.IP "path_info" 16
-.IX Item "path_info"
-Normally, \fBsudo\fR will tell the user when a command could not be
-found in their \f(CW\*(C`PATH\*(C'\fR environment variable.  Some sites may wish
-to disable this as it could be used to gather information on the
-location of executables that the normal user does not have access
-to.  The disadvantage is that if the executable is simply not in
-the user's \f(CW\*(C`PATH\*(C'\fR, \fBsudo\fR will tell the user that they are not
-allowed to run it, which can be confusing.  This flag is \fIon\fR
+.TP 18n
+mail_badpass
+Send mail to the
+\fImailto\fR
+user if the user running
+\fBsudo\fR
+does not enter the correct password.
+If the command the user is attempting to run is not permitted by
+\fBsudoers\fR
+and one of the
+\fImail_all_cmnds\fR,
+\fImail_always\fR,
+\fImail_no_host\fR,
+\fImail_no_perms\fR
+or
+\fImail_no_user\fR
+flags are set, this flag will have no effect.
+This flag is
+\fIoff\fR
 by default.
-.IP "passprompt_override" 16
-.IX Item "passprompt_override"
-The password prompt specified by \fIpassprompt\fR will normally only
-be used if the password prompt provided by systems such as \s-1PAM\s0 matches
-the string \*(L"Password:\*(R".  If \fIpassprompt_override\fR is set, \fIpassprompt\fR
-will always be used.  This flag is \fIoff\fR by default.
-.IP "preserve_groups" 16
-.IX Item "preserve_groups"
-By default, \fBsudo\fR will initialize the group vector to the list of
-groups the target user is in.  When \fIpreserve_groups\fR is set, the
-user's existing group vector is left unaltered.  The real and
-effective group IDs, however, are still set to match the target
-user.  This flag is \fIoff\fR by default.
-.IP "pwfeedback" 16
-.IX Item "pwfeedback"
-By default, \fBsudo\fR reads the password like most other Unix programs,
+.TP 18n
+mail_no_host
+If set, mail will be sent to the
+\fImailto\fR
+user if the invoking user exists in the
+\fIsudoers\fR
+file, but is not allowed to run commands on the current host.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+mail_no_perms
+If set, mail will be sent to the
+\fImailto\fR
+user if the invoking user is allowed to use
+\fBsudo\fR
+but the command they are trying is not listed in their
+\fIsudoers\fR
+file entry or is explicitly denied.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+mail_no_user
+If set, mail will be sent to the
+\fImailto\fR
+user if the invoking user is not in the
+\fIsudoers\fR
+file.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+netgroup_tuple
+If set, netgroup lookups will be performed using the full netgroup
+tuple: host name, user name and domain (if one is set).
+Historically,
+\fBsudo\fR
+only matched the user name and domain for netgroups used in a
+\fRUser_List\fR
+and only matched the host name and domain for netgroups used in a
+\fRHost_List\fR.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+noexec
+If set, all commands run via
+\fBsudo\fR
+will behave as if the
+\fRNOEXEC\fR
+tag has been set, unless overridden by an
+\fREXEC\fR
+tag.
+See the description of
+\fIEXEC and NOEXEC\fR
+above as well as the
+\fIPreventing shell escapes\fR
+section at the end of this manual.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+pam_session
+On systems that use PAM for authentication,
+\fBsudo\fR
+will create a new PAM session for the command to be run in.
+Disabling
+\fIpam_session\fR
+may be needed on older PAM implementations or on operating systems where
+opening a PAM session changes the utmp or wtmp files.
+If PAM session support is disabled, resource limits may not be updated
+for the command being run.
+If
+\fIpam_session\fR,
+\fIpam_setcred\fR,
+and
+\fIuse_pty\fR
+are disabled and I/O logging has not been configured,
+\fBsudo\fR
+will execute the command directly instead of running it as a child
+process.
+This flag is
+\fIon\fR
+by default.
+.sp
+This setting is only supported by version 1.8.7 or higher.
+.TP 18n
+pam_setcred
+On systems that use PAM for authentication,
+\fBsudo\fR
+will attempt to establish credentials for the target user by default,
+if supported by the underlying authentication system.
+One example of a credential is a Kerberos ticket.
+If
+\fIpam_session\fR,
+\fIpam_setcred\fR,
+and
+\fIuse_pty\fR
+are disabled and I/O logging has not been configured,
+\fBsudo\fR
+will execute the command directly instead of running it as a child
+process.
+This flag is
+\fIon\fR
+by default.
+.sp
+This setting is only supported by version 1.8.8 or higher.
+.TP 18n
+passprompt_override
+The password prompt specified by
+\fIpassprompt\fR
+will normally only be used if the password prompt provided by systems
+such as PAM matches the string
+\(LqPassword:\(Rq.
+If
+\fIpassprompt_override\fR
+is set,
+\fIpassprompt\fR
+will always be used.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+path_info
+Normally,
+\fBsudo\fR
+will tell the user when a command could not be
+found in their
+\fRPATH\fR
+environment variable.
+Some sites may wish to disable this as it could be used to gather
+information on the location of executables that the normal user does
+not have access to.
+The disadvantage is that if the executable is simply not in the user's
+\fRPATH\fR,
+\fBsudo\fR
+will tell the user that they are not allowed to run it, which can be confusing.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+preserve_groups
+By default,
+\fBsudo\fR
+will initialize the group vector to the list of groups the target user is in.
+When
+\fIpreserve_groups\fR
+is set, the user's existing group vector is left unaltered.
+The real and effective group IDs, however, are still set to match the
+target user.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+pwfeedback
+By default,
+\fBsudo\fR
+reads the password like most other Unix programs,
 by turning off echo until the user hits the return (or enter) key.
-Some users become confused by this as it appears to them that \fBsudo\fR
-has hung at this point.  When \fIpwfeedback\fR is set, \fBsudo\fR will
-provide visual feedback when the user presses a key.  Note that
-this does have a security impact as an onlooker may be able to
+Some users become confused by this as it appears to them that
+\fBsudo\fR
+has hung at this point.
+When
+\fIpwfeedback\fR
+is set,
+\fBsudo\fR
+will provide visual feedback when the user presses a key.
+Note that this does have a security impact as an onlooker may be able to
 determine the length of the password being entered.
-This flag is \fIoff\fR by default.
-.IP "requiretty" 16
-.IX Item "requiretty"
-If set, \fBsudo\fR will only run when the user is logged in to a real
-tty.  When this flag is set, \fBsudo\fR can only be run from a login
-session and not via other means such as \fIcron\fR\|(8) or cgi-bin scripts.
-This flag is \fIoff\fR by default.
-.IP "root_sudo" 16
-.IX Item "root_sudo"
-If set, root is allowed to run \fBsudo\fR too.  Disabling this prevents users
-from \*(L"chaining\*(R" \fBsudo\fR commands to get a root shell by doing something
-like \f(CW"sudo sudo /bin/sh"\fR.  Note, however, that turning off \fIroot_sudo\fR
-will also prevent root from running \fBsudoedit\fR.
-Disabling \fIroot_sudo\fR provides no real additional security; it
-exists purely for historical reasons.
-This flag is \fIon\fR by default.
-.IP "rootpw" 16
-.IX Item "rootpw"
-If set, \fBsudo\fR will prompt for the root password instead of the password
-of the invoking user.  This flag is \fIoff\fR by default.
-.IP "runaspw" 16
-.IX Item "runaspw"
-If set, \fBsudo\fR will prompt for the password of the user defined by the
-\&\fIrunas_default\fR option (defaults to \f(CW\*(C`root\*(C'\fR) instead of the
-password of the invoking user.  This flag is \fIoff\fR by default.
-.IP "set_home" 16
-.IX Item "set_home"
-If enabled and \fBsudo\fR is invoked with the \fB\-s\fR option the \f(CW\*(C`HOME\*(C'\fR
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+requiretty
+If set,
+\fBsudo\fR
+will only run when the user is logged in to a real tty.
+When this flag is set,
+\fBsudo\fR
+can only be run from a login session and not via other means such as
+cron(8)
+or cgi-bin scripts.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+root_sudo
+If set, root is allowed to run
+\fBsudo\fR
+too.
+Disabling this prevents users from
+\(Lqchaining\(Rq
+\fBsudo\fR
+commands to get a root shell by doing something like
+\(Lq\fRsudo sudo /bin/sh\fR\(Rq.
+Note, however, that turning off
+\fIroot_sudo\fR
+will also prevent root from running
+\fBsudoedit\fR.
+Disabling
+\fIroot_sudo\fR
+provides no real additional security; it exists purely for historical reasons.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+rootpw
+If set,
+\fBsudo\fR
+will prompt for the root password instead of the password of the invoking user
+when running a command or editing a file.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+runaspw
+If set,
+\fBsudo\fR
+will prompt for the password of the user defined by the
+\fIrunas_default\fR
+option (defaults to
+\fRroot\fR)
+instead of the password of the invoking user
+when running a command or editing a file.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+set_home
+If enabled and
+\fBsudo\fR
+is invoked with the
+\fB\-s\fR
+option the
+\fRHOME\fR
 environment variable will be set to the home directory of the target
-user (which is root unless the \fB\-u\fR option is used).  This effectively
-makes the \fB\-s\fR option imply \fB\-H\fR.  Note that \f(CW\*(C`HOME\*(C'\fR is already
-set when the the \fIenv_reset\fR option is enabled, so \fIset_home\fR is
-only effective for configurations where either \fIenv_reset\fR is disabled
-or \f(CW\*(C`HOME\*(C'\fR is present in the \fIenv_keep\fR list.
-This flag is \fIoff\fR by default.
-.IP "set_logname" 16
-.IX Item "set_logname"
-Normally, \fBsudo\fR will set the \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR and \f(CW\*(C`USERNAME\*(C'\fR
-environment variables to the name of the target user (usually root
-unless the \fB\-u\fR option is given).  However, since some programs
-(including the \s-1RCS\s0 revision control system) use \f(CW\*(C`LOGNAME\*(C'\fR to
-determine the real identity of the user, it may be desirable to
-change this behavior.  This can be done by negating the set_logname
-option.  Note that if the \fIenv_reset\fR option has not been disabled,
-entries in the \fIenv_keep\fR list will override the value of
-\&\fIset_logname\fR.  This flag is \fIon\fR by default.
-.IP "set_utmp" 16
-.IX Item "set_utmp"
-When enabled, \fBsudo\fR will create an entry in the utmp (or utmpx)
-file when a pseudo-tty is allocated.  A pseudo-tty is allocated by
-\&\fBsudo\fR when the \fIlog_input\fR, \fIlog_output\fR or \fIuse_pty\fR flags
-are enabled.  By default, the new entry will be a copy of the user's
-existing utmp entry (if any), with the tty, time, type and pid
-fields updated.  This flag is \fIon\fR by default.
-.IP "setenv" 16
-.IX Item "setenv"
-Allow the user to disable the \fIenv_reset\fR option from the command
-line via the \fB\-E\fR option.  Additionally, environment variables set
-via the command line are not subject to the restrictions imposed
-by \fIenv_check\fR, \fIenv_delete\fR, or \fIenv_keep\fR.  As such, only
-trusted users should be allowed to set variables in this manner.
-This flag is \fIoff\fR by default.
-.IP "shell_noargs" 16
-.IX Item "shell_noargs"
-If set and \fBsudo\fR is invoked with no arguments it acts as if the
-\&\fB\-s\fR option had been given.  That is, it runs a shell as root (the
-shell is determined by the \f(CW\*(C`SHELL\*(C'\fR environment variable if it is
-set, falling back on the shell listed in the invoking user's
-/etc/passwd entry if not).  This flag is \fIoff\fR by default.
-.IP "stay_setuid" 16
-.IX Item "stay_setuid"
-Normally, when \fBsudo\fR executes a command the real and effective
-UIDs are set to the target user (root by default).  This option
-changes that behavior such that the real \s-1UID\s0 is left as the invoking
-user's \s-1UID\s0.  In other words, this makes \fBsudo\fR act as a setuid
-wrapper.  This can be useful on systems that disable some potentially
-dangerous functionality when a program is run setuid.  This option
-is only effective on systems with either the \fIsetreuid()\fR or \fIsetresuid()\fR
-function.  This flag is \fIoff\fR by default.
-.IP "targetpw" 16
-.IX Item "targetpw"
-If set, \fBsudo\fR will prompt for the password of the user specified
-by the \fB\-u\fR option (defaults to \f(CW\*(C`root\*(C'\fR) instead of the password
-of the invoking user.  In addition, the timestamp file name will
-include the target user's name.  Note that this flag precludes the
-use of a uid not listed in the passwd database as an argument to
-the \fB\-u\fR option.  This flag is \fIoff\fR by default.
-.IP "tty_tickets" 16
-.IX Item "tty_tickets"
-If set, users must authenticate on a per-tty basis.  With this flag
-enabled, \fBsudo\fR will use a file named for the tty the user is
-logged in on in the user's time stamp directory.  If disabled, the
-time stamp of the directory is used instead.  This flag is
-\&\fIon\fR by default.
-.IP "umask_override" 16
-.IX Item "umask_override"
-If set, \fBsudo\fR will set the umask as specified by \fIsudoers\fR without
-modification.  This makes it possible to specify a more permissive
-umask in \fIsudoers\fR than the user's own umask and matches historical
-behavior.  If \fIumask_override\fR is not set, \fBsudo\fR will set the
-umask to be the union of the user's umask and what is specified in
-\&\fIsudoers\fR.  This flag is \fIoff\fR by default.
-.if \n(LC \{\
-.IP "use_loginclass" 16
-.IX Item "use_loginclass"
-If set, \fBsudo\fR will apply the defaults specified for the target user's
-login class if one exists.  Only available if \fBsudo\fR is configured with
-the \-\-with\-logincap option.  This flag is \fIoff\fR by default.
-\}
-.IP "use_pty" 16
-.IX Item "use_pty"
-If set, \fBsudo\fR will run the command in a pseudo-pty even if no I/O
-logging is being gone.  A malicious program run under \fBsudo\fR could
-conceivably fork a background process that retains to the user's
-terminal device after the main program has finished executing.  Use
-of this option will make that impossible.  This flag is \fIoff\fR by default.
-.IP "utmp_runas" 16
-.IX Item "utmp_runas"
-If set, \fBsudo\fR will store the name of the runas user when updating
-the utmp (or utmpx) file.  By default, \fBsudo\fR stores the name of
-the invoking user.  This flag is \fIoff\fR by default.
-.IP "visiblepw" 16
-.IX Item "visiblepw"
-By default, \fBsudo\fR will refuse to run if the user must enter a
-password but it is not possible to disable echo on the terminal.
-If the \fIvisiblepw\fR flag is set, \fBsudo\fR will prompt for a password
-even when it would be visible on the screen.  This makes it possible
-to run things like \f(CW"rsh somehost sudo ls"\fR since \fIrsh\fR\|(1) does
-not allocate a tty.  This flag is \fIoff\fR by default.
-.PP
-\&\fBIntegers\fR:
-.IP "closefrom" 16
-.IX Item "closefrom"
-Before it executes a command, \fBsudo\fR will close all open file
-descriptors other than standard input, standard output and standard
-error (ie: file descriptors 0\-2).  The \fIclosefrom\fR option can be used
-to specify a different file descriptor at which to start closing.
-The default is \f(CW3\fR.
-.IP "passwd_tries" 16
-.IX Item "passwd_tries"
+user (which is root unless the
+\fB\-u\fR
+option is used).
+This effectively makes the
+\fB\-s\fR
+option imply
+\fB\-H\fR.
+Note that
+\fRHOME\fR
+is already set when the
+\fIenv_reset\fR
+option is enabled, so
+\fIset_home\fR
+is only effective for configurations where either
+\fIenv_reset\fR
+is disabled
+or
+\fRHOME\fR
+is present in the
+\fIenv_keep\fR
+list.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+set_logname
+Normally,
+\fBsudo\fR
+will set the
+\fRLOGNAME\fR,
+\fRUSER\fR
+and
+\fRUSERNAME\fR
+environment variables to the name of the target user (usually root unless the
+\fB\-u\fR
+option is given).
+However, since some programs (including the RCS revision control system) use
+\fRLOGNAME\fR
+to determine the real identity of the user, it may be desirable to
+change this behavior.
+This can be done by negating the set_logname option.
+Note that
+\fIset_logname\fR
+will have no effect
+if the
+\fIenv_reset\fR
+option has not been disabled and the
+\fIenv_keep\fR
+list contains
+\fRLOGNAME\fR,
+\fRUSER\fR
+or
+\fRUSERNAME\fR.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+set_utmp
+When enabled,
+\fBsudo\fR
+will create an entry in the utmp (or utmpx) file when a pseudo-tty
+is allocated.
+A pseudo-tty is allocated by
+\fBsudo\fR
+when the
+\fIlog_input\fR,
+\fIlog_output\fR
+or
+\fIuse_pty\fR
+flags are enabled.
+By default, the new entry will be a copy of the user's existing utmp
+entry (if any), with the tty, time, type and pid fields updated.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+setenv
+Allow the user to disable the
+\fIenv_reset\fR
+option from the command line via the
+\fB\-E\fR
+option.
+Additionally, environment variables set via the command line are
+not subject to the restrictions imposed by
+\fIenv_check\fR,
+\fIenv_delete\fR,
+or
+\fIenv_keep\fR.
+As such, only trusted users should be allowed to set variables in this manner.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+shell_noargs
+If set and
+\fBsudo\fR
+is invoked with no arguments it acts as if the
+\fB\-s\fR
+option had been given.
+That is, it runs a shell as root (the shell is determined by the
+\fRSHELL\fR
+environment variable if it is set, falling back on the shell listed
+in the invoking user's /etc/passwd entry if not).
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+stay_setuid
+Normally, when
+\fBsudo\fR
+executes a command the real and effective UIDs are set to the target
+user (root by default).
+This option changes that behavior such that the real UID is left
+as the invoking user's UID.
+In other words, this makes
+\fBsudo\fR
+act as a setuid wrapper.
+This can be useful on systems that disable some potentially
+dangerous functionality when a program is run setuid.
+This option is only effective on systems that support either the
+setreuid(2)
+or
+setresuid(2)
+system call.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+sudoedit_checkdir
+.br
+If set,
+\fBsudoedit\fR
+will check all directory components of the path to be edited for writability
+by the invoking user.
+Symbolic links will not be followed in writable directories and
+\fBsudoedit\fR
+will refuse to edit a file located in a writable directory.
+These restrictions are not enforced when
+\fBsudoedit\fR
+is run by root.
+On some systems, if all directory components of the path to be edited
+are not readable by the target user,
+\fBsudoedit\fR
+will be unable to edit the file.
+This flag is
+\fIon\fR
+by default.
+.sp
+This setting was first introduced in version 1.8.15 but initially
+suffered from a race condition.
+The check for symbolic links in writable intermediate directories
+was added in version 1.8.16.
+.TP 18n
+sudoedit_follow
+By default,
+\fBsudoedit\fR
+will not follow symbolic links when opening files.
+The
+\fIsudoedit_follow\fR
+option can be enabled to allow
+\fBsudoedit\fR
+to open symbolic links.
+It may be overridden on a per-command basis by the
+\fIFOLLOW\fR
+and
+\fINOFOLLOW\fR
+tags.
+This flag is
+\fIoff\fR
+by default.
+.sp
+This setting is only supported by version 1.8.15 or higher.
+.TP 18n
+targetpw
+If set,
+\fBsudo\fR
+will prompt for the password of the user specified
+by the
+\fB\-u\fR
+option (defaults to
+\fRroot\fR)
+instead of the password of the invoking user
+when running a command or editing a file.
+Note that this flag precludes the use of a uid not listed in the passwd
+database as an argument to the
+\fB\-u\fR
+option.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+tty_tickets
+If set, users must authenticate on a per-tty basis.
+With this flag enabled,
+\fBsudo\fR
+will use a separate record in the time stamp file for each tty.
+If disabled, a single record is used for all login sessions.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+umask_override
+If set,
+\fBsudo\fR
+will set the umask as specified in the
+\fIsudoers\fR
+file without modification.
+This makes it possible to specify a umask in the
+\fIsudoers\fR
+file that is more permissive than the user's own umask and matches
+historical behavior.
+If
+\fIumask_override\fR
+is not set,
+\fBsudo\fR
+will set the umask to be the union of the user's umask and what is specified in
+\fIsudoers\fR.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+use_netgroups
+If set, netgroups (prefixed with
+\(oq+\(cq),
+may be used in place of a user or host.
+For LDAP-based sudoers, netgroup support requires an expensive
+substring match on the server unless the
+\fBNETGROUP_BASE\fR
+directive is present in the
+\fI/etc/ldap.conf\fR
+file.
+If netgroups are not needed, this option can be disabled to reduce the
+load on the LDAP server.
+This flag is
+\fIon\fR
+by default.
+.TP 18n
+use_pty
+If set,
+\fBsudo\fR
+will run the command in a pseudo-pty even if no I/O logging is being gone.
+A malicious program run under
+\fBsudo\fR
+could conceivably fork a background process that retains to the user's
+terminal device after the main program has finished executing.
+Use of this option will make that impossible.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+utmp_runas
+If set,
+\fBsudo\fR
+will store the name of the runas user when updating the utmp (or utmpx) file.
+By default,
+\fBsudo\fR
+stores the name of the invoking user.
+This flag is
+\fIoff\fR
+by default.
+.TP 18n
+visiblepw
+By default,
+\fBsudo\fR
+will refuse to run if the user must enter a password but it is not
+possible to disable echo on the terminal.
+If the
+\fIvisiblepw\fR
+flag is set,
+\fBsudo\fR
+will prompt for a password even when it would be visible on the screen.
+This makes it possible to run things like
+\(Lq\fRssh somehost sudo ls\fR\(Rq
+since by default,
+ssh(1)
+does
+not allocate a tty when running a command.
+This flag is
+\fIoff\fR
+by default.
+.PP
+\fBIntegers\fR:
+.TP 18n
+closefrom
+Before it executes a command,
+\fBsudo\fR
+will close all open file descriptors other than standard input,
+standard output and standard error (ie: file descriptors 0-2).
+The
+\fIclosefrom\fR
+option can be used to specify a different file descriptor at which
+to start closing.
+The default is
+\fR3\fR.
+.TP 18n
+maxseq
+The maximum sequence number that will be substituted for the
+\(Lq\fR%{seq}\fR\(Rq
+escape in the I/O log file (see the
+\fIiolog_dir\fR
+description above for more information).
+While the value substituted for
+\(Lq\fR%{seq}\fR\(Rq
+is in base 36,
+\fImaxseq\fR
+itself should be expressed in decimal.
+Values larger than 2176782336 (which corresponds to the
+base 36 sequence number
+\(LqZZZZZZ\(Rq)
+will be silently truncated to 2176782336.
+The default value is 2176782336.
+.sp
+Once the local sequence number reaches the value of
+\fImaxseq\fR,
+it will
+\(Lqroll over\(Rq
+to zero, after which
+\fBsudoers\fR
+will truncate and re-use any existing I/O log path names.
+.sp
+This setting is only supported by version 1.8.7 or higher.
+.TP 18n
+passwd_tries
 The number of tries a user gets to enter his/her password before
-\&\fBsudo\fR logs the failure and exits.  The default is \f(CW\*(C`3\*(C'\fR.
-.PP
-\&\fBIntegers that can be used in a boolean context\fR:
-.IP "loglinelen" 16
-.IX Item "loglinelen"
-Number of characters per line for the file log.  This value is used
-to decide when to wrap lines for nicer log files.  This has no
-effect on the syslog log file, only the file log.  The default is
-\&\f(CW\*(C`80\*(C'\fR (use 0 or negate the option to disable word wrap).
-.IP "passwd_timeout" 16
-.IX Item "passwd_timeout"
-Number of minutes before the \fBsudo\fR password prompt times out, or
-\&\f(CW0\fR for no timeout.  The timeout may include a fractional component
-if minute granularity is insufficient, for example \f(CW2.5\fR.  The
-default is \f(CW\*(C`5\*(C'\fR.
-.IP "timestamp_timeout" 16
-.IX Item "timestamp_timeout"
-Number of minutes that can elapse before \fBsudo\fR will ask for a
-passwd again.  The timeout may include a fractional component if
-minute granularity is insufficient, for example \f(CW2.5\fR.  The default
-is \f(CW\*(C`5\*(C'\fR.  Set this to \f(CW0\fR to always prompt for a password.
-If set to a value less than \f(CW0\fR the user's timestamp will never
-expire.  This can be used to allow users to create or delete their
-own timestamps via \f(CW\*(C`sudo \-v\*(C'\fR and \f(CW\*(C`sudo \-k\*(C'\fR respectively.
-.IP "umask" 16
-.IX Item "umask"
-Umask to use when running the command.  Negate this option or set
-it to 0777 to preserve the user's umask.  The actual umask that is
-used will be the union of the user's umask and the value of the
-\&\fIumask\fR option, which defaults to \f(CW\*(C`0022\*(C'\fR.  This guarantees
-that \fBsudo\fR never lowers the umask when running a command.  Note
-on systems that use \s-1PAM\s0, the default \s-1PAM\s0 configuration may specify
-its own umask which will override the value set in \fIsudoers\fR.
-.PP
-\&\fBStrings\fR:
-.IP "badpass_message" 16
-.IX Item "badpass_message"
+\fBsudo\fR
+logs the failure and exits.
+The default is
+\fR3\fR.
+.PP
+\fBIntegers that can be used in a boolean context\fR:
+.TP 18n
+loglinelen
+Number of characters per line for the file log.
+This value is used to decide when to wrap lines for nicer log files.
+This has no effect on the syslog log file, only the file log.
+The default is
+\fR80\fR
+(use 0 or negate the option to disable word wrap).
+.TP 18n
+passwd_timeout
+Number of minutes before the
+\fBsudo\fR
+password prompt times out, or
+\fR0\fR
+for no timeout.
+The timeout may include a fractional component
+if minute granularity is insufficient, for example
+\fR2.5\fR.
+The
+default is
+\fR5\fR.
+.TP 18n
+timestamp_timeout
+.br
+Number of minutes that can elapse before
+\fBsudo\fR
+will ask for a passwd again.
+The timeout may include a fractional component if
+minute granularity is insufficient, for example
+\fR2.5\fR.
+The default is
+\fR5\fR.
+Set this to
+\fR0\fR
+to always prompt for a password.
+If set to a value less than
+\fR0\fR
+the user's time stamp will not expire until the system is rebooted.
+This can be used to allow users to create or delete their own time stamps via
+\(Lq\fRsudo -v\fR\(Rq
+and
+\(Lq\fRsudo -k\fR\(Rq
+respectively.
+.TP 18n
+umask
+Umask to use when running the command.
+Negate this option or set it to 0777 to preserve the user's umask.
+The actual umask that is used will be the union of the user's umask
+and the value of the
+\fIumask\fR
+option, which defaults to
+\fR0022\fR.
+This guarantees
+that
+\fBsudo\fR
+never lowers the umask when running a command.
+Note: on systems that use PAM, the default PAM configuration may specify
+its own umask which will override the value set in
+\fIsudoers\fR.
+.PP
+\fBStrings\fR:
+.TP 18n
+badpass_message
 Message that is displayed if a user enters an incorrect password.
-The default is \f(CW\*(C`Sorry, try again.\*(C'\fR unless insults are enabled.
-.IP "editor" 16
-.IX Item "editor"
-A colon (':') separated list of editors allowed to be used with
-\&\fBvisudo\fR.  \fBvisudo\fR will choose the editor that matches the user's
-\&\s-1EDITOR\s0 environment variable if possible, or the first editor in the
-list that exists and is executable.  The default is \f(CW"/usr/bin/vi"\fR.
-.IP "iolog_dir" 16
-.IX Item "iolog_dir"
+The default is
+\fRSorry, try again.\fR
+unless insults are enabled.
+.TP 18n
+editor
+A colon
+(\(oq:\&\(cq)
+separated list of editors allowed to be used with
+\fBvisudo\fR.
+\fBvisudo\fR
+will choose the editor that matches the user's
+\fREDITOR\fR
+or
+\fRVISUAL\fR
+environment variable if possible, or the first editor in the
+list that exists and is executable.
+Note that the
+\fREDITOR\fR
+and
+\fRVISUAL\fR
+environment variables are not preserved by default when the
+\fIenv_reset\fR
+option is enabled.
+The default is
+\fIvi\fR.
+.TP 18n
+iolog_dir
 The top-level directory to use when constructing the path name for
-the input/output log directory.  Only used if the \fIlog_input\fR or
-\&\fIlog_output\fR options are enabled or when the \f(CW\*(C`LOG_INPUT\*(C'\fR or
-\&\f(CW\*(C`LOG_OUTPUT\*(C'\fR tags are present for a command.  The session sequence
-number, if any, is stored in the directory.
-The default is \f(CW"/var/log/sudo-io"\fR.
-.Sp
-The following percent (`\f(CW\*(C`%\*(C'\fR') escape sequences are supported:
-.RS 16
-.ie n .IP "\*(C`%{seq}\*(C'" 4
-.el .IP "\f(CW\*(C`%{seq}\*(C'\fR" 4
-.IX Item "%{seq}"
-expanded to a monotonically increasing base\-36 sequence number, such as 0100A5,
-where every two digits are used to form a new directory, e.g. \fI01/00/A5\fR
-.ie n .IP "\*(C`%{user}\*(C'" 4
-.el .IP "\f(CW\*(C`%{user}\*(C'\fR" 4
-.IX Item "%{user}"
+the input/output log directory.
+Only used if the
+\fIlog_input\fR
+or
+\fIlog_output\fR
+options are enabled or when the
+\fRLOG_INPUT\fR
+or
+\fRLOG_OUTPUT\fR
+tags are present for a command.
+The session sequence number, if any, is stored in the directory.
+The default is
+\fI/var/log/sudo-io\fR.
+.sp
+The following percent
+(\(oq%\(cq)
+escape sequences are supported:
+.PP
+.RS 18n
+.PD 0
+.TP 6n
+\fR%{seq}\fR
+expanded to a monotonically increasing base-36 sequence number, such as 0100A5,
+where every two digits are used to form a new directory, e.g.\&
+\fI01/00/A5\fR
+.PD
+.TP 6n
+\fR%{user}\fR
 expanded to the invoking user's login name
-.ie n .IP "\*(C`%{group}\*(C'" 4
-.el .IP "\f(CW\*(C`%{group}\*(C'\fR" 4
-.IX Item "%{group}"
-expanded to the name of the invoking user's real group \s-1ID\s0
-.ie n .IP "\*(C`%{runas_user}\*(C'" 4
-.el .IP "\f(CW\*(C`%{runas_user}\*(C'\fR" 4
-.IX Item "%{runas_user}"
+.TP 6n
+\fR%{group}\fR
+expanded to the name of the invoking user's real group ID
+.TP 6n
+\fR%{runas_user}\fR
 expanded to the login name of the user the command will
-be run as (e.g. root)
-.ie n .IP "\*(C`%{runas_group}\*(C'" 4
-.el .IP "\f(CW\*(C`%{runas_group}\*(C'\fR" 4
-.IX Item "%{runas_group}"
+be run as (e.g.\& root)
+.TP 6n
+\fR%{runas_group}\fR
 expanded to the group name of the user the command will
-be run as (e.g. wheel)
-.ie n .IP "\*(C`%{hostname}\*(C'" 4
-.el .IP "\f(CW\*(C`%{hostname}\*(C'\fR" 4
-.IX Item "%{hostname}"
+be run as (e.g.\& wheel)
+.TP 6n
+\fR%{hostname}\fR
 expanded to the local host name without the domain name
-.ie n .IP "\*(C`%{command}\*(C'" 4
-.el .IP "\f(CW\*(C`%{command}\*(C'\fR" 4
-.IX Item "%{command}"
+.TP 6n
+\fR%{command}\fR
 expanded to the base name of the command being run
-.RE
-.RS 16
-.Sp
-In addition, any escape sequences supported by the system's \fIstrftime()\fR
+.PP
+In addition, any escape sequences supported by the system's
+strftime(3)
 function will be expanded.
-.Sp
-To include a literal `\f(CW\*(C`%\*(C'\fR' character, the string `\f(CW\*(C`%%\*(C'\fR' should
-be used.
-.RE
-.IP "iolog_file" 16
-.IX Item "iolog_file"
-The path name, relative to \fIiolog_dir\fR, in which to store input/output
-logs when the \fIlog_input\fR or \fIlog_output\fR options are enabled or
-when the \f(CW\*(C`LOG_INPUT\*(C'\fR or \f(CW\*(C`LOG_OUTPUT\*(C'\fR tags are present for a command.
-Note that \fIiolog_file\fR may contain directory components.
-The default is \f(CW"%{seq}"\fR.
-.Sp
-See the \fIiolog_dir\fR option above for a list of supported percent
-(`\f(CW\*(C`%\*(C'\fR') escape sequences.
-.Sp
+.sp
+To include a literal
+\(oq%\(cq
+character, the string
+\(oq%%\(cq
+should be used.
+.RE
+.TP 18n
+iolog_file
+The path name, relative to
+\fIiolog_dir\fR,
+in which to store input/output logs when the
+\fIlog_input\fR
+or
+\fIlog_output\fR
+options are enabled or when the
+\fRLOG_INPUT\fR
+or
+\fRLOG_OUTPUT\fR
+tags are present for a command.
+Note that
+\fIiolog_file\fR
+may contain directory components.
+The default is
+\(Lq\fR%{seq}\fR\(Rq.
+.sp
+See the
+\fIiolog_dir\fR
+option above for a list of supported percent
+(\(oq%\(cq)
+escape sequences.
+.sp
 In addition to the escape sequences, path names that end in six or
-more \f(CW\*(C`X\*(C'\fRs will have the \f(CW\*(C`X\*(C'\fRs replaced with a unique combination
-of digits and letters, similar to the \fImktemp()\fR function.
-.IP "mailsub" 16
-.IX Item "mailsub"
-Subject of the mail sent to the \fImailto\fR user. The escape \f(CW%h\fR
+more
+\fRX\fRs
+will have the
+\fRX\fRs
+replaced with a unique combination of digits and letters, similar to the
+mktemp(3)
+function.
+.sp
+If the path created by concatenating
+\fIiolog_dir\fR
+and
+\fIiolog_file\fR
+already exists, the existing I/O log file will be truncated and
+overwritten unless
+\fIiolog_file\fR
+ends in six or
+more
+\fRX\fRs.
+.TP 18n
+lecture_status_dir
+The directory in which
+\fBsudo\fR
+stores per-user lecture status files.
+Once a user has received the lecture, a zero-length file is
+created in this directory so that
+\fBsudo\fR
+will not lecture the user again.
+This directory should
+\fInot\fR
+be cleared when the system reboots.
+The default is
+\fI/var/lib/sudo/lectured\fR.
+.TP 18n
+mailsub
+Subject of the mail sent to the
+\fImailto\fR
+user.
+The escape
+\fR%h\fR
 will expand to the host name of the machine.
-Default is \f(CW\*(C`*** SECURITY information for %h ***\*(C'\fR.
-.IP "noexec_file" 16
-.IX Item "noexec_file"
-This option is no longer supported.  The path to the noexec file
-should now be set in the \fI/etc/sudo.conf\fR file.
-.IP "passprompt" 16
-.IX Item "passprompt"
-The default prompt to use when asking for a password; can be overridden
-via the \fB\-p\fR option or the \f(CW\*(C`SUDO_PROMPT\*(C'\fR environment variable.
-The following percent (`\f(CW\*(C`%\*(C'\fR') escape sequences are supported:
-.RS 16
-.ie n .IP "%H" 4
-.el .IP "\f(CW%H\fR" 4
-.IX Item "%H"
+Default is
+\(Lq\fR*** SECURITY information for %h ***\fR\(Rq.
+.TP 18n
+noexec_file
+As of
+\fBsudo\fR
+version 1.8.1 this option is no longer supported.
+The path to the noexec file should now be set in the
+sudo.conf(5)
+file.
+.TP 18n
+pam_login_service
+.br
+On systems that use PAM for authentication, this is the service
+name used when the
+\fB\-i\fR
+option is specified.
+The default value is
+\(Lq\fRsudo\fR\(Rq.
+See the description of
+\fIpam_service\fR
+for more information.
+.sp
+This setting is only supported by version 1.8.8 or higher.
+.TP 18n
+pam_service
+On systems that use PAM for authentication, the service name
+specifies the PAM policy to apply.
+This usually corresponds to an entry in the
+\fIpam.conf\fR
+file or a file in the
+\fI/etc/pam.d\fR
+directory.
+The default value is
+\(Lq\fRsudo\fR\(Rq.
+.sp
+This setting is only supported by version 1.8.8 or higher.
+.TP 18n
+passprompt
+The default prompt to use when asking for a password; can be overridden via the
+\fB\-p\fR
+option or the
+\fRSUDO_PROMPT\fR
+environment variable.
+The following percent
+(\(oq%\(cq)
+escape sequences are supported:
+.PP
+.RS 18n
+.PD 0
+.TP 6n
+\fR%H\fR
 expanded to the local host name including the domain name
-(only if the machine's host name is fully qualified or the \fIfqdn\fR
+(only if the machine's host name is fully qualified or the
+\fIfqdn\fR
 option is set)
-.ie n .IP "%h" 4
-.el .IP "\f(CW%h\fR" 4
-.IX Item "%h"
+.PD
+.TP 6n
+\fR%h\fR
 expanded to the local host name without the domain name
-.ie n .IP "%p" 4
-.el .IP "\f(CW%p\fR" 4
-.IX Item "%p"
-expanded to the user whose password is being asked for (respects the 
-\&\fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags in \fIsudoers\fR)
-.ie n .IP "%U" 4
-.el .IP "\f(CW%U\fR" 4
-.IX Item "%U"
+.TP 6n
+\fR%p\fR
+expanded to the user whose password is being asked for (respects the
+\fIrootpw\fR,
+\fItargetpw\fR
+and
+\fIrunaspw\fR
+flags in
+\fIsudoers\fR)
+.TP 6n
+\fR\&%U\fR
 expanded to the login name of the user the command will
 be run as (defaults to root)
-.ie n .IP "%u" 4
-.el .IP "\f(CW%u\fR" 4
-.IX Item "%u"
+.TP 6n
+\fR%u\fR
 expanded to the invoking user's login name
-.ie n .IP "\*(C`%%\*(C'" 4
-.el .IP "\f(CW\*(C`%%\*(C'\fR" 4
-.IX Item "%%"
-two consecutive \f(CW\*(C`%\*(C'\fR characters are collapsed into a single \f(CW\*(C`%\*(C'\fR character
-.RE
-.RS 16
-.Sp
-The default value is \f(CW\*(C`Password:\*(C'\fR.
-.RE
-.if \n(SL \{\
-.IP "role" 16
-.IX Item "role"
+.TP 6n
+\fR%%\fR
+two consecutive
+\fR%\fR
+characters are collapsed into a single
+\fR%\fR
+character
+.PP
+The default value is
+\(Lq\fRPassword: \fR\(Rq.
+.RE
+.TP 18n
+role
 The default SELinux role to use when constructing a new security
-context to run the command.  The default role may be overridden on
-a per-command basis in \fIsudoers\fR or via command line options.
-This option is only available whe \fBsudo\fR is built with SELinux support.
-\}
-.IP "runas_default" 16
-.IX Item "runas_default"
-The default user to run commands as if the \fB\-u\fR option is not specified
-on the command line.  This defaults to \f(CW\*(C`root\*(C'\fR.
-.IP "syslog_badpri" 16
-.IX Item "syslog_badpri"
+context to run the command.
+The default role may be overridden on a per-command basis in the
+\fIsudoers\fR
+file or via command line options.
+This option is only available when
+\fBsudo\fR
+is built with SELinux support.
+.TP 18n
+runas_default
+The default user to run commands as if the
+\fB\-u\fR
+option is not specified on the command line.
+This defaults to
+\fRroot\fR.
+.TP 18n
+syslog_badpri
 Syslog priority to use when user authenticates unsuccessfully.
-Defaults to \f(CW\*(C`alert\*(C'\fR.
-.Sp
-The following syslog priorities are supported: \fBalert\fR, \fBcrit\fR,
-\&\fBdebug\fR, \fBemerg\fR, \fBerr\fR, \fBinfo\fR, \fBnotice\fR, and \fBwarning\fR.
-.IP "syslog_goodpri" 16
-.IX Item "syslog_goodpri"
+Defaults to
+\fRalert\fR.
+.sp
+The following syslog priorities are supported:
+\fBalert\fR,
+\fBcrit\fR,
+\fBdebug\fR,
+\fBemerg\fR,
+\fBerr\fR,
+\fBinfo\fR,
+\fBnotice\fR,
+and
+\fBwarning\fR.
+.TP 18n
+syslog_goodpri
 Syslog priority to use when user authenticates successfully.
-Defaults to \f(CW\*(C`notice\*(C'\fR.
-.Sp
-See syslog_badpri for the list of supported syslog priorities.
-.IP "sudoers_locale" 16
-.IX Item "sudoers_locale"
+Defaults to
+\fRnotice\fR.
+.sp
+See
+\fIsyslog_badpri\fR
+for the list of supported syslog priorities.
+.TP 18n
+sudoers_locale
 Locale to use when parsing the sudoers file, logging commands, and
-sending email.  Note that changing the locale may affect how sudoers
-is interpreted.  Defaults to \f(CW"C"\fR.
-.IP "timestampdir" 16
-.IX Item "timestampdir"
-The directory in which \fBsudo\fR stores its timestamp files.
-The default is \fI/var/lib/sudo\fR.
-.IP "timestampowner" 16
-.IX Item "timestampowner"
-The owner of the timestamp directory and the timestamps stored therein.
-The default is \f(CW\*(C`root\*(C'\fR.
-.if \n(SL \{\
-.IP "type" 16
-.IX Item "type"
+sending email.
+Note that changing the locale may affect how sudoers is interpreted.
+Defaults to
+\(Lq\fRC\fR\(Rq.
+.TP 18n
+timestampdir
+The directory in which
+\fBsudo\fR
+stores its time stamp files.
+This directory should be cleared when the system reboots.
+The default is
+\fI/var/run/sudo/ts\fR.
+.TP 18n
+timestampowner
+The owner of the lecture status directory, time stamp directory and all
+files stored therein.
+The default is
+\fRroot\fR.
+.TP 18n
+type
 The default SELinux type to use when constructing a new security
-context to run the command.  The default type may be overridden on
-a per-command basis in \fIsudoers\fR or via command line options.
-This option is only available whe \fBsudo\fR is built with SELinux support.
-\}
-.PP
-\&\fBStrings that can be used in a boolean context\fR:
-.IP "env_file" 12
-.IX Item "env_file"
-The \fIenv_file\fR option specifies the fully qualified path to a
-file containing variables to be set in the environment of the program
-being run.  Entries in this file should either be of the form
-\&\f(CW\*(C`VARIABLE=value\*(C'\fR or \f(CW\*(C`export VARIABLE=value\*(C'\fR.  The value may
-optionally be surrounded by single or double quotes.  Variables in
-this file are subject to other \fBsudo\fR environment settings such
-as \fIenv_keep\fR and \fIenv_check\fR.
-.IP "exempt_group" 12
-.IX Item "exempt_group"
-Users in this group are exempt from password and \s-1PATH\s0 requirements.
-The group name specified should not include a \f(CW\*(C`%\*(C'\fR prefix.
+context to run the command.
+The default type may be overridden on a per-command basis in the
+\fIsudoers\fR
+file or via command line options.
+This option is only available when
+\fBsudo\fR
+is built with SELinux support.
+.PP
+\fBStrings that can be used in a boolean context\fR:
+.TP 14n
+env_file
+The
+\fIenv_file\fR
+option specifies the fully qualified path to a file containing variables
+to be set in the environment of the program being run.
+Entries in this file should either be of the form
+\(Lq\fRVARIABLE=value\fR\(Rq
+or
+\(Lq\fRexport VARIABLE=value\fR\(Rq.
+The value may optionally be surrounded by single or double quotes.
+Variables in this file are subject to other
+\fBsudo\fR
+environment settings such as
+\fIenv_keep\fR
+and
+\fIenv_check\fR.
+.TP 14n
+exempt_group
+Users in this group are exempt from password and PATH requirements.
+The group name specified should not include a
+\fR%\fR
+prefix.
 This is not set by default.
-.IP "group_plugin" 12
-.IX Item "group_plugin"
-A string containing a \fIsudoers\fR group plugin with optional arguments.
-This can be used to implement support for the \f(CW\*(C`nonunix_group\*(C'\fR
-syntax described earlier.  The string should consist of the plugin
-path, either fully-qualified or relative to the \fI/usr/local/libexec\fR
-directory, followed by any configuration arguments the plugin
-requires.  These arguments (if any) will be passed to the plugin's
-initialization function.  If arguments are present, the string must
-be enclosed in double quotes (\f(CW\*(C`"\*(C'\fR).
-.Sp
-For example, given \fI/etc/sudo\-group\fR, a group file in Unix group
-format, the sample group plugin can be used:
-.Sp
-.Vb 1
-\&    Defaults group_plugin="sample_group.so /etc/sudo\-group"
-.Ve
-.Sp
-For more information see \fIsudo_plugin\fR\|(5).
-.IP "lecture" 12
-.IX Item "lecture"
+.TP 14n
+group_plugin
+A string containing a
+\fBsudoers\fR
+group plugin with optional arguments.
+The string should consist of the plugin
+path, either fully-qualified or relative to the
+\fI/usr/local/libexec/sudo\fR
+directory, followed by any configuration arguments the plugin requires.
+These arguments (if any) will be passed to the plugin's initialization function.
+If arguments are present, the string must be enclosed in double quotes
+(\&"").
+.sp
+For more information see
+GROUP PROVIDER PLUGINS.
+.TP 14n
+lecture
 This option controls when a short lecture will be printed along with
-the password prompt.  It has the following possible values:
-.RS 12
-.IP "always" 8
-.IX Item "always"
+the password prompt.
+It has the following possible values:
+.PP
+.RS 14n
+.PD 0
+.TP 8n
+always
 Always lecture the user.
-.IP "never" 8
-.IX Item "never"
+.PD
+.TP 8n
+never
 Never lecture the user.
-.IP "once" 8
-.IX Item "once"
-Only lecture the user the first time they run \fBsudo\fR.
-.RE
-.RS 12
-.Sp
-If no value is specified, a value of \fIonce\fR is implied.
-Negating the option results in a value of \fInever\fR being used.
-The default value is \fIonce\fR.
-.RE
-.IP "lecture_file" 12
-.IX Item "lecture_file"
-Path to a file containing an alternate \fBsudo\fR lecture that will
-be used in place of the standard lecture if the named file exists.
-By default, \fBsudo\fR uses a built-in lecture.
-.IP "listpw" 12
-.IX Item "listpw"
-This option controls when a password will be required when a
-user runs \fBsudo\fR with the \fB\-l\fR option.  It has the following possible values:
-.RS 12
-.IP "all" 8
-.IX Item "all"
-All the user's \fIsudoers\fR entries for the current host must have
-the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
-.IP "always" 8
-.IX Item "always"
-The user must always enter a password to use the \fB\-l\fR option.
-.IP "any" 8
-.IX Item "any"
-At least one of the user's \fIsudoers\fR entries for the current host
-must have the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
-.IP "never" 8
-.IX Item "never"
-The user need never enter a password to use the \fB\-l\fR option.
-.RE
-.RS 12
-.Sp
-If no value is specified, a value of \fIany\fR is implied.
-Negating the option results in a value of \fInever\fR being used.
-The default value is \fIany\fR.
-.RE
-.IP "logfile" 12
-.IX Item "logfile"
-Path to the \fBsudo\fR log file (not the syslog log file).  Setting a path
-turns on logging to a file; negating this option turns it off.
-By default, \fBsudo\fR logs via syslog.
-.IP "mailerflags" 12
-.IX Item "mailerflags"
-Flags to use when invoking mailer. Defaults to \fB\-t\fR.
-.IP "mailerpath" 12
-.IX Item "mailerpath"
+.TP 8n
+once
+Only lecture the user the first time they run
+\fBsudo\fR.
+.PP
+If no value is specified, a value of
+\fIonce\fR
+is implied.
+Negating the option results in a value of
+\fInever\fR
+being used.
+The default value is
+\fIonce\fR.
+.RE
+.TP 14n
+lecture_file
+Path to a file containing an alternate
+\fBsudo\fR
+lecture that will be used in place of the standard lecture if the named
+file exists.
+By default,
+\fBsudo\fR
+uses a built-in lecture.
+.TP 14n
+listpw
+This option controls when a password will be required when a user runs
+\fBsudo\fR
+with the
+\fB\-l\fR
+option.
+It has the following possible values:
+.PP
+.RS 14n
+.PD 0
+.TP 10n
+all
+All the user's
+\fIsudoers\fR
+file entries for the current host must have
+the
+\fRNOPASSWD\fR
+flag set to avoid entering a password.
+.PD
+.TP 10n
+always
+The user must always enter a password to use the
+\fB\-l\fR
+option.
+.TP 10n
+any
+At least one of the user's
+\fIsudoers\fR
+file entries for the current host
+must have the
+\fRNOPASSWD\fR
+flag set to avoid entering a password.
+.TP 10n
+never
+The user need never enter a password to use the
+\fB\-l\fR
+option.
+.PP
+If no value is specified, a value of
+\fIany\fR
+is implied.
+Negating the option results in a value of
+\fInever\fR
+being used.
+The default value is
+\fIany\fR.
+.RE
+.TP 14n
+logfile
+Path to the
+\fBsudo\fR
+log file (not the syslog log file).
+Setting a path turns on logging to a file;
+negating this option turns it off.
+By default,
+\fBsudo\fR
+logs via syslog.
+.TP 14n
+mailerflags
+Flags to use when invoking mailer. Defaults to
+\fB\-t\fR.
+.TP 14n
+mailerpath
 Path to mail program used to send warning mail.
 Defaults to the path to sendmail found at configure time.
-.IP "mailfrom" 12
-.IX Item "mailfrom"
-Address to use for the \*(L"from\*(R" address when sending warning and error
-mail.  The address should be enclosed in double quotes (\f(CW\*(C`"\*(C'\fR) to
-protect against \fBsudo\fR interpreting the \f(CW\*(C`@\*(C'\fR sign.  Defaults to
-the name of the user running \fBsudo\fR.
-.IP "mailto" 12
-.IX Item "mailto"
-Address to send warning and error mail to.  The address should
-be enclosed in double quotes (\f(CW\*(C`"\*(C'\fR) to protect against \fBsudo\fR
-interpreting the \f(CW\*(C`@\*(C'\fR sign.  Defaults to \f(CW\*(C`root\*(C'\fR.
-.IP "secure_path" 12
-.IX Item "secure_path"
-Path used for every command run from \fBsudo\fR.  If you don't trust the
-people running \fBsudo\fR to have a sane \f(CW\*(C`PATH\*(C'\fR environment variable you may
-want to use this.  Another use is if you want to have the \*(L"root path\*(R"
-be separate from the \*(L"user path.\*(R"  Users in the group specified by the
-\&\fIexempt_group\fR option are not affected by \fIsecure_path\fR.
+.TP 14n
+mailfrom
+Address to use for the
+\(Lqfrom\(Rq
+address when sending warning and error mail.
+The address should be enclosed in double quotes
+(\&"")
+to protect against
+\fBsudo\fR
+interpreting the
+\fR@\fR
+sign.
+Defaults to the name of the user running
+\fBsudo\fR.
+.TP 14n
+mailto
+Address to send warning and error mail to.
+The address should be enclosed in double quotes
+(\&"")
+to protect against
+\fBsudo\fR
+interpreting the
+\fR@\fR
+sign.
+Defaults to
+\fRroot\fR.
+.TP 14n
+secure_path
+Path used for every command run from
+\fBsudo\fR.
+If you don't trust the
+people running
+\fBsudo\fR
+to have a sane
+\fRPATH\fR
+environment variable you may want to use this.
+Another use is if you want to have the
+\(Lqroot path\(Rq
+be separate from the
+\(Lquser path\(Rq.
+Users in the group specified by the
+\fIexempt_group\fR
+option are not affected by
+\fIsecure_path\fR.
 This option is not set by default.
-.IP "syslog" 12
-.IX Item "syslog"
+.TP 14n
+syslog
 Syslog facility if syslog is being used for logging (negate to
-disable syslog logging).  Defaults to \f(CW\*(C`authpriv\*(C'\fR.
-.Sp
-The following syslog facilities are supported: \fBauthpriv\fR (if your
-\&\s-1OS\s0 supports it), \fBauth\fR, \fBdaemon\fR, \fBuser\fR, \fBlocal0\fR, \fBlocal1\fR,
-\&\fBlocal2\fR, \fBlocal3\fR, \fBlocal4\fR, \fBlocal5\fR, \fBlocal6\fR, and \fBlocal7\fR.
-.IP "verifypw" 12
-.IX Item "verifypw"
+disable syslog logging).
+Defaults to
+\fRauthpriv\fR.
+.sp
+The following syslog facilities are supported:
+\fBauthpriv\fR
+(if your
+OS supports it),
+\fBauth\fR,
+\fBdaemon\fR,
+\fBuser\fR,
+\fBlocal0\fR,
+\fBlocal1\fR,
+\fBlocal2\fR,
+\fBlocal3\fR,
+\fBlocal4\fR,
+\fBlocal5\fR,
+\fBlocal6\fR,
+and
+\fBlocal7\fR.
+.TP 14n
+verifypw
 This option controls when a password will be required when a user runs
-\&\fBsudo\fR with the \fB\-v\fR option.  It has the following possible values:
-.RS 12
-.IP "all" 8
-.IX Item "all"
-All the user's \fIsudoers\fR entries for the current host must have
-the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
-.IP "always" 8
-.IX Item "always"
-The user must always enter a password to use the \fB\-v\fR option.
-.IP "any" 8
-.IX Item "any"
-At least one of the user's \fIsudoers\fR entries for the current host
-must have the \f(CW\*(C`NOPASSWD\*(C'\fR flag set to avoid entering a password.
-.IP "never" 8
-.IX Item "never"
-The user need never enter a password to use the \fB\-v\fR option.
-.RE
-.RS 12
-.Sp
-If no value is specified, a value of \fIall\fR is implied.
-Negating the option results in a value of \fInever\fR being used.
-The default value is \fIall\fR.
-.RE
-.PP
-\&\fBLists that can be used in a boolean context\fR:
-.IP "env_check" 16
-.IX Item "env_check"
-Environment variables to be removed from the user's environment if
-the variable's value contains \f(CW\*(C`%\*(C'\fR or \f(CW\*(C`/\*(C'\fR characters.  This can
-be used to guard against printf-style format vulnerabilities in
-poorly-written programs.  The argument may be a double-quoted,
-space-separated list or a single value without double-quotes.  The
-list can be replaced, added to, deleted from, or disabled by using
-the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and \f(CW\*(C`!\*(C'\fR operators respectively.  Regardless
-of whether the \f(CW\*(C`env_reset\*(C'\fR option is enabled or disabled, variables
-specified by \f(CW\*(C`env_check\*(C'\fR will be preserved in the environment if
-they pass the aforementioned check.  The default list of environment
-variables to check is displayed when \fBsudo\fR is run by root with
-the \fI\-V\fR option.
-.IP "env_delete" 16
-.IX Item "env_delete"
+\fBsudo\fR
+with the
+\fB\-v\fR
+option.
+It has the following possible values:
+.PP
+.RS 14n
+.PD 0
+.TP 8n
+all
+All the user's
+\fIsudoers\fR
+file entries for the current host must have the
+\fRNOPASSWD\fR
+flag set to avoid entering a password.
+.PD
+.TP 8n
+always
+The user must always enter a password to use the
+\fB\-v\fR
+option.
+.TP 8n
+any
+At least one of the user's
+\fIsudoers\fR
+file entries for the current host must have the
+\fRNOPASSWD\fR
+flag set to avoid entering a password.
+.TP 8n
+never
+The user need never enter a password to use the
+\fB\-v\fR
+option.
+.PP
+If no value is specified, a value of
+\fIall\fR
+is implied.
+Negating the option results in a value of
+\fInever\fR
+being used.
+The default value is
+\fIall\fR.
+.RE
+.PP
+\fBLists that can be used in a boolean context\fR:
+.TP 18n
+env_check
 Environment variables to be removed from the user's environment
-when the \fIenv_reset\fR option is not in effect.  The argument may
-be a double-quoted, space-separated list or a single value without
-double-quotes.  The list can be replaced, added to, deleted from,
-or disabled by using the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and \f(CW\*(C`!\*(C'\fR operators
-respectively.  The default list of environment variables to remove
-is displayed when \fBsudo\fR is run by root with the \fI\-V\fR option.
+unless they are considered
+\(Lqsafe\(Rq.
+For all variables except
+\fRTZ\fR,
+\(Lqsafe\(Rq
+means that the variable's value does not contain any
+\(oq%\(cq
+or
+\(oq/\(cq
+characters.
+This can be used to guard against printf-style format vulnerabilities
+in poorly-written programs.
+The
+\fRTZ\fR
+variable is considered unsafe if any of the following are true:
+.PP
+.RS 18n
+.PD 0
+.TP 4n
+\fB\(bu\fR
+It consists of a fully-qualified path name,
+optionally prefixed with a colon
+(\(oq:\&\(cq),
+that does not match the location of the
+\fIzoneinfo\fR
+directory.
+.PD
+.TP 4n
+\fB\(bu\fR
+It contains a
+\fI..\fR
+path element.
+.TP 4n
+\fB\(bu\fR
+It contains white space or non-printable characters.
+.TP 4n
+\fB\(bu\fR
+It is longer than the value of
+\fRPATH_MAX\fR.
+.PP
+The argument may be a double-quoted, space-separated list or a
+single value without double-quotes.
+The list can be replaced, added to, deleted from, or disabled by using
+the
+\fR=\fR,
+\fR+=\fR,
+\fR-=\fR,
+and
+\fR\&!\fR
+operators respectively.
+Regardless of whether the
+\fRenv_reset\fR
+option is enabled or disabled, variables specified by
+\fRenv_check\fR
+will be preserved in the environment if they pass the aforementioned check.
+The global list of environment variables to check is displayed when
+\fBsudo\fR
+is run by root with
+the
+\fB\-V\fR
+option.
+.RE
+.TP 18n
+env_delete
+Environment variables to be removed from the user's environment when the
+\fIenv_reset\fR
+option is not in effect.
+The argument may be a double-quoted, space-separated list or a
+single value without double-quotes.
+The list can be replaced, added to, deleted from, or disabled by using the
+\fR=\fR,
+\fR+=\fR,
+\fR-=\fR,
+and
+\fR\&!\fR
+operators respectively.
+The global list of environment variables to remove is displayed when
+\fBsudo\fR
+is run by root with the
+\fB\-V\fR
+option.
 Note that many operating systems will remove potentially dangerous
 variables from the environment of any setuid process (such as
-\&\fBsudo\fR).
-.IP "env_keep" 16
-.IX Item "env_keep"
-Environment variables to be preserved in the user's environment
-when the \fIenv_reset\fR option is in effect.  This allows fine-grained
-control over the environment \fBsudo\fR\-spawned processes will receive.
+\fBsudo\fR).
+.TP 18n
+env_keep
+Environment variables to be preserved in the user's environment when the
+\fIenv_reset\fR
+option is in effect.
+This allows fine-grained control over the environment
+\fBsudo\fR-spawned
+processes will receive.
 The argument may be a double-quoted, space-separated list or a
-single value without double-quotes.  The list can be replaced, added
-to, deleted from, or disabled by using the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and
-\&\f(CW\*(C`!\*(C'\fR operators respectively.  The default list of variables to keep
-is displayed when \fBsudo\fR is run by root with the \fI\-V\fR option.
+single value without double-quotes.
+The list can be replaced, added to, deleted from, or disabled by using the
+\fR=\fR,
+\fR+=\fR,
+\fR-=\fR,
+and
+\fR\&!\fR
+operators respectively.
+The global list of variables to keep
+is displayed when
+\fBsudo\fR
+is run by root with the
+\fB\-V\fR
+option.
+.SH "GROUP PROVIDER PLUGINS"
+The
+\fBsudoers\fR
+plugin supports its own plugin interface to allow non-Unix
+group lookups which can query a group source other
+than the standard Unix group database.
+This can be used to implement support for the
+\fRnonunix_group\fR
+syntax described earlier.
+.PP
+Group provider plugins are specified via the
+\fIgroup_plugin\fR
+Defaults setting.
+The argument to
+\fIgroup_plugin\fR
+should consist of the plugin path, either fully-qualified or relative to the
+\fI/usr/local/libexec/sudo\fR
+directory, followed by any configuration options the plugin requires.
+These options (if specified) will be passed to the plugin's initialization
+function.
+If options are present, the string must be enclosed in double quotes
+(\&"").
+.PP
+The following group provider plugins are installed by default:
+.TP 10n
+group_file
+The
+\fIgroup_file\fR
+plugin supports an alternate group file that uses the same syntax as the
+\fI/etc/group\fR
+file.
+The path to the group file should be specified as an option
+to the plugin.
+For example, if the group file to be used is
+\fI/etc/sudo-group\fR:
+.nf
+.sp
+.RS 10n
+Defaults group_plugin="group_file.so /etc/sudo-group"
+.RE
+.fi
+.TP 10n
+system_group
+The
+\fIsystem_group\fR
+plugin supports group lookups via the standard C library functions
+\fBgetgrnam\fR()
+and
+\fBgetgrid\fR().
+This plugin can be used in instances where the user belongs to
+groups not present in the user's supplemental group vector.
+This plugin takes no options:
+.nf
+.sp
+.RS 10n
+Defaults group_plugin=system_group.so
+.RE
+.fi
+.PP
+The group provider plugin API is described in detail in
+sudo_plugin(8).
+.SH "LOG FORMAT"
+\fBsudoers\fR
+can log events using either
+syslog(3)
+or a simple log file.
+The log format is almost identical in both cases.
+.SS "Accepted command log entries"
+Commands that sudo runs are logged using the following format (split
+into multiple lines for readability):
+.nf
+.sp
+.RS 4n
+date hostname progname: username : TTY=ttyname ; PWD=cwd ; \e
+    USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \e
+    ENV=env_vars COMMAND=command
+.RE
+.fi
+.PP
+Where the fields are as follows:
+.TP 14n
+date
+The date the command was run.
+Typically, this is in the format
+\(LqMMM, DD, HH:MM:SS\(Rq.
+If logging via
+syslog(3),
+the actual date format is controlled by the syslog daemon.
+If logging to a file and the
+\fIlog_year\fR
+option is enabled,
+the date will also include the year.
+.TP 14n
+hostname
+The name of the host
+\fBsudo\fR
+was run on.
+This field is only present when logging via
+syslog(3).
+.TP 14n
+progname
+The name of the program, usually
+\fIsudo\fR
+or
+\fIsudoedit\fR.
+This field is only present when logging via
+syslog(3).
+.TP 14n
+username
+The login name of the user who ran
+\fBsudo\fR.
+.TP 14n
+ttyname
+The short name of the terminal (e.g.\&
+\(Lqconsole\(Rq,
+\(Lqtty01\(Rq,
+or
+\(Lqpts/0\(Rq)
+\fBsudo\fR
+was run on, or
+\(Lqunknown\(Rq
+if there was no terminal present.
+.TP 14n
+cwd
+The current working directory that
+\fBsudo\fR
+was run in.
+.TP 14n
+runasuser
+The user the command was run as.
+.TP 14n
+runasgroup
+The group the command was run as if one was specified on the command line.
+.TP 14n
+logid
+An I/O log identifier that can be used to replay the command's output.
+This is only present when the
+\fIlog_input\fR
+or
+\fIlog_output\fR
+option is enabled.
+.TP 14n
+env_vars
+A list of environment variables specified on the command line,
+if specified.
+.TP 14n
+command
+The actual command that was executed.
+.PP
+Messages are logged using the locale specified by
+\fIsudoers_locale\fR,
+which defaults to the
+\(Lq\fRC\fR\(Rq
+locale.
+.SS "Denied command log entries"
+If the user is not allowed to run the command, the reason for the denial
+will follow the user name.
+Possible reasons include:
+.TP 3n
+user NOT in sudoers
+The user is not listed in the
+\fIsudoers\fR
+file.
+.TP 3n
+user NOT authorized on host
+The user is listed in the
+\fIsudoers\fR
+file but is not allowed to run commands on the host.
+.TP 3n
+command not allowed
+The user is listed in the
+\fIsudoers\fR
+file for the host but they are not allowed to run the specified command.
+.TP 3n
+3 incorrect password attempts
+The user failed to enter their password after 3 tries.
+The actual number of tries will vary based on the number of
+failed attempts and the value of the
+\fIpasswd_tries\fR
+option.
+.TP 3n
+a password is required
+\fBsudo\fR's
+\fB\-n\fR
+option was specified but a password was required.
+.TP 3n
+sorry, you are not allowed to set the following environment variables
+The user specified environment variables on the command line that
+were not allowed by
+\fIsudoers\fR.
+.SS "Error log entries"
+If an error occurs,
+\fBsudoers\fR
+will log a message and, in most cases, send a message to the
+administrator via email.
+Possible errors include:
+.TP 3n
+parse error in /etc/sudoers near line N
+\fBsudoers\fR
+encountered an error when parsing the specified file.
+In some cases, the actual error may be one line above or below the
+line number listed, depending on the type of error.
+.TP 3n
+problem with defaults entries
+The
+\fIsudoers\fR
+file contains one or more unknown Defaults settings.
+This does not prevent
+\fBsudo\fR
+from running, but the
+\fIsudoers\fR
+file should be checked using
+\fBvisudo\fR.
+.TP 3n
+timestamp owner (username): \&No such user
+The time stamp directory owner, as specified by the
+\fItimestampowner\fR
+setting, could not be found in the password database.
+.TP 3n
+unable to open/read /etc/sudoers
+The
+\fIsudoers\fR
+file could not be opened for reading.
+This can happen when the
+\fIsudoers\fR
+file is located on a remote file system that maps user ID 0 to
+a different value.
+Normally,
+\fBsudoers\fR
+tries to open the
+\fIsudoers\fR
+file using group permissions to avoid this problem.
+Consider either changing the ownership of
+\fI/etc/sudoers\fR
+or adding an argument like
+\(Lqsudoers_uid=N\(Rq
+(where
+\(oqN\(cq
+is the user ID that owns the
+\fIsudoers\fR
+file) to the end of the
+\fBsudoers\fR
+\fRPlugin\fR
+line in the
+sudo.conf(5)
+file.
+.TP 3n
+unable to stat /etc/sudoers
+The
+\fI/etc/sudoers\fR
+file is missing.
+.TP 3n
+/etc/sudoers is not a regular file
+The
+\fI/etc/sudoers\fR
+file exists but is not a regular file or symbolic link.
+.TP 3n
+/etc/sudoers is owned by uid N, should be 0
+The
+\fIsudoers\fR
+file has the wrong owner.
+If you wish to change the
+\fIsudoers\fR
+file owner, please add
+\(Lqsudoers_uid=N\(Rq
+(where
+\(oqN\(cq
+is the user ID that owns the
+\fIsudoers\fR
+file) to the
+\fBsudoers\fR
+\fRPlugin\fR
+line in the
+sudo.conf(5)
+file.
+.TP 3n
+/etc/sudoers is world writable
+The permissions on the
+\fIsudoers\fR
+file allow all users to write to it.
+The
+\fIsudoers\fR
+file must not be world-writable, the default file mode
+is 0440 (readable by owner and group, writable by none).
+The default mode may be changed via the
+\(Lqsudoers_mode\(Rq
+option to the
+\fBsudoers\fR
+\fRPlugin\fR
+line in the
+sudo.conf(5)
+file.
+.TP 3n
+/etc/sudoers is owned by gid N, should be 1
+The
+\fIsudoers\fR
+file has the wrong group ownership.
+If you wish to change the
+\fIsudoers\fR
+file group ownership, please add
+\(Lqsudoers_gid=N\(Rq
+(where
+\(oqN\(cq
+is the group ID that owns the
+\fIsudoers\fR
+file) to the
+\fBsudoers\fR
+\fRPlugin\fR
+line in the
+sudo.conf(5)
+file.
+.TP 3n
+unable to open /var/run/sudo/ts/username
+\fBsudoers\fR
+was unable to read or create the user's time stamp file.
+This can happen when
+\fItimestampowner\fR
+is set to a user other than root and the mode on
+\fI/var/run/sudo\fR
+is not searchable by group or other.
+The default mode for
+\fI/var/run/sudo\fR
+is 0711.
+.TP 3n
+unable to write to /var/run/sudo/ts/username
+\fBsudoers\fR
+was unable to write to the user's time stamp file.
+.TP 3n
+/var/run/sudo/ts is owned by uid X, should be Y
+The time stamp directory is owned by a user other than
+\fItimestampowner\fR.
+This can occur when the value of
+\fItimestampowner\fR
+has been changed.
+\fBsudoers\fR
+will ignore the time stamp directory until the owner is corrected.
+.TP 3n
+/var/run/sudo/ts is group writable
+The time stamp directory is group-writable; it should be writable only by
+\fItimestampowner\fR.
+The default mode for the time stamp directory is 0700.
+\fBsudoers\fR
+will ignore the time stamp directory until the mode is corrected.
+.SS "Notes on logging via syslog"
+By default,
+\fBsudoers\fR
+logs messages via
+syslog(3).
+The
+\fIdate\fR,
+\fIhostname\fR,
+and
+\fIprogname\fR
+fields are added by the syslog daemon, not
+\fBsudoers\fR
+itself.
+As such, they may vary in format on different systems.
+.PP
+On most systems,
+syslog(3)
+has a relatively small log buffer.
+To prevent the command line arguments from being truncated,
+\fBsudoers\fR
+will split up log messages that are larger than 960 characters
+(not including the date, hostname, and the string
+\(Lqsudo\(Rq).
+When a message is split, additional parts will include the string
+\(Lq(command continued)\(Rq
+after the user name and before the continued command line arguments.
+.SS "Notes on logging to a file"
+If the
+\fIlogfile\fR
+option is set,
+\fBsudoers\fR
+will log to a local file, such as
+\fI/var/log/sudo\fR.
+When logging to a file,
+\fBsudoers\fR
+uses a format similar to
+syslog(3),
+with a few important differences:
+.TP 5n
+1.\&
+The
+\fIprogname\fR
+and
+\fIhostname\fR
+fields are not present.
+.TP 5n
+2.\&
+If the
+\fIlog_year\fR
+option is enabled,
+the date will also include the year.
+.TP 5n
+3.\&
+Lines that are longer than
+\fIloglinelen\fR
+characters (80 by default) are word-wrapped and continued on the
+next line with a four character indent.
+This makes entries easier to read for a human being, but makes it
+more difficult to use
+grep(1)
+on the log files.
+If the
+\fIloglinelen\fR
+option is set to 0 (or negated with a
+\(oq\&!\(cq),
+word wrap will be disabled.
+.SH "I/O LOG FILES"
+When I/O logging is enabled,
+\fBsudo\fR
+will run the command in a pseudo-tty and log all user input and/or output.
+I/O is logged to the directory specified by the
+\fIiolog_dir\fR
+option
+(\fI/var/log/sudo-io\fR
+by default)
+using a unique session ID that is included in the
+\fBsudo\fR
+log line, prefixed with
+\(Lq\fRTSID=\fR\(Rq.
+The
+\fIiolog_file\fR
+option may be used to control the format of the session ID.
+.PP
+Each I/O log is stored in a separate directory that contains the
+following files:
+.TP 10n
+\fIlog\fR
+a text file containing the time the command was run, the name of the user
+who ran
+\fBsudo\fR,
+the name of the target user, the name of the target group (optional),
+the terminal that
+\fBsudo\fR
+was run from, the number of rows and columns of the terminal,
+the working directory the command was run from and the path name of
+the command itself (with arguments if present)
+.TP 10n
+\fItiming\fR
+a log of the amount of time between, and the number of bytes in, each
+I/O log entry (used for session playback)
+.TP 10n
+\fIttyin\fR
+input from the user's tty (what the user types)
+.TP 10n
+\fIstdin\fR
+input from a pipe or file
+.TP 10n
+\fIttyout\fR
+output from the pseudo-tty (what the command writes to the screen)
+.TP 10n
+\fIstdout\fR
+standard output to a pipe or redirected to a file
+.TP 10n
+\fIstderr\fR
+standard error to a pipe or redirected to a file
+.PP
+All files other than
+\fIlog\fR
+are compressed in gzip format unless the
+\fIcompress_io\fR
+option has been disabled.
+Due to buffering, the I/O log data will not be complete until the
+\fBsudo\fR
+command has completed.
+The output portion of an I/O log file can be viewed with the
+sudoreplay(8)
+utility, which can also be used to list or search the available logs.
+.PP
+Note that user input may contain sensitive information such as
+passwords (even if they are not echoed to the screen), which will
+be stored in the log file unencrypted.
+In most cases, logging the command output via
+\fIlog_output\fR
+or
+\fRLOG_OUTPUT\fR
+is all that is required.
+.PP
+Since each session's I/O logs are stored in a separate directory,
+traditional log rotation utilities cannot be used to limit the
+number of I/O logs.
+The simplest way to limit the number of I/O is by setting the
+\fImaxseq\fR
+option to the maximum number of logs you wish to store.
+Once the I/O log sequence number reaches
+\fImaxseq\fR,
+it will be reset to zero and
+\fBsudoers\fR
+will truncate and re-use any existing I/O logs.
 .SH "FILES"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudoers\fR" 24
-.el .IP "\fI/etc/sudoers\fR" 24
-.IX Item "/etc/sudoers"
+.TP 26n
+\fI/etc/sudo.conf\fR
+Sudo front end configuration
+.TP 26n
+\fI/etc/sudoers\fR
 List of who can run what
-.IP "\fI/etc/group\fR" 24
-.IX Item "/etc/group"
+.TP 26n
+\fI/etc/group\fR
 Local groups file
-.IP "\fI/etc/netgroup\fR" 24
-.IX Item "/etc/netgroup"
+.TP 26n
+\fI/etc/netgroup\fR
 List of network groups
-.ie n .IP "\fI/var/log/sudo-io\fR" 24
-.el .IP "\fI/var/log/sudo-io\fR" 24
-.IX Item "/var/log/sudo-io"
+.TP 26n
+\fI/var/log/sudo-io\fR
 I/O log files
-.ie n .IP "\fI/var/lib/sudo\fR" 24
-.el .IP "\fI/var/lib/sudo\fR" 24
-.IX Item "/var/lib/sudo"
-Directory containing time stamps for the \fIsudoers\fR security policy
-.IP "\fI/etc/environment\fR" 24
-.IX Item "/etc/environment"
-Initial environment for \fB\-i\fR mode on Linux and \s-1AIX\s0
+.TP 26n
+\fI/var/run/sudo/ts\fR
+Directory containing time stamps for the
+\fBsudoers\fR
+security policy
+.TP 26n
+\fI/var/lib/sudo/lectured\fR
+Directory containing lecture status files for the
+\fBsudoers\fR
+security policy
+.TP 26n
+\fI/etc/environment\fR
+Initial environment for
+\fB\-i\fR
+mode on AIX and Linux systems
 .SH "EXAMPLES"
-.IX Header "EXAMPLES"
-Below are example \fIsudoers\fR entries.  Admittedly, some of
-these are a bit contrived.  First, we allow a few environment
-variables to pass and then define our \fIaliases\fR:
-.PP
-.Vb 4
-\& # Run X applications through sudo; HOME is used to find the
-\& # .Xauthority file.  Note that other programs use HOME to find
-\& # configuration files and this may lead to privilege escalation!
-\& Defaults env_keep += "DISPLAY HOME"
-\&
-\& # User alias specification
-\& User_Alias     FULLTIMERS = millert, mikef, dowdy
-\& User_Alias     PARTTIMERS = bostley, jwfox, crawl
-\& User_Alias     WEBMASTERS = will, wendy, wim
-\&
-\& # Runas alias specification
-\& Runas_Alias    OP = root, operator
-\& Runas_Alias    DB = oracle, sybase
-\& Runas_Alias    ADMINGRP = adm, oper
-\&
-\& # Host alias specification
-\& Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\e
-\&                SGI = grolsch, dandelion, black :\e
-\&                ALPHA = widget, thalamus, foobar :\e
-\&                HPPA = boa, nag, python
-\& Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
-\& Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
-\& Host_Alias     SERVERS = master, mail, www, ns
-\& Host_Alias     CDROM = orion, perseus, hercules
-\&
-\& # Cmnd alias specification
-\& Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
-\&                        /usr/sbin/restore, /usr/sbin/rrestore
-\& Cmnd_Alias     KILL = /usr/bin/kill
-\& Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
-\& Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
-\& Cmnd_Alias     HALT = /usr/sbin/halt
-\& Cmnd_Alias     REBOOT = /usr/sbin/reboot
-\& Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \e
-\&                         /usr/local/bin/tcsh, /usr/bin/rsh, \e
-\&                         /usr/local/bin/zsh
-\& Cmnd_Alias     SU = /usr/bin/su
-\& Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
-.Ve
-.PP
-Here we override some of the compiled in default values.  We want
-\&\fBsudo\fR to log via \fIsyslog\fR\|(3) using the \fIauth\fR facility in all
-cases.  We don't want to subject the full time staff to the \fBsudo\fR
-lecture, user \fBmillert\fR need not give a password, and we don't
-want to reset the \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR or \f(CW\*(C`USERNAME\*(C'\fR environment
-variables when running commands as root.  Additionally, on the
-machines in the \fI\s-1SERVERS\s0\fR \f(CW\*(C`Host_Alias\*(C'\fR, we keep an additional
-local log file and make sure we log the year in each log line since
-the log entries will be kept around for several years.  Lastly, we
-disable shell escapes for the commands in the \s-1PAGERS\s0 \f(CW\*(C`Cmnd_Alias\*(C'\fR
-(\fI/usr/bin/more\fR, \fI/usr/bin/pg\fR and \fI/usr/bin/less\fR).
-.PP
-.Vb 7
-\& # Override built\-in defaults
-\& Defaults               syslog=auth
-\& Defaults>root          !set_logname
-\& Defaults:FULLTIMERS    !lecture
-\& Defaults:millert       !authenticate
-\& Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
-\& Defaults!PAGERS        noexec
-.Ve
-.PP
-The \fIUser specification\fR is the part that actually determines who may
-run what.
-.PP
-.Vb 2
-\& root           ALL = (ALL) ALL
-\& %wheel         ALL = (ALL) ALL
-.Ve
-.PP
-We let \fBroot\fR and any user in group \fBwheel\fR run any command on any
-host as any user.
-.PP
-.Vb 1
-\& FULLTIMERS     ALL = NOPASSWD: ALL
-.Ve
-.PP
-Full time sysadmins (\fBmillert\fR, \fBmikef\fR, and \fBdowdy\fR) may run any
-command on any host without authenticating themselves.
-.PP
-.Vb 1
-\& PARTTIMERS     ALL = ALL
-.Ve
-.PP
-Part time sysadmins (\fBbostley\fR, \fBjwfox\fR, and \fBcrawl\fR) may run any
-command on any host but they must authenticate themselves first
-(since the entry lacks the \f(CW\*(C`NOPASSWD\*(C'\fR tag).
-.PP
-.Vb 1
-\& jack           CSNETS = ALL
-.Ve
-.PP
-The user \fBjack\fR may run any command on the machines in the \fI\s-1CSNETS\s0\fR alias
-(the networks \f(CW128.138.243.0\fR, \f(CW128.138.204.0\fR, and \f(CW128.138.242.0\fR).
-Of those networks, only \f(CW128.138.204.0\fR has an explicit netmask (in
-\&\s-1CIDR\s0 notation) indicating it is a class C network.  For the other
-networks in \fI\s-1CSNETS\s0\fR, the local machine's netmask will be used
-during matching.
-.PP
-.Vb 1
-\& lisa           CUNETS = ALL
-.Ve
-.PP
-The user \fBlisa\fR may run any command on any host in the \fI\s-1CUNETS\s0\fR alias
-(the class B network \f(CW128.138.0.0\fR).
-.PP
-.Vb 2
-\& operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
-\&                sudoedit /etc/printcap, /usr/oper/bin/
-.Ve
-.PP
-The \fBoperator\fR user may run commands limited to simple maintenance.
-Here, those are commands related to backups, killing processes, the
-printing system, shutting down the system, and any commands in the
-directory \fI/usr/oper/bin/\fR.
-.PP
-.Vb 1
-\& joe            ALL = /usr/bin/su operator
-.Ve
+Below are example
+\fIsudoers\fR
+file entries.
+Admittedly, some of these are a bit contrived.
+First, we allow a few environment variables to pass and then define our
+\fIaliases\fR:
+.nf
+.sp
+.RS 0n
+# Run X applications through sudo; HOME is used to find the
+# .Xauthority file.  Note that other programs use HOME to find
+# configuration files and this may lead to privilege escalation!
+Defaults env_keep += "DISPLAY HOME"
+
+# User alias specification
+User_Alias     FULLTIMERS = millert, mikef, dowdy
+User_Alias     PARTTIMERS = bostley, jwfox, crawl
+User_Alias     WEBMASTERS = will, wendy, wim
+
+# Runas alias specification
+Runas_Alias    OP = root, operator
+Runas_Alias    DB = oracle, sybase
+Runas_Alias    ADMINGRP = adm, oper
+
+# Host alias specification
+Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\e
+               SGI = grolsch, dandelion, black :\e
+               ALPHA = widget, thalamus, foobar :\e
+               HPPA = boa, nag, python
+Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
+Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
+Host_Alias     SERVERS = master, mail, www, ns
+Host_Alias     CDROM = orion, perseus, hercules
+
+# Cmnd alias specification
+Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
+                       /usr/sbin/restore, /usr/sbin/rrestore,\e
+                       sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \e
+                       /home/operator/bin/start_backups
+Cmnd_Alias     KILL = /usr/bin/kill
+Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
+Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
+Cmnd_Alias     HALT = /usr/sbin/halt
+Cmnd_Alias     REBOOT = /usr/sbin/reboot
+Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\e
+                        /usr/local/bin/tcsh, /usr/bin/rsh,\e
+                        /usr/local/bin/zsh
+Cmnd_Alias     SU = /usr/bin/su
+Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
+.RE
+.fi
 .PP
-The user \fBjoe\fR may only \fIsu\fR\|(1) to operator.
+Here we override some of the compiled in default values.
+We want
+\fBsudo\fR
+to log via
+syslog(3)
+using the
+\fIauth\fR
+facility in all cases.
+We don't want to subject the full time staff to the
+\fBsudo\fR
+lecture, user
+\fBmillert\fR
+need not give a password, and we don't want to reset the
+\fRLOGNAME\fR,
+\fRUSER\fR
+or
+\fRUSERNAME\fR
+environment variables when running commands as root.
+Additionally, on the machines in the
+\fISERVERS\fR
+\fRHost_Alias\fR,
+we keep an additional local log file and make sure we log the year
+in each log line since the log entries will be kept around for several years.
+Lastly, we disable shell escapes for the commands in the PAGERS
+\fRCmnd_Alias\fR
+(\fI/usr/bin/more\fR,
+\fI/usr/bin/pg\fR
+and
+\fI/usr/bin/less\fR)
+\&.
+Note that this will not effectively constrain users with
+\fBsudo\fR
+\fBALL\fR
+privileges.
+.nf
+.sp
+.RS 0n
+# Override built-in defaults
+Defaults               syslog=auth
+Defaults>root          !set_logname
+Defaults:FULLTIMERS    !lecture
+Defaults:millert       !authenticate
+Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
+Defaults!PAGERS                noexec
+.RE
+.fi
 .PP
-.Vb 1
-\& pete           HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
-\&
-\& %opers         ALL = (: ADMINGRP) /usr/sbin/
-.Ve
+The
+\fIUser specification\fR
+is the part that actually determines who may run what.
+.nf
+.sp
+.RS 0n
+root           ALL = (ALL) ALL
+%wheel         ALL = (ALL) ALL
+.RE
+.fi
 .PP
-Users in the \fBopers\fR group may run commands in \fI/usr/sbin/\fR as themselves
-with any group in the \fI\s-1ADMINGRP\s0\fR \f(CW\*(C`Runas_Alias\*(C'\fR (the \fBadm\fR and \fBoper\fR
-groups).
+We let
+\fBroot\fR
+and any user in group
+\fBwheel\fR
+run any command on any host as any user.
+.nf
+.sp
+.RS 0n
+FULLTIMERS     ALL = NOPASSWD: ALL
+.RE
+.fi
 .PP
-The user \fBpete\fR is allowed to change anyone's password except for
-root on the \fI\s-1HPPA\s0\fR machines.  Note that this assumes \fIpasswd\fR\|(1)
-does not take multiple user names on the command line.
+Full time sysadmins
+(\fBmillert\fR,
+\fBmikef\fR,
+and
+\fBdowdy\fR)
+may run any command on any host without authenticating themselves.
+.nf
+.sp
+.RS 0n
+PARTTIMERS     ALL = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& bob            SPARC = (OP) ALL : SGI = (OP) ALL
-.Ve
+Part time sysadmins
+\fBbostley\fR,
+\fBjwfox\fR,
+and
+\fBcrawl\fR)
+may run any command on any host but they must authenticate themselves
+first (since the entry lacks the
+\fRNOPASSWD\fR
+tag).
+.nf
+.sp
+.RS 0n
+jack           CSNETS = ALL
+.RE
+.fi
 .PP
-The user \fBbob\fR may run anything on the \fI\s-1SPARC\s0\fR and \fI\s-1SGI\s0\fR machines
-as any user listed in the \fI\s-1OP\s0\fR \f(CW\*(C`Runas_Alias\*(C'\fR (\fBroot\fR and \fBoperator\fR).
+The user
+\fBjack\fR
+may run any command on the machines in the
+\fICSNETS\fR
+alias (the networks
+\fR128.138.243.0\fR,
+\fR128.138.204.0\fR,
+and
+\fR128.138.242.0\fR).
+Of those networks, only
+\fR128.138.204.0\fR
+has an explicit netmask (in CIDR notation) indicating it is a class C network.
+For the other networks in
+\fICSNETS\fR,
+the local machine's netmask will be used during matching.
+.nf
+.sp
+.RS 0n
+lisa           CUNETS = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& jim            +biglab = ALL
-.Ve
+The user
+\fBlisa\fR
+may run any command on any host in the
+\fICUNETS\fR
+alias (the class B network
+\fR128.138.0.0\fR).
+.nf
+.sp
+.RS 0n
+operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
+               sudoedit /etc/printcap, /usr/oper/bin/
+.RE
+.fi
 .PP
-The user \fBjim\fR may run any command on machines in the \fIbiglab\fR netgroup.
-\&\fBsudo\fR knows that \*(L"biglab\*(R" is a netgroup due to the '+' prefix.
+The
+\fBoperator\fR
+user may run commands limited to simple maintenance.
+Here, those are commands related to backups, killing processes, the
+printing system, shutting down the system, and any commands in the
+directory
+\fI/usr/oper/bin/\fR.
+Note that one command in the
+\fRDUMPS\fR
+Cmnd_Alias includes a sha224 digest,
+\fI/home/operator/bin/start_backups\fR.
+This is because the directory containing the script is writable by the
+operator user.
+If the script is modified (resulting in a digest mismatch) it will no longer
+be possible to run it via
+\fBsudo\fR.
+.nf
+.sp
+.RS 0n
+joe            ALL = /usr/bin/su operator
+.RE
+.fi
 .PP
-.Vb 1
-\& +secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
-.Ve
+The user
+\fBjoe\fR
+may only
+su(1)
+to operator.
+.nf
+.sp
+.RS 0n
+pete           HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
+
+%opers         ALL = (: ADMINGRP) /usr/sbin/
+.RE
+.fi
 .PP
-Users in the \fBsecretaries\fR netgroup need to help manage the printers
-as well as add and remove users, so they are allowed to run those
-commands on all machines.
+Users in the
+\fBopers\fR
+group may run commands in
+\fI/usr/sbin/\fR
+as themselves
+with any group in the
+\fIADMINGRP\fR
+\fRRunas_Alias\fR
+(the
+\fBadm\fR
+and
+\fBoper\fR
+groups).
 .PP
-.Vb 1
-\& fred           ALL = (DB) NOPASSWD: ALL
-.Ve
+The user
+\fBpete\fR
+is allowed to change anyone's password except for
+root on the
+\fIHPPA\fR
+machines.
+Because command line arguments are matched as a single,
+concatenated string, the
+\(oq*\(cq
+wildcard will match
+\fImultiple\fR
+words.
+This example assumes that
+passwd(1)
+does not take multiple user names on the command line.
+Note that on GNU systems, options to
+passwd(1)
+may be specified after the user argument.
+As a result, this rule will also allow:
+.nf
+.sp
+.RS 4n
+passwd username --expire
+.RE
+.fi
 .PP
-The user \fBfred\fR can run commands as any user in the \fI\s-1DB\s0\fR \f(CW\*(C`Runas_Alias\*(C'\fR
-(\fBoracle\fR or \fBsybase\fR) without giving a password.
+which may not be desirable.
+.nf
+.sp
+.RS 0n
+bob            SPARC = (OP) ALL : SGI = (OP) ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& john           ALPHA = /usr/bin/su [!\-]*, !/usr/bin/su *root*
-.Ve
+The user
+\fBbob\fR
+may run anything on the
+\fISPARC\fR
+and
+\fISGI\fR
+machines as any user listed in the
+\fIOP\fR
+\fRRunas_Alias\fR
+(\fBroot\fR
+and
+\fBoperator\fR.)
+.nf
+.sp
+.RS 0n
+jim            +biglab = ALL
+.RE
+.fi
 .PP
-On the \fI\s-1ALPHA\s0\fR machines, user \fBjohn\fR may su to anyone except root
-but he is not allowed to specify any options to the \fIsu\fR\|(1) command.
+The user
+\fBjim\fR
+may run any command on machines in the
+\fIbiglab\fR
+netgroup.
+\fBsudo\fR
+knows that
+\(Lqbiglab\(Rq
+is a netgroup due to the
+\(oq+\(cq
+prefix.
+.nf
+.sp
+.RS 0n
++secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
+.RE
+.fi
 .PP
-.Vb 1
-\& jen            ALL, !SERVERS = ALL
-.Ve
+Users in the
+\fBsecretaries\fR
+netgroup need to help manage the printers as well as add and remove users,
+so they are allowed to run those commands on all machines.
+.nf
+.sp
+.RS 0n
+fred           ALL = (DB) NOPASSWD: ALL
+.RE
+.fi
 .PP
-The user \fBjen\fR may run any command on any machine except for those
-in the \fI\s-1SERVERS\s0\fR \f(CW\*(C`Host_Alias\*(C'\fR (master, mail, www and ns).
+The user
+\fBfred\fR
+can run commands as any user in the
+\fIDB\fR
+\fRRunas_Alias\fR
+(\fBoracle\fR
+or
+\fBsybase\fR)
+without giving a password.
+.nf
+.sp
+.RS 0n
+john           ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
+.RE
+.fi
 .PP
-.Vb 1
-\& jill           SERVERS = /usr/bin/, !SU, !SHELLS
-.Ve
+On the
+\fIALPHA\fR
+machines, user
+\fBjohn\fR
+may su to anyone except root but he is not allowed to specify any options
+to the
+su(1)
+command.
+.nf
+.sp
+.RS 0n
+jen            ALL, !SERVERS = ALL
+.RE
+.fi
 .PP
-For any machine in the \fI\s-1SERVERS\s0\fR \f(CW\*(C`Host_Alias\*(C'\fR, \fBjill\fR may run
-any commands in the directory \fI/usr/bin/\fR except for those commands
-belonging to the \fI\s-1SU\s0\fR and \fI\s-1SHELLS\s0\fR \f(CW\*(C`Cmnd_Aliases\*(C'\fR.
+The user
+\fBjen\fR
+may run any command on any machine except for those in the
+\fISERVERS\fR
+\fRHost_Alias\fR
+(master, mail, www and ns).
+.nf
+.sp
+.RS 0n
+jill           SERVERS = /usr/bin/, !SU, !SHELLS
+.RE
+.fi
 .PP
-.Vb 1
-\& steve          CSNETS = (operator) /usr/local/op_commands/
-.Ve
+For any machine in the
+\fISERVERS\fR
+\fRHost_Alias\fR,
+\fBjill\fR
+may run
+any commands in the directory
+\fI/usr/bin/\fR
+except for those commands
+belonging to the
+\fISU\fR
+and
+\fISHELLS\fR
+\fRCmnd_Aliases\fR.
+While not specifically mentioned in the rule, the commands in the
+\fIPAGERS\fR
+\fRCmnd_Alias\fR
+all reside in
+\fI/usr/bin\fR
+and have the
+\fInoexec\fR
+option set.
+.nf
+.sp
+.RS 0n
+steve          CSNETS = (operator) /usr/local/op_commands/
+.RE
+.fi
 .PP
-The user \fBsteve\fR may run any command in the directory /usr/local/op_commands/
+The user
+\fBsteve\fR
+may run any command in the directory /usr/local/op_commands/
 but only as user operator.
+.nf
+.sp
+.RS 0n
+matt           valkyrie = KILL
+.RE
+.fi
 .PP
-.Vb 1
-\& matt           valkyrie = KILL
-.Ve
-.PP
-On his personal workstation, valkyrie, \fBmatt\fR needs to be able to
-kill hung processes.
-.PP
-.Vb 1
-\& WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www
-.Ve
-.PP
-On the host www, any user in the \fI\s-1WEBMASTERS\s0\fR \f(CW\*(C`User_Alias\*(C'\fR (will,
-wendy, and wim), may run any command as user www (which owns the
-web pages) or simply \fIsu\fR\|(1) to www.
+On his personal workstation, valkyrie,
+\fBmatt\fR
+needs to be able to kill hung processes.
+.nf
+.sp
+.RS 0n
+WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www
+.RE
+.fi
 .PP
-.Vb 2
-\& ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\e
-\&                /sbin/mount \-o nosuid\e,nodev /dev/cd0a /CDROM
-.Ve
+On the host www, any user in the
+\fIWEBMASTERS\fR
+\fRUser_Alias\fR
+(will, wendy, and wim), may run any command as user www (which owns the
+web pages) or simply
+su(1)
+to www.
+.nf
+.sp
+.RS 0n
+ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\e
+               /sbin/mount -o nosuid\e,nodev /dev/cd0a /CDROM
+.RE
+.fi
 .PP
-Any user may mount or unmount a CD-ROM on the machines in the \s-1CDROM\s0
-\&\f(CW\*(C`Host_Alias\*(C'\fR (orion, perseus, hercules) without entering a password.
+Any user may mount or unmount a CD-ROM on the machines in the CDROM
+\fRHost_Alias\fR
+(orion, perseus, hercules) without entering a password.
 This is a bit tedious for users to type, so it is a prime candidate
 for encapsulating in a shell script.
 .SH "SECURITY NOTES"
-.IX Header "SECURITY NOTES"
-It is generally not effective to \*(L"subtract\*(R" commands from \f(CW\*(C`ALL\*(C'\fR
-using the '!' operator.  A user can trivially circumvent this
-by copying the desired command to a different name and then
-executing that.  For example:
-.PP
-.Vb 1
-\&    bill        ALL = ALL, !SU, !SHELLS
-.Ve
-.PP
-Doesn't really prevent \fBbill\fR from running the commands listed in
-\&\fI\s-1SU\s0\fR or \fI\s-1SHELLS\s0\fR since he can simply copy those commands to a
-different name, or use a shell escape from an editor or other
-program.  Therefore, these kind of restrictions should be considered
+.SS "Limitations of the \(oq!\&\(cq operator"
+It is generally not effective to
+\(Lqsubtract\(Rq
+commands from
+\fBALL\fR
+using the
+\(oq!\&\(cq
+operator.
+A user can trivially circumvent this by copying the desired command
+to a different name and then executing that.
+For example:
+.nf
+.sp
+.RS 0n
+bill   ALL = ALL, !SU, !SHELLS
+.RE
+.fi
+.PP
+Doesn't really prevent
+\fBbill\fR
+from running the commands listed in
+\fISU\fR
+or
+\fISHELLS\fR
+since he can simply copy those commands to a different name, or use
+a shell escape from an editor or other program.
+Therefore, these kind of restrictions should be considered
 advisory at best (and reinforced by policy).
 .PP
-Furthermore, if the \fIfast_glob\fR option is in use, it is not possible
-to reliably negate commands where the path name includes globbing
-(aka wildcard) characters.  This is because the C library's
-\&\fIfnmatch\fR\|(3) function cannot resolve relative paths.  While this
-is typically only an inconvenience for rules that grant privileges,
-it can result in a security issue for rules that subtract or revoke
-privileges.
+In general, if a user has sudo
+\fBALL\fR
+there is nothing to prevent them from creating their own program that gives
+them a root shell (or making their own copy of a shell) regardless of any
+\(oq!\&\(cq
+elements in the user specification.
+.SS "Security implications of \fIfast_glob\fR"
+If the
+\fIfast_glob\fR
+option is in use, it is not possible to reliably negate commands where the
+path name includes globbing (aka wildcard) characters.
+This is because the C library's
+fnmatch(3)
+function cannot resolve relative paths.
+While this is typically only an inconvenience for rules that grant privileges,
+it can result in a security issue for rules that subtract or revoke privileges.
+.PP
+For example, given the following
+\fIsudoers\fR
+file entry:
+.nf
+.sp
+.RS 0n
+john   ALL = /usr/bin/passwd [a-zA-Z0-9]*, /usr/bin/chsh [a-zA-Z0-9]*,\e
+              /usr/bin/chfn [a-zA-Z0-9]*, !/usr/bin/* root
+.RE
+.fi
 .PP
-For example, given the following \fIsudoers\fR entry:
-.PP
-.Vb 2
-\& john   ALL = /usr/bin/passwd [a\-zA\-Z0\-9]*, /usr/bin/chsh [a\-zA\-Z0\-9]*,
-\&      /usr/bin/chfn [a\-zA\-Z0\-9]*, !/usr/bin/* root
-.Ve
-.PP
-User \fBjohn\fR can still run \f(CW\*(C`/usr/bin/passwd root\*(C'\fR if \fIfast_glob\fR is
-enabled by changing to \fI/usr/bin\fR and running \f(CW\*(C`./passwd root\*(C'\fR instead.
-.SH "PREVENTING SHELL ESCAPES"
-.IX Header "PREVENTING SHELL ESCAPES"
-Once \fBsudo\fR executes a program, that program is free to do whatever
-it pleases, including run other programs.  This can be a security
-issue since it is not uncommon for a program to allow shell escapes,
-which lets a user bypass \fBsudo\fR's access control and logging.
+User
+\fBjohn\fR
+can still run
+\fR/usr/bin/passwd root\fR
+if
+\fIfast_glob\fR
+is enabled by changing to
+\fI/usr/bin\fR
+and running
+\fR./passwd root\fR
+instead.
+.SS "Preventing shell escapes"
+Once
+\fBsudo\fR
+executes a program, that program is free to do whatever
+it pleases, including run other programs.
+This can be a security issue since it is not uncommon for a program to
+allow shell escapes, which lets a user bypass
+\fBsudo\fR's
+access control and logging.
 Common programs that permit shell escapes include shells (obviously),
 editors, paginators, mail and terminal programs.
 .PP
 There are two basic approaches to this problem:
-.IP "restrict" 10
-.IX Item "restrict"
+.TP 10n
+restrict
 Avoid giving users access to commands that allow the user to run
-arbitrary commands.  Many editors have a restricted mode where shell
-escapes are disabled, though \fBsudoedit\fR is a better solution to
-running editors via \fBsudo\fR.  Due to the large number of programs that
+arbitrary commands.
+Many editors have a restricted mode where shell
+escapes are disabled, though
+\fBsudoedit\fR
+is a better solution to
+running editors via
+\fBsudo\fR.
+Due to the large number of programs that
 offer shell escapes, restricting users to the set of programs that
 do not is often unworkable.
-.IP "noexec" 10
-.IX Item "noexec"
+.TP 10n
+noexec
 Many systems that support shared libraries have the ability to
 override default library functions by pointing an environment
-variable (usually \f(CW\*(C`LD_PRELOAD\*(C'\fR) to an alternate shared library.
-On such systems, \fBsudo\fR's \fInoexec\fR functionality can be used to
-prevent a program run by \fBsudo\fR from executing any other programs.
+variable (usually
+\fRLD_PRELOAD\fR)
+to an alternate shared library.
+On such systems,
+\fBsudo\fR's
+\fInoexec\fR
+functionality can be used to prevent a program run by
+\fBsudo\fR
+from executing any other programs.
 Note, however, that this applies only to native dynamically-linked
-executables.  Statically-linked executables and foreign executables
+executables.
+Statically-linked executables and foreign executables
 running under binary emulation are not affected.
-.Sp
-The \fInoexec\fR feature is known to work on SunOS, Solaris, *BSD,
-Linux, \s-1IRIX\s0, Tru64 \s-1UNIX\s0, MacOS X, HP-UX 11.x and \s-1AIX\s0 5.3 and above.
+.sp
+The
+\fInoexec\fR
+feature is known to work on SunOS, Solaris, *BSD,
+Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x and AIX 5.3 and above.
 It should be supported on most operating systems that support the
-\&\f(CW\*(C`LD_PRELOAD\*(C'\fR environment variable.  Check your operating system's
-manual pages for the dynamic linker (usually ld.so, ld.so.1, dyld,
-dld.sl, rld, or loader) to see if \f(CW\*(C`LD_PRELOAD\*(C'\fR is supported.
-.Sp
-On Solaris 10 and higher, \fInoexec\fR uses Solaris privileges instead
-of the \f(CW\*(C`LD_PRELOAD\*(C'\fR environment variable.
-.Sp
-To enable \fInoexec\fR for a command, use the \f(CW\*(C`NOEXEC\*(C'\fR tag as documented
-in the User Specification section above.  Here is that example again:
-.Sp
-.Vb 1
-\& aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-.Ve
-.Sp
-This allows user \fBaaron\fR to run \fI/usr/bin/more\fR and \fI/usr/bin/vi\fR
-with \fInoexec\fR enabled.  This will prevent those two commands from
-executing other commands (such as a shell).  If you are unsure
-whether or not your system is capable of supporting \fInoexec\fR you
-can always just try it out and check whether shell escapes work
-when \fInoexec\fR is enabled.
-.PP
-Note that restricting shell escapes is not a panacea.  Programs
-running as root are still capable of many potentially hazardous
+\fRLD_PRELOAD\fR
+environment variable.
+Check your operating system's manual pages for the dynamic linker
+(usually ld.so, ld.so.1, dyld, dld.sl, rld, or loader) to see if
+\fRLD_PRELOAD\fR
+is supported.
+.sp
+To enable
+\fInoexec\fR
+for a command, use the
+\fRNOEXEC\fR
+tag as documented
+in the User Specification section above.
+Here is that example again:
+.nf
+.sp
+.RS 10n
+aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
+.RE
+.fi
+.RS 10n
+.sp
+This allows user
+\fBaaron\fR
+to run
+\fI/usr/bin/more\fR
+and
+\fI/usr/bin/vi\fR
+with
+\fInoexec\fR
+enabled.
+This will prevent those two commands from
+executing other commands (such as a shell).
+If you are unsure whether or not your system is capable of supporting
+\fInoexec\fR
+you can always just try it out and check whether shell escapes work when
+\fInoexec\fR
+is enabled.
+.RE
+.PP
+Note that restricting shell escapes is not a panacea.
+Programs running as root are still capable of many potentially hazardous
 operations (such as changing or overwriting files) that could lead
-to unintended privilege escalation.  In the specific case of an
-editor, a safer approach is to give the user permission to run
-\&\fBsudoedit\fR.
-.SH "DEBUG FLAGS"
-.IX Header "DEBUG FLAGS"
-Versions 1.8.4 and higher of the \fIsudoers\fR plugin supports a
-debugging framework that can help track down what the plugin is
-doing internally if there is a problem.  This can be configured in
-the \fI/etc/sudo.conf\fR file as described in \fIsudo\fR\|(8).
-.PP
-The \fIsudoers\fR plugin uses the same debug flag format as \fBsudo\fR
-itself: \fIsubsystem\fR@\fIpriority\fR.
-.PP
-The priorities used by \fIsudoers\fR, in order of decreasing severity,
-are: \fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR, \fItrace\fR
-and \fIdebug\fR.  Each priority, when specified, also includes all
-priorities higher than it.  For example, a priority of \fInotice\fR
-would include debug messages logged at \fInotice\fR and higher.
-.PP
-The following subsystems are used by \fIsudoers\fR:
-.IP "\fIalias\fR" 10
-.IX Item "alias"
-\&\f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR and \f(CW\*(C`Cmnd_Alias\*(C'\fR processing
-.IP "\fIall\fR" 10
-.IX Item "all"
+to unintended privilege escalation.
+In the specific case of an editor, a safer approach is to give the
+user permission to run
+\fBsudoedit\fR
+(see below).
+.SS "Secure editing"
+The
+\fBsudoers\fR
+plugin includes
+\fBsudoedit\fR
+support which allows users to securely edit files with the editor
+of their choice.
+As
+\fBsudoedit\fR
+is a built-in command, it must be specified in the
+\fIsudoers\fR
+file without a leading path.
+However, it may take command line arguments just as a normal command does.
+Wildcards used in
+\fIsudoedit\fR
+command line arguments are expected to be path names, so a forward slash
+(\(oq/\(cq)
+will not be matched by a wildcard.
+.PP
+Unlike other
+\fBsudo\fR
+commands, the editor is run with the permissions of the invoking
+user and with the environment unmodified.
+More information may be found in the description of the
+\fB\-e\fR
+option in
+sudo(8).
+.PP
+For example, to allow user operator to edit the
+\(Lqmessage of the day\(Rq
+file:
+.nf
+.sp
+.RS 6n
+operator       sudoedit /etc/motd
+.RE
+.fi
+.PP
+The operator user then runs
+\fBsudoedit\fR
+as follows:
+.nf
+.sp
+.RS 6n
+$ sudoedit /etc/motd
+.RE
+.fi
+.PP
+The editor will run as the operator user, not root, on a temporary copy of
+\fI/etc/motd\fR.
+After the file has been edited,
+\fI/etc/motd\fR
+will be updated with the contents of the temporary copy.
+.PP
+Users should
+\fInever\fR
+be granted
+\fBsudoedit\fR
+permission to edit a file that resides in a directory the user
+has write access to, either directly or via a wildcard.
+If the user has write access to the directory it is possible to
+replace the legitimate file with a link to another file,
+allowing the editing of arbitrary files.
+To prevent this, starting with version 1.8.16, symbolic links will
+not be followed in writable directories and
+\fBsudoedit\fR
+will refuse to edit a file located in a writable directory
+unless the
+\fIsudoedit_checkdir\fR
+option has been disabled or the invoking user is root.
+Additionally, in version 1.8.15 and higher,
+\fBsudoedit\fR
+will refuse to open a symbolic link unless either the
+\fIsudoedit_follow\fR
+option is enabled or the
+\fIsudoedit\fR
+command is prefixed with the
+\fRFOLLOW\fR
+tag in the
+\fIsudoers\fR
+file.
+.SS "Time stamp file checks"
+\fBsudoers\fR
+will check the ownership of its time stamp directory
+(\fI/var/run/sudo/ts\fR
+by default)
+and ignore the directory's contents if it is not owned by root or
+if it is writable by a user other than root.
+Older versions of
+\fBsudo\fR
+stored time stamp files in
+\fI/tmp\fR;
+this is no longer recommended as it may be possible for a user
+to create the time stamp themselves on systems that allow
+unprivileged users to change the ownership of files they create.
+.PP
+While the time stamp directory
+\fIshould\fR
+be cleared at reboot time, not all systems contain a
+\fI/var/run\fR
+directory.
+To avoid potential problems,
+\fBsudoers\fR
+will ignore time stamp files that date from before the machine booted
+on systems where the boot time is available.
+.PP
+Some systems with graphical desktop environments allow unprivileged
+users to change the system clock.
+Since
+\fBsudoers\fR
+relies on the system clock for time stamp validation, it may be
+possible on such systems for a user to run
+\fBsudo\fR
+for longer than
+\fItimestamp_timeout\fR
+by setting the clock back.
+To combat this,
+\fBsudoers\fR
+uses a monotonic clock (which never moves backwards) for its time stamps
+if the system supports it.
+.PP
+\fBsudoers\fR
+will not honor time stamps set far in the future.
+Time stamps with a date greater than current_time + 2 *
+\fRTIMEOUT\fR
+will be ignored and
+\fBsudoers\fR
+will log and complain.
+.PP
+Since time stamp files live in the file system, they can outlive a
+user's login session.
+As a result, a user may be able to login, run a command with
+\fBsudo\fR
+after authenticating, logout, login again, and run
+\fBsudo\fR
+without authenticating so long as the record's time stamp is within
+\fR5\fR
+minutes (or whatever value the timeout is set to in the
+\fIsudoers\fR
+file).
+When the
+\fItty_tickets\fR
+option is enabled, the time stamp record includes the device
+number of the terminal the user authenticated with.
+This provides per-tty granularity but time stamp records still
+may outlive the user's session.
+The time stamp record also includes the session ID of the process
+that last authenticated.
+This prevents processes in different terminal sessions from using
+the same time stamp record.
+It also helps reduce the chance that a user will be able to run
+\fBsudo\fR
+without entering a password when logging out and back in again
+on the same terminal.
+.SH "DEBUGGING"
+Versions 1.8.4 and higher of the
+\fBsudoers\fR
+plugin support a flexible debugging framework that can help track
+down what the plugin is doing internally if there is a problem.
+This can be configured in the
+sudo.conf(5)
+file.
+.PP
+The
+\fBsudoers\fR
+plugin uses the same debug flag format as the
+\fBsudo\fR
+front-end:
+\fIsubsystem\fR@\fIpriority\fR.
+.PP
+The priorities used by
+\fBsudoers\fR,
+in order of decreasing severity,
+are:
+\fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR, \fItrace\fR
+and
+\fIdebug\fR.
+Each priority, when specified, also includes all priorities higher
+than it.
+For example, a priority of
+\fInotice\fR
+would include debug messages logged at
+\fInotice\fR
+and higher.
+.PP
+The following subsystems are used by the
+\fBsudoers\fR
+plugin:
+.TP 10n
+\fIalias\fR
+\fRUser_Alias\fR,
+\fRRunas_Alias\fR,
+\fRHost_Alias\fR
+and
+\fRCmnd_Alias\fR
+processing
+.TP 10n
+\fIall\fR
 matches every subsystem
-.IP "\fIaudit\fR" 10
-.IX Item "audit"
-\&\s-1BSM\s0 and Linux audit code
-.IP "\fIauth\fR" 10
-.IX Item "auth"
+.TP 10n
+\fIaudit\fR
+BSM and Linux audit code
+.TP 10n
+\fIauth\fR
 user authentication
-.IP "\fIdefaults\fR" 10
-.IX Item "defaults"
-\&\fIsudoers\fR \fIDefaults\fR settings
-.IP "\fIenv\fR" 10
-.IX Item "env"
+.TP 10n
+\fIdefaults\fR
+\fIsudoers\fR
+file
+\fIDefaults\fR
+settings
+.TP 10n
+\fIenv\fR
 environment handling
-.IP "\fIldap\fR" 10
-.IX Item "ldap"
+.TP 10n
+\fIldap\fR
 LDAP-based sudoers
-.IP "\fIlogging\fR" 10
-.IX Item "logging"
+.TP 10n
+\fIlogging\fR
 logging support
-.IP "\fImatch\fR" 10
-.IX Item "match"
-matching of users, groups, hosts and netgroups in \fIsudoers\fR
-.IP "\fInetif\fR" 10
-.IX Item "netif"
+.TP 10n
+\fImatch\fR
+matching of users, groups, hosts and netgroups in the
+\fIsudoers\fR
+file
+.TP 10n
+\fInetif\fR
 network interface handling
-.IP "\fInss\fR" 10
-.IX Item "nss"
-network service switch handling in \fIsudoers\fR
-.IP "\fIparser\fR" 10
-.IX Item "parser"
-\&\fIsudoers\fR file parsing
-.IP "\fIperms\fR" 10
-.IX Item "perms"
+.TP 10n
+\fInss\fR
+network service switch handling in
+\fBsudoers\fR
+.TP 10n
+\fIparser\fR
+\fIsudoers\fR
+file parsing
+.TP 10n
+\fIperms\fR
 permission setting
-.IP "\fIplugin\fR" 10
-.IX Item "plugin"
-The equivalent of \fImain\fR for the plugin.
-.IP "\fIpty\fR" 10
-.IX Item "pty"
+.TP 10n
+\fIplugin\fR
+The equivalent of
+\fImain\fR
+for the plugin.
+.TP 10n
+\fIpty\fR
 pseudo-tty related code
-.IP "\fIrbtree\fR" 10
-.IX Item "rbtree"
+.TP 10n
+\fIrbtree\fR
 redblack tree internals
-.IP "\fIutil\fR" 10
-.IX Item "util"
+.TP 10n
+\fIsssd\fR
+SSSD-based sudoers
+.TP 10n
+\fIutil\fR
 utility functions
-.SH "SECURITY NOTES"
-.IX Header "SECURITY NOTES"
-\&\fIsudoers\fR will check the ownership of its time stamp directory
-(\fI/var/lib/sudo\fR by default) and ignore the directory's contents if
-it is not owned by root or if it is writable by a user other than
-root.  On systems that allow non-root users to give away files via
-\&\fIchown\fR\|(2), if the time stamp directory is located in a world-writable
-directory (e.g., \fI/tmp\fR), it is possible for a user to create the
-time stamp directory before \fBsudo\fR is run.  However, because
-\&\fIsudoers\fR checks the ownership and mode of the directory and its
-contents, the only damage that can be done is to \*(L"hide\*(R" files by
-putting them in the time stamp dir.  This is unlikely to happen
-since once the time stamp dir is owned by root and inaccessible by
-any other user, the user placing files there would be unable to get
-them back out.
-.PP
-\&\fIsudoers\fR will not honor time stamps set far in the future.  Time
-stamps with a date greater than current_time + 2 * \f(CW\*(C`TIMEOUT\*(C'\fR will
-be ignored and sudo will log and complain.  This is done to keep a
-user from creating his/her own time stamp with a bogus date on
-systems that allow users to give away files if the time stamp directory
-is located in a world-writable directory.
-.PP
-On systems where the boot time is available, \fIsudoers\fR will ignore
-time stamps that date from before the machine booted.
+.PD 0
 .PP
-Since time stamp files live in the file system, they can outlive a
-user's login session.  As a result, a user may be able to login,
-run a command with \fBsudo\fR after authenticating, logout, login
-again, and run \fBsudo\fR without authenticating so long as the time
-stamp file's modification time is within \f(CW\*(C`5\*(C'\fR minutes (or
-whatever the timeout is set to in \fIsudoers\fR).  When the \fItty_tickets\fR
-option is enabled, the time stamp has per-tty granularity but still
-may outlive the user's session.  On Linux systems where the devpts
-filesystem is used, Solaris systems with the devices filesystem,
-as well as other systems that utilize a devfs filesystem that
-monotonically increase the inode number of devices as they are
-created (such as Mac \s-1OS\s0 X), \fIsudoers\fR is able to determine when a
-tty-based time stamp file is stale and will ignore it.  Administrators
-should not rely on this feature as it is not universally available.
-.PP
-If users have sudo \f(CW\*(C`ALL\*(C'\fR there is nothing to prevent them from
-creating their own program that gives them a root shell (or making
-their own copy of a shell) regardless of any '!' elements in the
-user specification.
+For example:
+.nf
+.sp
+.RS 0n
+Debug sudo /var/log/sudo_debug match@info,nss@info
+.RE
+.fi
+.PD
+.PP
+For more information, see the
+sudo.conf(5)
+manual.
 .SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIrsh\fR\|(1), \fIsu\fR\|(1), \fIfnmatch\fR\|(3), \fIglob\fR\|(3), \fImktemp\fR\|(3), \fIstrftime\fR\|(3),
-\&\fIsudoers.ldap\fR\|(5), \fIsudo_plugin\fR\|(8), \fIsudo\fR\|(8), \fIvisudo\fR\|(8)
+ssh(1),
+su(1),
+fnmatch(3),
+glob(3),
+mktemp(3),
+strftime(3),
+sudo.conf(5),
+sudoers.ldap(5),
+sudo(8),
+sudo_plugin(8),
+visudo(8)
+.SH "AUTHORS"
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
 .SH "CAVEATS"
-.IX Header "CAVEATS"
-The \fIsudoers\fR file should \fBalways\fR be edited by the \fBvisudo\fR
-command which locks the file and does grammatical checking. It is
-imperative that \fIsudoers\fR be free of syntax errors since \fBsudo\fR
-will not run with a syntactically incorrect \fIsudoers\fR file.
+The
+\fIsudoers\fR
+file should
+\fBalways\fR
+be edited by the
+\fBvisudo\fR
+command which locks the file and does grammatical checking.
+It is
+imperative that the
+\fIsudoers\fR
+file be free of syntax errors since
+\fBsudo\fR
+will not run with a syntactically incorrect
+\fIsudoers\fR
+file.
 .PP
 When using netgroups of machines (as opposed to users), if you
 store fully qualified host name in the netgroup (as is usually the
 case), you either need to have the machine's host name be fully qualified
-as returned by the \f(CW\*(C`hostname\*(C'\fR command or use the \fIfqdn\fR option in
-\&\fIsudoers\fR.
+as returned by the
+\fRhostname\fR
+command or use the
+\fIfqdn\fR
+option in
+\fIsudoers\fR.
 .SH "BUGS"
-.IX Header "BUGS"
-If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-at http://www.sudo.ws/sudo/bugs/
+If you feel you have found a bug in
+\fBsudo\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
 .SH "SUPPORT"
-.IX Header "SUPPORT"
 Limited free support is available via the sudo-users mailing list,
-see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
 search the archives.
 .SH "DISCLAIMER"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-including, but not limited to, the implied warranties of merchantability
-and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-for complete details.
+\fBsudo\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
index 1d78cef..a7d3d2e 100644 (file)
@@ -1,10 +1,12 @@
-.\" Copyright (c) 2003-2011
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoers.ldap.mdoc.in
+.\"
+.\" Copyright (c) 2003-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
 .\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDOERS.LDAP 5"
-.TH SUDOERS.LDAP 5 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH "SUDOERS.LDAP" "5" "June 15, 2016" "Sudo 1.8.17" "File Formats Manual"
 .nh
+.if n .ad l
 .SH "NAME"
-sudoers.ldap \- sudo LDAP configuration
+\fBsudoers.ldap\fR
+\- sudo LDAP configuration
 .SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-In addition to the standard \fIsudoers\fR file, \fBsudo\fR may be configured
-via \s-1LDAP\s0.  This can be especially useful for synchronizing \fIsudoers\fR
+In addition to the standard
+\fIsudoers\fR
+file,
+\fBsudo\fR
+may be configured
+via LDAP.
+This can be especially useful for synchronizing
+\fIsudoers\fR
 in a large, distributed environment.
 .PP
-Using \s-1LDAP\s0 for \fIsudoers\fR has several benefits:
-.IP "\(bu" 4
-\&\fBsudo\fR no longer needs to read \fIsudoers\fR in its entirety.  When
-\&\s-1LDAP\s0 is used, there are only two or three \s-1LDAP\s0 queries per invocation.
-This makes it especially fast and particularly usable in \s-1LDAP\s0
-environments.
-.IP "\(bu" 4
-\&\fBsudo\fR no longer exits if there is a typo in \fIsudoers\fR.
-It is not possible to load \s-1LDAP\s0 data into the server that does
+Using LDAP for
+\fIsudoers\fR
+has several benefits:
+.TP 4n
+\fB\(bu\fR
+\fBsudo\fR
+no longer needs to read
+\fIsudoers\fR
+in its entirety.
+When LDAP is used, there are only two or three LDAP queries per invocation.
+This makes it especially fast and particularly usable in LDAP environments.
+.TP 4n
+\fB\(bu\fR
+\fBsudo\fR
+no longer exits if there is a typo in
+\fIsudoers\fR.
+It is not possible to load LDAP data into the server that does
 not conform to the sudoers schema, so proper syntax is guaranteed.
 It is still possible to have typos in a user or host name, but
-this will not prevent \fBsudo\fR from running.
-.IP "\(bu" 4
+this will not prevent
+\fBsudo\fR
+from running.
+.TP 4n
+\fB\(bu\fR
 It is possible to specify per-entry options that override the global
-default options.  \fI/etc/sudoers\fR only supports default options and
-limited options associated with user/host/commands/aliases.  The
-syntax is complicated and can be difficult for users to understand.
+default options.
+\fI/etc/sudoers\fR
+only supports default options and limited options associated with
+user/host/commands/aliases.
+The syntax is complicated and can be difficult for users to understand.
 Placing the options directly in the entry is more natural.
-.IP "\(bu" 4
-The \fBvisudo\fR program is no longer needed.  \fBvisudo\fR provides
-locking and syntax checking of the \fI/etc/sudoers\fR file.
-Since \s-1LDAP\s0 updates are atomic, locking is no longer necessary.
-Because syntax is checked when the data is inserted into \s-1LDAP\s0, there
+.TP 4n
+\fB\(bu\fR
+The
+\fBvisudo\fR
+program is no longer needed.
+\fBvisudo\fR
+provides locking and syntax checking of the
+\fI/etc/sudoers\fR
+file.
+Since LDAP updates are atomic, locking is no longer necessary.
+Because syntax is checked when the data is inserted into LDAP, there
 is no need for a specialized tool to check syntax.
 .PP
-Another major difference between \s-1LDAP\s0 and file-based \fIsudoers\fR
-is that in \s-1LDAP\s0, \fBsudo\fR\-specific Aliases are not supported.
+Another major difference between LDAP and file-based
+\fIsudoers\fR
+is that in LDAP,
+\fBsudo\fR-specific
+Aliases are not supported.
 .PP
-For the most part, there is really no need for \fBsudo\fR\-specific
-Aliases.  Unix groups or user netgroups can be used in place of
-User_Aliases and Runas_Aliases.  Host netgroups can be used in place
-of Host_Aliases.  Since Unix groups and netgroups can also be stored
-in \s-1LDAP\s0 there is no real need for \fBsudo\fR\-specific aliases.
+For the most part, there is really no need for
+\fBsudo\fR-specific
+Aliases.
+Unix groups, non-Unix groups (via the
+\fIgroup_plugin\fR)
+or user netgroups can be used in place of User_Aliases and Runas_Aliases.
+Host netgroups can be used in place of Host_Aliases.
+Since groups and netgroups can also be stored in LDAP there is no real need for
+\fBsudo\fR-specific
+aliases.
 .PP
 Cmnd_Aliases are not really required either since it is possible
-to have multiple users listed in a \f(CW\*(C`sudoRole\*(C'\fR.  Instead of defining
-a Cmnd_Alias that is referenced by multiple users, one can create
-a \f(CW\*(C`sudoRole\*(C'\fR that contains the commands and assign multiple users
-to it.
-.SS "SUDOers \s-1LDAP\s0 container"
-.IX Subsection "SUDOers LDAP container"
-The \fIsudoers\fR configuration is contained in the \f(CW\*(C`ou=SUDOers\*(C'\fR \s-1LDAP\s0
-container.
-.PP
-Sudo first looks for the \f(CW\*(C`cn=default\*(C'\fR entry in the SUDOers container.
-If found, the multi-valued \f(CW\*(C`sudoOption\*(C'\fR attribute is parsed in the
-same manner as a global \f(CW\*(C`Defaults\*(C'\fR line in \fI/etc/sudoers\fR.  In
-the following example, the \f(CW\*(C`SSH_AUTH_SOCK\*(C'\fR variable will be preserved
-in the environment for all users.
-.PP
-.Vb 6
-\&    dn: cn=defaults,ou=SUDOers,dc=example,dc=com
-\&    objectClass: top
-\&    objectClass: sudoRole
-\&    cn: defaults
-\&    description: Default sudoOption\*(Aqs go here
-\&    sudoOption: env_keep+=SSH_AUTH_SOCK
-.Ve
-.PP
-The equivalent of a sudoer in \s-1LDAP\s0 is a \f(CW\*(C`sudoRole\*(C'\fR.  It consists of
-the following attributes:
-.IP "\fBsudoUser\fR" 4
-.IX Item "sudoUser"
-A user name, user \s-1ID\s0 (prefixed with \f(CW\*(Aq#\*(Aq\fR), Unix group (prefixed with
-\&\f(CW\*(Aq%\*(Aq\fR), Unix group \s-1ID\s0 (prefixed with \f(CW\*(Aq%#\*(Aq\fR), or user netgroup
-(prefixed with \f(CW\*(Aq+\*(Aq\fR).
-.IP "\fBsudoHost\fR" 4
-.IX Item "sudoHost"
-A host name, \s-1IP\s0 address, \s-1IP\s0 network, or host netgroup (prefixed
-with a \f(CW\*(Aq+\*(Aq\fR).
-The special value \f(CW\*(C`ALL\*(C'\fR will match any host.
-.IP "\fBsudoCommand\fR" 4
-.IX Item "sudoCommand"
-A Unix command with optional command line arguments, potentially
-including globbing characters (aka wild cards).
-The special value \f(CW\*(C`ALL\*(C'\fR will match any command.
-If a command is prefixed with an exclamation point \f(CW\*(Aq!\*(Aq\fR, the
-user will be prohibited from running that command.
-.IP "\fBsudoOption\fR" 4
-.IX Item "sudoOption"
+to have multiple users listed in a
+\fRsudoRole\fR.
+Instead of defining a Cmnd_Alias that is referenced by multiple users,
+one can create a
+\fRsudoRole\fR
+that contains the commands and assign multiple users to it.
+.SS "SUDOers LDAP container"
+The
+\fIsudoers\fR
+configuration is contained in the
+\fRou=SUDOers\fR
+LDAP container.
+.PP
+Sudo first looks for the
+\fRcn=defaults\fR
+entry in the SUDOers container.
+If found, the multi-valued
+\fRsudoOption\fR
+attribute is parsed in the same manner as a global
+\fRDefaults\fR
+line in
+\fI/etc/sudoers\fR.
+In the following example, the
+\fRSSH_AUTH_SOCK\fR
+variable will be preserved in the environment for all users.
+.nf
+.sp
+.RS 4n
+dn: cn=defaults,ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: sudoRole
+cn: defaults
+description: Default sudoOption's go here
+sudoOption: env_keep+=SSH_AUTH_SOCK
+.RE
+.fi
+.PP
+The equivalent of a sudoer in LDAP is a
+\fRsudoRole\fR.
+It consists of the following attributes:
+.TP 6n
+\fBsudoUser\fR
+A user name, user ID (prefixed with
+\(oq#\(cq),
+Unix group name or ID (prefixed with
+\(oq%\(cq
+or
+\(oq%#\(cq
+respectively), user netgroup (prefixed with
+\(oq+\(cq),
+or non-Unix group name or ID (prefixed with
+\(oq%:\(cq
+or
+\(oq%:#\(cq
+respectively).
+User netgroups are matched using the user and domain members only;
+the host member is not used when matching.
+Non-Unix group support is only available when an appropriate
+\fIgroup_plugin\fR
+is defined in the global
+\fIdefaults\fR
+\fRsudoRole\fR
+object.
+.TP 6n
+\fBsudoHost\fR
+A host name, IP address, IP network, or host netgroup (prefixed with a
+\(oq+\(cq).
+The special value
+\fRALL\fR
+will match any host.
+Host netgroups are matched using the host (both qualified and unqualified)
+and domain members only; the user member is not used when matching.
+.TP 6n
+\fBsudoCommand\fR
+A fully-qualified Unix command name with optional command line arguments,
+potentially including globbing characters (aka wild cards).
+If a command name is preceded by an exclamation point,
+\(oq\&!\(cq,
+the user will be prohibited from running that command.
+.sp
+The built-in command
+\(Lq\fRsudoedit\fR\(Rq
+is used to permit a user to run
+\fBsudo\fR
+with the
+\fB\-e\fR
+option (or as
+\fBsudoedit\fR).
+It may take command line arguments just as a normal command does.
+Note that
+\(Lq\fRsudoedit\fR\(Rq
+is a command built into
+\fBsudo\fR
+itself and must be specified in without a leading path.
+.sp
+The special value
+\fRALL\fR
+will match any command.
+.sp
+If a command name is prefixed with a SHA-2 digest, it will
+only be allowed if the digest matches.
+This may be useful in situations where the user invoking
+\fBsudo\fR
+has write access to the command or its parent directory.
+The following digest formats are supported: sha224, sha256, sha384 and sha512.
+The digest name must be followed by a colon
+(\(oq:\&\(cq)
+and then the actual digest, in either hex or base64 format.
+For example, given the following value for sudoCommand:
+.nf
+.sp
+.RS 10n
+sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ /bin/ls
+.RE
+.fi
+.RS 6n
+.sp
+The user may only run
+\fI/bin/ls\fR
+if its sha224 digest matches the specified value.
+Command digests are only supported by version 1.8.7 or higher.
+.RE
+.TP 6n
+\fBsudoOption\fR
 Identical in function to the global options described above, but
-specific to the \f(CW\*(C`sudoRole\*(C'\fR in which it resides.
-.IP "\fBsudoRunAsUser\fR" 4
-.IX Item "sudoRunAsUser"
-A user name or uid (prefixed with \f(CW\*(Aq#\*(Aq\fR) that commands may be run
-as or a Unix group (prefixed with a \f(CW\*(Aq%\*(Aq\fR) or user netgroup (prefixed
-with a \f(CW\*(Aq+\*(Aq\fR) that contains a list of users that commands may be
-run as.
-The special value \f(CW\*(C`ALL\*(C'\fR will match any user.
-.Sp
-The \f(CW\*(C`sudoRunAsUser\*(C'\fR attribute is only available in \fBsudo\fR versions
-1.7.0 and higher.  Older versions of \fBsudo\fR use the \f(CW\*(C`sudoRunAs\*(C'\fR
+specific to the
+\fRsudoRole\fR
+in which it resides.
+.TP 6n
+\fBsudoRunAsUser\fR
+A user name or uid (prefixed with
+\(oq#\(cq)
+that commands may be run as or a Unix group (prefixed with a
+\(oq%\(cq)
+or user netgroup (prefixed with a
+\(oq+\(cq)
+that contains a list of users that commands may be run as.
+The special value
+\fRALL\fR
+will match any user.
+.sp
+The
+\fRsudoRunAsUser\fR
+attribute is only available in
+\fBsudo\fR
+versions
+1.7.0 and higher.
+Older versions of
+\fBsudo\fR
+use the
+\fRsudoRunAs\fR
 attribute instead.
-.IP "\fBsudoRunAsGroup\fR" 4
-.IX Item "sudoRunAsGroup"
-A Unix group or gid (prefixed with \f(CW\*(Aq#\*(Aq\fR) that commands may be run as.
-The special value \f(CW\*(C`ALL\*(C'\fR will match any group.
-.Sp
-The \f(CW\*(C`sudoRunAsGroup\*(C'\fR attribute is only available in \fBsudo\fR versions
+.TP 6n
+\fBsudoRunAsGroup\fR
+A Unix group or gid (prefixed with
+\(oq#\(cq)
+that commands may be run as.
+The special value
+\fRALL\fR
+will match any group.
+.sp
+The
+\fRsudoRunAsGroup\fR
+attribute is only available in
+\fBsudo\fR
+versions
 1.7.0 and higher.
-.IP "\fBsudoNotBefore\fR" 4
-.IX Item "sudoNotBefore"
-A timestamp in the form \f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR that can be used to provide
-a start date/time for when the \f(CW\*(C`sudoRole\*(C'\fR will be valid.  If
-multiple \f(CW\*(C`sudoNotBefore\*(C'\fR entries are present, the earliest is used.
-Note that timestamps must be in Coordinated Universal Time (\s-1UTC\s0),
-not the local timezone.  The minute and seconds portions are optional,
-but some \s-1LDAP\s0 servers require that they be present (contrary to the \s-1RFC\s0).
-.Sp
-The \f(CW\*(C`sudoNotBefore\*(C'\fR attribute is only available in \fBsudo\fR versions
-1.7.5 and higher and must be explicitly enabled via the \fB\s-1SUDOERS_TIMED\s0\fR
-option in \fI/etc/ldap.conf\fR.
-.IP "\fBsudoNotAfter\fR" 4
-.IX Item "sudoNotAfter"
-A timestamp in the form \f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR that indicates an expiration
-date/time, after which the \f(CW\*(C`sudoRole\*(C'\fR will no longer be valid.  If
-multiple \f(CW\*(C`sudoNotBefore\*(C'\fR entries are present, the last one is used.
-Note that timestamps must be in Coordinated Universal Time (\s-1UTC\s0),
-not the local timezone.  The minute and seconds portions are optional,
-but some \s-1LDAP\s0 servers require that they be present (contrary to the \s-1RFC\s0).
-.Sp
-The \f(CW\*(C`sudoNotAfter\*(C'\fR attribute is only available in \fBsudo\fR versions
-1.7.5 and higher and must be explicitly enabled via the \fB\s-1SUDOERS_TIMED\s0\fR
-option in \fI/etc/ldap.conf\fR.
-.IP "\fBsudoOrder\fR" 4
-.IX Item "sudoOrder"
-The \f(CW\*(C`sudoRole\*(C'\fR entries retrieved from the \s-1LDAP\s0 directory have no
-inherent order.  The \f(CW\*(C`sudoOrder\*(C'\fR attribute is an integer (or
-floating point value for \s-1LDAP\s0 servers that support it) that is used
-to sort the matching entries.  This allows LDAP-based sudoers entries
-to more closely mimic the behaviour of the sudoers file, where the
-of the entries influences the result.  If multiple entries match,
-the entry with the highest \f(CW\*(C`sudoOrder\*(C'\fR attribute is chosen.  This
-corresponds to the \*(L"last match\*(R" behavior of the sudoers file.  If
-the \f(CW\*(C`sudoOrder\*(C'\fR attribute is not present, a value of 0 is assumed.
-.Sp
-The \f(CW\*(C`sudoOrder\*(C'\fR attribute is only available in \fBsudo\fR versions
-1.7.5 and higher.
+.TP 6n
+\fBsudoNotBefore\fR
+A timestamp in the form
+\fRyyyymmddHHMMSSZ\fR
+that can be used to provide a start date/time for when the
+\fRsudoRole\fR
+will be valid.
+If multiple
+\fRsudoNotBefore\fR
+entries are present, the earliest is used.
+Note that timestamps must be in Coordinated Universal Time (UTC),
+not the local timezone.
+The minute and seconds portions are optional, but some LDAP servers
+require that they be present (contrary to the RFC).
+.sp
+The
+\fRsudoNotBefore\fR
+attribute is only available in
+\fBsudo\fR
+versions 1.7.5 and higher and must be explicitly enabled via the
+\fBSUDOERS_TIMED\fR
+option in
+\fI/etc/ldap.conf\fR.
+.TP 6n
+\fBsudoNotAfter\fR
+A timestamp in the form
+\fRyyyymmddHHMMSSZ\fR
+that indicates an expiration date/time, after which the
+\fRsudoRole\fR
+will no longer be valid.
+If multiple
+\fRsudoNotAfter\fR
+entries are present, the last one is used.
+Note that timestamps must be in Coordinated Universal Time (UTC),
+not the local timezone.
+The minute and seconds portions are optional, but some LDAP servers
+require that they be present (contrary to the RFC).
+.sp
+The
+\fRsudoNotAfter\fR
+attribute is only available in
+\fBsudo\fR
+versions
+1.7.5 and higher and must be explicitly enabled via the
+\fBSUDOERS_TIMED\fR
+option in
+\fI/etc/ldap.conf\fR.
+.TP 6n
+\fBsudoOrder\fR
+The
+\fRsudoRole\fR
+entries retrieved from the LDAP directory have no inherent order.
+The
+\fRsudoOrder\fR
+attribute is an integer (or floating point value for LDAP servers
+that support it) that is used to sort the matching entries.
+This allows LDAP-based sudoers entries to more closely mimic the behavior
+of the sudoers file, where the order of the entries influences the result.
+If multiple entries match, the entry with the highest
+\fRsudoOrder\fR
+attribute is chosen.
+This corresponds to the
+\(Lqlast match\(Rq
+behavior of the sudoers file.
+If the
+\fRsudoOrder\fR
+attribute is not present, a value of 0 is assumed.
+.sp
+The
+\fRsudoOrder\fR
+attribute is only available in
+\fBsudo\fR
+versions 1.7.5 and higher.
 .PP
 Each attribute listed above should contain a single value, but there
-may be multiple instances of each attribute type.  A \f(CW\*(C`sudoRole\*(C'\fR must
-contain at least one \f(CW\*(C`sudoUser\*(C'\fR, \f(CW\*(C`sudoHost\*(C'\fR and \f(CW\*(C`sudoCommand\*(C'\fR.
+may be multiple instances of each attribute type.
+A
+\fRsudoRole\fR
+must contain at least one
+\fRsudoUser\fR,
+\fRsudoHost\fR
+and
+\fRsudoCommand\fR.
 .PP
 The following example allows users in group wheel to run any command
-on any host via \fBsudo\fR:
-.PP
-.Vb 7
-\&    dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
-\&    objectClass: top
-\&    objectClass: sudoRole
-\&    cn: %wheel
-\&    sudoUser: %wheel
-\&    sudoHost: ALL
-\&    sudoCommand: ALL
-.Ve
-.SS "Anatomy of \s-1LDAP\s0 sudoers lookup"
-.IX Subsection "Anatomy of LDAP sudoers lookup"
-When looking up a sudoer using \s-1LDAP\s0 there are only two or three
-\&\s-1LDAP\s0 queries per invocation.  The first query is to parse the global
-options.  The second is to match against the user's name and the
-groups that the user belongs to.  (The special \s-1ALL\s0 tag is matched
-in this query too.)  If no match is returned for the user's name
-and groups, a third query returns all entries containing user
-netgroups and checks to see if the user belongs to any of them.
-.PP
-If timed entries are enabled with the \fB\s-1SUDOERS_TIMED\s0\fR configuration
-directive, the \s-1LDAP\s0 queries include a subfilter that limits retrieval
-to entries that satisfy the time constraints, if any.
-.SS "Differences between \s-1LDAP\s0 and non-LDAP sudoers"
-.IX Subsection "Differences between LDAP and non-LDAP sudoers"
+on any host via
+\fBsudo\fR:
+.nf
+.sp
+.RS 4n
+dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: sudoRole
+cn: %wheel
+sudoUser: %wheel
+sudoHost: ALL
+sudoCommand: ALL
+.RE
+.fi
+.SS "Anatomy of LDAP sudoers lookup"
+When looking up a sudoer using LDAP there are only two or three
+LDAP queries per invocation.
+The first query is to parse the global options.
+The second is to match against the user's name and the groups that
+the user belongs to.
+(The special
+\fRALL\fR
+tag is matched in this query too.)
+If no match is returned for the user's name and groups, a third
+query returns all entries containing user netgroups and other
+non-Unix groups and checks to see if the user belongs to any of them.
+.PP
+If timed entries are enabled with the
+\fBSUDOERS_TIMED\fR
+configuration directive, the LDAP queries include a sub-filter that
+limits retrieval to entries that satisfy the time constraints, if any.
+.PP
+If the
+\fBNETGROUP_BASE\fR
+configuration directive is present (see
+\fIConfiguring ldap.conf\fR
+below), queries are performed to determine
+the list of netgroups the user belongs to before the sudoers query.
+This makes it possible to include netgroups in the sudoers query
+string in the same manner as Unix groups.
+The third query mentioned above is not performed unless a group provider
+plugin is also configured.
+The actual LDAP queries performed by
+\fBsudo\fR
+are as follows:
+.TP 5n
+1.\&
+Match all
+\fRnisNetgroup\fR
+records with a
+\fRnisNetgroupTriple\fR
+containing the user, host and NIS domain.
+The query will match
+\fRnisNetgroupTriple\fR
+entries with either the short or long form of the host name or
+no host name specified in the tuple.
+If the NIS domain is set, the query will match only match entries
+that include the domain or for which there is no domain present.
+If the NIS domain is
+\fInot\fR
+set, a wildcard is used to match any domain name but be aware that the
+NIS schema used by some LDAP servers may not support wild cards for
+\fRnisNetgroupTriple\fR.
+.TP 5n
+2.\&
+Repeated queries are performed to find any nested
+\fRnisNetgroup\fR
+records with a
+\fRmemberNisNetgroup\fR
+entry that refers to an already-matched record.
+.PP
+For sites with a large number of netgroups, using
+\fBNETGROUP_BASE\fR
+can significantly speed up
+\fBsudo\fR's
+execution time.
+.SS "Differences between LDAP and non-LDAP sudoers"
 There are some subtle differences in the way sudoers is handled
-once in \s-1LDAP\s0.  Probably the biggest is that according to the \s-1RFC\s0,
-\&\s-1LDAP\s0 ordering is arbitrary and you cannot expect that Attributes
-and Entries are returned in any specific order.
+once in LDAP.
+Probably the biggest is that according to the RFC, LDAP ordering
+is arbitrary and you cannot expect that Attributes and Entries are
+returned in any specific order.
 .PP
 The order in which different entries are applied can be controlled
-using the \f(CW\*(C`sudoOrder\*(C'\fR attribute, but there is no way to guarantee
-the order of attributes within a specific entry.  If there are
-conflicting command rules in an entry, the negative takes precedence.
+using the
+\fRsudoOrder\fR
+attribute, but there is no way to guarantee the order of attributes
+within a specific entry.
+If there are conflicting command rules in an entry, the negative
+takes precedence.
 This is called paranoid behavior (not necessarily the most specific
 match).
 .PP
 Here is an example:
-.PP
-.Vb 5
-\&    # /etc/sudoers:
-\&    # Allow all commands except shell
-\&    johnny  ALL=(root) ALL,!/bin/sh
-\&    # Always allows all commands because ALL is matched last
-\&    puddles ALL=(root) !/bin/sh,ALL
-\&
-\&    # LDAP equivalent of johnny
-\&    # Allows all commands except shell
-\&    dn: cn=role1,ou=Sudoers,dc=my\-domain,dc=com
-\&    objectClass: sudoRole
-\&    objectClass: top
-\&    cn: role1
-\&    sudoUser: johnny
-\&    sudoHost: ALL
-\&    sudoCommand: ALL
-\&    sudoCommand: !/bin/sh
-\&
-\&    # LDAP equivalent of puddles
-\&    # Notice that even though ALL comes last, it still behaves like
-\&    # role1 since the LDAP code assumes the more paranoid configuration
-\&    dn: cn=role2,ou=Sudoers,dc=my\-domain,dc=com
-\&    objectClass: sudoRole
-\&    objectClass: top
-\&    cn: role2
-\&    sudoUser: puddles
-\&    sudoHost: ALL
-\&    sudoCommand: !/bin/sh
-\&    sudoCommand: ALL
-.Ve
+.nf
+.sp
+.RS 4n
+# /etc/sudoers:
+# Allow all commands except shell
+johnny  ALL=(root) ALL,!/bin/sh
+# Always allows all commands because ALL is matched last
+puddles ALL=(root) !/bin/sh,ALL
+
+# LDAP equivalent of johnny
+# Allows all commands except shell
+dn: cn=role1,ou=Sudoers,dc=my-domain,dc=com
+objectClass: sudoRole
+objectClass: top
+cn: role1
+sudoUser: johnny
+sudoHost: ALL
+sudoCommand: ALL
+sudoCommand: !/bin/sh
+
+# LDAP equivalent of puddles
+# Notice that even though ALL comes last, it still behaves like
+# role1 since the LDAP code assumes the more paranoid configuration
+dn: cn=role2,ou=Sudoers,dc=my-domain,dc=com
+objectClass: sudoRole
+objectClass: top
+cn: role2
+sudoUser: puddles
+sudoHost: ALL
+sudoCommand: !/bin/sh
+sudoCommand: ALL
+.RE
+.fi
 .PP
 Another difference is that negations on the Host, User or Runas are
-currently ignored.  For example, the following attributes do not
-behave the way one might expect.
-.PP
-.Vb 3
-\&    # does not match all but joe
-\&    # rather, does not match anyone
-\&    sudoUser: !joe
-\&
-\&    # does not match all but joe
-\&    # rather, matches everyone including Joe
-\&    sudoUser: ALL
-\&    sudoUser: !joe
-\&
-\&    # does not match all but web01
-\&    # rather, matches all hosts including web01
-\&    sudoHost: ALL
-\&    sudoHost: !web01
-.Ve
-.SS "Sudoers Schema"
-.IX Subsection "Sudoers Schema"
-In order to use \fBsudo\fR's \s-1LDAP\s0 support, the \fBsudo\fR schema must be
-installed on your \s-1LDAP\s0 server.  In addition, be sure to index the
-\&'sudoUser' attribute.
-.PP
-Three versions of the schema: one for OpenLDAP servers (\fIschema.OpenLDAP\fR),
-one for Netscape-derived servers (\fIschema.iPlanet\fR), and one for
-Microsoft Active Directory (\fIschema.ActiveDirectory\fR) may
-be found in the \fBsudo\fR distribution.
-.PP
-The schema for \fBsudo\fR in OpenLDAP form is included in the \s-1EXAMPLES\s0
+currently ignored.
+For example, the following attributes do not behave the way one might expect.
+.nf
+.sp
+.RS 4n
+# does not match all but joe
+# rather, does not match anyone
+sudoUser: !joe
+
+# does not match all but joe
+# rather, matches everyone including Joe
+sudoUser: ALL
+sudoUser: !joe
+
+# does not match all but web01
+# rather, matches all hosts including web01
+sudoHost: ALL
+sudoHost: !web01
+.RE
+.fi
+.SS "Sudoers schema"
+In order to use
+\fBsudo\fR's
+LDAP support, the
+\fBsudo\fR
+schema must be
+installed on your LDAP server.
+In addition, be sure to index the
+\fRsudoUser\fR
+attribute.
+.PP
+Three versions of the schema: one for OpenLDAP servers
+(\fIschema.OpenLDAP\fR),
+one for Netscape-derived servers
+(\fIschema.iPlanet\fR),
+and one for Microsoft Active Directory
+(\fIschema.ActiveDirectory\fR)
+may be found in the
+\fBsudo\fR
+distribution.
+.PP
+The schema for
+\fBsudo\fR
+in OpenLDAP form is also included in the
+\fIEXAMPLES\fR
 section.
 .SS "Configuring ldap.conf"
-.IX Subsection "Configuring ldap.conf"
-Sudo reads the \fI/etc/ldap.conf\fR file for LDAP-specific configuration.
-Typically, this file is shared amongst different LDAP-aware clients.
-As such, most of the settings are not \fBsudo\fR\-specific.  Note that
-\&\fBsudo\fR parses \fI/etc/ldap.conf\fR itself and may support options
-that differ from those described in the \fIldap.conf\fR\|(5) manual.
+Sudo reads the
+\fI/etc/ldap.conf\fR
+file for LDAP-specific configuration.
+Typically, this file is shared between different LDAP-aware clients.
+As such, most of the settings are not
+\fBsudo\fR-specific.
+Note that
+\fBsudo\fR
+parses
+\fI/etc/ldap.conf\fR
+itself and may support options that differ from those described in the
+system's
+ldap.conf(5)
+manual.
+The path to
+\fIldap.conf\fR
+may be overridden via the
+\fIldap_conf\fR
+plugin argument in
+sudo.conf(5).
 .PP
 Also note that on systems using the OpenLDAP libraries, default
-values specified in \fI/etc/openldap/ldap.conf\fR or the user's
-\&\fI.ldaprc\fR files are not used.
-.PP
-Only those options explicitly listed in \fI/etc/ldap.conf\fR as being
-supported by \fBsudo\fR are honored.  Configuration options are listed
-below in upper case but are parsed in a case-independent manner.
-.IP "\fB\s-1URI\s0\fR ldap[s]://[hostname[:port]] ..." 4
-.IX Item "URI ldap[s]://[hostname[:port]] ..."
-Specifies a whitespace-delimited list of one or more URIs describing
-the \s-1LDAP\s0 server(s) to connect to.  The \fIprotocol\fR may be either
-\&\fBldap\fR or \fBldaps\fR, the latter being for servers that support \s-1TLS\s0
-(\s-1SSL\s0) encryption.  If no \fIport\fR is specified, the default is port
-389 for \f(CW\*(C`ldap://\*(C'\fR or port 636 for \f(CW\*(C`ldaps://\*(C'\fR.  If no \fIhostname\fR
-is specified, \fBsudo\fR will connect to \fBlocalhost\fR.  Multiple \fB\s-1URI\s0\fR
-lines are treated identically to a \fB\s-1URI\s0\fR line containing multiple
-entries.  Only systems using the OpenSSL libraries support the
-mixing of \f(CW\*(C`ldap://\*(C'\fR and \f(CW\*(C`ldaps://\*(C'\fR URIs.  The Netscape-derived
-libraries used on most commercial versions of Unix are only capable
-of supporting one or the other.
-.IP "\fB\s-1HOST\s0\fR name[:port] ..." 4
-.IX Item "HOST name[:port] ..."
-If no \fB\s-1URI\s0\fR is specified, the \fB\s-1HOST\s0\fR parameter specifies a
-whitespace-delimited list of \s-1LDAP\s0 servers to connect to.  Each host
-may include an optional \fIport\fR separated by a colon (':').  The
-\&\fB\s-1HOST\s0\fR parameter is deprecated in favor of the \fB\s-1URI\s0\fR specification
-and is included for backwards compatibility.
-.IP "\fB\s-1PORT\s0\fR port_number" 4
-.IX Item "PORT port_number"
-If no \fB\s-1URI\s0\fR is specified, the \fB\s-1PORT\s0\fR parameter specifies the
-default port to connect to on the \s-1LDAP\s0 server if a \fB\s-1HOST\s0\fR parameter
-does not specify the port itself.  If no \fB\s-1PORT\s0\fR parameter is used,
-the default is port 389 for \s-1LDAP\s0 and port 636 for \s-1LDAP\s0 over \s-1TLS\s0
-(\s-1SSL\s0).  The \fB\s-1PORT\s0\fR parameter is deprecated in favor of the \fB\s-1URI\s0\fR
-specification and is included for backwards compatibility.
-.IP "\fB\s-1BIND_TIMELIMIT\s0\fR seconds" 4
-.IX Item "BIND_TIMELIMIT seconds"
-The \fB\s-1BIND_TIMELIMIT\s0\fR parameter specifies the amount of time, in seconds,
-to wait while trying to connect to an \s-1LDAP\s0 server.  If multiple \fB\s-1URI\s0\fRs or
-\&\fB\s-1HOST\s0\fRs are specified, this is the amount of time to wait before trying
+values specified in
+\fI/etc/openldap/ldap.conf\fR
+or the user's
+\fI.ldaprc\fR
+files are not used.
+.PP
+Only those options explicitly listed in
+\fI/etc/ldap.conf\fR
+as being supported by
+\fBsudo\fR
+are honored.
+Configuration options are listed below in upper case but are parsed
+in a case-independent manner.
+.PP
+The pound sign
+(\(oq#\(cq)
+is used to indicate a comment.
+Both the comment character and any text after it, up to the end of
+the line, are ignored.
+Long lines can be continued with a backslash
+(\(oq\e\(cq)
+as the last character on the line.
+Note that leading white space is removed from the beginning of lines
+even when the continuation character is used.
+.TP 6n
+\fBBIND_TIMELIMIT\fR \fIseconds\fR
+The
+\fBBIND_TIMELIMIT\fR
+parameter specifies the amount of time, in seconds, to wait while trying
+to connect to an LDAP server.
+If multiple
+\fBURI\fRs
+or
+\fBHOST\fRs
+are specified, this is the amount of time to wait before trying
 the next one in the list.
-.IP "\fB\s-1NETWORK_TIMEOUT\s0\fR seconds" 4
-.IX Item "NETWORK_TIMEOUT seconds"
-An alias for \fB\s-1BIND_TIMELIMIT\s0\fR for OpenLDAP compatibility.
-.IP "\fB\s-1TIMELIMIT\s0\fR seconds" 4
-.IX Item "TIMELIMIT seconds"
-The \fB\s-1TIMELIMIT\s0\fR parameter specifies the amount of time, in seconds,
-to wait for a response to an \s-1LDAP\s0 query.
-.IP "\fB\s-1TIMEOUT\s0\fR seconds" 4
-.IX Item "TIMEOUT seconds"
-The \fB\s-1TIMEOUT\s0\fR parameter specifies the amount of time, in seconds,
-to wait for a response from the various \s-1LDAP\s0 APIs.
-.IP "\fB\s-1SUDOERS_BASE\s0\fR base" 4
-.IX Item "SUDOERS_BASE base"
-The base \s-1DN\s0 to use when performing \fBsudo\fR \s-1LDAP\s0 queries.  Typically
-this is of the form \f(CW\*(C`ou=SUDOers,dc=example,dc=com\*(C'\fR for the domain
-\&\f(CW\*(C`example.com\*(C'\fR.  Multiple \fB\s-1SUDOERS_BASE\s0\fR lines may be specified,
-in which case they are queried in the order specified.
-.IP "\fB\s-1SUDOERS_SEARCH_FILTER\s0\fR ldap_filter" 4
-.IX Item "SUDOERS_SEARCH_FILTER ldap_filter"
-An \s-1LDAP\s0 filter which is used to restrict the set of records returned
-when performing a \fBsudo\fR \s-1LDAP\s0 query.  Typically, this is of the
-form \f(CW\*(C`attribute=value\*(C'\fR or \f(CW\*(C`(&(attribute=value)(attribute2=value2))\*(C'\fR.
-.IP "\fB\s-1SUDOERS_TIMED\s0\fR on/true/yes/off/false/no" 4
-.IX Item "SUDOERS_TIMED on/true/yes/off/false/no"
-Whether or not to evaluate the \f(CW\*(C`sudoNotBefore\*(C'\fR and \f(CW\*(C`sudoNotAfter\*(C'\fR
-attributes that implement time-dependent sudoers entries.
-.IP "\fB\s-1SUDOERS_DEBUG\s0\fR debug_level" 4
-.IX Item "SUDOERS_DEBUG debug_level"
-This sets the debug level for \fBsudo\fR \s-1LDAP\s0 queries.  Debugging
-information is printed to the standard error.  A value of 1 results
-in a moderate amount of debugging information.  A value of 2 shows
-the results of the matches themselves.  This parameter should not
-be set in a production environment as the extra information is
-likely to confuse users.
-.IP "\fB\s-1BINDDN\s0\fR \s-1DN\s0" 4
-.IX Item "BINDDN DN"
-The \fB\s-1BINDDN\s0\fR parameter specifies the identity, in the form of a
-Distinguished Name (\s-1DN\s0), to use when performing \s-1LDAP\s0 operations.
-If not specified, \s-1LDAP\s0 operations are performed with an anonymous
-identity.  By default, most \s-1LDAP\s0 servers will allow anonymous access.
-.IP "\fB\s-1BINDPW\s0\fR secret" 4
-.IX Item "BINDPW secret"
-The \fB\s-1BINDPW\s0\fR parameter specifies the password to use when performing
-\&\s-1LDAP\s0 operations.  This is typically used in conjunction with the
-\&\fB\s-1BINDDN\s0\fR parameter.
-.IP "\fB\s-1ROOTBINDDN\s0\fR \s-1DN\s0" 4
-.IX Item "ROOTBINDDN DN"
-The \fB\s-1ROOTBINDDN\s0\fR parameter specifies the identity, in the form of
-a Distinguished Name (\s-1DN\s0), to use when performing privileged \s-1LDAP\s0
-operations, such as \fIsudoers\fR queries.  The password corresponding
-to the identity should be stored in \fI/etc/ldap.secret\fR.
-If not specified, the \fB\s-1BINDDN\s0\fR identity is used (if any).
-.IP "\fB\s-1LDAP_VERSION\s0\fR number" 4
-.IX Item "LDAP_VERSION number"
-The version of the \s-1LDAP\s0 protocol to use when connecting to the server.
+.TP 6n
+\fBBINDDN\fR \fIDN\fR
+The
+\fBBINDDN\fR
+parameter specifies the identity, in the form of a Distinguished Name (DN),
+to use when performing LDAP operations.
+If not specified, LDAP operations are performed with an anonymous identity.
+By default, most LDAP servers will allow anonymous access.
+.TP 6n
+\fBBINDPW\fR \fIsecret\fR
+The
+\fBBINDPW\fR
+parameter specifies the password to use when performing LDAP operations.
+This is typically used in conjunction with the
+\fBBINDDN\fR
+parameter.
+The
+\fIsecret\fR
+may be a plain text password or a base64-encoded string with a
+\(Lqbase64:\(Rq
+prefix.
+For example:
+.nf
+.sp
+.RS 10n
+BINDPW base64:dGVzdA==
+.RE
+.fi
+.RS 6n
+.sp
+If a plain text password is used, it should be a simple string without quotes.
+Plain text passwords may not include the comment character
+(\(oq#\(cq)
+and the escaping of special characters with a backslash
+(\(oq\e\(cq)
+is not supported.
+.RE
+.TP 6n
+\fBDEREF\fR \fInever/searching/finding/always\fR
+How alias dereferencing is to be performed when searching.
+See the
+ldap.conf(5)
+manual for a full description of this option.
+.TP 6n
+\fBHOST\fR \fIname[:port] ...\fR
+If no
+\fBURI\fR
+is specified (see below), the
+\fBHOST\fR
+parameter specifies a white space-delimited list of LDAP servers to connect to.
+Each host may include an optional
+\fIport\fR
+separated by a colon
+(\(oq:\&\(cq).
+The
+\fBHOST\fR
+parameter is deprecated in favor of the
+\fBURI\fR
+specification and is included for backwards compatibility only.
+.TP 6n
+\fBKRB5_CCNAME\fR \fIfile name\fR
+The path to the Kerberos 5 credential cache to use when authenticating
+with the remote server.
+This option is only relevant when using SASL authentication (see below).
+.TP 6n
+\fBLDAP_VERSION\fR \fInumber\fR
+The version of the LDAP protocol to use when connecting to the server.
 The default value is protocol version 3.
-.IP "\fB\s-1SSL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "SSL on/true/yes/off/false/no"
-If the \fB\s-1SSL\s0\fR parameter is set to \f(CW\*(C`on\*(C'\fR, \f(CW\*(C`true\*(C'\fR or \f(CW\*(C`yes\*(C'\fR, \s-1TLS\s0
-(\s-1SSL\s0) encryption is always used when communicating with the \s-1LDAP\s0
-server.  Typically, this involves connecting to the server on port
-636 (ldaps).
-.IP "\fB\s-1SSL\s0\fR start_tls" 4
-.IX Item "SSL start_tls"
-If the \fB\s-1SSL\s0\fR parameter is set to \f(CW\*(C`start_tls\*(C'\fR, the \s-1LDAP\s0 server
-connection is initiated normally and \s-1TLS\s0 encryption is begun before
-the bind credentials are sent.  This has the advantage of not
-requiring a dedicated port for encrypted communications.  This
-parameter is only supported by \s-1LDAP\s0 servers that honor the \f(CW\*(C`start_tls\*(C'\fR
-extension, such as the OpenLDAP server.
-.IP "\fB\s-1TLS_CHECKPEER\s0\fR on/true/yes/off/false/no" 4
-.IX Item "TLS_CHECKPEER on/true/yes/off/false/no"
-If enabled, \fB\s-1TLS_CHECKPEER\s0\fR will cause the \s-1LDAP\s0 server's \s-1TLS\s0
-certificated to be verified.  If the server's \s-1TLS\s0 certificate cannot
-be verified (usually because it is signed by an unknown certificate
-authority), \fBsudo\fR will be unable to connect to it.  If \fB\s-1TLS_CHECKPEER\s0\fR
-is disabled, no check is made.  Note that disabling the check creates
-an opportunity for man-in-the-middle attacks since the server's
-identity will not be authenticated.  If possible, the \s-1CA\s0's certificate
-should be installed locally so it can be verified.
-.IP "\fB\s-1TLS_CACERT\s0\fR file name" 4
-.IX Item "TLS_CACERT file name"
-An alias for \fB\s-1TLS_CACERTFILE\s0\fR for OpenLDAP compatibility.
-.IP "\fB\s-1TLS_CACERTFILE\s0\fR file name" 4
-.IX Item "TLS_CACERTFILE file name"
+.TP 6n
+\fBNETGROUP_BASE\fR \fIbase\fR
+The base DN to use when performing LDAP netgroup queries.
+Typically this is of the form
+\fRou=netgroup,dc=example,dc=com\fR
+for the domain
+\fRexample.com\fR.
+Multiple
+\fBNETGROUP_BASE\fR
+lines may be specified, in which case they are queried in the order specified.
+.sp
+This option can be used to query a user's netgroups directly via LDAP
+which is usually faster than fetching every
+\fRsudoRole\fR
+object containing a
+\fRsudoUser\fR
+that begins with a
+\(oq+\(cq
+prefix.
+The NIS schema used by some LDAP servers need a modificaton to
+support querying the
+\fRnisNetgroup\fR
+object by its
+\fRnisNetgroupTriple\fR
+member.
+OpenLDAP's
+\fBslapd\fR
+requires the following change to the
+\fRnisNetgroupTriple\fR
+attribute:
+.nf
+.sp
+.RS 10n
+attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
+    DESC 'Netgroup triple'
+    EQUALITY caseIgnoreIA5Match
+    SUBSTR caseIgnoreIA5SubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+.RE
+.fi
+.TP 6n
+\fBNETGROUP_SEARCH_FILTER\fR \fIldap_filter\fR
+An LDAP filter which is used to restrict the set of records returned
+when performing an LDAP netgroup query.
+Typically, this is of the
+form
+\fRattribute=value\fR
+or
+\fR(&(attribute=value)(attribute2=value2))\fR.
+The default search filter is:
+\fRobjectClass=nisNetgroup\fR.
+If
+\fIldap_filter\fR
+is omitted, no search filter will be used.
+This option is only when querying netgroups directly via LDAP.
+.TP 6n
+\fBNETWORK_TIMEOUT\fR \fIseconds\fR
+An alias for
+\fBBIND_TIMELIMIT\fR
+provided for OpenLDAP compatibility.
+.TP 6n
+\fBPORT\fR \fIport_number\fR
+If no
+\fBURI\fR
+is specified, the
+\fBPORT\fR
+parameter specifies the default port to connect to on the LDAP server if a
+\fBHOST\fR
+parameter does not specify the port itself.
+If no
+\fBPORT\fR
+parameter is used, the default is port 389 for LDAP and port 636 for LDAP
+over TLS (SSL).
+The
+\fBPORT\fR
+parameter is deprecated in favor of the
+\fBURI\fR
+specification and is included for backwards compatibility only.
+.TP 6n
+\fBROOTBINDDN\fR \fIDN\fR
+The
+\fBROOTBINDDN\fR
+parameter specifies the identity, in the form of a Distinguished Name (DN),
+to use when performing privileged LDAP operations, such as
+\fIsudoers\fR
+queries.
+The password corresponding to the identity should be stored in the
+or the path specified by the
+\fIldap_secret\fR
+plugin argument in
+sudo.conf(5),
+which defaults to
+\fI/etc/ldap.secret\fR.
+If no
+\fBROOTBINDDN\fR
+is specified, the
+\fBBINDDN\fR
+identity is used (if any).
+.TP 6n
+\fBROOTUSE_SASL\fR \fIon/true/yes/off/false/no\fR
+Enable
+\fBROOTUSE_SASL\fR
+to enable SASL authentication when connecting
+to an LDAP server from a privileged process, such as
+\fBsudo\fR.
+.TP 6n
+\fBSASL_AUTH_ID\fR \fIidentity\fR
+The SASL user name to use when connecting to the LDAP server.
+By default,
+\fBsudo\fR
+will use an anonymous connection.
+This option is only relevant when using SASL authentication.
+.TP 6n
+\fBSASL_SECPROPS\fR \fInone/properties\fR
+SASL security properties or
+\fInone\fR
+for no properties.
+See the SASL programmer's manual for details.
+This option is only relevant when using SASL authentication.
+.TP 6n
+\fBSSL\fR \fIon/true/yes/off/false/no\fR
+If the
+\fBSSL\fR
+parameter is set to
+\fRon\fR,
+\fRtrue\fR
+\fRor\fR
+\fRyes\fR,
+TLS (SSL) encryption is always used when communicating with the LDAP server.
+Typically, this involves connecting to the server on port 636 (ldaps).
+.TP 6n
+\fBSSL\fR \fIstart_tls\fR
+If the
+\fBSSL\fR
+parameter is set to
+\fRstart_tls\fR,
+the LDAP server connection is initiated normally and TLS encryption is
+begun before the bind credentials are sent.
+This has the advantage of not requiring a dedicated port for encrypted
+communications.
+This parameter is only supported by LDAP servers that honor the
+\fIstart_tls\fR
+extension, such as the OpenLDAP and Tivoli Directory servers.
+.TP 6n
+\fBSUDOERS_BASE\fR \fIbase\fR
+The base DN to use when performing
+\fBsudo\fR
+LDAP queries.
+Typically this is of the form
+\fRou=SUDOers,dc=example,dc=com\fR
+for the domain
+\fRexample.com\fR.
+Multiple
+\fBSUDOERS_BASE\fR
+lines may be specified, in which case they are queried in the order specified.
+.TP 6n
+\fBSUDOERS_DEBUG\fR \fIdebug_level\fR
+This sets the debug level for
+\fBsudo\fR
+LDAP queries.
+Debugging information is printed to the standard error.
+A value of 1 results in a moderate amount of debugging information.
+A value of 2 shows the results of the matches themselves.
+This parameter should not be set in a production environment as the
+extra information is likely to confuse users.
+.sp
+The
+\fBSUDOERS_DEBUG\fR
+parameter is deprecated and will be removed in a future release.
+The same information is now logged via the
+\fBsudo\fR
+debugging framework using the
+\(Lqldap\(Rq
+subsystem at priorities
+\fIdiag\fR
+and
+\fIinfo\fR
+for
+\fIdebug_level\fR
+values 1 and 2 respectively.
+See the
+sudo.conf(5)
+manual for details on how to configure
+\fBsudo\fR
+debugging.
+.TP 6n
+\fBSUDOERS_SEARCH_FILTER\fR \fIldap_filter\fR
+An LDAP filter which is used to restrict the set of records returned
+when performing a
+\fBsudo\fR
+LDAP query.
+Typically, this is of the
+form
+\fRattribute=value\fR
+or
+\fR(&(attribute=value)(attribute2=value2))\fR.
+The default search filter is:
+\fRobjectClass=sudoRole\fR.
+If
+\fIldap_filter\fR
+is omitted, no search filter will be used.
+.TP 6n
+\fBSUDOERS_TIMED\fR \fIon/true/yes/off/false/no\fR
+Whether or not to evaluate the
+\fRsudoNotBefore\fR
+and
+\fRsudoNotAfter\fR
+attributes that implement time-dependent sudoers entries.
+.TP 6n
+\fBTIMELIMIT\fR \fIseconds\fR
+The
+\fBTIMELIMIT\fR
+parameter specifies the amount of time, in seconds, to wait for a
+response to an LDAP query.
+.TP 6n
+\fBTIMEOUT\fR \fIseconds\fR
+The
+\fBTIMEOUT\fR
+parameter specifies the amount of time, in seconds, to wait for a
+response from the various LDAP APIs.
+.TP 6n
+\fBTLS_CACERT\fR \fIfile name\fR
+An alias for
+\fBTLS_CACERTFILE\fR
+for OpenLDAP compatibility.
+.TP 6n
+\fBTLS_CACERTFILE\fR \fIfile name\fR
 The path to a certificate authority bundle which contains the certificates
-for all the Certificate Authorities the client knows to be valid,
-e.g. \fI/etc/ssl/ca\-bundle.pem\fR.
+for all the Certificate Authorities the client knows to be valid, e.g.\&
+\fI/etc/ssl/ca-bundle.pem\fR.
 This option is only supported by the OpenLDAP libraries.
-Netscape-derived \s-1LDAP\s0 libraries use the same certificate
-database for \s-1CA\s0 and client certificates (see \fB\s-1TLS_CERT\s0\fR).
-.IP "\fB\s-1TLS_CACERTDIR\s0\fR directory" 4
-.IX Item "TLS_CACERTDIR directory"
-Similar to \fB\s-1TLS_CACERTFILE\s0\fR but instead of a file, it is a
-directory containing individual Certificate Authority certificates,
-e.g. \fI/etc/ssl/certs\fR.
-The directory specified by \fB\s-1TLS_CACERTDIR\s0\fR is checked after
-\&\fB\s-1TLS_CACERTFILE\s0\fR.
+Netscape-derived LDAP libraries use the same certificate
+database for CA and client certificates (see
+\fBTLS_CERT\fR).
+.TP 6n
+\fBTLS_CACERTDIR\fR \fIdirectory\fR
+Similar to
+\fBTLS_CACERTFILE\fR
+but instead of a file, it is a directory containing individual
+Certificate Authority certificates, e.g.\&
+\fI/etc/ssl/certs\fR.
+The directory specified by
+\fBTLS_CACERTDIR\fR
+is checked after
+\fBTLS_CACERTFILE\fR.
 This option is only supported by the OpenLDAP libraries.
-.IP "\fB\s-1TLS_CERT\s0\fR file name" 4
-.IX Item "TLS_CERT file name"
+.TP 6n
+\fBTLS_CERT\fR \fIfile name\fR
 The path to a file containing the client certificate which can
-be used to authenticate the client to the \s-1LDAP\s0 server.
-The certificate type depends on the \s-1LDAP\s0 libraries used.
-.Sp
+be used to authenticate the client to the LDAP server.
+The certificate type depends on the LDAP libraries used.
+.PP
+.RS 6n
+.PD 0
+.TP 6n
 OpenLDAP:
-    \f(CW\*(C`tls_cert /etc/ssl/client_cert.pem\*(C'\fR
-.Sp
+\fRtls_cert /etc/ssl/client_cert.pem\fR
+.PD
+.TP 6n
 Netscape-derived:
-    \f(CW\*(C`tls_cert /var/ldap/cert7.db\*(C'\fR
-.Sp
+\fRtls_cert /var/ldap/cert7.db\fR
+.TP 6n
+Tivoli Directory Server:
+Unused, the key database specified by
+\fBTLS_KEY\fR
+contains both keys and certificates.
+.sp
 When using Netscape-derived libraries, this file may also contain
 Certificate Authority certificates.
-.IP "\fB\s-1TLS_KEY\s0\fR file name" 4
-.IX Item "TLS_KEY file name"
+.PD 0
+.PP
+.RE
+.PD
+.TP 6n
+\fBTLS_CHECKPEER\fR \fIon/true/yes/off/false/no\fR
+If enabled,
+\fBTLS_CHECKPEER\fR
+will cause the LDAP server's TLS certificated to be verified.
+If the server's TLS certificate cannot be verified (usually because it
+is signed by an unknown certificate authority),
+\fBsudo\fR
+will be unable to connect to it.
+If
+\fBTLS_CHECKPEER\fR
+is disabled, no check is made.
+Note that disabling the check creates an opportunity for man-in-the-middle
+attacks since the server's identity will not be authenticated.
+If possible, the CA's certificate should be installed locally so it can
+be verified.
+This option is not supported by the Tivoli Directory Server LDAP libraries.
+.TP 6n
+\fBTLS_KEY\fR \fIfile name\fR
 The path to a file containing the private key which matches the
-certificate specified by \fB\s-1TLS_CERT\s0\fR.  The private key must not be
-password-protected.  The key type depends on the \s-1LDAP\s0 libraries
-used.
-.Sp
+certificate specified by
+\fBTLS_CERT\fR.
+The private key must not be password-protected.
+The key type depends on the LDAP libraries used.
+.PP
+.RS 6n
+.PD 0
+.TP 6n
 OpenLDAP:
-    \f(CW\*(C`tls_key /etc/ssl/client_key.pem\*(C'\fR
-.Sp
+\fRtls_key /etc/ssl/client_key.pem\fR
+.PD
+.TP 6n
 Netscape-derived:
-    \f(CW\*(C`tls_key /var/ldap/key3.db\*(C'\fR
-.IP "\fB\s-1TLS_RANDFILE\s0\fR file name" 4
-.IX Item "TLS_RANDFILE file name"
-The \fB\s-1TLS_RANDFILE\s0\fR parameter specifies the path to an entropy
-source for systems that lack a random device.  It is generally used
-in conjunction with \fIprngd\fR or \fIegd\fR.
-This option is only supported by the OpenLDAP libraries.
-.IP "\fB\s-1TLS_CIPHERS\s0\fR cipher list" 4
-.IX Item "TLS_CIPHERS cipher list"
-The \fB\s-1TLS_CIPHERS\s0\fR parameter allows the administer to restrict
-which encryption algorithms may be used for \s-1TLS\s0 (\s-1SSL\s0) connections.
-See the OpenSSL manual for a list of valid ciphers.
+\fRtls_key /var/ldap/key3.db\fR
+.TP 6n
+Tivoli Directory Server:
+\fRtls_key /usr/ldap/ldapkey.kdb\fR
+.PD 0
+.PP
+When using Tivoli LDAP libraries, this file may also contain
+Certificate Authority and client certificates and may be encrypted.
+.RE
+.PD
+.TP 6n
+\fBTLS_CIPHERS\fR \fIcipher list\fR
+The
+\fBTLS_CIPHERS\fR
+parameter allows the administer to restrict which encryption algorithms
+may be used for TLS (SSL) connections.
+See the OpenLDAP or Tivoli Directory Server manual for a list of valid
+ciphers.
+This option is not supported by Netscape-derived libraries.
+.TP 6n
+\fBTLS_KEYPW\fR \fIsecret\fR
+The
+\fBTLS_KEYPW\fR
+contains the password used to decrypt the key database on clients
+using the Tivoli Directory Server LDAP library.
+The
+\fIsecret\fR
+may be a plain text password or a base64-encoded string with a
+\(Lqbase64:\(Rq
+prefix.
+For example:
+.nf
+.sp
+.RS 10n
+TLS_KEYPW base64:dGVzdA==
+.RE
+.fi
+.RS 6n
+.sp
+If a plain text password is used, it should be a simple string without quotes.
+Plain text passwords may not include the comment character
+(\(oq#\(cq)
+and the escaping of special characters with a backslash
+(\(oq\e\(cq)
+is not supported.
+If this option is used,
+\fI/etc/ldap.conf\fR
+must not be world-readable to avoid exposing the password.
+Alternately, a
+\fIstash file\fR
+can be used to store the password in encrypted form (see below).
+.sp
+If no
+\fBTLS_KEYPW\fR
+is specified, a
+\fIstash file\fR
+will be used if it exists.
+The
+\fIstash file\fR
+must have the same path as the file specified by
+\fBTLS_KEY\fR,
+but use a
+\fR.sth\fR
+file extension instead of
+\fR.kdb\fR,
+e.g.\&
+\fRldapkey.sth\fR.
+The default
+\fRldapkey.kdb\fR
+that ships with Tivoli Directory Server is encrypted with the password
+\fRssl_password\fR.
+The
+\fIgsk8capicmd\fR
+utility can be used to manage the key database and create a
+\fIstash file\fR.
+This option is only supported by the Tivoli LDAP libraries.
+.RE
+.TP 6n
+\fBTLS_RANDFILE\fR \fIfile name\fR
+The
+\fBTLS_RANDFILE\fR
+parameter specifies the path to an entropy source for systems that lack
+a random device.
+It is generally used in conjunction with
+\fIprngd\fR
+or
+\fIegd\fR.
 This option is only supported by the OpenLDAP libraries.
-.IP "\fB\s-1USE_SASL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "USE_SASL on/true/yes/off/false/no"
-Enable \fB\s-1USE_SASL\s0\fR for \s-1LDAP\s0 servers that support \s-1SASL\s0 authentication.
-.IP "\fB\s-1SASL_AUTH_ID\s0\fR identity" 4
-.IX Item "SASL_AUTH_ID identity"
-The \s-1SASL\s0 user name to use when connecting to the \s-1LDAP\s0 server.
-By default, \fBsudo\fR will use an anonymous connection.
-.IP "\fB\s-1ROOTUSE_SASL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "ROOTUSE_SASL on/true/yes/off/false/no"
-Enable \fB\s-1ROOTUSE_SASL\s0\fR to enable \s-1SASL\s0 authentication when connecting
-to an \s-1LDAP\s0 server from a privileged process, such as \fBsudo\fR.
-.IP "\fB\s-1ROOTSASL_AUTH_ID\s0\fR identity" 4
-.IX Item "ROOTSASL_AUTH_ID identity"
-The \s-1SASL\s0 user name to use when \fB\s-1ROOTUSE_SASL\s0\fR is enabled.
-.IP "\fB\s-1SASL_SECPROPS\s0\fR none/properties" 4
-.IX Item "SASL_SECPROPS none/properties"
-\&\s-1SASL\s0 security properties or \fInone\fR for no properties.  See the
-\&\s-1SASL\s0 programmer's manual for details.
-.IP "\fB\s-1KRB5_CCNAME\s0\fR file name" 4
-.IX Item "KRB5_CCNAME file name"
-The path to the Kerberos 5 credential cache to use when authenticating
-with the remote server.
-.IP "\fB\s-1DEREF\s0\fR never/searching/finding/always" 4
-.IX Item "DEREF never/searching/finding/always"
-How alias dereferencing is to be performed when searching.  See the
-\&\fIldap.conf\fR\|(5) manual for a full description of this option.
+.TP 6n
+\fBURI\fR \fIldap[s]://[hostname[:port]] ...\fR
+Specifies a white space-delimited list of one or more URIs describing
+the LDAP server(s) to connect to.
+The
+\fIprotocol\fR
+may be either
+\fIldap\fR
+\fIldaps\fR,
+the latter being for servers that support TLS (SSL) encryption.
+If no
+\fIport\fR
+is specified, the default is port 389 for
+\fRldap://\fR
+or port 636 for
+\fRldaps://\fR.
+If no
+\fIhostname\fR
+is specified,
+\fBsudo\fR
+will connect to
+\fIlocalhost\fR.
+Multiple
+\fBURI\fR
+lines are treated identically to a
+\fBURI\fR
+line containing multiple entries.
+Only systems using the OpenSSL libraries support the mixing of
+\fRldap://\fR
+and
+\fRldaps://\fR
+URIs.
+Both the Netscape-derived and Tivoli LDAP libraries used on most commercial
+versions of Unix are only capable of supporting one or the other.
+.TP 6n
+\fBUSE_SASL\fR \fIon/true/yes/off/false/no\fR
+Enable
+\fBUSE_SASL\fR
+for LDAP servers that support SASL authentication.
+.TP 6n
+\fBROOTSASL_AUTH_ID\fR \fIidentity\fR
+The SASL user name to use when
+\fBROOTUSE_SASL\fR
+is enabled.
 .PP
-See the \f(CW\*(C`ldap.conf\*(C'\fR entry in the \s-1EXAMPLES\s0 section.
+See the
+\fIldap.conf\fR
+entry in the
+\fIEXAMPLES\fR
+section.
 .SS "Configuring nsswitch.conf"
-.IX Subsection "Configuring nsswitch.conf"
-Unless it is disabled at build time, \fBsudo\fR consults the Name
-Service Switch file, \fI/etc/nsswitch.conf\fR, to specify the \fIsudoers\fR
-search order.  Sudo looks for a line beginning with \f(CW\*(C`sudoers\*(C'\fR: and
-uses this to determine the search order.  Note that \fBsudo\fR does
+Unless it is disabled at build time,
+\fBsudo\fR
+consults the Name Service Switch file,
+\fI/etc/nsswitch.conf\fR,
+to specify the
+\fIsudoers\fR
+search order.
+Sudo looks for a line beginning with
+\fRsudoers\fR:
+and uses this to determine the search order.
+Note that
+\fBsudo\fR
+does
 not stop searching after the first match and later matches take
 precedence over earlier ones.
-.PP
 The following sources are recognized:
 .PP
-.Vb 2
-\&    files       read sudoers from F</etc/sudoers>
-\&    ldap        read sudoers from LDAP
-.Ve
+.RS 4n
+.PD 0
+.TP 10n
+files
+read sudoers from
+\fI/etc/sudoers\fR
+.TP 10n
+ldap
+read sudoers from LDAP
+.RE
+.PD
 .PP
-In addition, the entry \f(CW\*(C`[NOTFOUND=return]\*(C'\fR will short-circuit the
-search if the user was not found in the preceding source.
+In addition, the entry
+\fR[NOTFOUND=return]\fR
+will short-circuit the search if the user was not found in the
+preceding source.
 .PP
-To consult \s-1LDAP\s0 first followed by the local sudoers file (if it
+To consult LDAP first followed by the local sudoers file (if it
 exists), use:
+.nf
+.sp
+.RS 4n
+sudoers: ldap files
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers: ldap files
-.Ve
-.PP
-The local \fIsudoers\fR file can be ignored completely by using:
-.PP
-.Vb 1
-\&    sudoers: ldap
-.Ve
-.PP
-If the \fI/etc/nsswitch.conf\fR file is not present or there is no
-sudoers line, the following default is assumed:
+The local
+\fIsudoers\fR
+file can be ignored completely by using:
+.nf
+.sp
+.RS 4n
+sudoers: ldap
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers: files
-.Ve
+If the
+\fI/etc/nsswitch.conf\fR
+file is not present or there is no sudoers line, the following
+default is assumed:
+.nf
+.sp
+.RS 4n
+sudoers: files
+.RE
+.fi
 .PP
-Note that \fI/etc/nsswitch.conf\fR is supported even when the underlying
-operating system does not use an nsswitch.conf file.
+Note that
+\fI/etc/nsswitch.conf\fR
+is supported even when the underlying operating system does not use
+an nsswitch.conf file, except on AIX (see below).
 .SS "Configuring netsvc.conf"
-.IX Subsection "Configuring netsvc.conf"
-On \s-1AIX\s0 systems, the \fI/etc/netsvc.conf\fR file is consulted instead of
-\&\fI/etc/nsswitch.conf\fR.  \fBsudo\fR simply treats \fInetsvc.conf\fR as a
-variant of \fInsswitch.conf\fR; information in the previous section
-unrelated to the file format itself still applies.
+On AIX systems, the
+\fI/etc/netsvc.conf\fR
+file is consulted instead of
+\fI/etc/nsswitch.conf\fR.
+\fBsudo\fR
+simply treats
+\fInetsvc.conf\fR
+as a variant of
+\fInsswitch.conf\fR;
+information in the previous section unrelated to the file format
+itself still applies.
 .PP
-To consult \s-1LDAP\s0 first followed by the local sudoers file (if it
+To consult LDAP first followed by the local sudoers file (if it
 exists), use:
+.nf
+.sp
+.RS 4n
+sudoers = ldap, files
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers = ldap, files
-.Ve
-.PP
-The local \fIsudoers\fR file can be ignored completely by using:
-.PP
-.Vb 1
-\&    sudoers = ldap
-.Ve
-.PP
-To treat \s-1LDAP\s0 as authoratative and only use the local sudoers file
-if the user is not present in \s-1LDAP\s0, use:
+The local
+\fIsudoers\fR
+file can be ignored completely by using:
+.nf
+.sp
+.RS 4n
+sudoers = ldap
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers = ldap = auth, files
-.Ve
+To treat LDAP as authoritative and only use the local sudoers file
+if the user is not present in LDAP, use:
+.nf
+.sp
+.RS 4n
+sudoers = ldap = auth, files
+.RE
+.fi
 .PP
-Note that in the above example, the \f(CW\*(C`auth\*(C'\fR qualfier only affects
-user lookups; both \s-1LDAP\s0 and \fIsudoers\fR will be queried for \f(CW\*(C`Defaults\*(C'\fR
+Note that in the above example, the
+\fRauth\fR
+qualifier only affects user lookups; both LDAP and
+\fIsudoers\fR
+will be queried for
+\fRDefaults\fR
 entries.
 .PP
-If the \fI/etc/netsvc.conf\fR file is not present or there is no
-sudoers line, the following default is assumed:
-.PP
-.Vb 1
-\&    sudoers = files
-.Ve
+If the
+\fI/etc/netsvc.conf\fR
+file is not present or there is no sudoers line, the following
+default is assumed:
+.nf
+.sp
+.RS 4n
+sudoers = files
+.RE
+.fi
+.SS "Integration with sssd"
+On systems with the
+\fISystem Security Services Daemon\fR
+(SSSD) and where
+\fBsudo\fR
+has been built with SSSD support,
+it is possible to use SSSD to cache LDAP
+\fIsudoers\fR
+rules.
+To use SSSD as the
+\fIsudoers\fR
+source, you should use
+\fRsssd\fR
+instead of
+\fRldap\fR
+for the sudoers entry in
+\fI/etc/nsswitch.conf\fR.
+Note that the
+\fI/etc/ldap.conf\fR
+file is not used by the SSSD
+\fBsudo\fR
+back end.
+Please see
+sssd-sudo(5)
+for more information on configuring
+\fBsudo\fR
+to work with SSSD.
 .SH "FILES"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/ldap.conf\fR" 24
-.el .IP "\fI/etc/ldap.conf\fR" 24
-.IX Item "/etc/ldap.conf"
-\&\s-1LDAP\s0 configuration file
-.ie n .IP "\fI/etc/nsswitch.conf\fR" 24
-.el .IP "\fI/etc/nsswitch.conf\fR" 24
-.IX Item "/etc/nsswitch.conf"
+.TP 26n
+\fI/etc/ldap.conf\fR
+LDAP configuration file
+.TP 26n
+\fI/etc/nsswitch.conf\fR
 determines sudoers source order
-.ie n .IP "\fI/etc/netsvc.conf\fR" 24
-.el .IP "\fI/etc/netsvc.conf\fR" 24
-.IX Item "/etc/netsvc.conf"
-determines sudoers source order on \s-1AIX\s0
+.TP 26n
+\fI/etc/netsvc.conf\fR
+determines sudoers source order on AIX
 .SH "EXAMPLES"
-.IX Header "EXAMPLES"
 .SS "Example ldap.conf"
-.IX Subsection "Example ldap.conf"
-.Vb 10
-\&  # Either specify one or more URIs or one or more host:port pairs.
-\&  # If neither is specified sudo will default to localhost, port 389.
-\&  #
-\&  #host          ldapserver
-\&  #host          ldapserver1 ldapserver2:390
-\&  #
-\&  # Default port if host is specified without one, defaults to 389.
-\&  #port          389
-\&  #
-\&  # URI will override the host and port settings.
-\&  uri            ldap://ldapserver
-\&  #uri            ldaps://secureldapserver
-\&  #uri            ldaps://secureldapserver ldap://ldapserver
-\&  #
-\&  # The amount of time, in seconds, to wait while trying to connect to
-\&  # an LDAP server.
-\&  bind_timelimit 30
-\&  #
-\&  # The amount of time, in seconds, to wait while performing an LDAP query.
-\&  timelimit 30
-\&  #
-\&  # Must be set or sudo will ignore LDAP; may be specified multiple times.
-\&  sudoers_base   ou=SUDOers,dc=example,dc=com
-\&  #
-\&  # verbose sudoers matching from ldap
-\&  #sudoers_debug 2
-\&  #
-\&  # Enable support for time\-based entries in sudoers.
-\&  #sudoers_timed yes
-\&  #
-\&  # optional proxy credentials
-\&  #binddn        <who to search as>
-\&  #bindpw        <password>
-\&  #rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
-\&  #
-\&  # LDAP protocol version, defaults to 3
-\&  #ldap_version 3
-\&  #
-\&  # Define if you want to use an encrypted LDAP connection.
-\&  # Typically, you must also set the port to 636 (ldaps).
-\&  #ssl on
-\&  #
-\&  # Define if you want to use port 389 and switch to
-\&  # encryption before the bind credentials are sent.
-\&  # Only supported by LDAP servers that support the start_tls
-\&  # extension such as OpenLDAP.
-\&  #ssl start_tls
-\&  #
-\&  # Additional TLS options follow that allow tweaking of the
-\&  # SSL/TLS connection.
-\&  #
-\&  #tls_checkpeer yes # verify server SSL certificate
-\&  #tls_checkpeer no  # ignore server SSL certificate
-\&  #
-\&  # If you enable tls_checkpeer, specify either tls_cacertfile
-\&  # or tls_cacertdir.  Only supported when using OpenLDAP.
-\&  #
-\&  #tls_cacertfile /etc/certs/trusted_signers.pem
-\&  #tls_cacertdir  /etc/certs
-\&  #
-\&  # For systems that don\*(Aqt have /dev/random
-\&  # use this along with PRNGD or EGD.pl to seed the
-\&  # random number pool to generate cryptographic session keys.
-\&  # Only supported when using OpenLDAP.
-\&  #
-\&  #tls_randfile /etc/egd\-pool
-\&  #
-\&  # You may restrict which ciphers are used.  Consult your SSL
-\&  # documentation for which options go here.
-\&  # Only supported when using OpenLDAP.
-\&  #
-\&  #tls_ciphers <cipher\-list>
-\&  #
-\&  # Sudo can provide a client certificate when communicating to
-\&  # the LDAP server.
-\&  # Tips:
-\&  #   * Enable both lines at the same time.
-\&  #   * Do not password protect the key file.
-\&  #   * Ensure the keyfile is only readable by root.
-\&  #
-\&  # For OpenLDAP:
-\&  #tls_cert /etc/certs/client_cert.pem
-\&  #tls_key  /etc/certs/client_key.pem
-\&  #
-\&  # For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either
-\&  # a directory, in which case the files in the directory must have the
-\&  # default names (e.g. cert8.db and key4.db), or the path to the cert
-\&  # and key files themselves.  However, a bug in version 5.0 of the LDAP
-\&  # SDK will prevent specific file names from working.  For this reason
-\&  # it is suggested that tls_cert and tls_key be set to a directory,
-\&  # not a file name.
-\&  #
-\&  # The certificate database specified by tls_cert may contain CA certs
-\&  # and/or the client\*(Aqs cert.  If the client\*(Aqs cert is included, tls_key
-\&  # should be specified as well.
-\&  # For backward compatibility, "sslpath" may be used in place of tls_cert.
-\&  #tls_cert /var/ldap
-\&  #tls_key /var/ldap
-\&  #
-\&  # If using SASL authentication for LDAP (OpenSSL)
-\&  # use_sasl yes
-\&  # sasl_auth_id <SASL user name>
-\&  # rootuse_sasl yes
-\&  # rootsasl_auth_id <SASL user name for root access>
-\&  # sasl_secprops none
-\&  # krb5_ccname /etc/.ldapcache
-.Ve
+.nf
+.RS 2n
+# Either specify one or more URIs or one or more host:port pairs.
+# If neither is specified sudo will default to localhost, port 389.
+#
+#host          ldapserver
+#host          ldapserver1 ldapserver2:390
+#
+# Default port if host is specified without one, defaults to 389.
+#port          389
+#
+# URI will override the host and port settings.
+uri            ldap://ldapserver
+#uri            ldaps://secureldapserver
+#uri            ldaps://secureldapserver ldap://ldapserver
+#
+# The amount of time, in seconds, to wait while trying to connect to
+# an LDAP server.
+bind_timelimit 30
+#
+# The amount of time, in seconds, to wait while performing an LDAP query.
+timelimit 30
+#
+# Must be set or sudo will ignore LDAP; may be specified multiple times.
+sudoers_base   ou=SUDOers,dc=example,dc=com
+#
+# verbose sudoers matching from ldap
+#sudoers_debug 2
+#
+# Enable support for time-based entries in sudoers.
+#sudoers_timed yes
+#
+# optional proxy credentials
+#binddn        <who to search as>
+#bindpw        <password>
+#rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
+#
+# LDAP protocol version, defaults to 3
+#ldap_version 3
+#
+# Define if you want to use an encrypted LDAP connection.
+# Typically, you must also set the port to 636 (ldaps).
+#ssl on
+#
+# Define if you want to use port 389 and switch to
+# encryption before the bind credentials are sent.
+# Only supported by LDAP servers that support the start_tls
+# extension such as OpenLDAP.
+#ssl start_tls
+#
+# Additional TLS options follow that allow tweaking of the
+# SSL/TLS connection.
+#
+#tls_checkpeer yes # verify server SSL certificate
+#tls_checkpeer no  # ignore server SSL certificate
+#
+# If you enable tls_checkpeer, specify either tls_cacertfile
+# or tls_cacertdir.  Only supported when using OpenLDAP.
+#
+#tls_cacertfile /etc/certs/trusted_signers.pem
+#tls_cacertdir  /etc/certs
+#
+# For systems that don't have /dev/random
+# use this along with PRNGD or EGD.pl to seed the
+# random number pool to generate cryptographic session keys.
+# Only supported when using OpenLDAP.
+#
+#tls_randfile /etc/egd-pool
+#
+# You may restrict which ciphers are used.  Consult your SSL
+# documentation for which options go here.
+# Only supported when using OpenLDAP.
+#
+#tls_ciphers <cipher-list>
+#
+# Sudo can provide a client certificate when communicating to
+# the LDAP server.
+# Tips:
+#   * Enable both lines at the same time.
+#   * Do not password protect the key file.
+#   * Ensure the keyfile is only readable by root.
+#
+# For OpenLDAP:
+#tls_cert /etc/certs/client_cert.pem
+#tls_key  /etc/certs/client_key.pem
+#
+# For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either
+# a directory, in which case the files in the directory must have the
+# default names (e.g. cert8.db and key4.db), or the path to the cert
+# and key files themselves.  However, a bug in version 5.0 of the LDAP
+# SDK will prevent specific file names from working.  For this reason
+# it is suggested that tls_cert and tls_key be set to a directory,
+# not a file name.
+#
+# The certificate database specified by tls_cert may contain CA certs
+# and/or the client's cert.  If the client's cert is included, tls_key
+# should be specified as well.
+# For backward compatibility, "sslpath" may be used in place of tls_cert.
+#tls_cert /var/ldap
+#tls_key /var/ldap
+#
+# If using SASL authentication for LDAP (OpenSSL)
+# use_sasl yes
+# sasl_auth_id <SASL user name>
+# rootuse_sasl yes
+# rootsasl_auth_id <SASL user name for root access>
+# sasl_secprops none
+# krb5_ccname /etc/.ldapcache
+.RE
+.fi
 .SS "Sudo schema for OpenLDAP"
-.IX Subsection "Sudo schema for OpenLDAP"
-The following schema, in OpenLDAP format, is included with \fBsudo\fR
-source and binary distributions as \fIschema.OpenLDAP\fR.  Simply copy
-it to the schema directory (e.g. \fI/etc/openldap/schema\fR), add the
-proper \f(CW\*(C`include\*(C'\fR line in \f(CW\*(C`slapd.conf\*(C'\fR and restart \fBslapd\fR.
-.PP
-.Vb 6
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.1
-\&    NAME \*(AqsudoUser\*(Aq
-\&    DESC \*(AqUser(s) who may  run sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SUBSTR caseExactIA5SubstringsMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.2
-\&    NAME \*(AqsudoHost\*(Aq
-\&    DESC \*(AqHost(s) who may run sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SUBSTR caseExactIA5SubstringsMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.3
-\&    NAME \*(AqsudoCommand\*(Aq
-\&    DESC \*(AqCommand(s) to be executed by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.4
-\&    NAME \*(AqsudoRunAs\*(Aq
-\&    DESC \*(AqUser(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.5
-\&    NAME \*(AqsudoOption\*(Aq
-\&    DESC \*(AqOptions(s) followed by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.6
-\&    NAME \*(AqsudoRunAsUser\*(Aq
-\&    DESC \*(AqUser(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.7
-\&    NAME \*(AqsudoRunAsGroup\*(Aq
-\&    DESC \*(AqGroup(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.8
-\&    NAME \*(AqsudoNotBefore\*(Aq
-\&    DESC \*(AqStart of time interval for which the entry is valid\*(Aq
-\&    EQUALITY generalizedTimeMatch
-\&    ORDERING generalizedTimeOrderingMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.9
-\&    NAME \*(AqsudoNotAfter\*(Aq
-\&    DESC \*(AqEnd of time interval for which the entry is valid\*(Aq
-\&    EQUALITY generalizedTimeMatch
-\&    ORDERING generalizedTimeOrderingMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-\&
-\& attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
-\&     NAME \*(AqsudoOrder\*(Aq
-\&     DESC \*(Aqan integer to order the sudoRole entries\*(Aq
-\&     EQUALITY integerMatch
-\&     ORDERING integerOrderingMatch
-\&     SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-\&
-\& objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME \*(AqsudoRole\*(Aq SUP top STRUCTURAL
-\&    DESC \*(AqSudoer Entries\*(Aq
-\&    MUST ( cn )
-\&    MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
-\&          sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
-\&          sudoOrder $ description )
-\&    )
-.Ve
+The following schema, in OpenLDAP format, is included with
+\fBsudo\fR
+source and binary distributions as
+\fIschema.OpenLDAP\fR.
+Simply copy
+it to the schema directory (e.g.\&
+\fI/etc/openldap/schema\fR),
+add the proper
+\fRinclude\fR
+line in
+\fIslapd.conf\fR
+and restart
+\fBslapd\fR.
+.nf
+.sp
+.RS 2n
+attributetype ( 1.3.6.1.4.1.15953.9.1.1
+   NAME 'sudoUser'
+   DESC 'User(s) who may  run sudo'
+   EQUALITY caseExactIA5Match
+   SUBSTR caseExactIA5SubstringsMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.2
+   NAME 'sudoHost'
+   DESC 'Host(s) who may run sudo'
+   EQUALITY caseExactIA5Match
+   SUBSTR caseExactIA5SubstringsMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.3
+   NAME 'sudoCommand'
+   DESC 'Command(s) to be executed by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.4
+   NAME 'sudoRunAs'
+   DESC 'User(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.5
+   NAME 'sudoOption'
+   DESC 'Options(s) followed by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.6
+   NAME 'sudoRunAsUser'
+   DESC 'User(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.7
+   NAME 'sudoRunAsGroup'
+   DESC 'Group(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.8
+   NAME 'sudoNotBefore'
+   DESC 'Start of time interval for which the entry is valid'
+   EQUALITY generalizedTimeMatch
+   ORDERING generalizedTimeOrderingMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.9
+   NAME 'sudoNotAfter'
+   DESC 'End of time interval for which the entry is valid'
+   EQUALITY generalizedTimeMatch
+   ORDERING generalizedTimeOrderingMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
+    NAME 'sudoOrder'
+    DESC 'an integer to order the sudoRole entries'
+    EQUALITY integerMatch
+    ORDERING integerOrderingMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
+   DESC 'Sudoer Entries'
+   MUST ( cn )
+   MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
+        sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
+        sudoOrder $ description )
+   )
+.RE
+.fi
 .SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIldap.conf\fR\|(5), \fIsudoers\fR\|(5)
+ldap.conf(5),
+sssd-sudo(5),
+sudo.conf(5),
+sudoers(5)
+.SH "AUTHORS"
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
 .SH "CAVEATS"
-.IX Header "CAVEATS"
-Note that there are differences in the way that LDAP-based \fIsudoers\fR
-is parsed compared to file-based \fIsudoers\fR.  See the \*(L"Differences
-between \s-1LDAP\s0 and non-LDAP sudoers\*(R" section for more information.
+Note that there are differences in the way that LDAP-based
+\fIsudoers\fR
+is parsed compared to file-based
+\fIsudoers\fR.
+See the
+\fIDifferences between LDAP and non-LDAP sudoers\fR
+section for more information.
 .SH "BUGS"
-.IX Header "BUGS"
-If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-at http://www.sudo.ws/sudo/bugs/
+If you feel you have found a bug in
+\fBsudo\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
 .SH "SUPPORT"
-.IX Header "SUPPORT"
 Limited free support is available via the sudo-users mailing list,
-see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
 search the archives.
 .SH "DISCLAIMER"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-including, but not limited to, the implied warranties of merchantability
-and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-for complete details.
+\fBsudo\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
index 6ef4e34..ae84bf8 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo.mdoc.in
+.\"
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
-.\" 
-.nr SL 0
-.nr BA 0
-.nr LC 0
-.nr PT 5
-.\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
 .\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDO 8"
-.TH SUDO 8 "February  5, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH "SUDO" "8" "January 19, 2016" "Sudo 1.8.17" "System Manager's Manual"
 .nh
+.if n .ad l
 .SH "NAME"
-sudo, sudoedit \- execute a command as another user
+\fBsudo\fR,
+\fBsudoedit\fR
+\- execute a command as another user
 .SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-\&\fBsudo\fR \fB\-h\fR | \fB\-K\fR | \fB\-k\fR | \fB\-V\fR
-.PP
-\&\fBsudo\fR \fB\-v\fR [\fB\-AknS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
-.PP
-\&\fBsudo\fR \fB\-l[l]\fR [\fB\-AknS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-U\fR\ \fIuser\ name\fR] [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] [\fIcommand\fR]
-.PP
-\&\fBsudo\fR [\fB\-AbEHnPS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-C\fR\ \fIfd\fR]
-.if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-.if \n(SL [\fB\-r\fR\ \fIrole\fR] [\fB\-t\fR\ \fItype\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
-[\fB\s-1VAR\s0\fR=\fIvalue\fR] [\fB\-i\fR\ |\ \fB\-s\fR] [\fIcommand\fR]
-.PP
-\&\fBsudoedit\fR [\fB\-AnS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-C\fR\ \fIfd\fR]
-.if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] file ...
+.HP 5n
+\fBsudo\fR
+\fB\-h\fR\ |\ \fB\-K\fR\ |\ \fB\-k\fR\ |\ \fB\-V\fR
+.PD 0
+.HP 5n
+\fBsudo\fR
+\fB\-v\fR
+[\fB\-AknS\fR]
+[\fB\-g\fR\ \fIgroup\fR]
+[\fB\-h\fR\ \fIhost\fR]
+[\fB\-p\fR\ \fIprompt\fR]
+[\fB\-u\fR\ \fIuser\fR]
+.br
+.HP 5n
+\fBsudo\fR
+\fB\-l\fR
+[\fB\-AknS\fR]
+[\fB\-g\fR\ \fIgroup\fR]
+[\fB\-h\fR\ \fIhost\fR]
+[\fB\-p\fR\ \fIprompt\fR]
+[\fB\-U\fR\ \fIuser\fR]
+[\fB\-u\fR\ \fIuser\fR]
+[\fIcommand\fR]
+.br
+.HP 5n
+\fBsudo\fR
+[\fB\-AbEHnPS\fR]
+[\fB\-C\fR\ \fInum\fR]
+[\fB\-g\fR\ \fIgroup\fR]
+[\fB\-h\fR\ \fIhost\fR]
+[\fB\-p\fR\ \fIprompt\fR]
+[\fB\-r\fR\ \fIrole\fR]
+[\fB\-t\fR\ \fItype\fR]
+[\fB\-u\fR\ \fIuser\fR]
+[\fIVAR\fR=\fIvalue\fR]
+[\fB\-i\fR\ |\ \fB\-s\fR]
+[\fIcommand\fR]
+.br
+.HP 9n
+\fBsudoedit\fR
+[\fB\-AknS\fR]
+[\fB\-C\fR\ \fInum\fR]
+[\fB\-g\fR\ \fIgroup\fR]
+[\fB\-h\fR\ \fIhost\fR]
+[\fB\-p\fR\ \fIprompt\fR]
+[\fB\-u\fR\ \fIuser\fR]
+\fIfile\ ...\fR
+.PD
 .SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBsudo\fR allows a permitted user to execute a \fIcommand\fR as the
-superuser or another user, as specified by the security policy.
-The real and effective uid and gid are set to match those of the
-target user, as specified in the password database, and the group
-vector is initialized based on the group database (unless the \fB\-P\fR
-option was specified).
+\fBsudo\fR
+allows a permitted user to execute a
+\fIcommand\fR
+as the superuser or another user, as specified by the security
+policy.
+The invoking user's real
+(\fInot\fR
+effective) user ID is used to determine the user name with which
+to query the security policy.
 .PP
-\&\fBsudo\fR supports a plugin architecture for security policies and
-input/output logging.  Third parties can develop and distribute
-their own policy and I/O logging modules to work seamlessly with
-the \fBsudo\fR front end.  The default security policy is \fIsudoers\fR,
-which is configured via the file \fI/etc/sudoers\fR, or via
-\&\s-1LDAP\s0.  See the \s-1PLUGINS\s0 section for more information.
+\fBsudo\fR
+supports a plugin architecture for security policies and input/output
+logging.
+Third parties can develop and distribute their own policy and I/O
+logging plugins to work seamlessly with the
+\fBsudo\fR
+front end.
+The default security policy is
+\fIsudoers\fR,
+which is configured via the file
+\fI/etc/sudoers\fR,
+or via LDAP.
+See the
+\fIPlugins\fR
+section for more information.
 .PP
 The security policy determines what privileges, if any, a user has
-to run \fBsudo\fR.  The policy may require that users authenticate
-themselves with a password or another authentication mechanism.  If
-authentication is required, \fBsudo\fR will exit if the user's password
-is not entered within a configurable time limit.  This limit is
-policy-specific; the default password prompt timeout for the
-\&\fIsudoers\fR security policy is 
-.ie \n(PT \f(CW\*(C`5\*(C'\fR minutes.
-.el unlimited.
+to run
+\fBsudo\fR.
+The policy may require that users authenticate themselves with a
+password or another authentication mechanism.
+If authentication is required,
+\fBsudo\fR
+will exit if the user's password is not entered within a configurable
+time limit.
+This limit is policy-specific; the default password prompt timeout
+for the
+\fIsudoers\fR
+security policy is
+\fR5\fR
+minutes.
 .PP
 Security policies may support credential caching to allow the user
-to run \fBsudo\fR again for a period of time without requiring
-authentication.  The \fIsudoers\fR policy caches credentials for
-\&\f(CW\*(C`5\*(C'\fR minutes, unless overridden in \fIsudoers\fR\|(5).  By
-running \fBsudo\fR with the \fB\-v\fR option, a user can update the cached
-credentials without running a \fIcommand\fR.
+to run
+\fBsudo\fR
+again for a period of time without requiring authentication.
+The
+\fIsudoers\fR
+policy caches credentials for
+\fR5\fR
+minutes, unless overridden in
+sudoers(5).
+By running
+\fBsudo\fR
+with the
+\fB\-v\fR
+option, a user can update the cached credentials without running a
+\fIcommand\fR.
 .PP
-When invoked as \fBsudoedit\fR, the \fB\-e\fR option (described below),
-is implied.
+When invoked as
+\fBsudoedit\fR,
+the
+\fB\-e\fR
+option (described below), is implied.
 .PP
 Security policies may log successful and failed attempts to use
-\&\fBsudo\fR.  If an I/O plugin is configured, the running command's
-input and output may be logged as well.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-\&\fBsudo\fR accepts the following command line options:
-.IP "\-A" 12
-.IX Item "-A"
-Normally, if \fBsudo\fR requires a password, it will read it from the
-user's terminal.  If the \fB\-A\fR (\fIaskpass\fR) option is specified,
-a (possibly graphical) helper program is executed to read the user's
-password and output the password to the standard output.  If the
-\&\f(CW\*(C`SUDO_ASKPASS\*(C'\fR environment variable is set, it specifies the path
-to the helper program.  Otherwise, if \fI/etc/sudo.conf\fR
+\fBsudo\fR.
+If an I/O plugin is configured, the running command's input and
+output may be logged as well.
+.PP
+The options are as follows:
+.TP 12n
+\fB\-A\fR, \fB\--askpass\fR
+Normally, if
+\fBsudo\fR
+requires a password, it will read it from the user's terminal.
+If the
+\fB\-A\fR (\fIaskpass\fR)
+option is specified, a (possibly graphical) helper program is
+executed to read the user's password and output the password to the
+standard output.
+If the
+\fRSUDO_ASKPASS\fR
+environment variable is set, it specifies the path to the helper
+program.
+Otherwise, if
+sudo.conf(5)
 contains a line specifying the askpass program, that value will be
-used.  For example:
-.Sp
-.Vb 2
-\&    # Path to askpass helper program
-\&    Path askpass /usr/X11R6/bin/ssh\-askpass
-.Ve
-.Sp
-If no askpass program is available, sudo will exit with an error.
-.if \n(BA \{\
-.IP "\-a \fItype\fR" 12
-.IX Item "-a type"
-The \fB\-a\fR (\fIauthentication type\fR) option causes \fBsudo\fR to use the
-specified authentication type when validating the user, as allowed
-by \fI/etc/login.conf\fR.  The system administrator may specify a list
-of sudo-specific authentication methods by adding an \*(L"auth-sudo\*(R"
-entry in \fI/etc/login.conf\fR.  This option is only available on systems
-that support \s-1BSD\s0 authentication.
-\}
-.IP "\-b" 12
-.IX Item "-b"
-The \fB\-b\fR (\fIbackground\fR) option tells \fBsudo\fR to run the given
-command in the background.  Note that if you use the \fB\-b\fR
-option you cannot use shell job control to manipulate the process.
+used.
+For example:
+.nf
+.sp
+.RS 16n
+# Path to askpass helper program
+Path askpass /usr/X11R6/bin/ssh-askpass
+.RE
+.fi
+.RS 12n
+.sp
+If no askpass program is available,
+\fBsudo\fR
+will exit with an error.
+.RE
+.TP 12n
+\fB\-a\fR \fItype\fR, \fB\--auth-type\fR=\fItype\fR
+Use the specified BSD authentication
+\fItype\fR
+when validating the user, if allowed by
+\fI/etc/login.conf\fR.
+The system administrator may specify a list of sudo-specific
+authentication methods by adding an
+\(Lqauth-sudo\(Rq
+entry in
+\fI/etc/login.conf\fR.
+This option is only available on systems that support BSD authentication.
+.TP 12n
+\fB\-b\fR, \fB\--background\fR
+Run the given command in the background.
+Note that it is not possible to use shell job control to manipulate
+background processes started by
+\fBsudo\fR.
 Most interactive commands will fail to work properly in background
 mode.
-.IP "\-C \fIfd\fR" 12
-.IX Item "-C fd"
-Normally, \fBsudo\fR will close all open file descriptors other than
-standard input, standard output and standard error.  The \fB\-C\fR
-(\fIclose from\fR) option allows the user to specify a starting point
-above the standard error (file descriptor three).  Values less than
-three are not permitted.  The security policy may restrict the
-user's ability to use the \fB\-C\fR option.  The \fIsudoers\fR policy only
-permits use of the \fB\-C\fR option when the administrator has enabled
-the \fIclosefrom_override\fR option.
-.if \n(LC \{\
-.IP "\-c \fIclass\fR" 12
-.IX Item "-c class"
-The \fB\-c\fR (\fIclass\fR) option causes \fBsudo\fR to run the specified command
-with resources limited by the specified login class.  The \fIclass\fR
-argument can be either a class name as defined in \fI/etc/login.conf\fR,
-or a single '\-' character.  Specifying a \fIclass\fR of \f(CW\*(C`\-\*(C'\fR indicates
-that the command should be run restricted by the default login
-capabilities for the user the command is run as.  If the \fIclass\fR
-argument specifies an existing user class, the command must be run
-as root, or the \fBsudo\fR command must be run from a shell that is already
-root.  This option is only available on systems with \s-1BSD\s0 login classes.
-\}
-.IP "\-E" 12
-.IX Item "-E"
-The \fB\-E\fR (\fIpreserve\fR \fIenvironment\fR) option indicates to the
-security policy that the user wishes to preserve their existing
-environment variables.  The security policy may return an error if
-the \fB\-E\fR option is specified and the user does not have permission
-to preserve the environment.
-.IP "\-e" 12
-.IX Item "-e"
-The \fB\-e\fR (\fIedit\fR) option indicates that, instead of running a
-command, the user wishes to edit one or more files.  In lieu of a
-command, the string \*(L"sudoedit\*(R" is used when consulting the security
-policy.  If the user is authorized by the policy, the following
-steps are taken:
-.RS 12
-.IP "1." 4
+.TP 12n
+\fB\-C\fR \fInum\fR, \fB\--close-from\fR=\fInum\fR
+Close all file descriptors greater than or equal to
+\fInum\fR
+before executing a command.
+Values less than three are not permitted.
+By default,
+\fBsudo\fR
+will close all open file descriptors other than standard input,
+standard output and standard error when executing a command.
+The security policy may restrict the user's ability to use this option.
+The
+\fIsudoers\fR
+policy only permits use of the
+\fB\-C\fR
+option when the administrator has enabled the
+\fIclosefrom_override\fR
+option.
+.TP 12n
+\fB\-c\fR \fIclass\fR, \fB\--login-class\fR=\fIclass\fR
+Run the command with resource limits and scheduling priority of
+the specified login
+\fIclass\fR.
+The
+\fIclass\fR
+argument can be either a class name as defined in
+\fI/etc/login.conf\fR,
+or a single
+\(oq\-\(cq
+character.
+If
+\fIclass\fR
+is
+\fB-\fR,
+the default login class of the target user will be used.
+Otherwise, the command must be run as the superuser (user ID 0), or
+\fBsudo\fR
+must be run from a shell that is already running as the superuser.
+If the command is being run as a login shell, additional
+\fI/etc/login.conf\fR
+settings, such as the umask and environment variables, will
+be applied, if present.
+This option is only available on systems with BSD login classes.
+.TP 12n
+\fB\-E\fR, \fB\--preserve-env\fR
+Indicates to the security policy that the user wishes to
+preserve their existing environment variables.
+The security policy may return an error if the user does not have
+permission to preserve the environment.
+.TP 12n
+\fB\-e\fR, \fB\--edit\fR
+Edit one or more files instead of running a command.
+In lieu of a path name, the string "sudoedit" is used when consulting
+the security policy.
+If the user is authorized by the policy, the following steps are
+taken:
+.RS 16n
+.TP 5n
+1.\&
 Temporary copies are made of the files to be edited with the owner
 set to the invoking user.
-.IP "2." 4
-The editor specified by the policy is run to edit the temporary files.
-The \fIsudoers\fR policy uses the \f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR and \f(CW\*(C`EDITOR\*(C'\fR
-environment variables (in that order).  If none of \f(CW\*(C`SUDO_EDITOR\*(C'\fR,
-\&\f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR are set, the first program listed in the
-\&\fIeditor\fR \fIsudoers\fR\|(5) option is used.
-.IP "3." 4
+.TP 5n
+2.\&
+The editor specified by the policy is run to edit the temporary
+files.
+The
+\fIsudoers\fR
+policy uses the
+\fRSUDO_EDITOR\fR,
+\fRVISUAL\fR
+and
+\fREDITOR\fR
+environment variables (in that order).
+If none of
+\fRSUDO_EDITOR\fR,
+\fRVISUAL\fR
+or
+\fREDITOR\fR
+are set, the first program listed in the
+\fIeditor\fR
+sudoers(5)
+option is used.
+.TP 5n
+3.\&
 If they have been modified, the temporary files are copied back to
 their original location and the temporary versions are removed.
 .RE
-.RS 12
-.Sp
-If the specified file does not exist, it will be created.  Note
-that unlike most commands run by \fBsudo\fR, the editor is run with
-the invoking user's environment unmodified.  If, for some reason,
-\&\fBsudo\fR is unable to update a file with its edited version, the
-user will receive a warning and the edited copy will remain in a
-temporary file.
+.RS 12n
+.sp
+To help prevent the editing of unauthorized files, the following
+restrictions are enforced unless explicitly allowed by the security policy:
+.RS 16n
+.TP 4n
+\fB\(bu\fR
+Symbolic links may not be edited (version 1.8.15 and higher).
+.TP 4n
+\fB\(bu\fR
+Symbolic links along the path to be edited are not followed when the
+parent directory is writable by the invoking user unless that user
+is root (version 1.8.16 and higher).
+.TP 4n
+\fB\(bu\fR
+Files located in a directory that is writable by the invoking user may
+not be edited unless that user is root (version 1.8.16 and higher).
 .RE
-.IP "\-g \fIgroup\fR" 12
-.IX Item "-g group"
-Normally, \fBsudo\fR runs a command with the primary group set to the
-one specified by the password database for the user the command is
-being run as (by default, root).  The \fB\-g\fR (\fIgroup\fR) option causes
-\&\fBsudo\fR to run the command with the primary group set to \fIgroup\fR
-instead.  To specify a \fIgid\fR instead of a \fIgroup name\fR, use
-\&\fI#gid\fR.  When running commands as a \fIgid\fR, many shells require
-that the '#' be escaped with a backslash ('\e').  If no \fB\-u\fR option
-is specified, the command will be run as the invoking user (not
-root).  In either case, the primary group will be set to \fIgroup\fR.
-.IP "\-H" 12
-.IX Item "-H"
-The \fB\-H\fR (\fI\s-1HOME\s0\fR) option requests that the security policy set
-the \f(CW\*(C`HOME\*(C'\fR environment variable to the home directory of the target
-user (root by default) as specified by the password database.
+.sp
+Users are never allowed to edit device special files.
+.sp
+If the specified file does not exist, it will be created.
+Note that unlike most commands run by
+\fIsudo\fR,
+the editor is run with the invoking user's environment unmodified.
+If, for some reason,
+\fBsudo\fR
+is unable to update a file with its edited version, the user will
+receive a warning and the edited copy will remain in a temporary
+file.
+.RE
+.TP 12n
+\fB\-g\fR \fIgroup\fR, \fB\--group\fR=\fIgroup\fR
+Run the command with the primary group set to
+\fIgroup\fR
+instead of the primary group specified by the target
+user's password database entry.
+The
+\fIgroup\fR
+may be either a group name or a numeric group ID
+(GID)
+prefixed with the
+\(oq#\(cq
+character (e.g.
+\fR#0\fR
+for GID 0).
+When running a command as a GID, many shells require that the
+\(oq#\(cq
+be escaped with a backslash
+(\(oq\e\(cq).
+If no
+\fB\-u\fR
+option is specified, the command will be run as the invoking user.
+In either case, the primary group will be set to
+\fIgroup\fR.
+.TP 12n
+\fB\-H\fR, \fB\--set-home\fR
+Request that the security policy set the
+\fRHOME\fR
+environment variable to the home directory specified by the target
+user's password database entry.
 Depending on the policy, this may be the default behavior.
-.IP "\-h" 12
-.IX Item "-h"
-The \fB\-h\fR (\fIhelp\fR) option causes \fBsudo\fR to print a short help message
-to the standard output and exit.
-.IP "\-i [command]" 12
-.IX Item "-i [command]"
-The \fB\-i\fR (\fIsimulate initial login\fR) option runs the shell specified
-by the password database entry of the target user as a login shell.
-This means that login-specific resource files such as \f(CW\*(C`.profile\*(C'\fR
-or \f(CW\*(C`.login\*(C'\fR will be read by the shell.  If a command is specified,
-it is passed to the shell for execution via the shell's \fB\-c\fR option.
+.TP 12n
+\fB\-h\fR, \fB\--help\fR
+Display a short help message to the standard output and exit.
+.TP 12n
+\fB\-h\fR \fIhost\fR, \fB\--host\fR=\fIhost\fR
+Run the command on the specified
+\fIhost\fR
+if the security policy plugin supports remote commands.
+Note that the
+\fIsudoers\fR
+plugin does not currently support running remote commands.
+This may also be used in conjunction with the
+\fB\-l\fR
+option to list a user's privileges for the remote host.
+.TP 12n
+\fB\-i\fR, \fB\--login\fR
+Run the shell specified by the target user's password database entry
+as a login shell.
+This means that login-specific resource files such as
+\fI.profile\fR
+or
+\fI.login\fR
+will be read by the shell.
+If a command is specified, it is passed to the shell for execution
+via the shell's
+\fB\-c\fR
+option.
 If no command is specified, an interactive shell is executed.
-\&\fBsudo\fR attempts to change to that user's home directory before
-running the shell.  The security policy shall initialize the
-environment to a minimal set of variables, similar to what is present
-when a user logs in.  The \fICommand Environment\fR section in the
-\&\fIsudoers\fR\|(5) manual documents how the \fB\-i\fR option affects the
-environment in which a command is run when the \fIsudoers\fR policy
-is in use.
-.IP "\-K" 12
-.IX Item "-K"
-The \fB\-K\fR (sure \fIkill\fR) option is like \fB\-k\fR except that it removes
-the user's cached credentials entirely and may not be used in
-conjunction with a command or other option.  This option does not
-require a password.  Not all security policies support credential
-caching.
-.IP "\-k [command]" 12
-.IX Item "-k [command]"
-When used alone, the \fB\-k\fR (\fIkill\fR) option to \fBsudo\fR invalidates
-the user's cached credentials.  The next time \fBsudo\fR is run a
-password will be required.  This option does not require a password
-and was added to allow a user to revoke \fBsudo\fR permissions from a
-\&.logout file.  Not all security policies support credential
-caching.
-.Sp
+\fBsudo\fR
+attempts to change to that user's home directory before running the
+shell.
+The command is run with an environment similar to the one
+a user would receive at log in.
+The
+\fICommand environment\fR
+section in the
+sudoers(5)
+manual documents how the
+\fB\-i\fR
+option affects the environment in which a command is run when the
+\fIsudoers\fR
+policy is in use.
+.TP 12n
+\fB\-K\fR, \fB\--remove-timestamp\fR
+Similar to the
+\fB\-k\fR
+option, except that it removes the user's cached credentials entirely
+and may not be used in conjunction with a command or other option.
+This option does not require a password.
+Not all security policies support credential caching.
+.TP 12n
+\fB\-k\fR, \fB\--reset-timestamp\fR
+When used without a command, invalidates the user's cached credentials.
+In other words, the next time
+\fBsudo\fR
+is run a password will be required.
+This option does not require a password and was added to allow a
+user to revoke
+\fBsudo\fR
+permissions from a
+\fI.logout\fR
+file.
+.sp
 When used in conjunction with a command or an option that may require
-a password, the \fB\-k\fR option will cause \fBsudo\fR to ignore the user's
-cached credentials.  As a result, \fBsudo\fR will prompt for a password
-(if one is required by the security policy) and will not update the
-user's cached credentials.
-.IP "\-l[l] [\fIcommand\fR]" 12
-.IX Item "-l[l] [command]"
-If no \fIcommand\fR is specified, the \fB\-l\fR (\fIlist\fR) option will list
-the allowed (and forbidden) commands for the invoking user (or the
-user specified by the \fB\-U\fR option) on the current host.  If a
-\&\fIcommand\fR is specified and is permitted by the security policy,
-the fully-qualified path to the command is displayed along with any
-command line arguments.  If \fIcommand\fR is specified but not allowed,
-\&\fBsudo\fR will exit with a status value of 1.  If the \fB\-l\fR option
-is specified with an \fBl\fR argument (i.e. \fB\-ll\fR), or if \fB\-l\fR is
-specified multiple times, a longer list format is used.
-.IP "\-n" 12
-.IX Item "-n"
-The \fB\-n\fR (\fInon-interactive\fR) option prevents \fBsudo\fR from prompting
-the user for a password.  If a password is required for the command
-to run, \fBsudo\fR will display an error messages and exit.
-.IP "\-P" 12
-.IX Item "-P"
-The \fB\-P\fR (\fIpreserve\fR \fIgroup vector\fR) option causes \fBsudo\fR to
-preserve the invoking user's group vector unaltered.  By default,
-the \fIsudoers\fR policy will initialize the group vector to the list
-of groups the target user is in.  The real and effective group IDs,
-however, are still set to match the target user.
-.IP "\-p \fIprompt\fR" 12
-.IX Item "-p prompt"
-The \fB\-p\fR (\fIprompt\fR) option allows you to override the default
-password prompt and use a custom one.  The following percent (`\f(CW\*(C`%\*(C'\fR')
-escapes are supported by the \fIsudoers\fR policy:
-.RS 12
-.ie n .IP "%H" 4
-.el .IP "\f(CW%H\fR" 4
-.IX Item "%H"
-expanded to the host name including the domain name (on if
-the machine's host name is fully qualified or the \fIfqdn\fR option
-is set in \fIsudoers\fR\|(5))
-.ie n .IP "%h" 4
-.el .IP "\f(CW%h\fR" 4
-.IX Item "%h"
+a password, this option will cause
+\fBsudo\fR
+to ignore the user's cached credentials.
+As a result,
+\fBsudo\fR
+will prompt for a password (if one is required by the security
+policy) and will not update the user's cached credentials.
+.sp
+Not all security policies support credential caching.
+.TP 12n
+\fB\-l\fR, \fB\--list\fR
+If no
+\fIcommand\fR
+is specified,
+list the allowed (and forbidden) commands for the
+invoking user (or the user specified by the
+\fB\-U\fR
+option) on the current host.
+A longer list format is used if this option is specified multiple times
+and the security policy supports a verbose output format.
+.sp
+If a
+\fIcommand\fR
+is specified and is permitted by the security policy, the fully-qualified
+path to the command is displayed along with any command line
+arguments.
+If
+\fIcommand\fR
+is specified but not allowed,
+\fBsudo\fR
+will exit with a status value of 1.
+.TP 12n
+\fB\-n\fR, \fB\--non-interactive\fR
+Avoid prompting the user for input of any kind.
+If a password is required for the command to run,
+\fBsudo\fR
+will display an error message and exit.
+.TP 12n
+\fB\-P\fR, \fB\--preserve-groups\fR
+Preserve the invoking user's group vector unaltered.
+By default, the
+\fIsudoers\fR
+policy will initialize the group vector to the list of groups the
+target user is a member of.
+The real and effective group IDs, however, are still set to match
+the target user.
+.TP 12n
+\fB\-p\fR \fIprompt\fR, \fB\--prompt\fR=\fIprompt\fR
+Use a custom password prompt with optional escape sequences.
+The following percent
+(\(oq%\(cq)
+escape sequences are supported by the
+\fIsudoers\fR
+policy:
+.PP
+.RS 12n
+.PD 0
+.TP 4n
+\fR%H\fR
+expanded to the host name including the domain name (on if the
+machine's host name is fully qualified or the
+\fIfqdn\fR
+option is set in
+sudoers(5))
+.PD
+.TP 4n
+\fR%h\fR
 expanded to the local host name without the domain name
-.ie n .IP "%p" 4
-.el .IP "\f(CW%p\fR" 4
-.IX Item "%p"
+.TP 4n
+\fR%p\fR
 expanded to the name of the user whose password is being requested
-(respects the \fIrootpw\fR, \fItargetpw\fR and \fIrunaspw\fR flags in
-\&\fIsudoers\fR\|(5))
-.ie n .IP "%U" 4
-.el .IP "\f(CW%U\fR" 4
-.IX Item "%U"
+(respects the
+\fIrootpw\fR,
+\fItargetpw\fR,
+and
+\fIrunaspw\fR
+flags in
+sudoers(5))
+.TP 4n
+\fR\&%U\fR
 expanded to the login name of the user the command will be run as
-(defaults to root unless the \f(CW\*(C`\-u\*(C'\fR option is also specified)
-.ie n .IP "%u" 4
-.el .IP "\f(CW%u\fR" 4
-.IX Item "%u"
+(defaults to root unless the
+\fB\-u\fR
+option is also specified)
+.TP 4n
+\fR%u\fR
 expanded to the invoking user's login name
-.ie n .IP "\*(C`%%\*(C'" 4
-.el .IP "\f(CW\*(C`%%\*(C'\fR" 4
-.IX Item "%%"
-two consecutive \f(CW\*(C`%\*(C'\fR characters are collapsed into a single \f(CW\*(C`%\*(C'\fR character
-.RE
-.RS 12
-.Sp
-The prompt specified by the \fB\-p\fR option will override the system
-password prompt on systems that support \s-1PAM\s0 unless the
-\&\fIpassprompt_override\fR flag is disabled in \fIsudoers\fR.
+.TP 4n
+\fR%%\fR
+two consecutive
+\(oq%\(cq
+characters are collapsed into a single
+\(oq%\(cq
+character
+.PP
+The custom prompt will override the system password prompt on systems that
+support PAM unless the
+\fIpassprompt_override\fR
+flag is disabled in
+\fIsudoers\fR.
 .RE
-.if \n(SL \{\
-.IP "\-r \fIrole\fR" 12
-.IX Item "-r role"
-The \fB\-r\fR (\fIrole\fR) option causes the new (SELinux) security context to 
-have the role specified by \fIrole\fR.
-\}
-.IP "\-S" 12
-.IX Item "-S"
-The \fB\-S\fR (\fIstdin\fR) option causes \fBsudo\fR to read the password from
-the standard input instead of the terminal device.  The password must
-be followed by a newline character.
-.IP "\-s [command]" 12
-.IX Item "-s [command]"
-The \fB\-s\fR (\fIshell\fR) option runs the shell specified by the \fI\s-1SHELL\s0\fR
-environment variable if it is set or the shell as specified in the
-password database.  If a command is specified, it is passed to the
-shell for execution via the shell's \fB\-c\fR option.  If no command
-is specified, an interactive shell is executed.
-.if \n(SL \{\
-.IP "\-t \fItype\fR" 12
-.IX Item "-t type"
-The \fB\-t\fR (\fItype\fR) option causes the new (SELinux) security context to 
-have the type specified by \fItype\fR.  If no type is specified, the default
-type is derived from the specified role.
-\}
-.IP "\-U \fIuser\fR" 12
-.IX Item "-U user"
-The \fB\-U\fR (\fIother user\fR) option is used in conjunction with the
-\&\fB\-l\fR option to specify the user whose privileges should be listed.
+.TP 12n
+\fB\-r\fR \fIrole\fR, \fB\--role\fR=\fIrole\fR
+Run the command with an SELinux security context that includes
+the specified
+\fIrole\fR.
+.TP 12n
+\fB\-S\fR, \fB\--stdin\fR
+Write the prompt to the standard error and read the password from the
+standard input instead of using the terminal device.
+The password must be followed by a newline character.
+.TP 12n
+\fB\-s\fR, \fB\--shell\fR
+Run the shell specified by the
+\fRSHELL\fR
+environment variable if it is set or the shell specified by the
+invoking user's password database entry.
+If a command is specified, it is passed to the shell for execution
+via the shell's
+\fB\-c\fR
+option.
+If no command is specified, an interactive shell is executed.
+.TP 12n
+\fB\-t\fR \fItype\fR, \fB\--type\fR=\fItype\fR
+Run the command with an SELinux security context that includes
+the specified
+\fItype\fR.
+If no
+\fItype\fR
+is specified, the default type is derived from the role.
+.TP 12n
+\fB\-U\fR \fIuser\fR, \fB\--other-user\fR=\fIuser\fR
+Used in conjunction with the
+\fB\-l\fR
+option to list the privileges for
+\fIuser\fR
+instead of for the invoking user.
 The security policy may restrict listing other users' privileges.
-The \fIsudoers\fR policy only allows root or a user with the \f(CW\*(C`ALL\*(C'\fR
+The
+\fIsudoers\fR
+policy only allows root or a user with the
+\fRALL\fR
 privilege on the current host to use this option.
-.IP "\-u \fIuser\fR" 12
-.IX Item "-u user"
-The \fB\-u\fR (\fIuser\fR) option causes \fBsudo\fR to run the specified
-command as a user other than \fIroot\fR.  To specify a \fIuid\fR instead
-of a \fIuser name\fR, use \fI#uid\fR.  When running commands as a \fIuid\fR,
-many shells require that the '#' be escaped with a backslash ('\e').
-Security policies may restrict \fIuid\fRs to those listed in the
-password database.  The \fIsudoers\fR policy allows \fIuid\fRs that are
-not in the password database as long as the \fItargetpw\fR option is
-not set.  Other security policies may not support this.
-.IP "\-V" 12
-.IX Item "-V"
-The \fB\-V\fR (\fIversion\fR) option causes \fBsudo\fR to print its version
-string and the version string of the security policy plugin and any
-I/O plugins.  If the invoking user is already root the \fB\-V\fR option
-will display the arguments passed to configure when \fIsudo\fR was
-built and plugins may display more verbose information such as
+.TP 12n
+\fB\-u\fR \fIuser\fR, \fB\--user\fR=\fIuser\fR
+Run the command as a user other than the default target user
+(usually
+\fIroot\fR).
+The
+\fIuser\fR
+may be either a user name or a numeric user ID
+(UID)
+prefixed with the
+\(oq#\(cq
+character (e.g.
+\fR#0\fR
+for UID 0).
+When running commands as a UID, many shells require that the
+\(oq#\(cq
+be escaped with a backslash
+(\(oq\e\(cq).
+Some security policies may restrict UIDs
+to those listed in the password database.
+The
+\fIsudoers\fR
+policy allows UIDs that are not in the password database as long as the
+\fItargetpw\fR
+option is not set.
+Other security policies may not support this.
+.TP 12n
+\fB\-V\fR, \fB\--version\fR
+Print the
+\fBsudo\fR
+version string as well as the version string of the security
+policy plugin and any I/O plugins.
+If the invoking user is already root the
+\fB\-V\fR
+option will display the arguments passed to configure when
+\fBsudo\fR
+was built and plugins may display more verbose information such as
 default options.
-.IP "\-v" 12
-.IX Item "-v"
-When given the \fB\-v\fR (\fIvalidate\fR) option, \fBsudo\fR will update the
-user's cached credentials, authenticating the user's password if
-necessary.  For the \fIsudoers\fR plugin, this extends the \fBsudo\fR
-timeout for another \f(CW\*(C`5\*(C'\fR minutes (or whatever the timeout
-is set to in \fIsudoers\fR) but does not run a command.  Not all
-security policies support cached credentials.
-.IP "\-\-" 12
-The \fB\-\-\fR option indicates that \fBsudo\fR should stop processing command
-line arguments.
+.TP 12n
+\fB\-v\fR, \fB\--validate\fR
+Update the user's cached credentials, authenticating the user
+if necessary.
+For the
+\fIsudoers\fR
+plugin, this extends the
+\fBsudo\fR
+timeout for another
+\fR5\fR
+minutes by default, but does not run a command.
+Not all security policies support cached credentials.
+.TP 12n
+\fB\--\fR
+The
+\fB\--\fR
+option indicates that
+\fBsudo\fR
+should stop processing command line arguments.
 .PP
 Environment variables to be set for the command may also be passed
-on the command line in the form of \fB\s-1VAR\s0\fR=\fIvalue\fR, e.g.
-\&\fB\s-1LD_LIBRARY_PATH\s0\fR=\fI/usr/local/pkg/lib\fR.  Variables passed on the
-command line are subject to the same restrictions as normal environment
-variables with one important exception.  If the \fIsetenv\fR option
-is set in \fIsudoers\fR, the command to be run has the \f(CW\*(C`SETENV\*(C'\fR tag
-set or the command matched is \f(CW\*(C`ALL\*(C'\fR, the user may set variables
-that would otherwise be forbidden.  See \fIsudoers\fR\|(5) for more information.
-.SH "PLUGINS"
-.IX Header "PLUGINS"
-Plugins are dynamically loaded based on the contents of the
-\&\fI/etc/sudo.conf\fR file.  If no \fI/etc/sudo.conf\fR
-file is present, or it contains no \f(CW\*(C`Plugin\*(C'\fR lines, \fBsudo\fR
-will use the traditional \fIsudoers\fR security policy and I/O logging,
-which corresponds to the following \fI/etc/sudo.conf\fR file.
-.PP
-.Vb 10
-\& #
-\& # Default /etc/sudo.conf file
-\& #
-\& # Format:
-\& #   Plugin plugin_name plugin_path
-\& #   Path askpass /path/to/askpass
-\& #   Path noexec /path/to/noexec.so
-\& #   Debug sudo /var/log/sudo_debug all@warn
-\& #   Set disable_coredump true
-\& #
-\& # The plugin_path is relative to /usr/local/libexec unless
-\& #   fully qualified.
-\& # The plugin_name corresponds to a global symbol in the plugin
-\& #   that contains the plugin interface structure.
-\& #
-\& Plugin policy_plugin sudoers.so
-\& Plugin io_plugin sudoers.so
-.Ve
-.PP
-A \f(CW\*(C`Plugin\*(C'\fR line consists of the \f(CW\*(C`Plugin\*(C'\fR keyword, followed by the
-\&\fIsymbol_name\fR and the \fIpath\fR to the shared object containing the
-plugin.  The \fIsymbol_name\fR is the name of the \f(CW\*(C`struct policy_plugin\*(C'\fR
-or \f(CW\*(C`struct io_plugin\*(C'\fR in the plugin shared object.  The \fIpath\fR
-may be fully qualified or relative.  If not fully qualified it is
-relative to the \fI/usr/local/libexec\fR directory.  Any additional
-parameters after the \fIpath\fR are ignored.  Lines that don't begin
-with \f(CW\*(C`Plugin\*(C'\fR or \f(CW\*(C`Path\*(C'\fR are silently ignored
-.PP
-For more information, see the \fIsudo_plugin\fR\|(8) manual.
-.SH "PATHS"
-.IX Header "PATHS"
-A \f(CW\*(C`Path\*(C'\fR line consists of the \f(CW\*(C`Path\*(C'\fR keyword, followed by the
-name of the path to set and its value.  E.g.
-.PP
-.Vb 2
-\& Path noexec /usr/local/libexec/sudo_noexec.so
-\& Path askpass /usr/X11R6/bin/ssh\-askpass
-.Ve
-.PP
-The following plugin-agnostic paths may be set in the
-\&\fI/etc/sudo.conf\fR file.
-.IP "askpass" 16
-.IX Item "askpass"
-The fully qualified path to a helper program used to read the user's
-password when no terminal is available.  This may be the case when
-\&\fBsudo\fR is executed from a graphical (as opposed to text-based)
-application.  The program specified by \fIaskpass\fR should display
-the argument passed to it as the prompt and write the user's password
-to the standard output.  The value of \fIaskpass\fR may be overridden
-by the \f(CW\*(C`SUDO_ASKPASS\*(C'\fR environment variable.
-.IP "noexec" 16
-.IX Item "noexec"
-The fully-qualified path to a shared library containing dummy
-versions of the \fIexecv()\fR, \fIexecve()\fR and \fIfexecve()\fR library functions
-that just return an error.  This is used to implement the \fInoexec\fR
-functionality on systems that support \f(CW\*(C`LD_PRELOAD\*(C'\fR or its equivalent.
-Defaults to \fI/usr/local/libexec/sudo_noexec.so\fR.
-.SH "DEBUG FLAGS"
-.IX Header "DEBUG FLAGS"
-\&\fBsudo\fR versions 1.8.4 and higher support a flexible debugging
-framework that can help track down what \fBsudo\fR is doing internally
-if there is a problem.
-.PP
-A \f(CW\*(C`Debug\*(C'\fR line consists of the \f(CW\*(C`Debug\*(C'\fR keyword, followed by the
-name of the program to debug (\fBsudo\fR, \fBvisudo\fR, \fBsudoreplay\fR),
-the debug file name and a comma-separated list of debug flags.
-The debug flag syntax used by \fBsudo\fR and the \fIsudoers\fR plugin is
-\&\fIsubsystem\fR@\fIpriority\fR but the plugin is free to use a different
-format so long as it does not include a command \f(CW\*(C`,\*(C'\fR.
-.PP
-For instance:
-.PP
-.Vb 1
-\& Debug sudo /var/log/sudo_debug all@warn,plugin@info
-.Ve
-.PP
-would log all debugging statements at the \fIwarn\fR level and higher
-in addition to those at the \fIinfo\fR level for the plugin subsystem.
+on the command line in the form of
+\fIVAR\fR=\fIvalue\fR,
+e.g.\&
+\fRLD_LIBRARY_PATH\fR=\fI/usr/local/pkg/lib\fR.
+Variables passed on the command line are subject to restrictions
+imposed by the security policy plugin.
+The
+\fIsudoers\fR
+policy subjects variables passed on the command line to the same
+restrictions as normal environment variables with one important
+exception.
+If the
+\fIsetenv\fR
+option is set in
+\fIsudoers\fR,
+the command to be run has the
+\fRSETENV\fR
+tag set or the command matched is
+\fRALL\fR,
+the user may set variables that would otherwise be forbidden.
+See
+sudoers(5)
+for more information.
+.SH "COMMAND EXECUTION"
+When
+\fBsudo\fR
+executes a command, the security policy specifies the execution
+environment for the command.
+Typically, the real and effective user and group and IDs are set to
+match those of the target user, as specified in the password database,
+and the group vector is initialized based on the group database
+(unless the
+\fB\-P\fR
+option was specified).
 .PP
-Currently, only one \f(CW\*(C`Debug\*(C'\fR entry per program is supported.  The
-\&\f(CW\*(C`sudo\*(C'\fR \f(CW\*(C`Debug\*(C'\fR entry is shared by the \fBsudo\fR front end, \fBsudoedit\fR
-and the plugins.  A future release may add support for per-plugin
-\&\f(CW\*(C`Debug\*(C'\fR lines and/or support for multiple debugging files for a
-single program.
+The following parameters may be specified by security policy:
+.TP 4n
+\fB\(bu\fR
+real and effective user ID
+.TP 4n
+\fB\(bu\fR
+real and effective group ID
+.TP 4n
+\fB\(bu\fR
+supplementary group IDs
+.TP 4n
+\fB\(bu\fR
+the environment list
+.TP 4n
+\fB\(bu\fR
+current working directory
+.TP 4n
+\fB\(bu\fR
+file creation mode mask (umask)
+.TP 4n
+\fB\(bu\fR
+SELinux role and type
+.TP 4n
+\fB\(bu\fR
+Solaris project
+.TP 4n
+\fB\(bu\fR
+Solaris privileges
+.TP 4n
+\fB\(bu\fR
+BSD login class
+.TP 4n
+\fB\(bu\fR
+scheduling priority (aka nice value)
+.SS "Process model"
+When
+\fBsudo\fR
+runs a command, it calls
+fork(2),
+sets up the execution environment as described above, and calls the
+execve
+system call in the child process.
+The main
+\fBsudo\fR
+process waits until the command has completed, then passes the
+command's exit status to the security policy's close function and exits.
+If an I/O logging plugin is configured or if the security policy
+explicitly requests it, a new  pseudo-terminal
+(\(Lqpty\(Rq)
+is created and a second
+\fBsudo\fR
+process is used to relay job control signals between the user's
+existing pty and the new pty the command is being run in.
+This extra process makes it possible to, for example, suspend
+and resume the command.
+Without it, the command would be in what POSIX terms an
+\(Lqorphaned process group\(Rq
+and it would not receive any job control signals.
+As a special case, if the policy plugin does not define a close
+function and no pty is required,
+\fBsudo\fR
+will execute the command directly instead of calling
+fork(2)
+first.
+The
+\fIsudoers\fR
+policy plugin will only define a close function when I/O logging
+is enabled, a pty is required, or the
+\fIpam_session\fR
+or
+\fIpam_setcred\fR
+options are enabled.
+Note that
+\fIpam_session\fR
+and
+\fIpam_setcred\fR
+are enabled by default on systems using PAM.
+.SS "Signal handling"
+When the command is run as a child of the
+\fBsudo\fR
+process,
+\fBsudo\fR
+will relay signals it receives to the command.
+The
+\fRSIGINT\fR
+and
+\fRSIGQUIT\fR
+signals are only relayed when the command is being run in a new pty
+or when the signal was sent by a user process, not the kernel.
+This prevents the command from receiving
+\fRSIGINT\fR
+twice each time the user enters control-C.
+Some signals, such as
+\fRSIGSTOP\fR
+and
+\fRSIGKILL\fR,
+cannot be caught and thus will not be relayed to the command.
+As a general rule,
+\fRSIGTSTP\fR
+should be used instead of
+\fRSIGSTOP\fR
+when you wish to suspend a command being run by
+\fBsudo\fR.
 .PP
-The priorities used by the \fBsudo\fR front end, in order of decreasing
-severity, are: \fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR,
-\&\fItrace\fR and \fIdebug\fR.  Each priority, when specified, also includes
-all priorities higher than it.  For example, a priority of \fInotice\fR
-would include debug messages logged at \fInotice\fR and higher.
+As a special case,
+\fBsudo\fR
+will not relay signals that were sent by the command it is running.
+This prevents the command from accidentally killing itself.
+On some systems, the
+reboot(8)
+command sends
+\fRSIGTERM\fR
+to all non-system processes other than itself before rebooting
+the system.
+This prevents
+\fBsudo\fR
+from relaying the
+\fRSIGTERM\fR
+signal it received back to
+reboot(8),
+which might then exit before the system was actually rebooted,
+leaving it in a half-dead state similar to single user mode.
+Note, however, that this check only applies to the command run by
+\fBsudo\fR
+and not any other processes that the command may create.
+As a result, running a script that calls
+reboot(8)
+or
+shutdown(8)
+via
+\fBsudo\fR
+may cause the system to end up in this undefined state unless the
+reboot(8)
+or
+shutdown(8)
+are run using the
+\fBexec\fR()
+family of functions instead of
+\fBsystem\fR()
+(which interposes a shell between the command and the calling process).
 .PP
-The following subsystems are used by \fBsudo\fR:
-.IP "\fIall\fR" 10
-.IX Item "all"
-matches every subsystem
-.IP "\fIargs\fR" 10
-.IX Item "args"
-command line argument processing
-.IP "\fIconv\fR" 10
-.IX Item "conv"
-user conversation
-.IP "\fIedit\fR" 10
-.IX Item "edit"
-sudoedit
-.IP "\fIexec\fR" 10
-.IX Item "exec"
-command execution
-.IP "\fImain\fR" 10
-.IX Item "main"
-\&\fBsudo\fR main function
-.IP "\fInetif\fR" 10
-.IX Item "netif"
-network interface handling
-.IP "\fIpcomm\fR" 10
-.IX Item "pcomm"
-communication with the plugin
-.IP "\fIplugin\fR" 10
-.IX Item "plugin"
-plugin configuration
-.IP "\fIpty\fR" 10
-.IX Item "pty"
-pseudo-tty related code
-.IP "\fIselinux\fR" 10
-.IX Item "selinux"
-SELinux-specific handling
-.IP "\fIutil\fR" 10
-.IX Item "util"
-utility functions
-.IP "\fIutmp\fR" 10
-.IX Item "utmp"
-utmp handling
-.SH "RETURN VALUES"
-.IX Header "RETURN VALUES"
-Upon successful execution of a program, the exit status from \fBsudo\fR
-will simply be the exit status of the program that was executed.
+If no I/O logging plugins are loaded and the policy plugin has not
+defined a
+\fBclose\fR()
+function, set a command timeout or required that the command be
+run in a new pty,
+\fBsudo\fR
+may execute the command directly instead of running it as a child process.
+.SS "Plugins"
+Plugins may be specified via
+\fRPlugin\fR
+directives in the
+sudo.conf(5)
+file.
+They may be loaded as dynamic shared objects (on systems that support them),
+or compiled directly into the
+\fBsudo\fR
+binary.
+If no
+sudo.conf(5)
+file is present, or it contains no
+\fRPlugin\fR
+lines,
+\fBsudo\fR
+will use the traditional
+\fIsudoers\fR
+security policy and I/O logging.
+See the
+sudo.conf(5)
+manual for details of the
+\fI/etc/sudo.conf\fR
+file and the
+sudo_plugin(8)
+manual for more information about the
+\fBsudo\fR
+plugin architecture.
+.SH "EXIT VALUE"
+Upon successful execution of a command, the exit status from
+\fBsudo\fR
+will be the exit status of the program that was executed.
+If the command terminated due to receipt of a signal,
+\fBsudo\fR
+will send itself the signal that terminated the command.
 .PP
-Otherwise, \fBsudo\fR exits with a value of 1 if there is a
-configuration/permission problem or if \fBsudo\fR cannot execute the
-given command.  In the latter case the error string is printed to
-the standard error.  If \fBsudo\fR cannot \fIstat\fR\|(2) one or more entries
-in the user's \f(CW\*(C`PATH\*(C'\fR, an error is printed on stderr.  (If the
-directory does not exist or if it is not really a directory, the
-entry is ignored and no error is printed.)  This should not happen
-under normal circumstances.  The most common reason for \fIstat\fR\|(2)
-to return \*(L"permission denied\*(R" is if you are running an automounter
-and one of the directories in your \f(CW\*(C`PATH\*(C'\fR is on a machine that is
-currently unreachable.
+Otherwise,
+\fBsudo\fR
+exits with a value of 1 if there is a configuration/permission
+problem or if
+\fBsudo\fR
+cannot execute the given command.
+In the latter case, the error string is printed to the standard error.
+If
+\fBsudo\fR
+cannot
+stat(2)
+one or more entries in the user's
+\fRPATH\fR,
+an error is printed to the standard error.
+(If the directory does not exist or if it is not really a directory,
+the entry is ignored and no error is printed.)
+This should not happen under normal circumstances.
+The most common reason for
+stat(2)
+to return
+\(Lqpermission denied\(Rq
+is if you are running an automounter and one of the directories in
+your
+\fRPATH\fR
+is on a machine that is currently unreachable.
 .SH "SECURITY NOTES"
-.IX Header "SECURITY NOTES"
-\&\fBsudo\fR tries to be safe when executing external commands.
+\fBsudo\fR
+tries to be safe when executing external commands.
 .PP
-To prevent command spoofing, \fBsudo\fR checks \*(L".\*(R" and "" (both denoting
-current directory) last when searching for a command in the user's
-\&\s-1PATH\s0 (if one or both are in the \s-1PATH\s0).  Note, however, that the
-actual \f(CW\*(C`PATH\*(C'\fR environment variable is \fInot\fR modified and is passed
-unchanged to the program that \fBsudo\fR executes.
+To prevent command spoofing,
+\fBsudo\fR
+checks "." and "" (both denoting current directory) last when
+searching for a command in the user's
+\fRPATH\fR
+(if one or both are in the
+\fRPATH\fR).
+Note, however, that the actual
+\fRPATH\fR
+environment variable is
+\fInot\fR
+modified and is passed unchanged to the program that
+\fBsudo\fR
+executes.
 .PP
-Please note that \fBsudo\fR will normally only log the command it
-explicitly runs.  If a user runs a command such as \f(CW\*(C`sudo su\*(C'\fR or
-\&\f(CW\*(C`sudo sh\*(C'\fR, subsequent commands run from that shell are not subject
-to \fBsudo\fR's security policy.  The same is true for commands that
-offer shell escapes (including most editors).  If I/O logging is
-enabled, subsequent commands will have their input and/or output
-logged, but there will not be traditional logs for those commands.
-Because of this, care must be taken when giving users access to
-commands via \fBsudo\fR to verify that the command does not inadvertently
-give the user an effective root shell.  For more information, please
-see the \f(CW\*(C`PREVENTING SHELL ESCAPES\*(C'\fR section in \fIsudoers\fR\|(5).
+Users should
+\fInever\fR
+be granted
+\fBsudo\fR
+privileges to execute files that are writable by the user or
+that reside in a directory that is writable by the user.
+If the user can modify or replace the command there is no way
+to limit what additional commands they can run.
 .PP
-To prevent the disclosure of potentially sensitive information,
-\&\fBsudo\fR disables core dumps by default while it is executing (they
-are re-enabled for the command that is run).  To aid in debugging
-\&\fBsudo\fR crashes, you may wish to re-enable core dumps by setting
-\&\*(L"disable_coredump\*(R" to false in the \fI/etc/sudo.conf\fR file.
+Please note that
+\fBsudo\fR
+will normally only log the command it explicitly runs.
+If a user runs a command such as
+\fRsudo su\fR
+or
+\fRsudo sh\fR,
+subsequent commands run from that shell are not subject to
+\fBsudo\fR's
+security policy.
+The same is true for commands that offer shell escapes (including
+most editors).
+If I/O logging is enabled, subsequent commands will have their input and/or
+output logged, but there will not be traditional logs for those commands.
+Because of this, care must be taken when giving users access to commands via
+\fBsudo\fR
+to verify that the command does not inadvertently give the user an
+effective root shell.
+For more information, please see the
+\fIPreventing shell escapes\fR
+section in
+sudoers(5).
 .PP
-.Vb 1
-\& Set disable_coredump false
-.Ve
+To prevent the disclosure of potentially sensitive information,
+\fBsudo\fR
+disables core dumps by default while it is executing (they are
+re-enabled for the command that is run).
+This historical practice dates from a time when most operating
+systems allowed setuid processes to dump core by default.
+To aid in debugging
+\fBsudo\fR
+crashes, you may wish to re-enable core dumps by setting
+\(Lqdisable_coredump\(Rq
+to false in the
+sudo.conf(5)
+file as follows:
+.nf
+.sp
+.RS 6n
+Set disable_coredump false
+.RE
+.fi
 .PP
-Note that by default, most operating systems disable core dumps
-from setuid programs, which includes \fBsudo\fR.  To actually get a
-\&\fBsudo\fR core file you may need to enable core dumps for setuid
-processes.  On \s-1BSD\s0 and Linux systems this is accomplished via the
-sysctl command, on Solaris the coreadm command can be used.
+See the
+sudo.conf(5)
+manual for more information.
 .SH "ENVIRONMENT"
-.IX Header "ENVIRONMENT"
-\&\fBsudo\fR utilizes the following environment variables.  The security
-policy has control over the content of the command's environment.
-.ie n .IP "\*(C`EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
-.IX Item "EDITOR"
-Default editor to use in \fB\-e\fR (sudoedit) mode if neither \f(CW\*(C`SUDO_EDITOR\*(C'\fR
-nor \f(CW\*(C`VISUAL\*(C'\fR is set
-.ie n .IP "\*(C`MAIL\*(C'" 16
-.el .IP "\f(CW\*(C`MAIL\*(C'\fR" 16
-.IX Item "MAIL"
-In \fB\-i\fR mode or when \fIenv_reset\fR is enabled in \fIsudoers\fR, set
-to the mail spool of the target user
-.ie n .IP "\*(C`HOME\*(C'" 16
-.el .IP "\f(CW\*(C`HOME\*(C'\fR" 16
-.IX Item "HOME"
-Set to the home directory of the target user if \fB\-i\fR or \fB\-H\fR are
-specified, \fIenv_reset\fR or \fIalways_set_home\fR are set in \fIsudoers\fR,
-or when the \fB\-s\fR option is specified and \fIset_home\fR is set in
-\&\fIsudoers\fR
-.ie n .IP "\*(C`PATH\*(C'" 16
-.el .IP "\f(CW\*(C`PATH\*(C'\fR" 16
-.IX Item "PATH"
+\fBsudo\fR
+utilizes the following environment variables.
+The security policy has control over the actual content of the command's
+environment.
+.TP 17n
+\fREDITOR\fR
+Default editor to use in
+\fB\-e\fR
+(sudoedit) mode if neither
+\fRSUDO_EDITOR\fR
+nor
+\fRVISUAL\fR
+is set.
+.TP 17n
+\fRMAIL\fR
+Set to the mail spool of the target user when the
+\fB\-i\fR
+option is specified or when
+\fIenv_reset\fR
+is enabled in
+\fIsudoers\fR
+(unless
+\fRMAIL\fR
+is present in the
+\fIenv_keep\fR
+list).
+.TP 17n
+\fRHOME\fR
+Set to the home directory of the target user when the
+\fB\-i\fR
+or
+\fB\-H\fR
+options are specified, when the
+\fB\-s\fR
+option is specified and
+\fIset_home\fR
+is set in
+\fIsudoers\fR,
+when
+\fIalways_set_home\fR
+is enabled in
+\fIsudoers\fR,
+or when
+\fIenv_reset\fR
+is enabled in
+\fIsudoers\fR
+and
+\fIHOME\fR
+is not present in the
+\fIenv_keep\fR
+list.
+.TP 17n
+\fRLOGNAME\fR
+Set to the login name of the target user when the
+\fB\-i\fR
+option is specified, when the
+\fIset_logname\fR
+option is enabled in
+\fIsudoers\fR
+or when the
+\fIenv_reset\fR
+option is enabled in
+\fIsudoers\fR
+(unless
+\fRLOGNAME\fR
+is present in the
+\fIenv_keep\fR
+list).
+.TP 17n
+\fRPATH\fR
 May be overridden by the security policy.
-.ie n .IP "\*(C`SHELL\*(C'" 16
-.el .IP "\f(CW\*(C`SHELL\*(C'\fR" 16
-.IX Item "SHELL"
-Used to determine shell to run with \f(CW\*(C`\-s\*(C'\fR option
-.ie n .IP "\*(C`SUDO_ASKPASS\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_ASKPASS\*(C'\fR" 16
-.IX Item "SUDO_ASKPASS"
+.TP 17n
+\fRSHELL\fR
+Used to determine shell to run with
+\fB\-s\fR
+option.
+.TP 17n
+\fRSUDO_ASKPASS\fR
 Specifies the path to a helper program used to read the password
-if no terminal is available or if the \f(CW\*(C`\-A\*(C'\fR option is specified.
-.ie n .IP "\*(C`SUDO_COMMAND\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_COMMAND\*(C'\fR" 16
-.IX Item "SUDO_COMMAND"
-Set to the command run by sudo
-.ie n .IP "\*(C`SUDO_EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_EDITOR\*(C'\fR" 16
-.IX Item "SUDO_EDITOR"
-Default editor to use in \fB\-e\fR (sudoedit) mode
-.ie n .IP "\*(C`SUDO_GID\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_GID\*(C'\fR" 16
-.IX Item "SUDO_GID"
-Set to the group \s-1ID\s0 of the user who invoked sudo
-.ie n .IP "\*(C`SUDO_PROMPT\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_PROMPT\*(C'\fR" 16
-.IX Item "SUDO_PROMPT"
-Used as the default password prompt
-.ie n .IP "\*(C`SUDO_PS1\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_PS1\*(C'\fR" 16
-.IX Item "SUDO_PS1"
-If set, \f(CW\*(C`PS1\*(C'\fR will be set to its value for the program being run
-.ie n .IP "\*(C`SUDO_UID\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_UID\*(C'\fR" 16
-.IX Item "SUDO_UID"
-Set to the user \s-1ID\s0 of the user who invoked sudo
-.ie n .IP "\*(C`SUDO_USER\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_USER\*(C'\fR" 16
-.IX Item "SUDO_USER"
-Set to the login of the user who invoked sudo
-.ie n .IP "\*(C`USER\*(C'" 16
-.el .IP "\f(CW\*(C`USER\*(C'\fR" 16
-.IX Item "USER"
-Set to the target user (root unless the \fB\-u\fR option is specified)
-.ie n .IP "\*(C`VISUAL\*(C'" 16
-.el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
-.IX Item "VISUAL"
-Default editor to use in \fB\-e\fR (sudoedit) mode if \f(CW\*(C`SUDO_EDITOR\*(C'\fR
-is not set
+if no terminal is available or if the
+\fB\-A\fR
+option is specified.
+.TP 17n
+\fRSUDO_COMMAND\fR
+Set to the command run by sudo.
+.TP 17n
+\fRSUDO_EDITOR\fR
+Default editor to use in
+\fB\-e\fR
+(sudoedit) mode.
+.TP 17n
+\fRSUDO_GID\fR
+Set to the group ID of the user who invoked sudo.
+.TP 17n
+\fRSUDO_PROMPT\fR
+Used as the default password prompt.
+.TP 17n
+\fRSUDO_PS1\fR
+If set,
+\fRPS1\fR
+will be set to its value for the program being run.
+.TP 17n
+\fRSUDO_UID\fR
+Set to the user ID of the user who invoked sudo.
+.TP 17n
+\fRSUDO_USER\fR
+Set to the login name of the user who invoked sudo.
+.TP 17n
+\fRUSER\fR
+Set to the same value as
+\fRLOGNAME\fR,
+described above.
+.TP 17n
+\fRUSERNAME\fR
+Same as
+\fRUSER\fR.
+.TP 17n
+\fRVISUAL\fR
+Default editor to use in
+\fB\-e\fR
+(sudoedit) mode if
+\fRSUDO_EDITOR\fR
+is not set.
 .SH "FILES"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudo.conf\fR" 24
-.el .IP "\fI/etc/sudo.conf\fR" 24
-.IX Item "/etc/sudo.conf"
-\&\fBsudo\fR front end configuration
+.TP 26n
+\fI/etc/sudo.conf\fR
+\fBsudo\fR
+front end configuration
 .SH "EXAMPLES"
-.IX Header "EXAMPLES"
-Note: the following examples assume a properly configured security policy.
+Note: the following examples assume a properly configured security
+policy.
 .PP
 To get a file listing of an unreadable directory:
+.nf
+.sp
+.RS 6n
+$ sudo ls /usr/local/protected
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo ls /usr/local/protected
-.Ve
-.PP
-To list the home directory of user yaz on a machine where the
-file system holding ~yaz is not exported as root:
-.PP
-.Vb 1
-\& $ sudo \-u yaz ls ~yaz
-.Ve
-.PP
-To edit the \fIindex.html\fR file as user www:
-.PP
-.Vb 1
-\& $ sudo \-u www vi ~www/htdocs/index.html
-.Ve
+To list the home directory of user yaz on a machine where the file
+system holding ~yaz is not exported as root:
+.nf
+.sp
+.RS 6n
+$ sudo -u yaz ls ~yaz
+.RE
+.fi
 .PP
-To view system logs only accessible to root and users in the adm group:
+To edit the
+\fIindex.html\fR
+file as user www:
+.nf
+.sp
+.RS 6n
+$ sudo -u www vi ~www/htdocs/index.html
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-g adm view /var/log/syslog
-.Ve
+To view system logs only accessible to root and users in the adm
+group:
+.nf
+.sp
+.RS 6n
+$ sudo -g adm view /var/log/syslog
+.RE
+.fi
 .PP
 To run an editor as jim with a different primary group:
+.nf
+.sp
+.RS 6n
+$ sudo -u jim -g audio vi ~jim/sound.txt
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-u jim \-g audio vi ~jim/sound.txt
-.Ve
-.PP
-To shutdown a machine:
-.PP
-.Vb 1
-\& $ sudo shutdown \-r +15 "quick reboot"
-.Ve
-.PP
-To make a usage listing of the directories in the /home
-partition.  Note that this runs the commands in a sub-shell
-to make the \f(CW\*(C`cd\*(C'\fR and file redirection work.
+To shut down a machine:
+.nf
+.sp
+.RS 6n
+$ sudo shutdown -r +15 "quick reboot"
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
-.Ve
+To make a usage listing of the directories in the /home partition.
+Note that this runs the commands in a sub-shell to make the
+\fRcd\fR
+and file redirection work.
+.nf
+.sp
+.RS 6n
+$ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
+.RE
+.fi
 .SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIgrep\fR\|(1), \fIsu\fR\|(1), \fIstat\fR\|(2),
-.if \n(LC \&\fIlogin_cap\fR\|(3),
-\&\fIpasswd\fR\|(5), \fIsudoers\fR\|(5), \fIsudo_plugin\fR\|(8), \fIsudoreplay\fR\|(8), \fIvisudo\fR\|(8)
+su(1),
+stat(2),
+passwd(5),
+sudo.conf(5),
+sudoers(5),
+sudo_plugin(8),
+sudoreplay(8),
+visudo(8)
+.SH "HISTORY"
+See the HISTORY file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/history.html) for a brief
+history of sudo.
 .SH "AUTHORS"
-.IX Header "AUTHORS"
-Many people have worked on \fBsudo\fR over the years; this
-version consists of code written primarily by:
-.PP
-.Vb 1
-\&        Todd C. Miller
-.Ve
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-See the \s-1CONTRIBUTORS\s0 file in the \fBsudo\fR distribution
-(http://www.sudo.ws/sudo/contributors.html) for a list of people
-who have contributed to \fBsudo\fR.
-.SH "HISTORY"
-.IX Header "HISTORY"
-See the \s-1HISTORY\s0 file in the \fBsudo\fR distribution
-(http://www.sudo.ws/sudo/history.html) for a brief history of sudo.
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
 .SH "CAVEATS"
-.IX Header "CAVEATS"
 There is no easy way to prevent a user from gaining a root shell
-if that user is allowed to run arbitrary commands via \fBsudo\fR.
+if that user is allowed to run arbitrary commands via
+\fBsudo\fR.
 Also, many programs (such as editors) allow the user to run commands
-via shell escapes, thus avoiding \fBsudo\fR's checks.  However, on
-most systems it is possible to prevent shell escapes with the
-\&\fIsudoers\fR\|(5) module's \fInoexec\fR functionality.
+via shell escapes, thus avoiding
+\fBsudo\fR's
+checks.
+However, on most systems it is possible to prevent shell escapes with the
+sudoers(5)
+plugin's
+\fInoexec\fR
+functionality.
 .PP
-It is not meaningful to run the \f(CW\*(C`cd\*(C'\fR command directly via sudo, e.g.,
-.PP
-.Vb 1
-\& $ sudo cd /usr/local/protected
-.Ve
+It is not meaningful to run the
+\fRcd\fR
+command directly via sudo, e.g.,
+.nf
+.sp
+.RS 6n
+$ sudo cd /usr/local/protected
+.RE
+.fi
 .PP
 since when the command exits the parent process (your shell) will
-still be the same.  Please see the \s-1EXAMPLES\s0 section for more information.
+still be the same.
+Please see the
+\fIEXAMPLES\fR
+section for more information.
 .PP
-Running shell scripts via \fBsudo\fR can expose the same kernel bugs that
-make setuid shell scripts unsafe on some operating systems (if your \s-1OS\s0
-has a /dev/fd/ directory, setuid shell scripts are generally safe).
+Running shell scripts via
+\fBsudo\fR
+can expose the same kernel bugs that make setuid shell scripts
+unsafe on some operating systems (if your OS has a /dev/fd/ directory,
+setuid shell scripts are generally safe).
 .SH "BUGS"
-.IX Header "BUGS"
-If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-at http://www.sudo.ws/sudo/bugs/
+If you feel you have found a bug in
+\fBsudo\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
 .SH "SUPPORT"
-.IX Header "SUPPORT"
 Limited free support is available via the sudo-users mailing list,
-see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
 search the archives.
 .SH "DISCLAIMER"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-including, but not limited to, the implied warranties of merchantability
-and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-for complete details.
+\fBsudo\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
diff --git a/manual/sudo/original/man8/sudo_plugin.8 b/manual/sudo/original/man8/sudo_plugin.8
deleted file mode 100644 (file)
index 429be39..0000000
+++ /dev/null
@@ -1,1312 +0,0 @@
-.\" Copyright (c) 2009-2012 Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
-.\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\" 
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDO_PLUGIN 8"
-.TH SUDO_PLUGIN 8 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-sudo_plugin \- Sudo Plugin API
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-Starting with version 1.8, \fBsudo\fR supports a plugin \s-1API\s0
-for policy and session logging.  By default, the \fIsudoers\fR policy
-plugin and an associated I/O logging plugin are used.  Via the plugin
-\&\s-1API\s0, \fBsudo\fR can be configured to use alternate policy and/or I/O
-logging plugins provided by third parties.  The plugins to be used
-are specified via the \fI/etc/sudo.conf\fR file.
-.PP
-The \s-1API\s0 is versioned with a major and minor number.  The minor
-version number is incremented when additions are made.  The major
-number is incremented when incompatible changes are made.  A plugin
-should be check the version passed to it and make sure that the
-major version matches.
-.PP
-The plugin \s-1API\s0 is defined by the \f(CW\*(C`sudo_plugin.h\*(C'\fR header file.
-.SS "The sudo.conf File"
-.IX Subsection "The sudo.conf File"
-The \fI/etc/sudo.conf\fR file contains plugin configuration directives.
-Currently, the only supported keyword is the \f(CW\*(C`Plugin\*(C'\fR directive,
-which causes a plugin plugin to be loaded.
-.PP
-A \f(CW\*(C`Plugin\*(C'\fR line consists of the \f(CW\*(C`Plugin\*(C'\fR keyword, followed by the
-\&\fIsymbol_name\fR and the \fIpath\fR to the shared object containing the
-plugin.  The \fIsymbol_name\fR is the name of the \f(CW\*(C`struct policy_plugin\*(C'\fR
-or \f(CW\*(C`struct io_plugin\*(C'\fR in the plugin shared object.  The \fIpath\fR
-may be fully qualified or relative.  If not fully qualified it is
-relative to the \fI/usr/local/libexec\fR directory.  Any additional
-parameters after the \fIpath\fR are ignored.  Lines that don't begin
-with \f(CW\*(C`Plugin\*(C'\fR or \f(CW\*(C`Path\*(C'\fR are silently ignored.
-.PP
-The same shared object may contain multiple plugins, each with a
-different symbol name.  The shared object file must be owned by uid
-0 and only writable by its owner.  Because of ambiguities that arise
-from composite policies, only a single policy plugin may be specified.
-This limitation does not apply to I/O plugins.
-.PP
-.Vb 10
-\& #
-\& # Default /etc/sudo.conf file
-\& #
-\& # Format:
-\& #   Plugin plugin_name plugin_path
-\& #   Path askpass /path/to/askpass
-\& #
-\& # The plugin_path is relative to /usr/local/libexec unless
-\& #   fully qualified.
-\& # The plugin_name corresponds to a global symbol in the plugin
-\& #   that contains the plugin interface structure.
-\& #
-\& Plugin sudoers_policy sudoers.so
-\& Plugin sudoers_io sudoers.so
-.Ve
-.SS "Policy Plugin \s-1API\s0"
-.IX Subsection "Policy Plugin API"
-A policy plugin must declare and populate a \f(CW\*(C`policy_plugin\*(C'\fR struct
-in the global scope.  This structure contains pointers to the functions
-that implement the \fBsudo\fR policy checks.  The name of the symbol should
-be specified in \fI/etc/sudo.conf\fR along with a path to the plugin
-so that \fBsudo\fR can load it.
-.PP
-.Vb 10
-\& struct policy_plugin {
-\& #define SUDO_POLICY_PLUGIN     1
-\&     unsigned int type; /* always SUDO_POLICY_PLUGIN */
-\&     unsigned int version; /* always SUDO_API_VERSION */
-\&     int (*open)(unsigned int version, sudo_conv_t conversation,
-\&                 sudo_printf_t plugin_printf, char * const settings[],
-\&                 char * const user_info[], char * const user_env[]);
-\&     void (*close)(int exit_status, int error);
-\&     int (*show_version)(int verbose);
-\&     int (*check_policy)(int argc, char * const argv[],
-\&                         char *env_add[], char **command_info[],
-\&                         char **argv_out[], char **user_env_out[]);
-\&     int (*list)(int argc, char * const argv[], int verbose,
-\&                 const char *list_user);
-\&     int (*validate)(void);
-\&     void (*invalidate)(int remove);
-\&     int (*init_session)(struct passwd *pwd);
-\& };
-.Ve
-.PP
-The policy_plugin struct has the following fields:
-.IP "type" 4
-.IX Item "type"
-The \f(CW\*(C`type\*(C'\fR field should always be set to \s-1SUDO_POLICY_PLUGIN\s0.
-.IP "version" 4
-.IX Item "version"
-The \f(CW\*(C`version\*(C'\fR field should be set to \s-1SUDO_API_VERSION\s0.
-.Sp
-This allows \fBsudo\fR to determine the \s-1API\s0 version the plugin was
-built against.
-.IP "open" 4
-.IX Item "open"
-.Vb 3
-\& int (*open)(unsigned int version, sudo_conv_t conversation,
-\&             sudo_printf_t plugin_printf, char * const settings[],
-\&             char * const user_info[], char * const user_env[]);
-.Ve
-.Sp
-Returns 1 on success, 0 on failure, \-1 if a general error occurred,
-or \-2 if there was a usage error.  In the latter case, \fBsudo\fR will
-print a usage message before it exits.  If an error occurs, the
-plugin may optionally call the conversation or plugin_printf function
-with \f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR to present additional error information
-to the user.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "version" 4
-.IX Item "version"
-The version passed in by \fBsudo\fR allows the plugin to determine the
-major and minor version number of the plugin \s-1API\s0 supported by
-\&\fBsudo\fR.
-.IP "conversation" 4
-.IX Item "conversation"
-A pointer to the conversation function that can be used by the
-plugin to interact with the user (see below).
-Returns 0 on success and \-1 on failure.
-.IP "plugin_printf" 4
-.IX Item "plugin_printf"
-A pointer to a printf-style function that may be used to display
-informational or error messages (see below).
-Returns the number of characters printed on success and \-1 on failure.
-.IP "settings" 4
-.IX Item "settings"
-A vector of user-supplied \fBsudo\fR settings in the form of \*(L"name=value\*(R"
-strings.  The vector is terminated by a \f(CW\*(C`NULL\*(C'\fR pointer.  These
-settings correspond to flags the user specified when running \fBsudo\fR.
-As such, they will only be present when the corresponding flag has
-been specified on the command line.
-.Sp
-When parsing \fIsettings\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.RS 4
-.IP "debug_flags=string" 4
-.IX Item "debug_flags=string"
-A comma-separated list of debug flags that correspond to \fBsudo\fR's
-\&\f(CW\*(C`Debug\*(C'\fR entry in \fI/etc/sudo.conf\fR, if there is one.  The
-flags are passed to the plugin as they appear in \fI/etc/sudo.conf\fR.
-The syntax used by \fBsudo\fR and the \fIsudoers\fR plugin is
-\&\fIsubsystem\fR@\fIpriority\fR but the plugin is free to use a different
-format so long as it does not include a command \f(CW\*(C`,\*(C'\fR.
-.Sp
-For reference, the priorities supported by the \fBsudo\fR front end and
-\&\fIsudoers\fR are: \fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR,
-\&\fIinfo\fR, \fItrace\fR and \fIdebug\fR.
-.Sp
-The following subsystems are defined: \fImain\fR, \fImemory\fR, \fIargs\fR,
-\&\fIexec\fR, \fIpty\fR, \fIutmp\fR, \fIconv\fR, \fIpcomm\fR, \fIutil\fR, \fIlist\fR,
-\&\fInetif\fR, \fIaudit\fR, \fIedit\fR, \fIselinux\fR, \fIldap\fR, \fImatch\fR, \fIparser\fR,
-\&\fIalias\fR, \fIdefaults\fR, \fIauth\fR, \fIenv\fR, \fIlogging\fR, \fInss\fR, \fIrbtree\fR,
-\&\fIperms\fR, \fIplugin\fR.  The subsystem \fIall\fR includes every subsystem.
-.Sp
-There is not currently a way to specify a set of debug flags specific
-to the plugin\*(--the flags are shared by \fBsudo\fR and the plugin.
-.IP "debug_level=number" 4
-.IX Item "debug_level=number"
-This setting has been deprecated in favor of \fIdebug_flags\fR.
-.IP "runas_user=string" 4
-.IX Item "runas_user=string"
-The user name or uid to to run the command as, if specified via the
-\&\f(CW\*(C`\-u\*(C'\fR flag.
-.IP "runas_group=string" 4
-.IX Item "runas_group=string"
-The group name or gid to to run the command as, if specified via
-the \f(CW\*(C`\-g\*(C'\fR flag.
-.IP "prompt=string" 4
-.IX Item "prompt=string"
-The prompt to use when requesting a password, if specified via
-the \f(CW\*(C`\-p\*(C'\fR flag.
-.IP "set_home=bool" 4
-.IX Item "set_home=bool"
-Set to true if the user specified the \f(CW\*(C`\-H\*(C'\fR flag.  If true, set the
-\&\f(CW\*(C`HOME\*(C'\fR environment variable to the target user's home directory.
-.IP "preserve_environment=bool" 4
-.IX Item "preserve_environment=bool"
-Set to true if the user specified the \f(CW\*(C`\-E\*(C'\fR flag, indicating that
-the user wishes to preserve the environment.
-.IP "run_shell=bool" 4
-.IX Item "run_shell=bool"
-Set to true if the user specified the \f(CW\*(C`\-s\*(C'\fR flag, indicating that
-the user wishes to run a shell.
-.IP "login_shell=bool" 4
-.IX Item "login_shell=bool"
-Set to true if the user specified the \f(CW\*(C`\-i\*(C'\fR flag, indicating that
-the user wishes to run a login shell.
-.IP "implied_shell=bool" 4
-.IX Item "implied_shell=bool"
-If the user does not specify a program on the command line, \fBsudo\fR
-will pass the plugin the path to the user's shell and set
-\&\fIimplied_shell\fR to true.  This allows \fBsudo\fR with no arguments
-to be used similarly to \fIsu\fR\|(1).  If the plugin does not to support
-this usage, it may return a value of \-2 from the \f(CW\*(C`check_policy\*(C'\fR
-function, which will cause \fBsudo\fR to print a usage message and
-exit.
-.IP "preserve_groups=bool" 4
-.IX Item "preserve_groups=bool"
-Set to true if the user specified the \f(CW\*(C`\-P\*(C'\fR flag, indicating that
-the user wishes to preserve the group vector instead of setting it
-based on the runas user.
-.IP "ignore_ticket=bool" 4
-.IX Item "ignore_ticket=bool"
-Set to true if the user specified the \f(CW\*(C`\-k\*(C'\fR flag along with a
-command, indicating that the user wishes to ignore any cached
-authentication credentials.
-.IP "noninteractive=bool" 4
-.IX Item "noninteractive=bool"
-Set to true if the user specified the \f(CW\*(C`\-n\*(C'\fR flag, indicating that
-\&\fBsudo\fR should operate in non-interactive mode.  The plugin may
-reject a command run in non-interactive mode if user interaction
-is required.
-.IP "login_class=string" 4
-.IX Item "login_class=string"
-\&\s-1BSD\s0 login class to use when setting resource limits and nice value,
-if specified by the \f(CW\*(C`\-c\*(C'\fR flag.
-.IP "selinux_role=string" 4
-.IX Item "selinux_role=string"
-SELinux role to use when executing the command, if specified by
-the \f(CW\*(C`\-r\*(C'\fR flag.
-.IP "selinux_type=string" 4
-.IX Item "selinux_type=string"
-SELinux type to use when executing the command, if specified by
-the \f(CW\*(C`\-t\*(C'\fR flag.
-.IP "bsdauth_type=string" 4
-.IX Item "bsdauth_type=string"
-Authentication type, if specified by the \f(CW\*(C`\-a\*(C'\fR flag, to use on
-systems where \s-1BSD\s0 authentication is supported.
-.IP "network_addrs=list" 4
-.IX Item "network_addrs=list"
-A space-separated list of \s-1IP\s0 network addresses and netmasks in the
-form \*(L"addr/netmask\*(R", e.g. \*(L"192.168.1.2/255.255.255.0\*(R".  The address
-and netmask pairs may be either IPv4 or IPv6, depending on what the
-operating system supports.  If the address contains a colon (':'),
-it is an IPv6 address, else it is IPv4.
-.IP "progname=string" 4
-.IX Item "progname=string"
-The command name that sudo was run as, typically \*(L"sudo\*(R" or \*(L"sudoedit\*(R".
-.IP "sudoedit=bool" 4
-.IX Item "sudoedit=bool"
-Set to true when the \f(CW\*(C`\-e\*(C'\fR flag is is specified or if invoked as
-\&\fBsudoedit\fR.  The plugin shall substitute an editor into \fIargv\fR
-in the \fIcheck_policy\fR function or return \f(CW\*(C`\-2\*(C'\fR with a usage error
-if the plugin does not support \fIsudoedit\fR.  For more information,
-see the \fIcheck_policy\fR section.
-.IP "closefrom=number" 4
-.IX Item "closefrom=number"
-If specified, the user has requested via the \f(CW\*(C`\-C\*(C'\fR flag that \fBsudo\fR
-close all files descriptors with a value of \fInumber\fR or higher.
-The plugin may optionally pass this, or another value, back in the
-\&\fIcommand_info\fR list.
-.RE
-.RS 4
-.Sp
-Additional settings may be added in the future so the plugin should
-silently ignore settings that it does not recognize.
-.RE
-.IP "user_info" 4
-.IX Item "user_info"
-A vector of information about the user running the command in the form of
-\&\*(L"name=value\*(R" strings.  The vector is terminated by a \f(CW\*(C`NULL\*(C'\fR pointer.
-.Sp
-When parsing \fIuser_info\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.RS 4
-.IP "user=string" 4
-.IX Item "user=string"
-The name of the user invoking \fBsudo\fR.
-.IP "uid=uid_t" 4
-.IX Item "uid=uid_t"
-The real user \s-1ID\s0 of the user invoking \fBsudo\fR.
-.IP "gid=gid_t" 4
-.IX Item "gid=gid_t"
-The real group \s-1ID\s0 of the user invoking \fBsudo\fR.
-.IP "groups=list" 4
-.IX Item "groups=list"
-The user's supplementary group list formatted as a string of
-comma-separated group IDs.
-.IP "cwd=string" 4
-.IX Item "cwd=string"
-The user's current working directory.
-.IP "tty=string" 4
-.IX Item "tty=string"
-The path to the user's terminal device.  If the user has no terminal
-device associated with the session, the value will be empty, as in
-\&\f(CW\*(C`tty=\*(C'\fR.
-.IP "host=string" 4
-.IX Item "host=string"
-The local machine's hostname as returned by the \f(CW\*(C`gethostname()\*(C'\fR
-system call.
-.IP "lines=int" 4
-.IX Item "lines=int"
-The number of lines the user's terminal supports.  If there is
-no terminal device available, a default value of 24 is used.
-.IP "cols=int" 4
-.IX Item "cols=int"
-The number of columns the user's terminal supports.  If there is
-no terminal device available, a default value of 80 is used.
-.RE
-.RS 4
-.RE
-.IP "user_env" 4
-.IX Item "user_env"
-The user's environment in the form of a \f(CW\*(C`NULL\*(C'\fR\-terminated vector of
-\&\*(L"name=value\*(R" strings.
-.Sp
-When parsing \fIuser_env\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.RE
-.RS 4
-.RE
-.IP "close" 4
-.IX Item "close"
-.Vb 1
-\& void (*close)(int exit_status, int error);
-.Ve
-.Sp
-The \f(CW\*(C`close\*(C'\fR function is called when the command being run by \fBsudo\fR
-finishes.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "exit_status" 4
-.IX Item "exit_status"
-The command's exit status, as returned by the \fIwait\fR\|(2) system call.
-The value of \f(CW\*(C`exit_status\*(C'\fR is undefined if \f(CW\*(C`error\*(C'\fR is non-zero.
-.IP "error" 4
-.IX Item "error"
-If the command could not be executed, this is set to the value of
-\&\f(CW\*(C`errno\*(C'\fR set by the \fIexecve\fR\|(2) system call.  The plugin is responsible
-for displaying error information via the conversation or plugin_printf
-function.  If the command was successfully executed, the value of
-\&\f(CW\*(C`error\*(C'\fR is 0.
-.RE
-.RS 4
-.RE
-.IP "show_version" 4
-.IX Item "show_version"
-.Vb 1
-\& int (*show_version)(int verbose);
-.Ve
-.Sp
-The \f(CW\*(C`show_version\*(C'\fR function is called by \fBsudo\fR when the user specifies
-the \f(CW\*(C`\-V\*(C'\fR option.  The plugin may display its version information
-to the user via the conversation or plugin_printf function using
-\&\f(CW\*(C`SUDO_CONV_INFO_MSG\*(C'\fR.  If the user requests detailed version
-information, the verbose flag will be set.
-.IP "check_policy" 4
-.IX Item "check_policy"
-.Vb 3
-\& int (*check_policy)(int argc, char * const argv[]
-\&                     char *env_add[], char **command_info[],
-\&                     char **argv_out[], char **user_env_out[]);
-.Ve
-.Sp
-The \fIcheck_policy\fR function is called by \fBsudo\fR to determine
-whether the user is allowed to run the specified commands.
-.Sp
-If the \fIsudoedit\fR option was enabled in the \fIsettings\fR array
-passed to the \fIopen\fR function, the user has requested \fIsudoedit\fR
-mode.  \fIsudoedit\fR is a mechanism for editing one or more files
-where an editor is run with the user's credentials instead of with
-elevated privileges.  \fBsudo\fR achieves this by creating user-writable
-temporary copies of the files to be edited and then overwriting the
-originals with the temporary copies after editing is complete.  If
-the plugin supports \fBsudoedit\fR, it should choose the editor to be
-used, potentially from a variable in the user's environment, such
-as \f(CW\*(C`EDITOR\*(C'\fR, and include it in \fIargv_out\fR (note that environment
-variables may include command line flags).  The files to be edited
-should be copied from \fIargv\fR into \fIargv_out\fR, separated from the
-editor and its arguments by a \f(CW"\-\-"\fR element.  The \f(CW"\-\-"\fR will
-be removed by \fBsudo\fR before the editor is executed.  The plugin
-should also set \fIsudoedit=true\fR in the \fIcommand_info\fR list.
-.Sp
-The \fIcheck_policy\fR function returns 1 if the command is allowed,
-0 if not allowed, \-1 for a general error, or \-2 for a usage error
-or if \fBsudoedit\fR was specified but is unsupported by the plugin.
-In the latter case, \fBsudo\fR will print a usage message before it
-exits.  If an error occurs, the plugin may optionally call the
-conversation or plugin_printf function with \f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR
-to present additional error information to the user.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "argc" 4
-.IX Item "argc"
-The number of elements in \fIargv\fR, not counting the final \f(CW\*(C`NULL\*(C'\fR
-pointer.
-.IP "argv" 4
-.IX Item "argv"
-The argument vector describing the command the user wishes to run,
-in the same form as what would be passed to the \fIexecve()\fR system
-call.  The vector is terminated by a \f(CW\*(C`NULL\*(C'\fR pointer.
-.IP "env_add" 4
-.IX Item "env_add"
-Additional environment variables specified by the user on the command
-line in the form of a \f(CW\*(C`NULL\*(C'\fR\-terminated vector of \*(L"name=value\*(R"
-strings.  The plugin may reject the command if one or more variables
-are not allowed to be set, or it may silently ignore such variables.
-.Sp
-When parsing \fIenv_add\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.IP "command_info" 4
-.IX Item "command_info"
-Information about the command being run in the form of \*(L"name=value\*(R"
-strings.  These values are used by \fBsudo\fR to set the execution
-environment when running a command.  The plugin is responsible for
-creating and populating the vector, which must be terminated with
-a \f(CW\*(C`NULL\*(C'\fR pointer.  The following values are recognized by \fBsudo\fR:
-.RS 4
-.IP "command=string" 4
-.IX Item "command=string"
-Fully qualified path to the command to be executed.
-.IP "runas_uid=uid" 4
-.IX Item "runas_uid=uid"
-User \s-1ID\s0 to run the command as.
-.IP "runas_euid=uid" 4
-.IX Item "runas_euid=uid"
-Effective user \s-1ID\s0 to run the command as.
-If not specified, the value of \fIrunas_uid\fR is used.
-.IP "runas_gid=gid" 4
-.IX Item "runas_gid=gid"
-Group \s-1ID\s0 to run the command as.
-.IP "runas_egid=gid" 4
-.IX Item "runas_egid=gid"
-Effective group \s-1ID\s0 to run the command as.
-If not specified, the value of \fIrunas_gid\fR is used.
-.IP "runas_groups=list" 4
-.IX Item "runas_groups=list"
-The supplementary group vector to use for the command in the form
-of a comma-separated list of group IDs.  If \fIpreserve_groups\fR
-is set, this option is ignored.
-.IP "login_class=string" 4
-.IX Item "login_class=string"
-\&\s-1BSD\s0 login class to use when setting resource limits and nice value
-(optional).  This option is only set on systems that support login
-classes.
-.IP "preserve_groups=bool" 4
-.IX Item "preserve_groups=bool"
-If set, \fBsudo\fR will preserve the user's group vector instead of
-initializing the group vector based on \f(CW\*(C`runas_user\*(C'\fR.
-.IP "cwd=string" 4
-.IX Item "cwd=string"
-The current working directory to change to when executing the command.
-.IP "noexec=bool" 4
-.IX Item "noexec=bool"
-If set, prevent the command from executing other programs.
-.IP "chroot=string" 4
-.IX Item "chroot=string"
-The root directory to use when running the command.
-.IP "nice=int" 4
-.IX Item "nice=int"
-Nice value (priority) to use when executing the command.  The nice
-value, if specified, overrides the priority associated with the
-\&\fIlogin_class\fR on \s-1BSD\s0 systems.
-.IP "umask=octal" 4
-.IX Item "umask=octal"
-The file creation mask to use when executing the command.
-.IP "selinux_role=string" 4
-.IX Item "selinux_role=string"
-SELinux role to use when executing the command.
-.IP "selinux_type=string" 4
-.IX Item "selinux_type=string"
-SELinux type to use when executing the command.
-.IP "timeout=int" 4
-.IX Item "timeout=int"
-Command timeout.  If non-zero then when the timeout expires the
-command will be killed.
-.IP "sudoedit=bool" 4
-.IX Item "sudoedit=bool"
-Set to true when in \fIsudoedit\fR mode.  The plugin may enable
-\&\fIsudoedit\fR mode even if \fBsudo\fR was not invoked as \fBsudoedit\fR.
-This allows the plugin to perform command substitution and transparently
-enable \fIsudoedit\fR when the user attempts to run an editor.
-.IP "closefrom=number" 4
-.IX Item "closefrom=number"
-If specified, \fBsudo\fR will close all files descriptors with a value
-of \fInumber\fR or higher.
-.IP "iolog_compress=bool" 4
-.IX Item "iolog_compress=bool"
-Set to true if the I/O logging plugins, if any, should compress the
-log data.  This is a hint to the I/O logging plugin which may choose
-to ignore it.
-.IP "iolog_path=string" 4
-.IX Item "iolog_path=string"
-Fully qualified path to the file or directory in which I/O log is
-to be stored.  This is a hint to the I/O logging plugin which may
-choose to ignore it.  If no I/O logging plugin is loaded, this
-setting has no effect.
-.IP "iolog_stdin=bool" 4
-.IX Item "iolog_stdin=bool"
-Set to true if the I/O logging plugins, if any, should log the
-standard input if it is not connected to a terminal device.  This
-is a hint to the I/O logging plugin which may choose to ignore it.
-.IP "iolog_stdout=bool" 4
-.IX Item "iolog_stdout=bool"
-Set to true if the I/O logging plugins, if any, should log the
-standard output if it is not connected to a terminal device.  This
-is a hint to the I/O logging plugin which may choose to ignore it.
-.IP "iolog_stderr=bool" 4
-.IX Item "iolog_stderr=bool"
-Set to true if the I/O logging plugins, if any, should log the
-standard error if it is not connected to a terminal device.  This
-is a hint to the I/O logging plugin which may choose to ignore it.
-.IP "iolog_ttyin=bool" 4
-.IX Item "iolog_ttyin=bool"
-Set to true if the I/O logging plugins, if any, should log all
-terminal input.  This only includes input typed by the user and not
-from a pipe or redirected from a file.  This is a hint to the I/O
-logging plugin which may choose to ignore it.
-.IP "iolog_ttyout=bool" 4
-.IX Item "iolog_ttyout=bool"
-Set to true if the I/O logging plugins, if any, should log all
-terminal output.  This only includes output to the screen, not
-output to a pipe or file.  This is a hint to the I/O logging plugin
-which may choose to ignore it.
-.IP "use_pty=bool" 4
-.IX Item "use_pty=bool"
-Allocate a pseudo-tty to run the command in, regardless of whether
-or not I/O logging is in use.  By default, \fBsudo\fR will only run
-the command in a pty when an I/O log plugin is loaded.
-.IP "set_utmp=bool" 4
-.IX Item "set_utmp=bool"
-Create a utmp (or utmpx) entry when a pseudo-tty is allocated.  By
-default, the new entry will be a copy of the user's existing utmp
-entry (if any), with the tty, time, type and pid fields updated.
-.IP "utmp_user=string" 4
-.IX Item "utmp_user=string"
-User name to use when constructing a new utmp (or utmpx) entry when
-\&\fIset_utmp\fR is enabled.  This option can be used to set the user
-field in the utmp entry to the user the command runs as rather than
-the invoking user.  If not set, \fBsudo\fR will base the new entry on
-the invoking user's existing entry.
-.RE
-.RS 4
-.Sp
-Unsupported values will be ignored.
-.RE
-.IP "argv_out" 4
-.IX Item "argv_out"
-The \f(CW\*(C`NULL\*(C'\fR\-terminated argument vector to pass to the \fIexecve()\fR
-system call when executing the command.  The plugin is responsible
-for allocating and populating the vector.
-.IP "user_env_out" 4
-.IX Item "user_env_out"
-The \f(CW\*(C`NULL\*(C'\fR\-terminated environment vector to use when executing the
-command.  The plugin is responsible for allocating and populating
-the vector.
-.RE
-.RS 4
-.RE
-.IP "list" 4
-.IX Item "list"
-.Vb 2
-\& int (*list)(int verbose, const char *list_user,
-\&             int argc, char * const argv[]);
-.Ve
-.Sp
-List available privileges for the invoking user.  Returns 1 on
-success, 0 on failure and \-1 on error.  On error, the plugin may
-optionally call the conversation or plugin_printf function with
-\&\f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR to present additional error information to
-the user.
-.Sp
-Privileges should be output via the conversation or plugin_printf
-function using \f(CW\*(C`SUDO_CONV_INFO_MSG\*(C'\fR.
-.RS 4
-.IP "verbose" 4
-.IX Item "verbose"
-Flag indicating whether to list in verbose mode or not.
-.IP "list_user" 4
-.IX Item "list_user"
-The name of a different user to list privileges for if the policy
-allows it.  If \f(CW\*(C`NULL\*(C'\fR, the plugin should list the privileges of
-the invoking user.
-.IP "argc" 4
-.IX Item "argc"
-The number of elements in \fIargv\fR, not counting the final \f(CW\*(C`NULL\*(C'\fR
-pointer.
-.IP "argv" 4
-.IX Item "argv"
-If non\-\f(CW\*(C`NULL\*(C'\fR, an argument vector describing a command the user
-wishes to check against the policy in the same form as what would
-be passed to the \fIexecve()\fR system call.  If the command is permitted
-by the policy, the fully-qualified path to the command should be
-displayed along with any command line arguments.
-.RE
-.RS 4
-.RE
-.IP "validate" 4
-.IX Item "validate"
-.Vb 1
-\& int (*validate)(void);
-.Ve
-.Sp
-The \f(CW\*(C`validate\*(C'\fR function is called when \fBsudo\fR is run with the
-\&\f(CW\*(C`\-v\*(C'\fR flag.  For policy plugins such as \fIsudoers\fR that cache
-authentication credentials, this function will validate and cache
-the credentials.
-.Sp
-The \f(CW\*(C`validate\*(C'\fR function should be \f(CW\*(C`NULL\*(C'\fR if the plugin does not
-support credential caching.
-.Sp
-Returns 1 on success, 0 on failure and \-1 on error.
-On error, the plugin may optionally call the conversation or plugin_printf
-function with \f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR to present additional
-error information to the user.
-.IP "invalidate" 4
-.IX Item "invalidate"
-.Vb 1
-\& void (*invalidate)(int remove);
-.Ve
-.Sp
-The \f(CW\*(C`invalidate\*(C'\fR function is called when \fBsudo\fR is called with
-the \f(CW\*(C`\-k\*(C'\fR or \f(CW\*(C`\-K\*(C'\fR flag.  For policy plugins such as \fIsudoers\fR that
-cache authentication credentials, this function will invalidate the
-credentials.  If the \fIremove\fR flag is set, the plugin may remove
-the credentials instead of simply invalidating them.
-.Sp
-The \f(CW\*(C`invalidate\*(C'\fR function should be \f(CW\*(C`NULL\*(C'\fR if the plugin does not
-support credential caching.
-.IP "init_session" 4
-.IX Item "init_session"
-.Vb 1
-\& int (*init_session)(struct passwd *pwd);
-.Ve
-.Sp
-The \f(CW\*(C`init_session\*(C'\fR function is called when \fBsudo\fR sets up the
-execution environment for the command, immediately before the
-contents of the \fIcommand_info\fR list are applied (before the uid
-changes).  This can be used to do session setup that is not supported
-by \fIcommand_info\fR, such as opening the \s-1PAM\s0 session.
-.Sp
-The \fIpwd\fR argument points to a passwd struct for the user the
-command will be run as if the uid the command will run as was found
-in the password database, otherwise it will be \s-1NULL\s0.
-.Sp
-Returns 1 on success, 0 on failure and \-1 on error.
-On error, the plugin may optionally call the conversation or plugin_printf
-function with \f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR to present additional
-error information to the user.
-.PP
-\fIVersion macros\fR
-.IX Subsection "Version macros"
-.PP
-.Vb 8
-\& #define SUDO_API_VERSION_GET_MAJOR(v) ((v) >> 16)
-\& #define SUDO_API_VERSION_GET_MINOR(v) ((v) & 0xffff)
-\& #define SUDO_API_VERSION_SET_MAJOR(vp, n) do { \e
-\&     *(vp) = (*(vp) & 0x0000ffff) | ((n) << 16); \e
-\& } while(0)
-\& #define SUDO_VERSION_SET_MINOR(vp, n) do { \e
-\&     *(vp) = (*(vp) & 0xffff0000) | (n); \e
-\& } while(0)
-\&
-\& #define SUDO_API_VERSION_MAJOR 1
-\& #define SUDO_API_VERSION_MINOR 0
-\& #define SUDO_API_VERSION ((SUDO_API_VERSION_MAJOR << 16) | \e
-\&                           SUDO_API_VERSION_MINOR)
-.Ve
-.SS "I/O Plugin \s-1API\s0"
-.IX Subsection "I/O Plugin API"
-.Vb 10
-\& struct io_plugin {
-\& #define SUDO_IO_PLUGIN         2
-\&     unsigned int type; /* always SUDO_IO_PLUGIN */
-\&     unsigned int version; /* always SUDO_API_VERSION */
-\&     int (*open)(unsigned int version, sudo_conv_t conversation
-\&                 sudo_printf_t plugin_printf, char * const settings[],
-\&                 char * const user_info[], int argc, char * const argv[],
-\&                 char * const user_env[]);
-\&     void (*close)(int exit_status, int error); /* wait status or error */
-\&     int (*show_version)(int verbose);
-\&     int (*log_ttyin)(const char *buf, unsigned int len);
-\&     int (*log_ttyout)(const char *buf, unsigned int len);
-\&     int (*log_stdin)(const char *buf, unsigned int len);
-\&     int (*log_stdout)(const char *buf, unsigned int len);
-\&     int (*log_stderr)(const char *buf, unsigned int len);
-\& };
-.Ve
-.PP
-When an I/O plugin is loaded, \fBsudo\fR runs the command in a pseudo-tty.
-This makes it possible to log the input and output from the user's
-session.  If any of the standard input, standard output or standard
-error do not correspond to a tty, \fBsudo\fR will open a pipe to capture
-the I/O for logging before passing it on.
-.PP
-The log_ttyin function receives the raw user input from the terminal
-device (note that this will include input even when echo is disabled,
-such as when a password is read). The log_ttyout function receives
-output from the pseudo-tty that is suitable for replaying the user's
-session at a later time.  The log_stdin, log_stdout and log_stderr
-functions are only called if the standard input, standard output
-or standard error respectively correspond to something other than
-a tty.
-.PP
-Any of the logging functions may be set to the \s-1NULL\s0
-pointer if no logging is to be performed.  If the open function
-returns \f(CW0\fR, no I/O will be sent to the plugin.
-.PP
-The io_plugin struct has the following fields:
-.IP "type" 4
-.IX Item "type"
-The \f(CW\*(C`type\*(C'\fR field should always be set to \s-1SUDO_IO_PLUGIN\s0
-.IP "version" 4
-.IX Item "version"
-The \f(CW\*(C`version\*(C'\fR field should be set to \s-1SUDO_API_VERSION\s0.
-.Sp
-This allows \fBsudo\fR to determine the \s-1API\s0 version the plugin was
-built against.
-.IP "open" 4
-.IX Item "open"
-.Vb 4
-\& int (*open)(unsigned int version, sudo_conv_t conversation
-\&             sudo_printf_t plugin_printf, char * const settings[],
-\&             char * const user_info[], int argc, char * const argv[],
-\&             char * const user_env[]);
-.Ve
-.Sp
-The \fIopen\fR function is run before the \fIlog_input\fR, \fIlog_output\fR
-or \fIshow_version\fR functions are called.  It is only called if the
-version is being requested or the \fIcheck_policy\fR function has
-returned successfully.  It returns 1 on success, 0 on failure, \-1
-if a general error occurred, or \-2 if there was a usage error.  In
-the latter case, \fBsudo\fR will print a usage message before it exits.
-If an error occurs, the plugin may optionally call the conversation
-or plugin_printf function with \f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR to present
-additional error information to the user.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "version" 4
-.IX Item "version"
-The version passed in by \fBsudo\fR allows the plugin to determine the
-major and minor version number of the plugin \s-1API\s0 supported by
-\&\fBsudo\fR.
-.IP "conversation" 4
-.IX Item "conversation"
-A pointer to the conversation function that may be used by the
-\&\fIshow_version\fR function to display version information (see
-show_version below).  The conversation function may also be used
-to display additional error message to the user.
-The conversation function returns 0 on success and \-1 on failure.
-.IP "plugin_printf" 4
-.IX Item "plugin_printf"
-A pointer to a printf-style function that may be used by the
-\&\fIshow_version\fR function to display version information (see
-show_version below).  The plugin_printf function may also be used
-to display additional error message to the user.
-The plugin_printf function returns number of characters printed on
-success and \-1 on failure.
-.IP "settings" 4
-.IX Item "settings"
-A vector of user-supplied \fBsudo\fR settings in the form of \*(L"name=value\*(R"
-strings.  The vector is terminated by a \f(CW\*(C`NULL\*(C'\fR pointer.  These
-settings correspond to flags the user specified when running \fBsudo\fR.
-As such, they will only be present when the corresponding flag has
-been specified on the command line.
-.Sp
-When parsing \fIsettings\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.Sp
-See the \*(L"Policy Plugin \s-1API\s0\*(R" section for a list of all possible settings.
-.IP "user_info" 4
-.IX Item "user_info"
-A vector of information about the user running the command in the form of
-\&\*(L"name=value\*(R" strings.  The vector is terminated by a \f(CW\*(C`NULL\*(C'\fR pointer.
-.Sp
-When parsing \fIuser_info\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.Sp
-See the \*(L"Policy Plugin \s-1API\s0\*(R" section for a list of all possible strings.
-.IP "argc" 4
-.IX Item "argc"
-The number of elements in \fIargv\fR, not counting the final \f(CW\*(C`NULL\*(C'\fR
-pointer.
-.IP "argv" 4
-.IX Item "argv"
-If non\-\f(CW\*(C`NULL\*(C'\fR, an argument vector describing a command the user
-wishes to run in the same form as what would be passed to the
-\&\fIexecve()\fR system call.
-.IP "user_env" 4
-.IX Item "user_env"
-The user's environment in the form of a \f(CW\*(C`NULL\*(C'\fR\-terminated vector of
-\&\*(L"name=value\*(R" strings.
-.Sp
-When parsing \fIuser_env\fR, the plugin should split on the \fBfirst\fR
-equal sign ('=') since the \fIname\fR field will never include one
-itself but the \fIvalue\fR might.
-.RE
-.RS 4
-.RE
-.IP "close" 4
-.IX Item "close"
-.Vb 1
-\& void (*close)(int exit_status, int error);
-.Ve
-.Sp
-The \f(CW\*(C`close\*(C'\fR function is called when the command being run by \fBsudo\fR
-finishes.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "exit_status" 4
-.IX Item "exit_status"
-The command's exit status, as returned by the \fIwait\fR\|(2) system call.
-The value of \f(CW\*(C`exit_status\*(C'\fR is undefined if \f(CW\*(C`error\*(C'\fR is non-zero.
-.IP "error" 4
-.IX Item "error"
-If the command could not be executed, this is set to the value of
-\&\f(CW\*(C`errno\*(C'\fR set by the \fIexecve\fR\|(2) system call.  If the command was
-successfully executed, the value of \f(CW\*(C`error\*(C'\fR is 0.
-.RE
-.RS 4
-.RE
-.IP "show_version" 4
-.IX Item "show_version"
-.Vb 1
-\& int (*show_version)(int verbose);
-.Ve
-.Sp
-The \f(CW\*(C`show_version\*(C'\fR function is called by \fBsudo\fR when the user specifies
-the \f(CW\*(C`\-V\*(C'\fR option.  The plugin may display its version information
-to the user via the conversation or plugin_printf function using
-\&\f(CW\*(C`SUDO_CONV_INFO_MSG\*(C'\fR.  If the user requests detailed version
-information, the verbose flag will be set.
-.IP "log_ttyin" 4
-.IX Item "log_ttyin"
-.Vb 1
-\& int (*log_ttyin)(const char *buf, unsigned int len);
-.Ve
-.Sp
-The \fIlog_ttyin\fR function is called whenever data can be read from
-the user but before it is passed to the running command.  This
-allows the plugin to reject data if it chooses to (for instance
-if the input contains banned content).  Returns \f(CW1\fR if the data
-should be passed to the command, \f(CW0\fR if the data is rejected
-(which will terminate the command) or \f(CW\*(C`\-1\*(C'\fR if an error occurred.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "buf" 4
-.IX Item "buf"
-The buffer containing user input.
-.IP "len" 4
-.IX Item "len"
-The length of \fIbuf\fR in bytes.
-.RE
-.RS 4
-.RE
-.IP "log_ttyout" 4
-.IX Item "log_ttyout"
-.Vb 1
-\& int (*log_ttyout)(const char *buf, unsigned int len);
-.Ve
-.Sp
-The \fIlog_ttyout\fR function is called whenever data can be read from
-the command but before it is written to the user's terminal.  This
-allows the plugin to reject data if it chooses to (for instance
-if the output contains banned content).  Returns \f(CW1\fR if the data
-should be passed to the user, \f(CW0\fR if the data is rejected
-(which will terminate the command) or \f(CW\*(C`\-1\*(C'\fR if an error occurred.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "buf" 4
-.IX Item "buf"
-The buffer containing command output.
-.IP "len" 4
-.IX Item "len"
-The length of \fIbuf\fR in bytes.
-.RE
-.RS 4
-.RE
-.IP "log_stdin" 4
-.IX Item "log_stdin"
-.Vb 1
-\& int (*log_stdin)(const char *buf, unsigned int len);
-.Ve
-.Sp
-The \fIlog_stdin\fR function is only used if the standard input does
-not correspond to a tty device.  It is called whenever data can be
-read from the standard input but before it is passed to the running
-command.  This allows the plugin to reject data if it chooses to
-(for instance if the input contains banned content).  Returns \f(CW1\fR
-if the data should be passed to the command, \f(CW0\fR if the data is
-rejected (which will terminate the command) or \f(CW\*(C`\-1\*(C'\fR if an error
-occurred.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "buf" 4
-.IX Item "buf"
-The buffer containing user input.
-.IP "len" 4
-.IX Item "len"
-The length of \fIbuf\fR in bytes.
-.RE
-.RS 4
-.RE
-.IP "log_stdout" 4
-.IX Item "log_stdout"
-.Vb 1
-\& int (*log_stdout)(const char *buf, unsigned int len);
-.Ve
-.Sp
-The \fIlog_stdout\fR function is only used if the standard output does
-not correspond to a tty device.  It is called whenever data can be
-read from the command but before it is written to the standard
-output.  This allows the plugin to reject data if it chooses to
-(for instance if the output contains banned content).  Returns \f(CW1\fR
-if the data should be passed to the user, \f(CW0\fR if the data is
-rejected (which will terminate the command) or \f(CW\*(C`\-1\*(C'\fR if an error
-occurred.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "buf" 4
-.IX Item "buf"
-The buffer containing command output.
-.IP "len" 4
-.IX Item "len"
-The length of \fIbuf\fR in bytes.
-.RE
-.RS 4
-.RE
-.IP "log_stderr" 4
-.IX Item "log_stderr"
-.Vb 1
-\& int (*log_stderr)(const char *buf, unsigned int len);
-.Ve
-.Sp
-The \fIlog_stderr\fR function is only used if the standard error does
-not correspond to a tty device.  It is called whenever data can be
-read from the command but before it is written to the standard
-error.  This allows the plugin to reject data if it chooses to
-(for instance if the output contains banned content).  Returns \f(CW1\fR
-if the data should be passed to the user, \f(CW0\fR if the data is
-rejected (which will terminate the command) or \f(CW\*(C`\-1\*(C'\fR if an error
-occurred.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "buf" 4
-.IX Item "buf"
-The buffer containing command output.
-.IP "len" 4
-.IX Item "len"
-The length of \fIbuf\fR in bytes.
-.RE
-.RS 4
-.RE
-.PP
-\fIVersion macros\fR
-.IX Subsection "Version macros"
-.PP
-Same as for the \*(L"Policy Plugin \s-1API\s0\*(R".
-.SS "Conversation \s-1API\s0"
-.IX Subsection "Conversation API"
-If the plugin needs to interact with the user, it may do so via the
-conversation function.  A plugin should not attempt to read directly
-from the standard input or the user's tty (neither of which are
-guaranteed to exist).  The caller must include a trailing newline
-in \f(CW\*(C`msg\*(C'\fR if one is to be printed.
-.PP
-A printf-style function is also available that can be used to display
-informational or error messages to the user, which is usually more
-convenient for simple messages where no use input is required.
-.PP
-.Vb 12
-\& struct sudo_conv_message {
-\& #define SUDO_CONV_PROMPT_ECHO_OFF  0x0001 /* do not echo user input */
-\& #define SUDO_CONV_PROMPT_ECHO_ON   0x0002 /* echo user input */
-\& #define SUDO_CONV_ERROR_MSG        0x0003 /* error message */
-\& #define SUDO_CONV_INFO_MSG         0x0004 /* informational message */
-\& #define SUDO_CONV_PROMPT_MASK      0x0005 /* mask user input */
-\& #define SUDO_CONV_DEBUG_MSG        0x0006 /* debugging message */
-\& #define SUDO_CONV_PROMPT_ECHO_OK   0x1000 /* flag: allow echo if no tty */
-\&     int msg_type;
-\&     int timeout;
-\&     const char *msg;
-\& };
-\&
-\& struct sudo_conv_reply {
-\&     char *reply;
-\& };
-\&
-\& typedef int (*sudo_conv_t)(int num_msgs,
-\&              const struct sudo_conv_message msgs[],
-\&              struct sudo_conv_reply replies[]);
-\&
-\& typedef int (*sudo_printf_t)(int msg_type, const char *fmt, ...);
-.Ve
-.PP
-Pointers to the conversation and printf-style functions are passed
-in to the plugin's \f(CW\*(C`open\*(C'\fR function when the plugin is initialized.
-.PP
-To use the conversation function, the plugin must pass an array of
-\&\f(CW\*(C`sudo_conv_message\*(C'\fR and \f(CW\*(C`sudo_conv_reply\*(C'\fR structures.  There must
-be a \f(CW\*(C`struct sudo_conv_message\*(C'\fR and \f(CW\*(C`struct sudo_conv_reply\*(C'\fR for
-each message in the conversation.  The plugin is responsible for
-freeing the reply buffer filled in to the \f(CW\*(C`struct sudo_conv_reply\*(C'\fR,
-if any.
-.PP
-The printf-style function uses the same underlying mechanism as the
-conversation function but only supports \f(CW\*(C`SUDO_CONV_INFO_MSG\*(C'\fR,
-\&\f(CW\*(C`SUDO_CONV_ERROR_MSG\*(C'\fR and \f(CW\*(C`SUDO_CONV_DEBUG_MSG\*(C'\fR for the \fImsg_type\fR
-parameter.  It can be more convenient than using the conversation
-function if no user reply is needed and supports standard \fIprintf()\fR
-escape sequences.
-.PP
-Unlike, \f(CW\*(C`SUDO_CONV_INFO_MSG\*(C'\fR and \f(CW\*(C`SUDO_CONV_ERROR_MSG\*(C'\fR, messages
-sent with the <\s-1SUDO_CONV_DEBUG_MSG\s0> \fImsg_type\fR are not directly
-user-visible.  Instead, they are logged to the file specified in
-the \f(CW\*(C`Debug\*(C'\fR statement (if any) in the \fI/etc/sudo.conf\fR
-file.  This allows a plugin to log debugging information and is
-intended to be used in conjunction with the \fIdebug_flags\fR setting.
-.PP
-See the sample plugin for an example of the conversation function usage.
-.SS "Sudoers Group Plugin \s-1API\s0"
-.IX Subsection "Sudoers Group Plugin API"
-The \fIsudoers\fR module supports a plugin interface to allow non-Unix
-group lookups.  This can be used to query a group source other than
-the standard Unix group database.  A sample group plugin is bundled
-with \fBsudo\fR that implements file-based lookups.  Third party group
-plugins include a \s-1QAS\s0 \s-1AD\s0 plugin available from Quest Software.
-.PP
-A group plugin must declare and populate a \f(CW\*(C`sudoers_group_plugin\*(C'\fR
-struct in the global scope.  This structure contains pointers to
-the functions that implement plugin initialization, cleanup and
-group lookup.
-.PP
-.Vb 8
-\& struct sudoers_group_plugin {
-\&    unsigned int version;
-\&    int (*init)(int version, sudo_printf_t sudo_printf,
-\&                char *const argv[]);
-\&    void (*cleanup)(void);
-\&    int (*query)(const char *user, const char *group,
-\&                 const struct passwd *pwd);
-\&};
-.Ve
-.PP
-The \f(CW\*(C`sudoers_group_plugin\*(C'\fR struct has the following fields:
-.IP "version" 4
-.IX Item "version"
-The \f(CW\*(C`version\*(C'\fR field should be set to \s-1GROUP_API_VERSION\s0.
-.Sp
-This allows \fIsudoers\fR to determine the \s-1API\s0 version the group plugin
-was built against.
-.IP "init" 4
-.IX Item "init"
-.Vb 2
-\& int (*init)(int version, sudo_printf_t plugin_printf,
-\&             char *const argv[]);
-.Ve
-.Sp
-The \fIinit\fR function is called after \fIsudoers\fR has been parsed but
-before any policy checks.  It returns 1 on success, 0 on failure
-(or if the plugin is not configured), and \-1 if a error occurred.
-If an error occurs, the plugin may call the plugin_printf function
-with \f(CW\*(C`SUDO_CONF_ERROR_MSG\*(C'\fR to present additional error information
-to the user.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "version" 4
-.IX Item "version"
-The version passed in by \fIsudoers\fR allows the plugin to determine the
-major and minor version number of the group plugin \s-1API\s0 supported by
-\&\fIsudoers\fR.
-.IP "plugin_printf" 4
-.IX Item "plugin_printf"
-A pointer to a printf-style function that may be used to display
-informational or error message to the user.
-Returns the number of characters printed on success and \-1 on failure.
-.IP "argv" 4
-.IX Item "argv"
-A NULL-terminated array of arguments generated from the \fIgroup_plugin\fR
-option in \fIsudoers\fR.  If no arguments were given, \fIargv\fR will be
-\&\s-1NULL\s0.
-.RE
-.RS 4
-.RE
-.IP "cleanup" 4
-.IX Item "cleanup"
-.Vb 1
-\& void (*cleanup)();
-.Ve
-.Sp
-The \fIcleanup\fR function is called when \fIsudoers\fR has finished its
-group checks.  The plugin should free any memory it has allocated
-and close open file handles.
-.IP "query" 4
-.IX Item "query"
-.Vb 2
-\& int (*query)(const char *user, const char *group,
-\&              const struct passwd *pwd);
-.Ve
-.Sp
-The \fIquery\fR function is used to ask the group plugin whether \fIuser\fR
-is a member of \fIgroup\fR.
-.Sp
-The function arguments are as follows:
-.RS 4
-.IP "user" 4
-.IX Item "user"
-The name of the user being looked up in the external group database.
-.IP "group" 4
-.IX Item "group"
-The name of the group being queried.
-.IP "pwd" 4
-.IX Item "pwd"
-The password database entry for \fIuser\fR, if any.  If \fIuser\fR is not
-present in the password database, \fIpwd\fR will be \f(CW\*(C`NULL\*(C'\fR.
-.RE
-.RS 4
-.RE
-.PP
-\fIVersion Macros\fR
-.IX Subsection "Version Macros"
-.PP
-.Vb 5
-\& /* Sudoers group plugin version major/minor */
-\& #define GROUP_API_VERSION_MAJOR 1
-\& #define GROUP_API_VERSION_MINOR 0
-\& #define GROUP_API_VERSION ((GROUP_API_VERSION_MAJOR << 16) | \e
-\&                            GROUP_API_VERSION_MINOR)
-\&
-\& /* Getters and setters for group version */
-\& #define GROUP_API_VERSION_GET_MAJOR(v) ((v) >> 16)
-\& #define GROUP_API_VERSION_GET_MINOR(v) ((v) & 0xffff)
-\& #define GROUP_API_VERSION_SET_MAJOR(vp, n) do { \e
-\&     *(vp) = (*(vp) & 0x0000ffff) | ((n) << 16); \e
-\& } while(0)
-\& #define GROUP_API_VERSION_SET_MINOR(vp, n) do { \e
-\&     *(vp) = (*(vp) & 0xffff0000) | (n); \e
-\& } while(0)
-.Ve
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIsudoers\fR\|(5), \fIsudo\fR\|(8)
-.SH "BUGS"
-.IX Header "BUGS"
-If you feel you have found a bug in \fBsudo\fR, please submit a bug report
-at http://www.sudo.ws/sudo/bugs/
-.SH "SUPPORT"
-.IX Header "SUPPORT"
-Limited free support is available via the sudo-workers mailing list,
-see http://www.sudo.ws/mailman/listinfo/sudo\-workers to subscribe or
-search the archives.
-.SH "DISCLAIMER"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-including, but not limited to, the implied warranties of merchantability
-and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-for complete details.
index 090e641..48e1d0e 100644 (file)
@@ -1,9 +1,12 @@
-.\" Copyright (c) 2009-2011 Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoreplay.mdoc.in
+.\"
+.\" Copyright (c) 2009-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
 .\"
-.IX Title "SUDOREPLAY 8"
-.TH SUDOREPLAY 8 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH "SUDOREPLAY" "8" "May 4, 2016" "Sudo 1.8.17" "System Manager's Manual"
 .nh
+.if n .ad l
 .SH "NAME"
-sudoreplay \- replay sudo session logs
+\fBsudoreplay\fR
+\- replay sudo session logs
 .SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-\&\fBsudoreplay\fR [\fB\-h\fR] [\fB\-d\fR \fIdirectory\fR] [\fB\-f\fR \fIfilter\fR] [\fB\-m\fR \fImax_wait\fR] [\fB\-s\fR \fIspeed_factor\fR] \s-1ID\s0
-.PP
-\&\fBsudoreplay\fR [\fB\-h\fR] [\fB\-d\fR \fIdirectory\fR] \-l [search expression]
+.HP 11n
+\fBsudoreplay\fR
+[\fB\-h\fR]
+[\fB\-d\fR\ \fIdir\fR]
+[\fB\-f\fR\ \fIfilter\fR]
+[\fB\-m\fR\ \fInum\fR]
+[\fB\-s\fR\ \fInum\fR]
+ID
+.HP 11n
+\fBsudoreplay\fR
+[\fB\-h\fR]
+[\fB\-d\fR\ \fIdir\fR]
+\fB\-l\fR
+[search\ expression]
 .SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBsudoreplay\fR plays back or lists the output logs created by \fBsudo\fR.
-When replaying, \fBsudoreplay\fR can play the session back in real-time,
-or the playback speed may be adjusted (faster or slower) based on
-the command line options.
+\fBsudoreplay\fR
+plays back or lists the output logs created by
+\fBsudo\fR.
+When replaying,
+\fBsudoreplay\fR
+can play the session back in real-time, or the playback speed may be
+adjusted (faster or slower) based on the command line options.
 .PP
-The \fI\s-1ID\s0\fR should either be a six character sequence of digits and
-upper case letters, e.g. \f(CW\*(C`0100A5\*(C'\fR, or a pattern matching the
-\&\fIiolog_file\fR option in the \fIsudoers\fR file.  When a command is run
-via \fBsudo\fR with \fIlog_output\fR enabled in the \fIsudoers\fR file, a
-\&\f(CW\*(C`TSID=ID\*(C'\fR string is logged via syslog or to the \fBsudo\fR log file.
-The \fI\s-1ID\s0\fR may also be determined using \fBsudoreplay\fR's list mode.
+The
+\fIID\fR
+should either be a six character sequence of digits and
+upper case letters, e.g.\&
+\fR0100A5\fR,
+or a pattern matching the
+\fIiolog_file\fR
+option in the
+\fIsudoers\fR
+file.
+When a command is run via
+\fBsudo\fR
+with
+\fIlog_output\fR
+enabled in the
+\fIsudoers\fR
+file, a
+\fRTSID=ID\fR
+string is logged via syslog or to the
+\fBsudo\fR
+log file.
+The
+\fIID\fR
+may also be determined using
+\fBsudoreplay\fR's
+list mode.
 .PP
-In list mode, \fBsudoreplay\fR can be used to find the \s-1ID\s0 of a session
-based on a number of criteria such as the user, tty or command run.
+In list mode,
+\fBsudoreplay\fR
+can be used to find the ID of a session based on a number of criteria
+such as the user, tty or command run.
 .PP
 In replay mode, if the standard output has not been redirected,
-\&\fBsudoreplay\fR will act on the following keys:
-.IP "' ' (space)" 8
-.IX Item "' ' (space)"
+\fBsudoreplay\fR
+will act on the following keys:
+.TP 14n
+\(oq\fR\en\fR\(cq or \(oq\fR\er\fR\(cq
+Skip to the next replay event; useful for long pauses.
+.TP 14n
+\(oq\fR\ \fR\(cq (space)
 Pause output; press any key to resume.
-.IP "'<'" 8
+.TP 14n
+\(oq<\(cq
 Reduce the playback speed by one half.
-.IP "'>'" 8
+.TP 14n
+\(oq>\(cq
 Double the playback speed.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-\&\fBsudoreplay\fR accepts the following command line options:
-.IP "\-d \fIdirectory\fR" 12
-.IX Item "-d directory"
-Use \fIdirectory\fR to for the session logs instead of the default,
-\&\fI/var/log/sudo\-io\fR.
-.IP "\-f \fIfilter\fR" 12
-.IX Item "-f filter"
-By default, \fBsudoreplay\fR will play back the command's standard
-output, standard error and tty output.  The \fI\-f\fR option can be
-used to select which of these to output.  The \fIfilter\fR argument
-is a comma-separated list, consisting of one or more of following:
-\&\fIstdout\fR, \fIstderr\fR, and \fIttyout\fR.
-.IP "\-h" 12
-.IX Item "-h"
-The \fB\-h\fR (\fIhelp\fR) option causes \fBsudoreplay\fR to print a short
-help message to the standard output and exit.
-.IP "\-l [\fIsearch expression\fR]" 12
-.IX Item "-l [search expression]"
-Enable \*(L"list mode\*(R".  In this mode, \fBsudoreplay\fR will list available
-session IDs.  If a \fIsearch expression\fR is specified, it will be
-used to restrict the IDs that are displayed.  An expression is
-composed of the following predicates:
-.RS 12
-.IP "command \fIcommand pattern\fR" 8
-.IX Item "command command pattern"
-Evaluates to true if the command run matches \fIcommand pattern\fR.
-On systems with \s-1POSIX\s0 regular expression support, the pattern may
-be an extended regular expression.  On systems without \s-1POSIX\s0 regular
-expression support, a simple substring match is performed instead.
-.IP "cwd \fIdirectory\fR" 8
-.IX Item "cwd directory"
+.PP
+The options are as follows:
+.TP 12n
+\fB\-d\fR \fIdir\fR, \fB\--directory\fR=\fIdir\fR
+Store session logs in
+\fIdir\fR
+instead of the default,
+\fI/var/log/sudo-io\fR.
+.TP 12n
+\fB\-f\fR \fIfilter\fR, \fB\--filter\fR=\fIfilter\fR
+Select which I/O type(s) to display.
+By default,
+\fBsudoreplay\fR
+will display the command's standard output, standard error and tty output.
+The
+\fIfilter\fR
+argument is a comma-separated list, consisting of one or more of following:
+\fIstdout\fR,
+\fIstderr\fR,
+and
+\fIttyout\fR.
+.TP 12n
+\fB\-h\fR, \fB\--help\fR
+Display a short help message to the standard output and exit.
+.TP 12n
+\fB\-l\fR, \fB\--list\fR [\fIsearch expression\fR]
+Enable
+\(Lqlist mode\(Rq.
+In this mode,
+\fBsudoreplay\fR
+will list available sessions in a format similar to the
+\fBsudo\fR
+log file format, sorted by file name (or sequence number).
+If a
+\fIsearch expression\fR
+is specified, it will be used to restrict the IDs that are displayed.
+An expression is composed of the following predicates:
+.PP
+.RS 12n
+.PD 0
+.TP 8n
+command \fIpattern\fR
+Evaluates to true if the command run matches the POSIX extended
+regular expression
+\fIpattern\fR.
+.PD
+.TP 8n
+cwd \fIdirectory\fR
 Evaluates to true if the command was run with the specified current
 working directory.
-.IP "fromdate \fIdate\fR" 8
-.IX Item "fromdate date"
-Evaluates to true if the command was run on or after \fIdate\fR.
-See \*(L"Date and time format\*(R" for a description of supported
-date and time formats.
-.IP "group \fIrunas_group\fR" 8
-.IX Item "group runas_group"
+.TP 8n
+fromdate \fIdate\fR
+Evaluates to true if the command was run on or after
+\fIdate\fR.
+See
+\fIDate and time format\fR
+for a description of supported date and time formats.
+.TP 8n
+group \fIrunas_group\fR
 Evaluates to true if the command was run with the specified
-\&\fIrunas_group\fR.  Note that unless a \fIrunas_group\fR was explicitly
-specified when \fBsudo\fR was run this field will be empty in the log.
-.IP "runas \fIrunas_user\fR" 8
-.IX Item "runas runas_user"
-Evaluates to true if the command was run as the specified \fIrunas_user\fR.
-Note that \fBsudo\fR runs commands as user \fIroot\fR by default.
-.IP "todate \fIdate\fR" 8
-.IX Item "todate date"
-Evaluates to true if the command was run on or prior to \fIdate\fR.
-See \*(L"Date and time format\*(R" for a description of supported
-date and time formats.
-.IP "tty \fItty\fR" 8
-.IX Item "tty tty"
-Evaluates to true if the command was run on the specified terminal
-device.  The \fItty\fR should be specified without the \fI/dev/\fR prefix,
-e.g.  \fItty01\fR instead of \fI/dev/tty01\fR.
-.IP "user \fIuser name\fR" 8
-.IX Item "user user name"
-Evaluates to true if the \s-1ID\s0 matches a command run by \fIuser name\fR.
-.RE
-.RS 12
-.Sp
-Predicates may be abbreviated to the shortest unique string (currently
-all predicates may be shortened to a single character).
-.Sp
-Predicates may be combined using \fIand\fR, \fIor\fR and \fI!\fR operators
-as well as \f(CW\*(Aq(\*(Aq\fR and \f(CW\*(Aq)\*(Aq\fR for grouping (note that parentheses
-must generally be escaped from the shell).  The \fIand\fR operator is
-optional, adjacent predicates have an implied \fIand\fR unless separated
-by an \fIor\fR.
+\fIrunas_group\fR.
+Note that unless a
+\fIrunas_group\fR
+was explicitly specified when
+\fBsudo\fR
+was run this field will be empty in the log.
+.TP 8n
+runas \fIrunas_user\fR
+Evaluates to true if the command was run as the specified
+\fIrunas_user\fR.
+Note that
+\fBsudo\fR
+runs commands as user
+\fIroot\fR
+by default.
+.TP 8n
+todate \fIdate\fR
+Evaluates to true if the command was run on or prior to
+\fIdate\fR.
+See
+\fIDate and time format\fR
+for a description of supported date and time formats.
+.TP 8n
+tty \fItty name\fR
+Evaluates to true if the command was run on the specified terminal device.
+The
+\fItty name\fR
+should be specified without the
+\fI/dev/\fR
+prefix, e.g.\&
+\fItty01\fR
+instead of
+\fI/dev/tty01\fR.
+.TP 8n
+user \fIuser name\fR
+Evaluates to true if the ID matches a command run by
+\fIuser name\fR.
+.PP
+Predicates may be abbreviated to the shortest unique string.
+.sp
+Predicates may be combined using
+\fIand\fR,
+\fIor\fR
+and
+\fI\&!\fR
+operators as well as
+\(oq\&(\(cq
+and
+\(oq\&)\(cq
+grouping (note that parentheses must generally be escaped from the shell).
+The
+\fIand\fR
+operator is optional, adjacent predicates have an implied
+\fIand\fR
+unless separated by an
+\fIor\fR.
 .RE
-.IP "\-m \fImax_wait\fR" 12
-.IX Item "-m max_wait"
-Specify an upper bound on how long to wait between key presses or
-output data.  By default, \fBsudo_replay\fR will accurately reproduce
-the delays between key presses or program output.  However, this
-can be tedious when the session includes long pauses.  When the
-\&\fI\-m\fR option is specified, \fBsudoreplay\fR will limit these pauses
-to at most \fImax_wait\fR seconds.  The value may be specified as a
-floating point number, .e.g. \fI2.5\fR.
-.IP "\-s \fIspeed_factor\fR" 12
-.IX Item "-s speed_factor"
-This option causes \fBsudoreplay\fR to adjust the number of seconds
-it will wait between key presses or program output.  This can be
-used to slow down or speed up the display.  For example, a
-\&\fIspeed_factor\fR of \fI2\fR would make the output twice as fast whereas
-a \fIspeed_factor\fR of <.5> would make the output twice as slow.
-.IP "\-V" 12
-.IX Item "-V"
-The \fB\-V\fR (version) option causes \fBsudoreplay\fR to print its version number
-and exit.
+.TP 12n
+\fB\-m\fR, \fB\--max-wait\fR \fImax_wait\fR
+Specify an upper bound on how long to wait between key presses or output data.
+By default,
+\fBsudoreplay\fR
+will accurately reproduce the delays between key presses or program output.
+However, this can be tedious when the session includes long pauses.
+When the
+\fB\-m\fR
+option is specified,
+\fBsudoreplay\fR
+will limit these pauses to at most
+\fImax_wait\fR
+seconds.
+The value may be specified as a floating point number, e.g.\&
+\fI2.5\fR.
+.TP 12n
+\fB\-s\fR, \fB\--speed\fR \fIspeed_factor\fR
+This option causes
+\fBsudoreplay\fR
+to adjust the number of seconds it will wait between key presses or
+program output.
+This can be used to slow down or speed up the display.
+For example, a
+\fIspeed_factor\fR
+of
+\fI2\fR
+would make the output twice as fast whereas a
+\fIspeed_factor\fR
+of
+\fI.5\fR
+would make the output twice as slow.
+.TP 12n
+\fB\-V\fR, \fB\--version\fR
+Print the
+\fBsudoreplay\fR
+versions version number and exit.
 .SS "Date and time format"
-.IX Subsection "Date and time format"
 The time and date may be specified multiple ways, common formats include:
-.IP "\s-1HH:MM:SS\s0 am \s-1MM/DD/CCYY\s0 timezone" 8
-.IX Item "HH:MM:SS am MM/DD/CCYY timezone"
+.TP 8n
+HH:MM:SS am MM/DD/CCYY timezone
 24 hour time may be used in place of am/pm.
-.IP "\s-1HH:MM:SS\s0 am Month, Day Year timezone" 8
-.IX Item "HH:MM:SS am Month, Day Year timezone"
+.TP 8n
+HH:MM:SS am Month, Day Year timezone
 24 hour time may be used in place of am/pm, and month and day names
-may be abbreviated.  Note that month and day of the week names must
-be specified in English.
-.IP "CCYY-MM-DD \s-1HH:MM:SS\s0" 8
-.IX Item "CCYY-MM-DD HH:MM:SS"
-\&\s-1ISO\s0 time format
-.IP "\s-1DD\s0 Month \s-1CCYY\s0 \s-1HH:MM:SS\s0" 8
-.IX Item "DD Month CCYY HH:MM:SS"
+may be abbreviated.
+Note that month and day of the week names must be specified in English.
+.TP 8n
+CCYY-MM-DD HH:MM:SS
+ISO time format
+.TP 8n
+DD Month CCYY HH:MM:SS
 The month name may be abbreviated.
 .PP
-Either time or date may be omitted, the am/pm and timezone are
-optional.  If no date is specified, the current day is assumed; if
-no time is specified, the first second of the specified date is
-used.  The less significant parts of both time and date may also
-be omitted, in which case zero is assumed.  For example, the following
-are all valid:
+Either time or date may be omitted, the am/pm and timezone are optional.
+If no date is specified, the current day is assumed; if no time is
+specified, the first second of the specified date is used.
+The less significant parts of both time and date may also be omitted,
+in which case zero is assumed.
 .PP
 The following are all valid time and date specifications:
-.IP "now" 8
-.IX Item "now"
+.TP 8n
+now
 The current time and date.
-.IP "tomorrow" 8
-.IX Item "tomorrow"
+.TP 8n
+tomorrow
 Exactly one day from now.
-.IP "yesterday" 8
-.IX Item "yesterday"
+.TP 8n
+yesterday
 24 hours ago.
-.IP "2 hours ago" 8
-.IX Item "2 hours ago"
+.TP 8n
+2 hours ago
 2 hours ago.
-.IP "next Friday" 8
-.IX Item "next Friday"
-The first second of the next Friday.
-.IP "this week" 8
-.IX Item "this week"
-The current time but the first day of the coming week.
-.IP "a fortnight ago" 8
-.IX Item "a fortnight ago"
+.TP 8n
+next Friday
+The first second of the Friday in the next (upcoming) week.
+Not to be confused with
+\(Lqthis friday\(Rq
+which would match the friday of the current week.
+.TP 8n
+last week
+The current time but 7 days ago.
+This is equivalent to
+\(Lqa week ago\(Rq.
+.TP 8n
+a fortnight ago
 The current time but 14 days ago.
-.IP "10:01 am 9/17/2009" 8
-.IX Item "10:01 am 9/17/2009"
+.TP 8n
+10:01 am 9/17/2009
 10:01 am, September 17, 2009.
-.IP "10:01 am" 8
-.IX Item "10:01 am"
+.TP 8n
+10:01 am
 10:01 am on the current day.
-.IP "10" 8
-.IX Item "10"
+.TP 8n
+10
 10:00 am on the current day.
-.IP "9/17/2009" 8
-.IX Item "9/17/2009"
+.TP 8n
+9/17/2009
 00:00 am, September 17, 2009.
-.IP "10:01 am Sep 17, 2009" 8
-.IX Item "10:01 am Sep 17, 2009"
+.TP 8n
+10:01 am Sep 17, 2009
 10:01 am, September 17, 2009.
+.PP
+Note that relative time specifications do not always work as expected.
+For example, the
+\(Lqnext\(Rq
+qualifier is intended to be used in conjunction with a day such as
+\(Lqnext Monday\(Rq.
+When used with units of weeks, months, years, etc
+the result will be one more than expected.
+For example,
+\(Lqnext week\(Rq
+will result in a time exactly two weeks from now, which is probably
+not what was intended.
+This will be addressed in a future version of
+\fBsudoreplay\fR.
+.SS "Debugging sudoreplay"
+\fBsudoreplay\fR
+versions 1.8.4 and higher support a flexible debugging framework
+that is configured via
+\fRDebug\fR
+lines in the
+sudo.conf(5)
+file.
+.PP
+For more information on configuring
+sudo.conf(5),
+please refer to its manual.
 .SH "FILES"
-.IX Header "FILES"
-.IP "\fI/var/log/sudo\-io\fR" 24
-.IX Item "/var/log/sudo-io"
+.TP 26n
+\fI/etc/sudo.conf\fR
+Debugging framework configuration
+.TP 26n
+\fI/var/log/sudo-io\fR
 The default I/O log directory.
-.IP "\fI/var/log/sudo\-io/00/00/01/log\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/log"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/log\fR
 Example session log info.
-.IP "\fI/var/log/sudo\-io/00/00/01/stdin\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stdin"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/stdin\fR
 Example session standard input log.
-.IP "\fI/var/log/sudo\-io/00/00/01/stdout\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stdout"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/stdout\fR
 Example session standard output log.
-.IP "\fI/var/log/sudo\-io/00/00/01/stderr\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stderr"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/stderr\fR
 Example session standard error log.
-.IP "\fI/var/log/sudo\-io/00/00/01/ttyin\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/ttyin"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/ttyin\fR
 Example session tty input file.
-.IP "\fI/var/log/sudo\-io/00/00/01/ttyout\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/ttyout"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/ttyout\fR
 Example session tty output file.
-.IP "\fI/var/log/sudo\-io/00/00/01/timing\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/timing"
+.TP 26n
+\fI/var/log/sudo-io/00/00/01/timing\fR
 Example session timing file.
 .PP
-Note that the \fIstdin\fR, \fIstdout\fR and \fIstderr\fR files will be empty
-unless \fBsudo\fR was used as part of a pipeline for a particular
-command.
+Note that the
+\fIstdin\fR,
+\fIstdout\fR
+and
+\fIstderr\fR
+files will be empty unless
+\fBsudo\fR
+was used as part of a pipeline for a particular command.
 .SH "EXAMPLES"
-.IX Header "EXAMPLES"
-List sessions run by user \fImillert\fR:
-.PP
-.Vb 1
-\& sudoreplay \-l user millert
-.Ve
-.PP
-List sessions run by user \fIbob\fR with a command containing the string vi:
-.PP
-.Vb 1
-\& sudoreplay \-l user bob command vi
-.Ve
+List sessions run by user
+\fImillert\fR:
+.nf
+.sp
+.RS 6n
+# sudoreplay -l user millert
+.RE
+.fi
 .PP
-List sessions run by user \fIjeff\fR that match a regular expression:
+List sessions run by user
+\fIbob\fR
+with a command containing the string vi:
+.nf
+.sp
+.RS 6n
+# sudoreplay -l user bob command vi
+.RE
+.fi
 .PP
-.Vb 1
-\& sudoreplay \-l user jeff command \*(Aq/bin/[a\-z]*sh\*(Aq
-.Ve
+List sessions run by user
+\fIjeff\fR
+that match a regular expression:
+.nf
+.sp
+.RS 6n
+# sudoreplay -l user jeff command '/bin/[a-z]*sh'
+.RE
+.fi
 .PP
 List sessions run by jeff or bob on the console:
-.PP
-.Vb 1
-\& sudoreplay \-l ( user jeff or user bob ) tty console
-.Ve
+.nf
+.sp
+.RS 6n
+# sudoreplay -l ( user jeff or user bob ) tty console
+.RE
+.fi
 .SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIsudo\fR\|(8), \fIscript\fR\|(1)
-.SH "AUTHOR"
-.IX Header "AUTHOR"
+script(1),
+sudo.conf(5),
+sudo(8)
+.SH "AUTHORS"
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
 Todd C. Miller
+.RE
+.PP
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
 .SH "BUGS"
-.IX Header "BUGS"
-If you feel you have found a bug in \fBsudoreplay\fR, please submit a bug report
-at http://www.sudo.ws/sudo/bugs/
+If you feel you have found a bug in
+\fBsudoreplay\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
 .SH "SUPPORT"
-.IX Header "SUPPORT"
 Limited free support is available via the sudo-users mailing list,
-see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
 search the archives.
 .SH "DISCLAIMER"
-.IX Header "DISCLAIMER"
-\&\fBsudoreplay\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-including, but not limited to, the implied warranties of merchantability
-and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-for complete details.
+\fBsudoreplay\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
index 1a78b32..924e69c 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1996,1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM visudo.mdoc.in
+.\"
+.\" Copyright (c) 1996,1998-2005, 2007-2015
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
-.\" 
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
 .\"
-.IX Title "VISUDO 8"
-.TH VISUDO 8 "March 12, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH "VISUDO" "8" "November 20, 2015" "Sudo 1.8.17" "System Manager's Manual"
 .nh
+.if n .ad l
 .SH "NAME"
-visudo \- edit the sudoers file
+\fBvisudo\fR
+\- edit the sudoers file
 .SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-\&\fBvisudo\fR [\fB\-chqsV\fR] [\fB\-f\fR \fIsudoers\fR]
+.HP 7n
+\fBvisudo\fR
+[\fB\-chqsV\fR]
+[\fB\-f\fR\ \fIsudoers\fR]
+[\fB\-x\fR\ \fIoutput_file\fR]
 .SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBvisudo\fR edits the \fIsudoers\fR file in a safe fashion, analogous to
-\&\fIvipw\fR\|(8).  \fBvisudo\fR locks the \fIsudoers\fR file against multiple
-simultaneous edits, provides basic sanity checks, and checks
-for parse errors.  If the \fIsudoers\fR file is currently being
-edited you will receive a message to try again later.
+\fBvisudo\fR
+edits the
+\fIsudoers\fR
+file in a safe fashion, analogous to
+vipw(8).
+\fBvisudo\fR
+locks the
+\fIsudoers\fR
+file against multiple simultaneous edits, provides basic sanity checks,
+and checks for parse errors.
+If the
+\fIsudoers\fR
+file is currently being edited you will receive a message to try again later.
 .PP
-There is a hard-coded list of one or more editors that \fBvisudo\fR will
-use set at compile-time that may be overridden via the \fIeditor\fR \fIsudoers\fR
-\&\f(CW\*(C`Default\*(C'\fR variable.  This list defaults to \f(CW"/usr/bin/vi"\fR.  Normally,
-\&\fBvisudo\fR does not honor the \f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR environment
-variables unless they contain an editor in the aforementioned editors
-list.  However, if \fBvisudo\fR is configured with the \fI\-\-with\-env\-editor\fR
-option or the \fIenv_editor\fR \f(CW\*(C`Default\*(C'\fR variable is set in \fIsudoers\fR,
-\&\fBvisudo\fR will use any the editor defines by \f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR.
+There is a hard-coded list of one or more editors that
+\fBvisudo\fR
+will use set at compile-time that may be overridden via the
+\fIeditor\fR
+\fIsudoers\fR
+\fRDefault\fR
+variable.
+This list defaults to
+\fRvi\fR.
+Normally,
+\fBvisudo\fR
+does not honor the
+\fRVISUAL\fR
+or
+\fREDITOR\fR
+environment variables unless they contain an editor in the aforementioned
+editors list.
+However, if
+\fBvisudo\fR
+is configured with the
+\fR--with-env-editor\fR
+option or the
+\fIenv_editor\fR
+\fRDefault\fR
+variable is set in
+\fIsudoers\fR,
+\fBvisudo\fR
+will use any the editor defines by
+\fRVISUAL\fR
+or
+\fREDITOR\fR.
 Note that this can be a security hole since it allows the user to
-execute any program they wish simply by setting \f(CW\*(C`VISUAL\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR.
+execute any program they wish simply by setting
+\fRVISUAL\fR
+or
+\fREDITOR\fR.
 .PP
-\&\fBvisudo\fR parses the \fIsudoers\fR file after the edit and will
-not save the changes if there is a syntax error.  Upon finding
-an error, \fBvisudo\fR will print a message stating the line number(s)
+\fBvisudo\fR
+parses the
+\fIsudoers\fR
+file after the edit and will
+not save the changes if there is a syntax error.
+Upon finding an error,
+\fBvisudo\fR
+will print a message stating the line number(s)
 where the error occurred and the user will receive the
-\&\*(L"What now?\*(R" prompt.  At this point the user may enter \*(L"e\*(R"
-to re-edit the \fIsudoers\fR file, \*(L"x\*(R" to exit without
-saving the changes, or \*(L"Q\*(R" to quit and save changes.  The
-\&\*(L"Q\*(R" option should be used with extreme care because if \fBvisudo\fR
-believes there to be a parse error, so will \fBsudo\fR and no one
-will be able to \fBsudo\fR again until the error is fixed.
-If \*(L"e\*(R" is typed to edit the  \fIsudoers\fR file after a parse error
-has been detected, the cursor will be placed on the line where the
-error occurred (if the editor supports this feature).
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-\&\fBvisudo\fR accepts the following command line options:
-.IP "\-c" 12
-.IX Item "-c"
-Enable \fBcheck-only\fR mode.  The existing \fIsudoers\fR file will be
-checked for syntax errors, owner and mode.  A message will be printed
-to the standard output describing the status of \fIsudoers\fR unless
-the \fB\-q\fR option was specified.  If the check completes successfully,
-\&\fBvisudo\fR will exit with a value of 0.  If an error is encountered,
-\&\fBvisudo\fR will exit with a value of 1.
-.IP "\-f \fIsudoers\fR" 12
-.IX Item "-f sudoers"
-Specify and alternate \fIsudoers\fR file location.  With this option
-\&\fBvisudo\fR will edit (or check) the \fIsudoers\fR file of your choice,
-instead of the default, \fI/etc/sudoers\fR.  The lock file used
-is the specified \fIsudoers\fR file with \*(L".tmp\*(R" appended to it.
-In \fBcheck-only\fR mode only, the argument to \fB\-f\fR may be \*(L"\-\*(R",
-indicating that \fIsudoers\fR will be read from the standard input.
-.IP "\-h" 12
-.IX Item "-h"
-The \fB\-h\fR (\fIhelp\fR) option causes \fBvisudo\fR to print a short help message
-to the standard output and exit.
-.IP "\-q" 12
-.IX Item "-q"
-Enable \fBquiet\fR mode.  In this mode details about syntax errors
-are not printed.  This option is only useful when combined with
-the \fB\-c\fR option.
-.IP "\-s" 12
-.IX Item "-s"
-Enable \fBstrict\fR checking of the \fIsudoers\fR file.  If an alias is
-used before it is defined, \fBvisudo\fR will consider this a parse
-error.  Note that it is not possible to differentiate between an
+\(LqWhat now?\(Rq
+prompt.
+At this point the user may enter
+\(oqe\(cq
+to re-edit the
+\fIsudoers\fR
+file,
+\(oqx\(cq
+to exit without saving the changes, or
+\(oqQ\(cq
+to quit and save changes.
+The
+\(oqQ\(cq
+option should be used with extreme care because if
+\fBvisudo\fR
+believes there to be a parse error, so will
+\fBsudo\fR
+and no one
+will be able to run
+\fBsudo\fR
+again until the error is fixed.
+If
+\(oqe\(cq
+is typed to edit the
+\fIsudoers\fR
+file after a parse error has been detected, the cursor will be placed on
+the line where the error occurred (if the editor supports this feature).
+.PP
+The options are as follows:
+.TP 12n
+\fB\-c\fR, \fB\--check\fR
+Enable
+\fIcheck-only\fR
+mode.
+The existing
+\fIsudoers\fR
+file will be
+checked for syntax errors, owner and mode.
+A message will be printed to the standard output describing the status of
+\fIsudoers\fR
+unless the
+\fB\-q\fR
+option was specified.
+If the check completes successfully,
+\fBvisudo\fR
+will exit with a value of 0.
+If an error is encountered,
+\fBvisudo\fR
+will exit with a value of 1.
+.TP 12n
+\fB\-f\fR \fIsudoers\fR, \fB\--file\fR=\fIsudoers\fR
+Specify an alternate
+\fIsudoers\fR
+file location.
+With this option,
+\fBvisudo\fR
+will edit (or check) the
+\fIsudoers\fR
+file of your choice,
+instead of the default,
+\fI/etc/sudoers\fR.
+The lock file used is the specified
+\fIsudoers\fR
+file with
+\(Lq\.tmp\(Rq
+appended to it.
+In
+\fIcheck-only\fR
+mode only, the argument to
+\fB\-f\fR
+may be
+\(oq-\(cq,
+indicating that
+\fIsudoers\fR
+will be read from the standard input.
+.TP 12n
+\fB\-h\fR, \fB\--help\fR
+Display a short help message to the standard output and exit.
+.TP 12n
+\fB\-q\fR, \fB\--quiet\fR
+Enable
+\fIquiet\fR
+mode.
+In this mode details about syntax errors are not printed.
+This option is only useful when combined with
+the
+\fB\-c\fR
+option.
+.TP 12n
+\fB\-s\fR, \fB\--strict\fR
+Enable
+\fIstrict\fR
+checking of the
+\fIsudoers\fR
+file.
+If an alias is used before it is defined,
+\fBvisudo\fR
+will consider this a parse error.
+Note that it is not possible to differentiate between an
 alias and a host name or user name that consists solely of uppercase
-letters, digits, and the underscore ('_') character.
-.IP "\-V" 12
-.IX Item "-V"
-The \fB\-V\fR (version) option causes \fBvisudo\fR to print its version number
-and exit.
+letters, digits, and the underscore
+(\(oq_\(cq)
+character.
+.TP 12n
+\fB\-V\fR, \fB\--version\fR
+Print the
+\fBvisudo\fR
+and
+\fIsudoers\fR
+grammar versions and exit.
+.TP 12n
+\fB\-x\fR \fIoutput_file\fR, \fB\--export\fR=\fIoutput_file\fR
+Export a
+\fIsudoers\fR
+in JSON format and write it to
+\fIoutput_file\fR.
+If
+\fIoutput_file\fR
+is
+\(oq-\(cq,
+the exported
+\fIsudoers\fR
+policy will be written to the standard output.
+By default,
+\fI/etc/sudoers\fR
+(and any files it includes) will be exported.
+The
+\fB\-f\fR
+option can be used to specify a different
+\fIsudoers\fR
+file to export.
+The exported format is intended to be easier for third-party
+applications to parse than the traditional
+\fIsudoers\fR
+format.
+The various values have explicit types which removes much of the
+ambiguity of the
+\fIsudoers\fR
+format.
+.SS "Debugging and sudoers plugin arguments"
+\fBvisudo\fR
+versions 1.8.4 and higher support a flexible debugging framework
+that is configured via
+\fRDebug\fR
+lines in the
+sudo.conf(5)
+file.
+.PP
+Starting with
+\fBsudo\fR
+1.8.12,
+\fBvisudo\fR
+will also parse the arguments to the
+\fIsudoers\fR
+plugin to override the default
+\fIsudoers\fR
+path name, UID, GID and file mode.
+These arguments, if present, should be listed after the path to the plugin
+(i.e.\& after
+\fIsudoers.so\fR).
+Multiple arguments may be specified, separated by white space.
+For example:
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0400
+.RE
+.fi
+.PP
+The following arguments are supported:
+.TP 10n
+sudoers_file=pathname
+The
+\fIsudoers_file\fR
+argument can be used to override the default path to the
+\fIsudoers\fR
+file.
+.TP 10n
+sudoers_uid=uid
+The
+\fIsudoers_uid\fR
+argument can be used to override the default owner of the sudoers file.
+It should be specified as a numeric user ID.
+.TP 10n
+sudoers_gid=gid
+The
+\fIsudoers_gid\fR
+argument can be used to override the default group of the sudoers file.
+It must be specified as a numeric group ID (not a group name).
+.TP 10n
+sudoers_mode=mode
+The
+\fIsudoers_mode\fR
+argument can be used to override the default file mode for the sudoers file.
+It should be specified as an octal value.
+.PP
+For more information on configuring
+sudo.conf(5),
+please refer to its manual.
 .SH "ENVIRONMENT"
-.IX Header "ENVIRONMENT"
 The following environment variables may be consulted depending on
-the value of the \fIeditor\fR and \fIenv_editor\fR \fIsudoers\fR variables:
-.ie n .IP "\*(C`VISUAL\*(C'" 16
-.el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
-.IX Item "VISUAL"
-Invoked by visudo as the editor to use
-.ie n .IP "\*(C`EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
-.IX Item "EDITOR"
-Used by visudo if \s-1VISUAL\s0 is not set
+the value of the
+\fIeditor\fR
+and
+\fIenv_editor\fR
+\fIsudoers\fR
+settings:
+.TP 17n
+\fRVISUAL\fR
+Invoked by
+\fBvisudo\fR
+as the editor to use
+.TP 17n
+\fREDITOR\fR
+Used by
+\fBvisudo\fR
+if
+\fRVISUAL\fR
+is not set
 .SH "FILES"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudoers\fR" 24
-.el .IP "\fI/etc/sudoers\fR" 24
-.IX Item "/etc/sudoers"
+.TP 26n
+\fI/etc/sudo.conf\fR
+Sudo front end configuration
+.TP 26n
+\fI/etc/sudoers\fR
 List of who can run what
-.ie n .IP "\fI/etc/sudoers.tmp\fR" 24
-.el .IP "\fI/etc/sudoers.tmp\fR" 24
-.IX Item "/etc/sudoers.tmp"
+.TP 26n
+\fI/etc/sudoers.tmp\fR
 Lock file for visudo
 .SH "DIAGNOSTICS"
-.IX Header "DIAGNOSTICS"
-.IP "sudoers file busy, try again later." 4
-.IX Item "sudoers file busy, try again later."
-Someone else is currently editing the \fIsudoers\fR file.
-.ie n .IP "/etc/sudoers.tmp: Permission denied" 4
-.el .IP "\f(CW@sysconfdir\fR@/sudoers.tmp: Permission denied" 4
-.IX Item "/etc/sudoers.tmp: Permission denied"
-You didn't run \fBvisudo\fR as root.
-.IP "Can't find you in the passwd database" 4
-.IX Item "Can't find you in the passwd database"
-Your userid does not appear in the system passwd file.
-.IP "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined" 4
-.IX Item "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined"
-Either you are trying to use an undeclare {User,Runas,Host,Cmnd}_Alias
+.TP 6n
+\fRsudoers file busy, try again later.\fR
+Someone else is currently editing the
+\fIsudoers\fR
+file.
+.TP 6n
+\fR/etc/sudoers.tmp: Permission denied\fR
+You didn't run
+\fBvisudo\fR
+as root.
+.TP 6n
+\fRCan't find you in the passwd database\fR
+Your user ID does not appear in the system passwd file.
+.TP 6n
+\fRWarning: {User,Runas,Host,Cmnd}_Alias referenced but not defined\fR
+Either you are trying to use an undeclared {User,Runas,Host,Cmnd}_Alias
 or you have a user or host name listed that consists solely of
-uppercase letters, digits, and the underscore ('_') character.  In
-the latter case, you can ignore the warnings (\fBsudo\fR will not
-complain).  In \fB\-s\fR (strict) mode these are errors, not warnings.
-.IP "Warning: unused {User,Runas,Host,Cmnd}_Alias" 4
-.IX Item "Warning: unused {User,Runas,Host,Cmnd}_Alias"
+uppercase letters, digits, and the underscore
+(\(oq_\(cq)
+character.
+In the latter case, you can ignore the warnings
+(\fBsudo\fR
+will not complain)
+\&.
+In
+\fB\-s\fR
+(strict) mode these are errors, not warnings.
+.TP 6n
+\fRWarning: unused {User,Runas,Host,Cmnd}_Alias\fR
 The specified {User,Runas,Host,Cmnd}_Alias was defined but never
-used.  You may wish to comment out or remove the unused alias.  In
-\&\fB\-s\fR (strict) mode this is an error, not a warning.
-.IP "Warning: cycle in {User,Runas,Host,Cmnd}_Alias" 4
-.IX Item "Warning: cycle in {User,Runas,Host,Cmnd}_Alias"
+used.
+You may wish to comment out or remove the unused alias.
+.TP 6n
+\fRWarning: cycle in {User,Runas,Host,Cmnd}_Alias\fR
 The specified {User,Runas,Host,Cmnd}_Alias includes a reference to
-itself, either directly or through an alias it includes.  This is
-only a warning by default as \fBsudo\fR will ignore cycles when parsing
-the \fIsudoers\fR file.
+itself, either directly or through an alias it includes.
+This is only a warning by default as
+\fBsudo\fR
+will ignore cycles when parsing
+the
+\fIsudoers\fR
+file.
+.TP 6n
+\fRvisudo: /etc/sudoers: input and output files must be different\fR
+The
+\fB\-x\fR
+flag was used and the specified
+\fIoutput_file\fR
+has the same path name as the
+\fIsudoers\fR
+file to export.
 .SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIvi\fR\|(1), \fIsudoers\fR\|(5), \fIsudo\fR\|(8), \fIvipw\fR\|(8)
-.SH "AUTHOR"
-.IX Header "AUTHOR"
-Many people have worked on \fBsudo\fR over the years; this version of
-\&\fBvisudo\fR was written by:
-.PP
-.Vb 1
-\& Todd Miller
-.Ve
+vi(1),
+sudo.conf(5),
+sudoers(5),
+sudo(8),
+vipw(8)
+.SH "AUTHORS"
+Many people have worked on
+\fBsudo\fR
+over the years; this version consists of code written primarily by:
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-See the \s-1CONTRIBUTORS\s0 file in the \fBsudo\fR distribution
-(http://www.sudo.ws/sudo/contributors.html) for a list of people
-who have contributed to \fBsudo\fR.
+See the CONTRIBUTORS file in the
+\fBsudo\fR
+distribution (https://www.sudo.ws/contributors.html) for an
+exhaustive list of people who have contributed to
+\fBsudo\fR.
 .SH "CAVEATS"
-.IX Header "CAVEATS"
-There is no easy way to prevent a user from gaining a root shell if 
-the editor used by \fBvisudo\fR allows shell escapes.
+There is no easy way to prevent a user from gaining a root shell if
+the editor used by
+\fBvisudo\fR
+allows shell escapes.
 .SH "BUGS"
-.IX Header "BUGS"
-If you feel you have found a bug in \fBvisudo\fR, please submit a bug report
-at http://www.sudo.ws/sudo/bugs/
+If you feel you have found a bug in
+\fBvisudo\fR,
+please submit a bug report at https://bugzilla.sudo.ws/
 .SH "SUPPORT"
-.IX Header "SUPPORT"
 Limited free support is available via the sudo-users mailing list,
-see http://www.sudo.ws/mailman/listinfo/sudo\-users to subscribe or
+see https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
 search the archives.
 .SH "DISCLAIMER"
-.IX Header "DISCLAIMER"
-\&\fBvisudo\fR is provided ``\s-1AS\s0 \s-1IS\s0'' and any express or implied warranties,
-including, but not limited to, the implied warranties of merchantability
-and fitness for a particular purpose are disclaimed.  See the \s-1LICENSE\s0
-file distributed with \fBsudo\fR or http://www.sudo.ws/sudo/license.html
-for complete details.
+\fBvisudo\fR
+is provided
+\(LqAS IS\(Rq
+and any express or implied warranties, including, but not limited
+to, the implied warranties of merchantability and fitness for a
+particular purpose are disclaimed.
+See the LICENSE file distributed with
+\fBsudo\fR
+or https://www.sudo.ws/license.html for complete details.
diff --git a/manual/sudo/po4a/README.4po b/manual/sudo/po4a/README.4po
new file mode 100644 (file)
index 0000000..467bf36
--- /dev/null
@@ -0,0 +1,38 @@
+" po4a-gettextize -f man -m ./sudo.man -p sudo.pot" などを
+実行すると、以下のようなメッセージが出て、実行に失敗した。要するに、
+man の原文が ".if" を使っているので、変換がうまく行かない、
+ということらしい。
+
+  ./sudo.man:1: (po4a::man)
+          このファイルは '.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!' 
+          という行が含まれます。ソースファイルを翻訳するべきですが、とにかく
+          継続します。
+  ./sudo.man:2: (po4a::man)
+          このファイルは '.\" IT IS GENERATED AUTOMATICALLY FROM 
+          sudo.mdoc.in' という行が含まれます。ソースファイルを翻訳するべきで
+          すが、とにかく継続します。
+  ./sudo.man:26: (po4a::man)
+          このページには '.if' で条件節を使用しています。po4a は完全な 
+          groff パーサではないためサポートしていません。
+
+そこで、三番目のエラーメッセージを消すために、"-o groff_code=verbatim"
+オプションを付けた。一番目と二番目は Warning のようだが、こちらを
+消すためには、"-o generated" オプションを使った。
+すなわち、下記のような具合である。(仮に原文を sudo.man とし、
+翻訳した po ファイルを sudo.ja.po、日本語 man ファイルを sudo.draft
+とする。add_ja ディレクトリにある add*.txt は、翻訳履歴や独立した
+訳注である。)
+
+  $ po4a-gettextize -f man -m sudo.man -p sudo.pot \
+  -o groff_code=verbatim -o generated
+
+  (すでに存在する sudo.ja.po をアップデートするためなら)
+  $ po4a-updatepo -f man -m sudo.man -p sudo.ja.po \
+  -o groff_code=verbatim -o generated
+
+  $ po4a-translate -f man -m sudo.man -p sudo.ja.po -l sudo.draft \
+  -a add_ja/add0.txt -o groff_code=verbatim -o generated -v
+
+以上。
+
+2016/09/12 Chonan Yoichi
diff --git a/manual/sudo/po4a/sudo.8/add_ja/add0.txt b/manual/sudo/po4a/sudo.8/add_ja/add0.txt
new file mode 100644 (file)
index 0000000..07c91a9
--- /dev/null
@@ -0,0 +1,18 @@
+PO4A-HEADER: mode=before;position=\.TH
+.\"
+.\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
+.\"   and 2009 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated Sat Oct  7 14:39:18 JST 2000
+.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
+.\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
+.\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
+.\"
diff --git a/manual/sudo/po4a/sudo.8/sudo.ja.po b/manual/sudo/po4a/sudo.8/sudo.ja.po
new file mode 100644 (file)
index 0000000..538a1d2
--- /dev/null
@@ -0,0 +1,2044 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2016-09-11 21:14+0900\n"
+"PO-Revision-Date: 2016-09-10 13:40+0900\n"
+"Last-Translator: Chonan Yoichi <cyoichi@maple.ocn.ne.jp>\n"
+"Language-Team: Linux JM project <linuxjm-discuss@lists.osdn.me>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: sudo.man:24
+#, no-wrap
+msgid "SUDO"
+msgstr "SUDO"
+
+#. type: TH
+#: sudo.man:24
+#, no-wrap
+msgid "January 19, 2016"
+msgstr "January 19, 2016"
+
+#. type: TH
+#: sudo.man:24
+#, no-wrap
+msgid "Sudo 1.8.17"
+msgstr "Sudo 1.8.17"
+
+#. type: TH
+#: sudo.man:24
+#, no-wrap
+msgid "System Manager's Manual"
+msgstr "System Manager's Manual"
+
+#. type: SH
+#: sudo.man:27
+#, no-wrap
+msgid "NAME"
+msgstr "名前"
+
+#. type: Plain text
+#: sudo.man:31
+msgid "B<sudo>, B<sudoedit> - execute a command as another user"
+msgstr "B<sudo>, B<sudoedit> - コマンドを他のユーザとして実行する"
+
+#. type: SH
+#: sudo.man:31
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "書式"
+
+#. type: Plain text
+#: sudo.man:35
+msgid "B<sudo> B<-h>\\ |\\ B<-K>\\ |\\ B<-k>\\ |\\ B<-V>"
+msgstr "B<sudo> B<-h>\\ |\\ B<-K>\\ |\\ B<-k>\\ |\\ B<-V>"
+
+#. type: Plain text
+#: sudo.man:44
+msgid ""
+"B<sudo> B<-v> [B<-AknS>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] [B<-p>\\ "
+"I<prompt>] [B<-u>\\ I<user>]"
+msgstr ""
+"B<sudo> B<-v> [B<-AknS>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] [B<-p>\\ "
+"I<prompt>] [B<-u>\\ I<user>]"
+
+#. type: Plain text
+#: sudo.man:55
+msgid ""
+"B<sudo> B<-l> [B<-AknS>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] [B<-p>\\ "
+"I<prompt>] [B<-U>\\ I<user>] [B<-u>\\ I<user>] [I<command>]"
+msgstr ""
+"B<sudo> B<-l> [B<-AknS>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] [B<-p>\\ "
+"I<prompt>] [B<-U>\\ I<user>] [B<-u>\\ I<user>] [I<command>]"
+
+#. type: Plain text
+#: sudo.man:69
+msgid ""
+"B<sudo> [B<-AbEHnPS>] [B<-C>\\ I<num>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] "
+"[B<-p>\\ I<prompt>] [B<-r>\\ I<role>] [B<-t>\\ I<type>] [B<-u>\\ I<user>] "
+"[I<VAR>=I<value>] [B<-i>\\ |\\ B<-s>] [I<command>]"
+msgstr ""
+"B<sudo> [B<-AbEHnPS>] [B<-C>\\ I<num>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] "
+"[B<-p>\\ I<prompt>] [B<-r>\\ I<role>] [B<-t>\\ I<type>] [B<-u>\\ I<user>] "
+"[I<VAR>=I<value>] [B<-i>\\ |\\ B<-s>] [I<command>]"
+
+#. type: Plain text
+#: sudo.man:79
+msgid ""
+"B<sudoedit> [B<-AknS>] [B<-C>\\ I<num>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] "
+"[B<-p>\\ I<prompt>] [B<-u>\\ I<user>] I<file\\ ...>"
+msgstr ""
+"B<sudoedit> [B<-AknS>] [B<-C>\\ I<num>] [B<-g>\\ I<group>] [B<-h>\\ I<host>] "
+"[B<-p>\\ I<prompt>] [B<-u>\\ I<user>] I<file\\ ...>"
+
+#. type: SH
+#: sudo.man:80
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "説明"
+
+#. type: Plain text
+#: sudo.man:90
+msgid ""
+"B<sudo> allows a permitted user to execute a I<command> as the superuser or "
+"another user, as specified by the security policy.  The invoking user's real "
+"(I<not> effective) user ID is used to determine the user name with which to "
+"query the security policy."
+msgstr ""
+"B<sudo> を使用すると、許可されたユーザが、セキュリティポリシーの設定の範囲内"
+"で、\n"
+"スーパーユーザや他のユーザに変身して、I<command> を実行することが可能にな"
+"る。\n"
+"セキュリティポリシーへの問い合わせは、ユーザ名によって行われるが、\n"
+"そのユーザ名を決めるのは、B<sudo> を実行するユーザの実ユーザ ID であって、\n"
+"実効ユーザ ID ではない。"
+
+#. type: Plain text
+#: sudo.man:106
+msgid ""
+"B<sudo> supports a plugin architecture for security policies and input/"
+"output logging.  Third parties can develop and distribute their own policy "
+"and I/O logging plugins to work seamlessly with the B<sudo> front end.  The "
+"default security policy is I<sudoers>, which is configured via the file I</"
+"etc/sudoers>, or via LDAP.  See the I<Plugins> section for more information."
+msgstr ""
+"B<sudo> はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサ"
+"ポートしている。\n"
+"従って、サードパーティは、\n"
+"B<sudo> フロントエンドとシームレスに協働するポリシー・プラグインや入出力ロギ"
+"ング・プラグインを、\n"
+"独自に開発して配布することができる。 \n"
+"デフォルトのセキュリティポリシーは I<sudoers> であり、その設定は、 \n"
+"I</etc/sudoers> ファイル、もしくは LDAP を通して行われる。 \n"
+"詳細については、「プラグイン」セクションを参照していただきたい。"
+
+#. type: Plain text
+#: sudo.man:122
+msgid ""
+"The security policy determines what privileges, if any, a user has to run "
+"B<sudo>.  The policy may require that users authenticate themselves with a "
+"password or another authentication mechanism.  If authentication is "
+"required, B<sudo> will exit if the user's password is not entered within a "
+"configurable time limit.  This limit is policy-specific; the default "
+"password prompt timeout for the I<sudoers> security policy is 5 minutes."
+msgstr ""
+"セキュリティポリシーは、あるユーザに B<sudo> を使用する権限があるかどうか、\n"
+"あるとすれば、どんな権限を持っているかを決定する。 \n"
+"セキュリティポリシーは、ユーザにパスワードや他の認証方法を使って、\n"
+"本人であることを証明するように要求することができる。\n"
+"認証が必要な場合、ユーザが自分のパスワードを、\n"
+"設定によって変更可能な制限時間内に入力しないと、B<sudo> は時間切れで終了す"
+"る\n"
+"(訳注: B<sudo> はデフォルトでは、root や変身対象ユーザのパスワードではな"
+"く、\n"
+"B<sudo> を実行するユーザ本人のパスワードを要求する)。\n"
+"この制限時間はポリシー次第であり、 I<sudoers> セキュリティポリシーの場合、\n"
+"パスワード・プロンプトがタイムアウトするまでのデフォルトの時間は、5 分間であ"
+"る。"
+
+#. type: Plain text
+#: sudo.man:139
+msgid ""
+"Security policies may support credential caching to allow the user to run "
+"B<sudo> again for a period of time without requiring authentication.  The "
+"I<sudoers> policy caches credentials for 5 minutes, unless overridden in "
+"sudoers(5).  By running B<sudo> with the B<-v> option, a user can update the "
+"cached credentials without running a I<command>."
+msgstr ""
+"セキュリティポリシーは、一定時間内ならユーザが認証なしで B<sudo> \n"
+"を何度も実行できるように、認証情報の一時保存 (credential caching)\n"
+"をサポートしてもよい。I<sudoers> ポリシーでは、sudoers(5)\n"
+"で変更されないかぎり、認証情報を 5 分間保持する。\n"
+"ユーザは B<sudo> に B<-v> を付けて実行することで、\n"
+"I<command> を実行しないでも、保存された認証情報を更新することができる。"
+
+#. type: Plain text
+#: sudo.man:145
+msgid ""
+"When invoked as B<sudoedit>, the B<-e> option (described below), is implied."
+msgstr ""
+"B<sudoedit> というコマンド名で起動するのは、B<sudo> に B<-e> \n"
+"オプション (下記参照) を付けて実行するのと同じである。"
+
+#. type: Plain text
+#: sudo.man:150
+msgid ""
+"Security policies may log successful and failed attempts to use B<sudo>.  If "
+"an I/O plugin is configured, the running command's input and output may be "
+"logged as well."
+msgstr ""
+"セキュリティポリシーは、ユーザが B<sudo> \n"
+"を使おうとして成功した場合も失敗した場合も、それをログに記録することができ"
+"る。\n"
+"入出力プラグインが設定されている場合は、\n"
+"B<sudo> 経由で実行するコマンドの入出力もログに残すことができる。"
+
+#. type: Plain text
+#: sudo.man:152
+msgid "The options are as follows:"
+msgstr "オプションとして以下のものが使用できる。"
+
+#. type: TP
+#: sudo.man:152
+#, no-wrap
+msgid "B<-A>, B<--askpass>"
+msgstr "B<-A>, B<--askpass>"
+
+#. type: Plain text
+#: sudo.man:171
+msgid ""
+"Normally, if B<sudo> requires a password, it will read it from the user's "
+"terminal.  If the B<-A> (I<askpass>)  option is specified, a (possibly "
+"graphical) helper program is executed to read the user's password and output "
+"the password to the standard output.  If the SUDO_ASKPASS environment "
+"variable is set, it specifies the path to the helper program.  Otherwise, if "
+"sudo.conf(5)  contains a line specifying the askpass program, that value "
+"will be used.  For example:"
+msgstr ""
+"通常 \\fBsudo\\fR がパスワードを要求するとき、\n"
+"パスワードはユーザが使用している端末から読み込まれる。\n"
+"B<-A> (I<askpass>) オプションを指定すると、\n"
+"ヘルパー・プログラム (グラフィカルなものでもよい)\n"
+"が実行され、ユーザのパスワードを読み込んで、それを標準出力に書き出す。\n"
+"環境変数 SUDO_ASKPASS が設定されているときは、\n"
+"それがヘルパー・プログラムのパスになる。それ以外の場合は、\n"
+"sudo.conf(5) に askpass プログラムを指定している行が存在すれば、\n"
+"その値が使用される。一例を挙げよう。"
+
+#. type: Plain text
+#: sudo.man:176
+#, no-wrap
+msgid ""
+"# Path to askpass helper program\n"
+"Path askpass /usr/X11R6/bin/ssh-askpass\n"
+msgstr ""
+"# askpass ヘルパー・プログラムのパス\n"
+"Path askpass /usr/X11R6/bin/ssh-askpass\n"
+
+#. type: Plain text
+#: sudo.man:183
+msgid "If no askpass program is available, B<sudo> will exit with an error."
+msgstr ""
+"利用できる askpass プログラムがないと、B<sudo> はエラーメッセージを出して、\n"
+"終了する。"
+
+#. type: TP
+#: sudo.man:184
+#, no-wrap
+msgid "B<-a> I<type>, B<--auth-type>=I<type>"
+msgstr "B<-a> I<type>, B<--auth-type>=I<type>"
+
+#. type: Plain text
+#: sudo.man:196
+msgid ""
+"Use the specified BSD authentication I<type> when validating the user, if "
+"allowed by I</etc/login.conf>.  The system administrator may specify a list "
+"of sudo-specific authentication methods by adding an \\(Lqauth-sudo\\(Rq "
+"entry in I</etc/login.conf>.  This option is only available on systems that "
+"support BSD authentication."
+msgstr ""
+"I</etc/login.conf> で使用可になっていれば、ユーザを認証する際に指定された \n"
+"BSD の認証方法 I<type> を使用する。システム管理者は、I</etc/login.conf> \n"
+"に \"auth-sudo\" エントリを追加することで、\n"
+"sudo 専用の認証方法のリストを指定することができる。このオプションは、\n"
+"BSD 認証をサポートするシステムでのみ使用できる。"
+
+#. type: TP
+#: sudo.man:196
+#, no-wrap
+msgid "B<-b>, B<--background>"
+msgstr "B<-b>, B<--background>"
+
+#. type: Plain text
+#: sudo.man:204
+msgid ""
+"Run the given command in the background.  Note that it is not possible to "
+"use shell job control to manipulate background processes started by "
+"B<sudo>.  Most interactive commands will fail to work properly in background "
+"mode."
+msgstr ""
+"指定されたコマンドをバックグラウンドで実行する。\n"
+"B<sudo> 経由で起動したバックグラウンド・プロセスは、\n"
+"シェルのジョブ制御を使って操作できないことに注意していただきたい。\n"
+"バックグラウンドモードでは、ほとんどの対話的なコマンドがうまく動かないだろ"
+"う。"
+
+#. type: TP
+#: sudo.man:204
+#, no-wrap
+msgid "B<-C> I<num>, B<--close-from>=I<num>"
+msgstr "B<-C> I<num>, B<--close-from>=I<num>"
+
+#. type: Plain text
+#: sudo.man:222
+msgid ""
+"Close all file descriptors greater than or equal to I<num> before executing "
+"a command.  Values less than three are not permitted.  By default, B<sudo> "
+"will close all open file descriptors other than standard input, standard "
+"output and standard error when executing a command.  The security policy may "
+"restrict the user's ability to use this option.  The I<sudoers> policy only "
+"permits use of the B<-C> option when the administrator has enabled the "
+"I<closefrom_override> option."
+msgstr ""
+"コマンドを実行するに先立って、I<num> 以上の番号のファイル・ディスクリプタをす"
+"べてクローズする。\n"
+"3 未満の値は指定できない。デフォルトでは、コマンドを実行する際に、\n"
+"B<sudo> は、標準入力、標準出力、標準エラー以外の、\n"
+"オープンしているすべてのファイル・ディスクリプタを閉じることになっている。\n"
+"セキュリティポリシーは、ユーザによるこのオプションの使用を制限することができ"
+"る。\n"
+"I<sudoers> ポリシーが B<-C> オプションの使用を許可するのは、\n"
+"管理者が I<closefrom_override> オプションを有効にしているときのみである。"
+
+#. type: TP
+#: sudo.man:222
+#, no-wrap
+msgid "B<-c> I<class>, B<--login-class>=I<class>"
+msgstr "B<-c> I<class>, B<--login-class>=I<class>"
+
+#. type: Plain text
+#: sudo.man:247
+msgid ""
+"Run the command with resource limits and scheduling priority of the "
+"specified login I<class>.  The I<class> argument can be either a class name "
+"as defined in I</etc/login.conf>, or a single \\(oq-\\(cq character.  If "
+"I<class> is B<->, the default login class of the target user will be used.  "
+"Otherwise, the command must be run as the superuser (user ID 0), or B<sudo> "
+"must be run from a shell that is already running as the superuser.  If the "
+"command is being run as a login shell, additional I</etc/login.conf> "
+"settings, such as the umask and environment variables, will be applied, if "
+"present.  This option is only available on systems with BSD login classes."
+msgstr ""
+"指定されたログインクラス I<class> のリソース・リミットとスケジューリング優先"
+"度で、\n"
+"コマンドを実行する。引き数 I<class> に使用できるのは、I</etc/login.conf> \n"
+"で定義されたクラス名か、単独の '-' 文字のどちらかである。\n"
+"I<class> が B<-> ならば、変身対象ユーザのデフォルトのログインクラスが使用され"
+"ることになる。\n"
+"それ以外の場合は、コマンドをスーパーユーザ (ユーザ ID が 0) として実行する"
+"か、\n"
+"あるいは、すでにスーパーユーザとして実行しているシェルから \n"
+"B<sudo> を実行するかのどちらかでなければならない。\n"
+"実行されるコマンドがログイン・シェルである場合は、\n"
+"umask や環境変数といった I</etc/login.conf> の他の設定も、\n"
+"存在すれば適用されることになる。\n"
+"このオプションは BSD ログインクラスを採用しているシステムでのみ有効である。"
+
+#. type: TP
+#: sudo.man:247
+#, no-wrap
+msgid "B<-E>, B<--preserve-env>"
+msgstr "B<-E>, B<--preserve-env>"
+
+#. type: Plain text
+#: sudo.man:253
+msgid ""
+"Indicates to the security policy that the user wishes to preserve their "
+"existing environment variables.  The security policy may return an error if "
+"the user does not have permission to preserve the environment."
+msgstr ""
+"現在の環境変数をそのまま保持するのがユーザの意向だと、セキュリティポリシーに"
+"指示する。\n"
+"ユーザが環境を保持する許可を持っていない場合は、\n"
+"セキュリティポリシーがエラーを返すことになるだろう。"
+
+#. type: TP
+#: sudo.man:253
+#, no-wrap
+msgid "B<-e>, B<--edit>"
+msgstr "B<-e>, B<--edit>"
+
+#. type: Plain text
+#: sudo.man:260
+msgid ""
+"Edit one or more files instead of running a command.  In lieu of a path "
+"name, the string \"sudoedit\" is used when consulting the security policy.  "
+"If the user is authorized by the policy, the following steps are taken:"
+msgstr ""
+"何らかのコマンドを実行するのではなく、1 個以上のファイルを編集する。\n"
+"セキュリティポリシーの参照では、コマンドのパス名の代わりに \n"
+"\"sudoedit\" という文字列が使用される。\n"
+"セキュリティポリシーによってユーザに権限があることが認められると、\n"
+"次のことが順番に行われる。"
+
+#. type: TP
+#: sudo.man:261
+#, no-wrap
+msgid "1.\\&"
+msgstr "1.\\&"
+
+#. type: Plain text
+#: sudo.man:265
+msgid ""
+"Temporary copies are made of the files to be edited with the owner set to "
+"the invoking user."
+msgstr ""
+"編集対象のファイルのコピーをテンポラリファイルとして作成する。\n"
+"テンポラリファイルのオーナーは B<sudo> を起動したユーザである。"
+
+#. type: TP
+#: sudo.man:265
+#, no-wrap
+msgid "2.\\&"
+msgstr "2.\\&"
+
+#. type: Plain text
+#: sudo.man:286
+msgid ""
+"The editor specified by the policy is run to edit the temporary files.  The "
+"I<sudoers> policy uses the SUDO_EDITOR, VISUAL and EDITOR environment "
+"variables (in that order).  If none of SUDO_EDITOR, VISUAL or EDITOR are "
+"set, the first program listed in the I<editor> sudoers(5)  option is used."
+msgstr ""
+"セキュリティポリシーによって指定されたエディタを起動して、\n"
+"テンポラリファイルを編集する。I<sudoers> ポリシーでは、環境変数 \n"
+"SUDO_EDITOR, VISUAL, EDITOR を (この順番で) 使用する。\n"
+"SUDO_EDITOR, VISUAL, EDITOR のどれも設定されていない場合は、\n"
+"sudoers(5) の I<editor> オプションにリストされたプログラムのうち、\n"
+"最初のものが使われる。"
+
+#. type: TP
+#: sudo.man:286
+#, no-wrap
+msgid "3.\\&"
+msgstr "3.\\&"
+
+#. type: Plain text
+#: sudo.man:290
+msgid ""
+"If they have been modified, the temporary files are copied back to their "
+"original location and the temporary versions are removed."
+msgstr ""
+"編集作業がすむと、テンポラリファイルをオリジナルのファイルにコピーして、\n"
+"テンポラリファイルを消去する。"
+
+#. type: Plain text
+#: sudo.man:295
+msgid ""
+"To help prevent the editing of unauthorized files, the following "
+"restrictions are enforced unless explicitly allowed by the security policy:"
+msgstr ""
+"編集する権限のないファイルを編集できないようにするため、\n"
+"セキュリティポリシーによって明示的に許可されていないかぎり、\n"
+"以下の制限が行われる。"
+
+#. type: TP
+#: sudo.man:296 sudo.man:299 sudo.man:304 sudo.man:655 sudo.man:658
+#: sudo.man:661 sudo.man:664 sudo.man:667 sudo.man:670 sudo.man:673
+#: sudo.man:676 sudo.man:679 sudo.man:682 sudo.man:685
+#, no-wrap
+msgid "B<\\(bu>"
+msgstr "B<\\(bu>"
+
+#. type: Plain text
+#: sudo.man:299
+msgid "Symbolic links may not be edited (version 1.8.15 and higher)."
+msgstr "シンボリックリンクの編集は許可しない (バージョン 1.8.15 以上)。"
+
+#. type: Plain text
+#: sudo.man:304
+msgid ""
+"Symbolic links along the path to be edited are not followed when the parent "
+"directory is writable by the invoking user unless that user is root (version "
+"1.8.16 and higher)."
+msgstr ""
+"B<sudo> を実行するのが root であるときを除いて、\n"
+"編集するファイルのパス中にシンボリックリンクがある場合、\n"
+"そのリンクの親ディレクトリが B<sudo> を実行するユーザにとって書き込み可能なら"
+"ば、\n"
+"リンクをたどらない (バージョン 1.8.16 以上)。"
+
+#. type: Plain text
+#: sudo.man:308
+msgid ""
+"Files located in a directory that is writable by the invoking user may not "
+"be edited unless that user is root (version 1.8.16 and higher)."
+msgstr ""
+"B<sudo> を実行するのが root であるときを除いて、\n"
+"ファイルが B<sudo> を実行するユーザにとって書き込み可能なディレクトリにある場"
+"合、\n"
+"そのファイルの編集を許可しない (バージョン 1.8.16 以上)。"
+
+#. type: Plain text
+#: sudo.man:311
+msgid "Users are never allowed to edit device special files."
+msgstr ""
+"ユーザがデバイス・スペシャルファイルの編集を許可されることは絶対にない。"
+
+#. type: Plain text
+#: sudo.man:321
+msgid ""
+"If the specified file does not exist, it will be created.  Note that unlike "
+"most commands run by I<sudo>, the editor is run with the invoking user's "
+"environment unmodified.  If, for some reason, B<sudo> is unable to update a "
+"file with its edited version, the user will receive a warning and the edited "
+"copy will remain in a temporary file."
+msgstr ""
+"指定されたファイルが存在しない場合は作成する。ここで注意すべきは、\n"
+"B<sudo> によって実行されるコマンドの大部分と違って、\n"
+"B<-e> でエディタが実行されるときは、B<sudo> を起動したユーザの環境が、\n"
+"変更を受けずに使われるということだ。\n"
+"何らかの理由で B<sudo> が編集した内容でファイルを更新できないときは、\n"
+"ユーザに警告を発し、編集した内容をテンポラリファイルに保存することになる。"
+
+#. type: TP
+#: sudo.man:322
+#, no-wrap
+msgid "B<-g> I<group>, B<--group>=I<group>"
+msgstr "B<-g> I<group>, B<--group>=I<group>"
+
+#. type: Plain text
+#: sudo.man:346
+msgid ""
+"Run the command with the primary group set to I<group> instead of the "
+"primary group specified by the target user's password database entry.  The "
+"I<group> may be either a group name or a numeric group ID (GID)  prefixed "
+"with the \\(oq#\\(cq character (e.g.  #0 for GID 0).  When running a command "
+"as a GID, many shells require that the \\(oq#\\(cq be escaped with a "
+"backslash (\\(oq\\e\\(cq).  If no B<-u> option is specified, the command "
+"will be run as the invoking user.  In either case, the primary group will be "
+"set to I<group>."
+msgstr ""
+"コマンドを実行するとき、\n"
+"プライマリ・グループをパスワード・データベースの変身対象ユーザの項目で指定さ"
+"れているものではなく、\n"
+"I<group> に設定する。I<group> は、グループ名でもよく、'#' 記号にグループ \n"
+"ID 番号 (GID) を続けたものでもよい (たとえば、GID 0 なら #0)。\n"
+"GID としてコマンドを実行する場合、ほとんどのシェルでは、\n"
+"'#' をバックスラッシュ ('\\e') でエスケープする必要がある。\n"
+"なお、B<-u> オプションが指定されていない場合、コマンドは \n"
+"B<sudo> を起動したユーザの資格で実行される。いづれにしろ、\n"
+"プライマリ・グループが I<group> に設定されることに変わりはない。\n"
+"(訳注: B<-g> オプションを使用するには、\n"
+"I<sudoers> ポリシーの場合なら、I<sudoers> ファイルのユーザ設定で、\n"
+"変身対象となるグループを設定しておく必要がある。詳細については、\n"
+"sudoers(5) のマニュアルの該当個所を参照していただきたい。)"
+
+#. type: TP
+#: sudo.man:346
+#, no-wrap
+msgid "B<-H>, B<--set-home>"
+msgstr "B<-H>, B<--set-home>"
+
+#. type: Plain text
+#: sudo.man:353
+msgid ""
+"Request that the security policy set the HOME environment variable to the "
+"home directory specified by the target user's password database entry.  "
+"Depending on the policy, this may be the default behavior."
+msgstr ""
+"HOME 環境変数を、パスワード・データベースの変身対象ユーザの項目で、\n"
+"ホームディレクトリとして指定されているものに設定するように、\n"
+"セキュリティポリシーに要求する。\n"
+"ポリシーによっては、それがデフォルトの動作になっていることもある。"
+
+#. type: TP
+#: sudo.man:353
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: sudo.man:356
+msgid "Display a short help message to the standard output and exit."
+msgstr "簡単なヘルプメッセージを標準出力に表示して、終了する。"
+
+#. type: TP
+#: sudo.man:356
+#, no-wrap
+msgid "B<-h> I<host>, B<--host>=I<host>"
+msgstr "B<-h> I<host>, B<--host>=I<host>"
+
+#. type: Plain text
+#: sudo.man:367
+msgid ""
+"Run the command on the specified I<host> if the security policy plugin "
+"supports remote commands.  Note that the I<sudoers> plugin does not "
+"currently support running remote commands.  This may also be used in "
+"conjunction with the B<-l> option to list a user's privileges for the remote "
+"host."
+msgstr ""
+"セキュリティポリシー・プラグインがリモート・コマンドをサポートしているな"
+"ら、\n"
+"指定された I<host> でコマンドを実行する。\n"
+"I<sudoers> プラグインは、現在のところ、\n"
+"リモート・コマンドの実行をサポートしていないことに注意していただきたい。\n"
+"このオプションを B<-l> オプションと一緒に使えば、\n"
+"リモート・ホストにおけるユーザの権限のリストを得ることができる。\n"
+"(訳注: このオプションについは、sudo_plugin(5) のマニュアルの \n"
+"\"Remote command execution\" セクションもご覧いただきたい。\n"
+"そちらの説明が詳しい。)"
+
+#. type: TP
+#: sudo.man:367
+#, no-wrap
+msgid "B<-i>, B<--login>"
+msgstr "B<-i>, B<--login>"
+
+#. type: Plain text
+#: sudo.man:395
+msgid ""
+"Run the shell specified by the target user's password database entry as a "
+"login shell.  This means that login-specific resource files such as I<."
+"profile> or I<.login> will be read by the shell.  If a command is specified, "
+"it is passed to the shell for execution via the shell's B<-c> option.  If no "
+"command is specified, an interactive shell is executed.  B<sudo> attempts to "
+"change to that user's home directory before running the shell.  The command "
+"is run with an environment similar to the one a user would receive at log "
+"in.  The I<Command environment> section in the sudoers(5)  manual documents "
+"how the B<-i> option affects the environment in which a command is run when "
+"the I<sudoers> policy is in use."
+msgstr ""
+"パスワード・データベースの変身対象ユーザの項目でログイン・シェルとして指定さ"
+"れているシェルを実行する。すなわち、\n"
+"I<.profile> や I<.login> といったログイン用のリソース・ファイルが、\n"
+"シェルによって読み込まれることになる。コマンドを指定すると、\n"
+"それがシェルに渡され、シェルの  B<-c> オプションを使って実行される。\n"
+"コマンドを指定しない場合は、対話的シェルが起動される。B<sudo> は、\n"
+"シェルを実行する前に、変身対象ユーザのホームディレクトリに移動しようとす"
+"る。\n"
+"コマンドの実行は、ユーザが普通にログインしたときの環境とほぼ同じ環境で行われ"
+"る。\n"
+"I<sudoers> ポリシーを使用している場合に、\n"
+"B<-i> オプションがコマンドの実行環境にどんな影響を与えるかについては、\n"
+"sudoers(5) のマニュアルの「コマンド環境」セクションに説明がある。"
+
+#. type: TP
+#: sudo.man:395
+#, no-wrap
+msgid "B<-K>, B<--remove-timestamp>"
+msgstr "B<-K>, B<--remove-timestamp>"
+
+#. type: Plain text
+#: sudo.man:403
+msgid ""
+"Similar to the B<-k> option, except that it removes the user's cached "
+"credentials entirely and may not be used in conjunction with a command or "
+"other option.  This option does not require a password.  Not all security "
+"policies support credential caching."
+msgstr ""
+"B<-k> オプションに似ているが、ユーザの保存された認証情報を完全に消去してしま"
+"う点と、\n"
+"コマンドや他のオプションと組み合わせて使えない点が異なっている。\n"
+"このオプションはパスワードを要求しない。すべてのセキュリティポリシーが、\n"
+"認証情報の一時保存をサポートしているわけではない。"
+
+#. type: TP
+#: sudo.man:403
+#, no-wrap
+msgid "B<-k>, B<--reset-timestamp>"
+msgstr "B<-k>, B<--reset-timestamp>"
+
+#. type: Plain text
+#: sudo.man:415
+msgid ""
+"When used without a command, invalidates the user's cached credentials.  In "
+"other words, the next time B<sudo> is run a password will be required.  This "
+"option does not require a password and was added to allow a user to revoke "
+"B<sudo> permissions from a I<.logout> file."
+msgstr ""
+"コマンドを伴わずに使用した場合は、ユーザの保存された認証情報を無効にする。\n"
+"言い換えると、次回 B<sudo> を実行するときに、\n"
+"パスワードが要求されるということだ。このオプション自体は、\n"
+"パスワードを要求しない。このオプションが追加されたのは、\n"
+"ユーザが I<.logout> ファイルで、B<sudo> \n"
+"をパスワードなしで実行できる期間を終了させることができるようにするためであ"
+"る。"
+
+#. type: Plain text
+#: sudo.man:424
+msgid ""
+"When used in conjunction with a command or an option that may require a "
+"password, this option will cause B<sudo> to ignore the user's cached "
+"credentials.  As a result, B<sudo> will prompt for a password (if one is "
+"required by the security policy) and will not update the user's cached "
+"credentials."
+msgstr ""
+"コマンドや、パスワードを必要とするような他のオプションと組み合わせて、\n"
+"このオプションを使用すると、\n"
+"B<sudo> がユーザの保存された認証情報を無視することになる。\n"
+"その結果、B<sudo> は (セキュリティポリシーがパスワードを要求するならば)、\n"
+"プロンプトを出して、パスワードを要求する。\n"
+"このとき、ユーザの保存された認証情報の更新は行われない。"
+
+#. type: Plain text
+#: sudo.man:426
+msgid "Not all security policies support credential caching."
+msgstr ""
+"すべてのセキュリティポリシーが、認証情報の一時保存をサポートしているわけでは"
+"ない。"
+
+#. type: TP
+#: sudo.man:426
+#, no-wrap
+msgid "B<-l>, B<--list>"
+msgstr "B<-l>, B<--list>"
+
+#. type: Plain text
+#: sudo.man:437
+msgid ""
+"If no I<command> is specified, list the allowed (and forbidden) commands for "
+"the invoking user (or the user specified by the B<-U> option) on the current "
+"host.  A longer list format is used if this option is specified multiple "
+"times and the security policy supports a verbose output format."
+msgstr ""
+"コマンドを指定しない場合は、B<sudo> を実行しているユーザ (あるいは、\n"
+"B<-U> オプションで指定したユーザ) が、現在ログインしているホストで許可されて"
+"いる \n"
+"(及び、禁じられている) コマンドのリストを表示する。\n"
+"このオプションを複数回指定すると、\n"
+"セキュリティポリシーが詳細な出力形式をサポートしていれば、\n"
+"長い方のリスト形式が使用される。"
+
+#. type: Plain text
+#: sudo.man:448
+msgid ""
+"If a I<command> is specified and is permitted by the security policy, the "
+"fully-qualified path to the command is displayed along with any command line "
+"arguments.  If I<command> is specified but not allowed, B<sudo> will exit "
+"with a status value of 1."
+msgstr ""
+"コマンドを指定した場合は、その実行がセキュリティポリシーによって許可されてい"
+"れば、\n"
+"コマンドの絶対パスが表示される。\n"
+"コマンドラインでコマンドに引き数まで指定すると \n"
+"(訳注: その引き数が許可されていれば)、それも一緒に表示される。\n"
+"指定したコマンドが許可されていない場合は、\n"
+"B<sudo> はステータス 1 で終了することになる。"
+
+#. type: TP
+#: sudo.man:448
+#, no-wrap
+msgid "B<-n>, B<--non-interactive>"
+msgstr "B<-n>, B<--non-interactive>"
+
+#. type: Plain text
+#: sudo.man:454
+msgid ""
+"Avoid prompting the user for input of any kind.  If a password is required "
+"for the command to run, B<sudo> will display an error message and exit."
+msgstr ""
+"プロンプトを出してユーザに入力を求めることを一切しない。\n"
+"コマンドを実行するのにパスワードが必要な場合、\n"
+"B<sudo> はエラーメッセージを出して、終了することになる。"
+
+#. type: TP
+#: sudo.man:454
+#, no-wrap
+msgid "B<-P>, B<--preserve-groups>"
+msgstr "B<-P>, B<--preserve-groups>"
+
+#. type: Plain text
+#: sudo.man:463
+msgid ""
+"Preserve the invoking user's group vector unaltered.  By default, the "
+"I<sudoers> policy will initialize the group vector to the list of groups the "
+"target user is a member of.  The real and effective group IDs, however, are "
+"still set to match the target user."
+msgstr ""
+"B<sudo> を実行するユーザの所属グループのリストを、変更せずにそのまま使用す"
+"る。\n"
+"デフォルトでは、I<sudoers> ポリシーの場合、所属グループは初期化されて、\n"
+"変身対象ユーザが所属しているグループのリストが使われることになっているのであ"
+"る。\n"
+"とは言え、実グループ ID と実効グループ ID が、\n"
+"変身対象ユーザと同一になるようにセットされる点には変わりがない。"
+
+#. type: TP
+#: sudo.man:463
+#, no-wrap
+msgid "B<-p> I<prompt>, B<--prompt>=I<prompt>"
+msgstr "B<-p> I<prompt>, B<--prompt>=I<prompt>"
+
+#. type: Plain text
+#: sudo.man:471
+msgid ""
+"Use a custom password prompt with optional escape sequences.  The following "
+"percent (\\(oq%\\(cq)  escape sequences are supported by the I<sudoers> "
+"policy:"
+msgstr ""
+"パスワードプロンプトに好みの文字列を使用する。文字列には、\n"
+"エスケープシーケンスが使用できる。I<sudoers> では、\n"
+"以下のパーセント ('%') エスケープシーケンスをサポートしている。"
+
+#. type: TP
+#: sudo.man:474
+#, no-wrap
+msgid "%H"
+msgstr "%H"
+
+#. type: Plain text
+#: sudo.man:481
+msgid ""
+"expanded to the host name including the domain name (on if the machine's "
+"host name is fully qualified or the I<fqdn> option is set in sudoers(5))"
+msgstr ""
+"ドメイン名を含むホスト名に展開される (マシンのホスト名が完全修飾名である"
+"か、\n"
+"sudoers(5) で I<fqdn> オプションがセットされている場合に有効)"
+
+#. type: TP
+#: sudo.man:482
+#, no-wrap
+msgid "%h"
+msgstr "%h"
+
+#. type: Plain text
+#: sudo.man:485
+msgid "expanded to the local host name without the domain name"
+msgstr "ドメイン名なしのローカルホスト名に展開"
+
+#. type: TP
+#: sudo.man:485
+#, no-wrap
+msgid "%p"
+msgstr "%p"
+
+#. type: Plain text
+#: sudo.man:495
+msgid ""
+"expanded to the name of the user whose password is being requested (respects "
+"the I<rootpw>, I<targetpw>, and I<runaspw> flags in sudoers(5))"
+msgstr ""
+"パスワードを要求されているユーザ名に展開 (sudoers(5) の I<rootpw>, \n"
+"I<targetpw>, I<runaspw> フラグを尊重する)"
+
+#. type: TP
+#: sudo.man:495
+#, no-wrap
+msgid "\\&%U"
+msgstr "\\&%U"
+
+#. type: Plain text
+#: sudo.man:501
+msgid ""
+"expanded to the login name of the user the command will be run as (defaults "
+"to root unless the B<-u> option is also specified)"
+msgstr ""
+"変身対象になるユーザ (B<-u> オプションが同時に指定されていないときは、root \n"
+"がデフォルト) のログイン名に展開される"
+
+#. type: TP
+#: sudo.man:501
+#, no-wrap
+msgid "%u"
+msgstr "%u"
+
+#. type: Plain text
+#: sudo.man:504
+msgid "expanded to the invoking user's login name"
+msgstr "B<sudo> を起動するユーザのログイン名に展開される"
+
+#. type: TP
+#: sudo.man:504
+#, no-wrap
+msgid "%%"
+msgstr "%%"
+
+#. type: Plain text
+#: sudo.man:511
+msgid ""
+"two consecutive \\(oq%\\(cq characters are collapsed into a single \\(oq%"
+"\\(cq character"
+msgstr "連続する二つの '%' 文字は、1 個の '%' 文字そのものを意味する。"
+
+#. type: Plain text
+#: sudo.man:517
+msgid ""
+"The custom prompt will override the system password prompt on systems that "
+"support PAM unless the I<passprompt_override> flag is disabled in I<sudoers>."
+msgstr ""
+"自家特製のプロンプトが、\n"
+"PAM をサポートしているシステムでシステムのパスワードプロンプトに置き替わるの"
+"は、\n"
+"I<sudoers> で I<passprompt_override> フラグが無効になっていない場合である \n"
+"(訳注: sudoers(5) の passprompt_override の項も参照していただきたい)。"
+
+#. type: TP
+#: sudo.man:518
+#, no-wrap
+msgid "B<-r> I<role>, B<--role>=I<role>"
+msgstr "B<-r> I<role>, B<--role>=I<role>"
+
+#. type: Plain text
+#: sudo.man:523
+msgid ""
+"Run the command with an SELinux security context that includes the specified "
+"I<role>."
+msgstr ""
+"指定された I<role> を含む \n"
+"SELinux のセキュリティ・コンテキストでコマンドを実行する。"
+
+#. type: TP
+#: sudo.man:523
+#, no-wrap
+msgid "B<-S>, B<--stdin>"
+msgstr "B<-S>, B<--stdin>"
+
+#. type: Plain text
+#: sudo.man:528
+msgid ""
+"Write the prompt to the standard error and read the password from the "
+"standard input instead of using the terminal device.  The password must be "
+"followed by a newline character."
+msgstr ""
+"プロンプトを標準エラーに表示するが、パスワードの読み込みは、\n"
+"ターミナルデバイスを使わずに、標準入力から行う。パスワードは、\n"
+"末尾に改行を付けなければならない。"
+
+#. type: TP
+#: sudo.man:528
+#, no-wrap
+msgid "B<-s>, B<--shell>"
+msgstr "B<-s>, B<--shell>"
+
+#. type: Plain text
+#: sudo.man:539
+msgid ""
+"Run the shell specified by the SHELL environment variable if it is set or "
+"the shell specified by the invoking user's password database entry.  If a "
+"command is specified, it is passed to the shell for execution via the "
+"shell's B<-c> option.  If no command is specified, an interactive shell is "
+"executed."
+msgstr ""
+"環境変数 SHELL が設定されていれば、そのシェルを、\n"
+"設定されていなければ、パスワード・データベースで \n"
+"B<sudo> を起動するユーザのシェルとして指定されているシェルを実行する。\n"
+"コマンドが指定されている場合は、それをシェルに渡し、シェルの \n"
+"B<-c> オプションを使って実行する。コマンドが指定されていない場合は、\n"
+"対話的シェルを開く。"
+
+#. type: TP
+#: sudo.man:539
+#, no-wrap
+msgid "B<-t> I<type>, B<--type>=I<type>"
+msgstr "B<-t> I<type>, B<--type>=I<type>"
+
+#. type: Plain text
+#: sudo.man:547
+msgid ""
+"Run the command with an SELinux security context that includes the specified "
+"I<type>.  If no I<type> is specified, the default type is derived from the "
+"role."
+msgstr ""
+"指定された I<type> を含む \n"
+"SELinux のセキュリティ・コンテキストでコマンドを実行する。\n"
+"I<type> が指定されていない場合は、ロールからデフォルトのタイプを推測する。"
+
+#. type: TP
+#: sudo.man:547
+#, no-wrap
+msgid "B<-U> I<user>, B<--other-user>=I<user>"
+msgstr "B<-U> I<user>, B<--other-user>=I<user>"
+
+#. type: Plain text
+#: sudo.man:560
+msgid ""
+"Used in conjunction with the B<-l> option to list the privileges for I<user> "
+"instead of for the invoking user.  The security policy may restrict listing "
+"other users' privileges.  The I<sudoers> policy only allows root or a user "
+"with the ALL privilege on the current host to use this option."
+msgstr ""
+"B<sudo> を実行しているユーザではなく、\n"
+"I<user> というユーザの権限の一覧を表示するために、\n"
+"B<-l> オプションと組み合わせて使用する。自分以外のユーザの権限の表示は、\n"
+"セキュリティポリシーによって禁止されているかもしれない。\n"
+"I<sudoers> ポリシーでこのオプションの使用が認められているのは、\n"
+"root ユーザを別にすれば、現在使用中のホストで許可するコマンドに \n"
+"ALL が指定してあるユーザだけである。"
+
+#. type: TP
+#: sudo.man:560
+#, no-wrap
+msgid "B<-u> I<user>, B<--user>=I<user>"
+msgstr "B<-u> I<user>, B<--user>=I<user>"
+
+#. type: Plain text
+#: sudo.man:586
+msgid ""
+"Run the command as a user other than the default target user (usually "
+"I<root>).  The I<user> may be either a user name or a numeric user ID (UID)  "
+"prefixed with the \\(oq#\\(cq character (e.g.  #0 for UID 0).  When running "
+"commands as a UID, many shells require that the \\(oq#\\(cq be escaped with "
+"a backslash (\\(oq\\e\\(cq).  Some security policies may restrict UIDs to "
+"those listed in the password database.  The I<sudoers> policy allows UIDs "
+"that are not in the password database as long as the I<targetpw> option is "
+"not set.  Other security policies may not support this."
+msgstr ""
+"コマンドをデフォルトの変身対象ユーザ (通常は I<root>) \n"
+"以外のユーザとして実行する。I<user> に指定するのは、ユーザ名でもよく、\n"
+"'#' 記号を頭に付けたユーザ ID 番号 (UID) でもよい\n"
+"(たとえば、UID が 0 なら、#0 と指定する)。多くのシェルでは、\n"
+"UID の資格でコマンドを実行するには、\n"
+"'#' をバックスラッシュ ('\\e') でエスケープしなければならない。\n"
+"セキュリティポリシーによっては、使用できる UID \n"
+"をパスワード・データベースに登録されているものに限定していることもある。\n"
+"I<sudoers> ポリシーでは、I<targetpw> オプションが設定されていないかぎり、\n"
+"パスワード・データベースに存在しない UID も認めている。\n"
+"他のセキュリティポリシーでは、それは許されないかもしれない。"
+
+#. type: TP
+#: sudo.man:586
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr "B<-V>, B<--version>"
+
+#. type: Plain text
+#: sudo.man:598
+msgid ""
+"Print the B<sudo> version string as well as the version string of the "
+"security policy plugin and any I/O plugins.  If the invoking user is already "
+"root the B<-V> option will display the arguments passed to configure when "
+"B<sudo> was built and plugins may display more verbose information such as "
+"default options."
+msgstr ""
+"B<sudo> のバージョン文字列を、セキュリティポリシー・プラグインや \n"
+"入出力プラグインのバージョン文字列とともに表示する。\n"
+"B<sudo> を実行するユーザがあらかじめ root になっている場合は、\n"
+"B<sudo> がビルドされたときに configure スクリプトに渡された引き数が表示され"
+"る。\n"
+"プラグインについては、\n"
+"デフォルト・オプションのようなより詳細な情報が表示されるかもしれない。"
+
+#. type: TP
+#: sudo.man:598
+#, no-wrap
+msgid "B<-v>, B<--validate>"
+msgstr "B<-v>, B<--validate>"
+
+#. type: Plain text
+#: sudo.man:610
+msgid ""
+"Update the user's cached credentials, authenticating the user if necessary.  "
+"For the I<sudoers> plugin, this extends the B<sudo> timeout for another 5 "
+"minutes by default, but does not run a command.  Not all security policies "
+"support cached credentials."
+msgstr ""
+"ユーザの保存された認証情報を更新する。このとき、必要ならば、\n"
+"ユーザの認証を行う。I<sudoers> プラグインでは、このオプションによって \n"
+"B<sudo> のタイムアウト時間がもう 5 分間 (これがデフォルトのタイムアウト時"
+"間) \n"
+"伸びるが、このオプションがコマンドを実行することはない。\n"
+"すべてのセキュリティポリシーが認証情報の一時保存に対応しているわけではない。"
+
+#. type: TP
+#: sudo.man:610
+#, no-wrap
+msgid "B<-->"
+msgstr "B<-->"
+
+#. type: Plain text
+#: sudo.man:617
+msgid ""
+"The B<--> option indicates that B<sudo> should stop processing command line "
+"arguments."
+msgstr ""
+"B<--> オプションがあると、\n"
+"B<sudo> はそこでコマンドライン引き数の処理をやめる。"
+
+#. type: Plain text
+#: sudo.man:642
+msgid ""
+"Environment variables to be set for the command may also be passed on the "
+"command line in the form of I<VAR>=I<value>, e.g.\\& LD_LIBRARY_PATH=I</usr/"
+"local/pkg/lib>.  Variables passed on the command line are subject to "
+"restrictions imposed by the security policy plugin.  The I<sudoers> policy "
+"subjects variables passed on the command line to the same restrictions as "
+"normal environment variables with one important exception.  If the I<setenv> "
+"option is set in I<sudoers>, the command to be run has the SETENV tag set or "
+"the command matched is ALL, the user may set variables that would otherwise "
+"be forbidden.  See sudoers(5)  for more information."
+msgstr ""
+"さらに、コマンドのために設定したい環境変数も、I<VAR>=I<value>、たとえば \n"
+"LD_LIBRARY_PATH=I</usr/local/pkg/lib> \n"
+"といった形でコマンドラインで渡すことができる。コマンドラインで渡す環境変数"
+"は、\n"
+"セキュリティポリシー・プラグインによって課される制限の対象になる。\n"
+"I<sudoers> ポリシーの場合、コマンドラインで渡される環境変数は、\n"
+"通常の環境変数と同じ制限の対象になるが、一つだけ重要な相違がある。\n"
+"I<sudoers> で I<setenv> オプションが設定されているか、実行するコマンドに \n"
+"SETENV タグが付いているか、あるいは、マッチするコマンドが ALL である場合"
+"は、\n"
+"ユーザは他の状況なら禁じられているような環境変数を設定することができるの"
+"だ。\n"
+"詳細については、sudoers(5) のマニュアルを参照していただきたい。"
+
+#. type: SH
+#: sudo.man:642
+#, no-wrap
+msgid "COMMAND EXECUTION"
+msgstr "コマンドの実行"
+
+#. type: Plain text
+#: sudo.man:653
+msgid ""
+"When B<sudo> executes a command, the security policy specifies the execution "
+"environment for the command.  Typically, the real and effective user and "
+"group and IDs are set to match those of the target user, as specified in the "
+"password database, and the group vector is initialized based on the group "
+"database (unless the B<-P> option was specified)."
+msgstr ""
+"B<sudo> がコマンドを実行するとき、\n"
+"セキュリティポリシーによってコマンドの実行環境が設定される。たいていの場"
+"合、\n"
+"実ユーザ、実効ユーザ、実グループ、実効グループ、及びその ID 番号が、変身対象"
+"ユーザの、\n"
+"パスワード・データベースに記載されているものと同一になるようにセットされ"
+"る。\n"
+"所属グループのリストも、(B<-P> オプションが指定されていないかぎり) \n"
+"グループ・データベースに基づいて、初期化される。"
+
+#. type: Plain text
+#: sudo.man:655
+msgid "The following parameters may be specified by security policy:"
+msgstr "セキュリティポリシーは、以下のパラメータを設定することができる。"
+
+#. type: Plain text
+#: sudo.man:658
+msgid "real and effective user ID"
+msgstr "実ユーザ ID と実効ユーザ ID"
+
+#. type: Plain text
+#: sudo.man:661
+msgid "real and effective group ID"
+msgstr "実グループ ID と実効グループ ID"
+
+#. type: Plain text
+#: sudo.man:664
+msgid "supplementary group IDs"
+msgstr "補助グループ ID"
+
+#. type: Plain text
+#: sudo.man:667
+msgid "the environment list"
+msgstr "環境のリスト"
+
+#. type: Plain text
+#: sudo.man:670
+msgid "current working directory"
+msgstr "カレント・ワーキング・ディレクトリ"
+
+#. type: Plain text
+#: sudo.man:673
+msgid "file creation mode mask (umask)"
+msgstr "ファイル作成時のモード・マスク (umask)"
+
+#. type: Plain text
+#: sudo.man:676
+msgid "SELinux role and type"
+msgstr "SELinux の role と type"
+
+#. type: Plain text
+#: sudo.man:679
+msgid "Solaris project"
+msgstr "Solaris の project"
+
+#. type: Plain text
+#: sudo.man:682
+msgid "Solaris privileges"
+msgstr "Solaris の privilege"
+
+#. type: Plain text
+#: sudo.man:685
+msgid "BSD login class"
+msgstr "BSD のログインクラス (login class)"
+
+#. type: Plain text
+#: sudo.man:688
+msgid "scheduling priority (aka nice value)"
+msgstr "スケジューリング優先度 (nice value とも言う)"
+
+#. type: SS
+#: sudo.man:688
+#, no-wrap
+msgid "Process model"
+msgstr "プロセス・モデル"
+
+#. type: Plain text
+#: sudo.man:731
+msgid ""
+"When B<sudo> runs a command, it calls fork(2), sets up the execution "
+"environment as described above, and calls the execve system call in the "
+"child process.  The main B<sudo> process waits until the command has "
+"completed, then passes the command's exit status to the security policy's "
+"close function and exits.  If an I/O logging plugin is configured or if the "
+"security policy explicitly requests it, a new pseudo-terminal (\\(Lqpty"
+"\\(Rq)  is created and a second B<sudo> process is used to relay job control "
+"signals between the user's existing pty and the new pty the command is being "
+"run in.  This extra process makes it possible to, for example, suspend and "
+"resume the command.  Without it, the command would be in what POSIX terms an "
+"\\(Lqorphaned process group\\(Rq and it would not receive any job control "
+"signals.  As a special case, if the policy plugin does not define a close "
+"function and no pty is required, B<sudo> will execute the command directly "
+"instead of calling fork(2)  first.  The I<sudoers> policy plugin will only "
+"define a close function when I/O logging is enabled, a pty is required, or "
+"the I<pam_session> or I<pam_setcred> options are enabled.  Note that "
+"I<pam_session> and I<pam_setcred> are enabled by default on systems using "
+"PAM."
+msgstr ""
+"B<sudo> は、コマンドを実行するとき、まず fork(2) を呼び、\n"
+"実行環境を上記のように設定してから、子プロセスで execve システムコールを呼び"
+"出す。\n"
+"メインの B<sudo> プロセスは、コマンドが完了するまで wait し、完了したら、\n"
+"コマンドの終了ステータスをセキュリティポリシーの close 関数に渡してから、\n"
+"終了する。入出力ロギング・プラグインが設定されている場合や、\n"
+"セキュリティポリシーが明示的にそれを要求している場合は、\n"
+"擬似端末 (\"pty\") が新規に作成され、二つ目の B<sudo> プロセスが、\n"
+"既に存在しているユーザの pty と、コマンドがそこで実行されている新しい pty と"
+"の間で、\n"
+"ジョブ制御シグナルを中継するために使用される。\n"
+"この二つ目の B<sudo> プロセスによって、たとえば、\n"
+"コマンドのサスペンドやレジュームといったことが可能になるのである。\n"
+"この仕組みがなければ、コマンドは、POSIX で \"orphaned process group\" \n"
+"と言われる状態に陥り、どんなジョブ制御シグナルも受け取れないことになってしま"
+"うだろう。\n"
+"なお、特殊ケースとして次のことがある。ポリシー・プラグインが\n"
+"close 関数を定義していず、しかも、pty が要求されていない場合は、\n"
+"B<sudo> は fork(2) を最初に呼ぶことをせず、直接コマンドを実行する。\n"
+"I<sudoers> ポリシー・プラグインで close 関数が定義されることになるのは、\n"
+"入出力ロギングが有効か、pty が要求されているか、I<pam_session> または \n"
+"I<pam_setcred> が有効な場合だけである。PAM を使用しているシステムでは、\n"
+"デフォルトで I<pam_session> と I<pam_setcred> \n"
+"が有効になることに注意していただきたい。\n"
+"(訳注: 上記の「特殊ケースとして」以下についてだが、最近の B<sudo> では、\n"
+"I<sudoers> ポリシーにおける I<pam_session> や I<pam_setcred> \n"
+"の有効/無効に関係なく、pty が要求されていない場合は、\n"
+"fork せずに直接コマンドを実行するようである。)"
+
+#. type: SS
+#: sudo.man:731
+#, no-wrap
+msgid "Signal handling"
+msgstr "シグナルの処理"
+
+#. type: Plain text
+#: sudo.man:757
+msgid ""
+"When the command is run as a child of the B<sudo> process, B<sudo> will "
+"relay signals it receives to the command.  The SIGINT and SIGQUIT signals "
+"are only relayed when the command is being run in a new pty or when the "
+"signal was sent by a user process, not the kernel.  This prevents the "
+"command from receiving SIGINT twice each time the user enters control-C.  "
+"Some signals, such as SIGSTOP and SIGKILL, cannot be caught and thus will "
+"not be relayed to the command.  As a general rule, SIGTSTP should be used "
+"instead of SIGSTOP when you wish to suspend a command being run by B<sudo>."
+msgstr ""
+"コマンドが B<sudo> プロセスの子プロセスとして実行されているとき、\n"
+"B<sudo> は自分が受け取ったシグナルをそのコマンドに中継する。\n"
+"ただし、SIGINT や SIGQUIT シグナルが中継されるのは、\n"
+"そのコマンドが新たに開いた pty で実行されているときか、\n"
+"シグナルがカーネルではなく、ユーザ・プロセスによって送出されたときだけであ"
+"る。\n"
+"そうなっていることで、ユーザが control-C を入力するたびに、\n"
+"コマンドが SIGINT シグナルを二重に受け取らないようにしているのだ。\n"
+"SIGSTOP や SIGKILL のようないくつかのシグナルは、\n"
+"捕獲できないので、コマンドに中継されることもない。\n"
+"だから、B<sudo> によって実行されているコマンドをサスペンドしたかったら、\n"
+"原則として、SIGSTOP ではなく、SIGTSTP コマンドを使用するべきである。"
+
+#. type: Plain text
+#: sudo.man:794
+msgid ""
+"As a special case, B<sudo> will not relay signals that were sent by the "
+"command it is running.  This prevents the command from accidentally killing "
+"itself.  On some systems, the reboot(8)  command sends SIGTERM to all non-"
+"system processes other than itself before rebooting the system.  This "
+"prevents B<sudo> from relaying the SIGTERM signal it received back to "
+"reboot(8), which might then exit before the system was actually rebooted, "
+"leaving it in a half-dead state similar to single user mode.  Note, however, "
+"that this check only applies to the command run by B<sudo> and not any other "
+"processes that the command may create.  As a result, running a script that "
+"calls reboot(8)  or shutdown(8)  via B<sudo> may cause the system to end up "
+"in this undefined state unless the reboot(8)  or shutdown(8)  are run using "
+"the B<exec>()  family of functions instead of B<system>()  (which interposes "
+"a shell between the command and the calling process)."
+msgstr ""
+"B<sudo> は原則として、自分が受け取ったシグナルを子プロセスに中継するわけだ"
+"が、\n"
+"自分が実行しているコマンドから来たシグナルは、中継しないという例外がある。\n"
+"コマンドが意図に反して自分自身を殺してしまわないようにしているのだ。\n"
+"システムによっては、reboot(8) コマンドが、システムをリブートする前に、\n"
+"自分自身を除くすべてのノン・システム・プロセスに SIGTERM を送るものがある。\n"
+"そうした場合も、中継の抑制があるため、B<sudo> は自分が受け取った\n"
+"SIGTERM シグナルを reboot(8) に送り返さない。もし送り返すようになっていた"
+"ら、\n"
+"システムが実際にリブートする前に reboot(8) が終了して、\n"
+"システムがシングルユーザ・モードによく似た半分死んだ状態 (half-dead state) \n"
+"に陥ってしまうだろう。とは言え、注意していただきたいが、\n"
+"この中継の抑制が行われるのは、B<sudo> によって直接実行されるコマンドに対して"
+"のみであり、\n"
+"そのコマンドが生成するかもしれない他のどんなプロセスに対しても当てはまらな"
+"い。\n"
+"それ故、reboot(8) や shutdown(8) を呼び出すスクリプトを \n"
+"B<sudo> 経由で実行すると、システムがそうしたわけのわからない状態に陥ることが"
+"ある。\n"
+"reboot(8) や shutdown(8) の実行に B<exec>() ファミリーの関数ではなく、\n"
+"B<system>() 関数を使用していると、\n"
+"(B<system>() は、呼び出しプロセスとコマンドの間にシェルを挟むため) \n"
+"そうしたことが起こりかねないのだ。"
+
+#. type: Plain text
+#: sudo.man:802
+msgid ""
+"If no I/O logging plugins are loaded and the policy plugin has not defined a "
+"B<close>()  function, set a command timeout or required that the command be "
+"run in a new pty, B<sudo> may execute the command directly instead of "
+"running it as a child process."
+msgstr ""
+"入出力ロギング・プラグインがロードされていない場合に、\n"
+"ポリシー・プラグインが B<close>() 関数を定義してもいず、\n"
+"コマンドのタイムアウトを設定していることもなく、コマンドを新たに開いた pty \n"
+"で実行することを要求してもいなかったならば、B<sudo> は、\n"
+"コマンドを子プロセスとしてではなく、直接実行するかもしれない。"
+
+#. type: SS
+#: sudo.man:802
+#, no-wrap
+msgid "Plugins"
+msgstr "プラグイン"
+
+#. type: Plain text
+#: sudo.man:830
+msgid ""
+"Plugins may be specified via Plugin directives in the sudo.conf(5)  file.  "
+"They may be loaded as dynamic shared objects (on systems that support them), "
+"or compiled directly into the B<sudo> binary.  If no sudo.conf(5)  file is "
+"present, or it contains no Plugin lines, B<sudo> will use the traditional "
+"I<sudoers> security policy and I/O logging.  See the sudo.conf(5)  manual "
+"for details of the I</etc/sudo.conf> file and the sudo_plugin(8)  manual for "
+"more information about the B<sudo> plugin architecture."
+msgstr ""
+"プラグインは、sudo.conf(5) ファイルの Plugin 命令 (directive) \n"
+"で指定することができる。プラグインは、(システムがサポートしていれば) \n"
+"動的な共有オブジェクト (dynamic shared object) としてロードすることもできる"
+"し、\n"
+"また、B<sudo> のバイナリに直接組み込むこともできる。sudo.conf(5) \n"
+"ファイルが存在しない場合や、sudo.conf(5) ファイルに Plugin の行がない場合"
+"は、\n"
+"B<sudo> は従来どおり、I<sudoers> のセキュリティポリシーと入出力ロギングを使用"
+"することになる。\n"
+"I</etc/sudo.conf> ファイルの詳細については、\n"
+"sudo.conf(5) のマニュアルを参照していただきたい。\n"
+"B<sudo> プラグインの設計についての詳しい情報は、\n"
+"sudo_plugin(5) のマニュアルにある。"
+
+#. type: SH
+#: sudo.man:830
+#, no-wrap
+msgid "EXIT VALUE"
+msgstr "終了ステータス"
+
+#. type: Plain text
+#: sudo.man:837
+msgid ""
+"Upon successful execution of a command, the exit status from B<sudo> will be "
+"the exit status of the program that was executed.  If the command terminated "
+"due to receipt of a signal, B<sudo> will send itself the signal that "
+"terminated the command."
+msgstr ""
+"コマンドの実行に成功した場合、B<sudo> が返す終了ステータスは、\n"
+"実行したプログラムの終了ステータスである。\n"
+"コマンドがシグナルを受け取ることによって終了した場合は、\n"
+"B<sudo> はコマンドを終了させたシグナルを自分自身に送るようになっている。"
+
+#. type: Plain text
+#: sudo.man:863
+msgid ""
+"Otherwise, B<sudo> exits with a value of 1 if there is a configuration/"
+"permission problem or if B<sudo> cannot execute the given command.  In the "
+"latter case, the error string is printed to the standard error.  If B<sudo> "
+"cannot stat(2)  one or more entries in the user's PATH, an error is printed "
+"to the standard error.  (If the directory does not exist or if it is not "
+"really a directory, the entry is ignored and no error is printed.)  This "
+"should not happen under normal circumstances.  The most common reason for "
+"stat(2)  to return \\(Lqpermission denied\\(Rq is if you are running an "
+"automounter and one of the directories in your PATH is on a machine that is "
+"currently unreachable."
+msgstr ""
+"それ以外の場合、設定やパーミッションに問題があったり、\n"
+"B<sudo> が指定されたコマンドを実行できなかったりしたときは、\n"
+"B<sudo> は終了ステータス 1 で終了する。後者の場合は、\n"
+"エラーメッセージが標準エラーに表示される。B<sudo> がユーザの \n"
+"PATH にある一つ以上のエントリを stat(2) できなかったときも、\n"
+"エラーが標準エラーに表示される (ただし、PATH \n"
+"中のディレクトリが存在しなかったときや、実際にはディレクトリでなかったとき"
+"は、\n"
+"そのエントリは無視され、エラーは表示されない)。そういったことは、\n"
+"通常の状態では起きるはずがないことである。stat(2) が \"permission denied\" \n"
+"を返す理由で一番よくあるのは、ユーザがオートマウンターを使用していて、\n"
+"PATH 中のディレクトリの一つが目下到達不可能なマシンにある場合だ。"
+
+#. type: SH
+#: sudo.man:863
+#, no-wrap
+msgid "SECURITY NOTES"
+msgstr "セキュリティに関するメモ"
+
+#. type: Plain text
+#: sudo.man:866
+msgid "B<sudo> tries to be safe when executing external commands."
+msgstr "B<sudo> は、外部のコマンドをできるだけ安全に実行しようとする。"
+
+#. type: Plain text
+#: sudo.man:881
+msgid ""
+"To prevent command spoofing, B<sudo> checks \".\" and \"\" (both denoting "
+"current directory) last when searching for a command in the user's PATH (if "
+"one or both are in the PATH).  Note, however, that the actual PATH "
+"environment variable is I<not> modified and is passed unchanged to the "
+"program that B<sudo> executes."
+msgstr ""
+"偽コマンドの実行 (command spoofing) を防止するため、B<sudo> \n"
+"はコマンドを捜してユーザの PATH を検索する際に、\".\" や \"\" \n"
+"(どちらもカレント・ディレクトリを意味する) を最後に調べる (そのどちらか、\n"
+"あるいは両方が、PATH 中に存在すればだが)。とは言え、環境変数 PATH そのものは"
+"変更されずに、\n"
+"そのまま B<sudo> が実行するプログラムに渡されることに注意していただきたい。"
+
+#. type: Plain text
+#: sudo.man:890
+msgid ""
+"Users should I<never> be granted B<sudo> privileges to execute files that "
+"are writable by the user or that reside in a directory that is writable by "
+"the user.  If the user can modify or replace the command there is no way to "
+"limit what additional commands they can run."
+msgstr ""
+"次のようなファイルを実行する B<sudo> 権限を、絶対にユーザに許可してはいけな"
+"い。\n"
+"すなわち、そのユーザに書き込みできるファイルや、\n"
+"そのユーザに書き込みできるディレクトリにあるファイルを実行する権限である。\n"
+"もし、ユーザがコマンドを書き換えたり、別のコマンドと置き換えたりできるなら"
+"ば、\n"
+"そのユーザは自分が実行できるコマンドに何でも追加できるわけで、\n"
+"それを制限する方法はまったくないのだ。"
+
+#. type: Plain text
+#: sudo.man:913
+msgid ""
+"Please note that B<sudo> will normally only log the command it explicitly "
+"runs.  If a user runs a command such as sudo su or sudo sh, subsequent "
+"commands run from that shell are not subject to B<sudo>'s security policy.  "
+"The same is true for commands that offer shell escapes (including most "
+"editors).  If I/O logging is enabled, subsequent commands will have their "
+"input and/or output logged, but there will not be traditional logs for those "
+"commands.  Because of this, care must be taken when giving users access to "
+"commands via B<sudo> to verify that the command does not inadvertently give "
+"the user an effective root shell.  For more information, please see the "
+"I<Preventing shell escapes> section in sudoers(5)."
+msgstr ""
+"B<sudo> は通常、自分が明示的に実行するコマンドしかログに記録しないことに注意"
+"していただきたい。\n"
+"ユーザが sudo su や sudo sh といったコマンドを実行した場合、\n"
+"そのシェルからさらに実行されるコマンドは、\n"
+"B<sudo> のセキュリティポリシーの対象にはならないのだ。\n"
+"同じことが、シェル・エスケープを提供するコマンド (たいていのエディターが、\n"
+"それに含まれる) についても言える。確かに、入出力ロギングが有効になっている場"
+"合は、\n"
+"シェルからさらに実行されるコマンドも、その入力や出力を記録されることになる"
+"が、\n"
+"従来からあるログファイルに記録されるわけではないのである。従って、\n"
+"ユーザに B<sudo> 経由で、あるコマンドを実行する権限を与えるときは、\n"
+"そのコマンドが事実上ルート・シェルをユーザにうっかり与えていないことを、\n"
+"念には念を入れて確認しなければならない。もっと詳しいことをお知りになりたかっ"
+"たら、\n"
+"sudoers(5) のマニュアルの「シェル・エスケープを防止する」というセクションをご"
+"覧になるとよい。"
+
+#. type: Plain text
+#: sudo.man:927
+msgid ""
+"To prevent the disclosure of potentially sensitive information, B<sudo> "
+"disables core dumps by default while it is executing (they are re-enabled "
+"for the command that is run).  This historical practice dates from a time "
+"when most operating systems allowed setuid processes to dump core by "
+"default.  To aid in debugging B<sudo> crashes, you may wish to re-enable "
+"core dumps by setting \\(Lqdisable_coredump\\(Rq to false in the sudo."
+"conf(5)  file as follows:"
+msgstr ""
+"セキュリティ上問題になりかねない情報を漏洩しないように、\n"
+"B<sudo> はデフォルトでは、自己を実行中のコアダンプを抑止している \n"
+"(指定されたコマンドを実行するときに、コアダンプを有効にし直すのだ)。\n"
+"この動作は昔からのものであり、たいていのオペレーティングシステムが \n"
+"setuid プロセスにデフォルトではコアダンプを許していた時代からそうなってい"
+"た。\n"
+"B<sudo> 自体のクラッシュをデバッグするためにコアダンプを有効に戻したいなら"
+"ば、\n"
+"以下のように、sudo.conf(5) ファイルで \"disable_coredump\" を \n"
+"false にすればよい。"
+
+#. type: Plain text
+#: sudo.man:931
+#, no-wrap
+msgid "Set disable_coredump false\n"
+msgstr "Set disable_coredump false\n"
+
+#. type: Plain text
+#: sudo.man:937
+msgid "See the sudo.conf(5)  manual for more information."
+msgstr "詳細については、sudo.conf(5) のマニュアルを参照していただきたい。"
+
+#. type: SH
+#: sudo.man:937
+#, no-wrap
+msgid "ENVIRONMENT"
+msgstr "環境変数"
+
+#. type: Plain text
+#: sudo.man:942
+msgid ""
+"B<sudo> utilizes the following environment variables.  The security policy "
+"has control over the actual content of the command's environment."
+msgstr ""
+"B<sudo> は以下の環境変数を利用する。\n"
+"実行するコマンドの環境が実際にどうなるかは、セキュリティポリシー次第である。"
+
+#. type: TP
+#: sudo.man:942
+#, no-wrap
+msgid "EDITOR"
+msgstr "EDITOR"
+
+#. type: Plain text
+#: sudo.man:951
+msgid ""
+"Default editor to use in B<-e> (sudoedit) mode if neither SUDO_EDITOR nor "
+"VISUAL is set."
+msgstr ""
+"環境変数 SUDO_EDITOR や VISUAL が設定されていないとき、\n"
+"B<-e> (sudoedit) モードで使用するデフォルトのエディタ。"
+
+#. type: TP
+#: sudo.man:951
+#, no-wrap
+msgid "MAIL"
+msgstr "MAIL"
+
+#. type: Plain text
+#: sudo.man:964
+msgid ""
+"Set to the mail spool of the target user when the B<-i> option is specified "
+"or when I<env_reset> is enabled in I<sudoers> (unless MAIL is present in the "
+"I<env_keep> list)."
+msgstr ""
+"B<-i> オプションが指定された場合や、I<sudoers> で I<env_reset> \n"
+"が有効になっている場合には (I<env_keep> のリストに \n"
+"MAIL が存在しないかぎり)、変身対象ユーザのメールスプールにセットされる。"
+
+#. type: TP
+#: sudo.man:964
+#, no-wrap
+msgid "HOME"
+msgstr "HOME"
+
+#. type: Plain text
+#: sudo.man:989
+msgid ""
+"Set to the home directory of the target user when the B<-i> or B<-H> options "
+"are specified, when the B<-s> option is specified and I<set_home> is set in "
+"I<sudoers>, when I<always_set_home> is enabled in I<sudoers>, or when "
+"I<env_reset> is enabled in I<sudoers> and I<HOME> is not present in the "
+"I<env_keep> list."
+msgstr ""
+"次の場合には、変身対象ユーザのホームディレクトリにセットされる。\n"
+"B<-i> や B<-H> オプションが指定された場合、\n"
+"B<-s> オプションが指定され、かつ I<sudoers> で I<set_home> が設定されている場"
+"合、\n"
+"I<always_set_home> が I<sudoers> で有効になっている場合、 \n"
+"あるいは、I<env_reset> が I<sudoers> で有効になっていて、\n"
+"しかも I<HOME> が I<env_keep> のリストに存在しない場合。"
+
+#. type: TP
+#: sudo.man:989
+#, no-wrap
+msgid "LOGNAME"
+msgstr "LOGNAME"
+
+#. type: Plain text
+#: sudo.man:1006
+msgid ""
+"Set to the login name of the target user when the B<-i> option is specified, "
+"when the I<set_logname> option is enabled in I<sudoers> or when the "
+"I<env_reset> option is enabled in I<sudoers> (unless LOGNAME is present in "
+"the I<env_keep> list)."
+msgstr ""
+"次の場合には、変身対象ユーザのログイン名にセットされる。\n"
+"B<-i> オプションが指定された場合、\n"
+"I<set_logname> オプションが I<sudoers> で有効になっている場合、\n"
+"あるいは、I<env_reset> オプションが I<sudoers> で有効になっていて、\n"
+"LOGNAME が I<env_keep> のリストに存在しない場合。"
+
+#. type: TP
+#: sudo.man:1006
+#, no-wrap
+msgid "PATH"
+msgstr "PATH"
+
+#. type: Plain text
+#: sudo.man:1009
+msgid "May be overridden by the security policy."
+msgstr "セキュリティポリシーによって上書きされるかもしれない。"
+
+#. type: TP
+#: sudo.man:1009
+#, no-wrap
+msgid "SHELL"
+msgstr "SHELL"
+
+#. type: Plain text
+#: sudo.man:1014
+msgid "Used to determine shell to run with B<-s> option."
+msgstr "B<-s> オプションで起動するシェルを決めるのに使用する。"
+
+#. type: TP
+#: sudo.man:1014
+#, no-wrap
+msgid "SUDO_ASKPASS"
+msgstr "SUDO_ASKPASS"
+
+#. type: Plain text
+#: sudo.man:1020
+msgid ""
+"Specifies the path to a helper program used to read the password if no "
+"terminal is available or if the B<-A> option is specified."
+msgstr ""
+"ターミナルが利用できない場合や、B<-A> オプションが指定された場合に、\n"
+"パスワードを読み込むのに使用するヘルパー・プログラムのパスを指定する。"
+
+#. type: TP
+#: sudo.man:1020
+#, no-wrap
+msgid "SUDO_COMMAND"
+msgstr "SUDO_COMMAND"
+
+#. type: Plain text
+#: sudo.man:1023
+msgid "Set to the command run by sudo."
+msgstr "sudo が実行するコマンドにセットされる。"
+
+#. type: TP
+#: sudo.man:1023
+#, no-wrap
+msgid "SUDO_EDITOR"
+msgstr "SUDO_EDITOR"
+
+#. type: Plain text
+#: sudo.man:1028
+msgid "Default editor to use in B<-e> (sudoedit) mode."
+msgstr "B<-e> (sudoedit) モードで使用するデフォルトのエディタ。"
+
+#. type: TP
+#: sudo.man:1028
+#, no-wrap
+msgid "SUDO_GID"
+msgstr "SUDO_GID"
+
+#. type: Plain text
+#: sudo.man:1031
+msgid "Set to the group ID of the user who invoked sudo."
+msgstr "sudo を起動したユーザのグループ ID にセットされる。"
+
+#. type: TP
+#: sudo.man:1031
+#, no-wrap
+msgid "SUDO_PROMPT"
+msgstr "SUDO_PROMPT"
+
+#. type: Plain text
+#: sudo.man:1034
+msgid "Used as the default password prompt."
+msgstr "デフォルトのパスワード・プロンプトとして使用する。"
+
+#. type: TP
+#: sudo.man:1034
+#, no-wrap
+msgid "SUDO_PS1"
+msgstr "SUDO_PS1"
+
+#. type: Plain text
+#: sudo.man:1039
+msgid "If set, PS1 will be set to its value for the program being run."
+msgstr "設定すると、実行されるプログラムの PS1 がこの変数の値にセットされる。"
+
+#. type: TP
+#: sudo.man:1039
+#, no-wrap
+msgid "SUDO_UID"
+msgstr "SUDO_UID"
+
+#. type: Plain text
+#: sudo.man:1042
+msgid "Set to the user ID of the user who invoked sudo."
+msgstr "sudo を起動したユーザのユーザ ID にセットされる。"
+
+#. type: TP
+#: sudo.man:1042
+#, no-wrap
+msgid "SUDO_USER"
+msgstr "SUDO_USER"
+
+#. type: Plain text
+#: sudo.man:1045
+msgid "Set to the login name of the user who invoked sudo."
+msgstr "sudo を起動したユーザのログイン名にセットされる。"
+
+#. type: TP
+#: sudo.man:1045
+#, no-wrap
+msgid "USER"
+msgstr "USER"
+
+#. type: Plain text
+#: sudo.man:1050
+msgid "Set to the same value as LOGNAME, described above."
+msgstr "上で述べた LOGNAME と同じ値にセットされる。"
+
+#. type: TP
+#: sudo.man:1050
+#, no-wrap
+msgid "USERNAME"
+msgstr "USERNAME"
+
+#. type: Plain text
+#: sudo.man:1054
+msgid "Same as USER."
+msgstr "USER と同じ。"
+
+#. type: TP
+#: sudo.man:1054
+#, no-wrap
+msgid "VISUAL"
+msgstr "VISUAL"
+
+#. type: Plain text
+#: sudo.man:1061
+msgid ""
+"Default editor to use in B<-e> (sudoedit) mode if SUDO_EDITOR is not set."
+msgstr ""
+"SUDO_EDITOR が設定されていない場合に、B<-e> (sudoedit) \n"
+"モードで使用するデフォルトのエディタ。"
+
+#. type: SH
+#: sudo.man:1061
+#, no-wrap
+msgid "FILES"
+msgstr "ファイル"
+
+#. type: TP
+#: sudo.man:1062
+#, no-wrap
+msgid "I</etc/sudo.conf>"
+msgstr "I</etc/sudo.conf>"
+
+#. type: Plain text
+#: sudo.man:1066
+msgid "B<sudo> front end configuration"
+msgstr "B<sudo> フロントエンドの設定ファイル"
+
+#. type: SH
+#: sudo.man:1066
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "用例"
+
+#. type: Plain text
+#: sudo.man:1069
+msgid ""
+"Note: the following examples assume a properly configured security policy."
+msgstr ""
+"注意: 以下の例は、セキュリティポリシーが適切に設定されていることを前提にして"
+"いる。"
+
+#. type: Plain text
+#: sudo.man:1071
+msgid "To get a file listing of an unreadable directory:"
+msgstr "読み取り不可のディレクトリのファイル一覧を取得する。"
+
+#. type: Plain text
+#: sudo.man:1075
+#, no-wrap
+msgid "$ sudo ls /usr/local/protected\n"
+msgstr "$ sudo ls /usr/local/protected\n"
+
+#. type: Plain text
+#: sudo.man:1080
+msgid ""
+"To list the home directory of user yaz on a machine where the file system "
+"holding ~yaz is not exported as root:"
+msgstr ""
+"ユーザ yaz のホームディレクトリのファイル一覧を取得する。\n"
+"ただし、~yaz を含むファイルシステムが、別のマシンにあって、\n"
+"root でアクセスできるようにエクスポートされていない場合。"
+
+#. type: Plain text
+#: sudo.man:1084
+#, no-wrap
+msgid "$ sudo -u yaz ls ~yaz\n"
+msgstr "$ sudo -u yaz ls ~yaz\n"
+
+#. type: Plain text
+#: sudo.man:1090
+msgid "To edit the I<index.html> file as user www:"
+msgstr "ユーザ www として I<index.html> ファイルを編集する。"
+
+#. type: Plain text
+#: sudo.man:1094
+#, no-wrap
+msgid "$ sudo -u www vi ~www/htdocs/index.html\n"
+msgstr "$ sudo -u www vi ~www/htdocs/index.html\n"
+
+#. type: Plain text
+#: sudo.man:1099
+msgid "To view system logs only accessible to root and users in the adm group:"
+msgstr ""
+"root と adm グループのユーザだけがアクセスできるシステムログを閲覧する。"
+
+#. type: Plain text
+#: sudo.man:1103
+#, no-wrap
+msgid "$ sudo -g adm view /var/log/syslog\n"
+msgstr "$ sudo -g adm view /var/log/syslog\n"
+
+#. type: Plain text
+#: sudo.man:1107
+msgid "To run an editor as jim with a different primary group:"
+msgstr ""
+"jim に変身してエディタを実行する。プライマリグループには別のグループを指定す"
+"る。"
+
+#. type: Plain text
+#: sudo.man:1111
+#, no-wrap
+msgid "$ sudo -u jim -g audio vi ~jim/sound.txt\n"
+msgstr "$ sudo -u jim -g audio vi ~jim/sound.txt\n"
+
+#. type: Plain text
+#: sudo.man:1115
+msgid "To shut down a machine:"
+msgstr "マシンをリブートする。"
+
+#. type: Plain text
+#: sudo.man:1119
+#, no-wrap
+msgid "$ sudo shutdown -r +15 \"quick reboot\"\n"
+msgstr "$ sudo shutdown -r +15 \"quick reboot\"\n"
+
+#. type: Plain text
+#: sudo.man:1126
+msgid ""
+"To make a usage listing of the directories in the /home partition.  Note "
+"that this runs the commands in a sub-shell to make the cd and file "
+"redirection work."
+msgstr ""
+"/home パーティションに存在するディレクトリのディスク使用量リストを作成す"
+"る。\n"
+"cd やファイル・リダイレクションがきちんと動作するように、 \n"
+"コマンドをサブシェルで実行している点に注目していただきたい。"
+
+#. type: Plain text
+#: sudo.man:1130
+#, no-wrap
+msgid "$ sudo sh -c \"cd /home ; du -s * | sort -rn E<gt> USAGE\"\n"
+msgstr "$ sudo sh -c \"cd /home ; du -s * | sort -rn E<gt> USAGE\"\n"
+
+#. type: SH
+#: sudo.man:1132
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "参照項目"
+
+#. type: Plain text
+#: sudo.man:1141
+msgid ""
+"su(1), stat(2), passwd(5), sudo.conf(5), sudoers(5), sudo_plugin(8), "
+"sudoreplay(8), visudo(8)"
+msgstr ""
+"su(1), stat(2), passwd(5), sudo.conf(5), sudoers(5), sudo_plugin(5), \n"
+"sudoreplay(8), visudo(8)"
+
+#. type: SH
+#: sudo.man:1141
+#, no-wrap
+msgid "HISTORY"
+msgstr "履歴"
+
+#. type: Plain text
+#: sudo.man:1146
+msgid ""
+"See the HISTORY file in the B<sudo> distribution (https://www.sudo.ws/"
+"history.html) for a brief history of sudo."
+msgstr ""
+"sudo の簡単な履歴については、B<sudo> の配布に含まれている \n"
+"HISTORY ファイルをご覧いただきたい。\n"
+"(https://www.sudo.ws/history.html)"
+
+#. type: SH
+#: sudo.man:1146
+#, no-wrap
+msgid "AUTHORS"
+msgstr "作者"
+
+#. type: Plain text
+#: sudo.man:1150
+msgid ""
+"Many people have worked on B<sudo> over the years; this version consists of "
+"code written primarily by:"
+msgstr ""
+"多数の人々が長年に渡って B<sudo> の開発に携わってきた。\n"
+"当バージョンは主として次の者が書いたコードからできている。"
+
+#. type: Plain text
+#: sudo.man:1153
+msgid "Todd C. Miller"
+msgstr "Todd C. Miller"
+
+#. type: Plain text
+#: sudo.man:1160
+msgid ""
+"See the CONTRIBUTORS file in the B<sudo> distribution (https://www.sudo.ws/"
+"contributors.html) for an exhaustive list of people who have contributed to "
+"B<sudo>."
+msgstr ""
+"B<sudo> の開発に貢献してくださった方々の詳細なリストについては、\n"
+"配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。\n"
+"(https://www.sudo.ws/contributors.html)"
+
+#. type: SH
+#: sudo.man:1160
+#, no-wrap
+msgid "CAVEATS"
+msgstr "警告"
+
+#. type: Plain text
+#: sudo.man:1173
+msgid ""
+"There is no easy way to prevent a user from gaining a root shell if that "
+"user is allowed to run arbitrary commands via B<sudo>.  Also, many programs "
+"(such as editors) allow the user to run commands via shell escapes, thus "
+"avoiding B<sudo>'s checks.  However, on most systems it is possible to "
+"prevent shell escapes with the sudoers(5)  plugin's I<noexec> functionality."
+msgstr ""
+"もし、ユーザが B<sudo> 経由で任意のコマンドを実行することを許可されているな"
+"ら、\n"
+"そのユーザがルート・シェルを手に入れるのを防止する簡単な方法は存在しない。\n"
+"また、(エディタをはじめとする) 多くのプログラムが、 \n"
+"シェル・エスケープを通してユーザがコマンドを実行できるようにしており、\n"
+"この方法でユーザは B<sudo> によるチェックをすり抜けることができる。\n"
+"とは言え、たいていのシステムでは、sudoers(5) プラグインの I<noexec> \n"
+"機能を使用することでシェルエスケープを抑止することが可能だ。"
+
+#. type: Plain text
+#: sudo.man:1177
+msgid "It is not meaningful to run the cd command directly via sudo, e.g.,"
+msgstr "下記のように B<sudo> 中で直に B<cd> コマンドを実行しても意味がない。"
+
+#. type: Plain text
+#: sudo.man:1181
+#, no-wrap
+msgid "$ sudo cd /usr/local/protected\n"
+msgstr "$ sudo cd /usr/local/protected\n"
+
+#. type: Plain text
+#: sudo.man:1189
+msgid ""
+"since when the command exits the parent process (your shell) will still be "
+"the same.  Please see the I<EXAMPLES> section for more information."
+msgstr ""
+"なぜなら、このコマンドが終了したとき、その親プロセス (すなわち、B<sudo> \n"
+"を実行したシェル) は、B<sudo> を実行する前と同じ状態に戻るからだ。\n"
+"B<cd> については、「用例」セクションもご覧になっていただきたい。"
+
+#. type: Plain text
+#: sudo.man:1195
+msgid ""
+"Running shell scripts via B<sudo> can expose the same kernel bugs that make "
+"setuid shell scripts unsafe on some operating systems (if your OS has a /dev/"
+"fd/ directory, setuid shell scripts are generally safe)."
+msgstr ""
+"B<sudo> を介してシェルスクリプトを実行すると、ある種のオペレーティング・シス"
+"テムで \n"
+"setuid シェルスクリプトを危険なものにしているのと同一の、\n"
+"カーネルのバグが表面化するおそれがある (使用している OS に /dev/fd/ \n"
+"ディレクトリがあれば、setuid シェルスクリプトはたいてい安全である)。"
+
+#. type: SH
+#: sudo.man:1195
+#, no-wrap
+msgid "BUGS"
+msgstr "バグ"
+
+#. type: Plain text
+#: sudo.man:1199
+msgid ""
+"If you feel you have found a bug in B<sudo>, please submit a bug report at "
+"https://bugzilla.sudo.ws/"
+msgstr ""
+"B<sudo> にバグを発見したと思ったら、https://bugzilla.sudo.ws/\n"
+"にアクセスして、バグレポートを提出していただきたい。"
+
+#. type: SH
+#: sudo.man:1199
+#, no-wrap
+msgid "SUPPORT"
+msgstr "サポート"
+
+#. type: Plain text
+#: sudo.man:1203
+msgid ""
+"Limited free support is available via the sudo-users mailing list, see "
+"https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the "
+"archives."
+msgstr ""
+"ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。\n"
+"購読やアーカイブの検索には、下記 URL を御覧になるとよい。\n"
+"https://www.sudo.ws/mailman/listinfo/sudo-users"
+
+#. type: SH
+#: sudo.man:1203
+#, no-wrap
+msgid "DISCLAIMER"
+msgstr "免責"
+
+#. type: Plain text
+#: sudo.man:1212
+msgid ""
+"B<sudo> is provided \\(LqAS IS\\(Rq and any express or implied warranties, "
+"including, but not limited to, the implied warranties of merchantability and "
+"fitness for a particular purpose are disclaimed.  See the LICENSE file "
+"distributed with B<sudo> or https://www.sudo.ws/license.html for complete "
+"details."
+msgstr ""
+"B<sudo> は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証"
+"も、\n"
+"商品性や特定目的への適合性についての黙示的な保証を含め、\n"
+"またそれのみに止まらず、これを否認する。詳細な全文については、\n"
+"B<sudo> と一緒に配布されている LICENSE ファイルや、\n"
+"下記 Web ページをご覧いただきたい。\n"
+"https://www.sudo.ws/license.html"
diff --git a/manual/sudo/po4a/sudo.conf.5/add_ja/add0.txt b/manual/sudo/po4a/sudo.conf.5/add_ja/add0.txt
new file mode 100644 (file)
index 0000000..972606d
--- /dev/null
@@ -0,0 +1,7 @@
+PO4A-HEADER: mode=before;position=\.TH
+.\"
+.\" Japanese Version Copyright (c) 2016 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\"
diff --git a/manual/sudo/po4a/sudo.conf.5/add_ja/add1.txt b/manual/sudo/po4a/sudo.conf.5/add_ja/add1.txt
new file mode 100644 (file)
index 0000000..24ec8a2
--- /dev/null
@@ -0,0 +1,8 @@
+PO4A-HEADER: mode=after; position=フロントエンドのその他の設定も、ここで指定することができる; beginboundary=^
+.IP "[\fB訳注\fP]:" 8
+sudoers ファイルが、誰が何を実行できるかなどの 
+\fBsudoers\fP セキュリティポリシーの設定に使用されるのに対して、
+sudo.conf ファイルは、
+\fBsudo\fP コマンドが使用するセキュリティポリシー・プラグインを特定したり、
+どんなデバッグ情報を記録するかを指定したりするなど、\fBsudo\fP フロントエンド、
+すなわち \fBsudo\fP コマンドそのものの動作の設定に使用される。
diff --git a/manual/sudo/po4a/sudo.conf.5/sudo.conf.ja.po b/manual/sudo/po4a/sudo.conf.5/sudo.conf.ja.po
new file mode 100644 (file)
index 0000000..d90dbec
--- /dev/null
@@ -0,0 +1,1344 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2016-09-11 21:26+0900\n"
+"PO-Revision-Date: 2016-08-30 19:48+0900\n"
+"Last-Translator: Chonan Yoichi <cyoichi@maple.ocn.ne.jp>\n"
+"Language-Team: Linux JM project <linuxjm-discuss@lists.osdn.me>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: sudo.conf.man:19
+#, no-wrap
+msgid "SUDO.CONF"
+msgstr "SUDO.CONF"
+
+#. type: TH
+#: sudo.conf.man:19
+#, no-wrap
+msgid "June 15, 2016"
+msgstr "June 15, 2016"
+
+#. type: TH
+#: sudo.conf.man:19
+#, no-wrap
+msgid "Sudo 1.8.17"
+msgstr "Sudo 1.8.17"
+
+#. type: TH
+#: sudo.conf.man:19
+#, no-wrap
+msgid "File Formats Manual"
+msgstr "File Formats Manual"
+
+#. type: SH
+#: sudo.conf.man:22
+#, no-wrap
+msgid "NAME"
+msgstr "名前"
+
+#. type: Plain text
+#: sudo.conf.man:25
+msgid "B<sudo.conf> - configuration for sudo front end"
+msgstr "B<sudo.conf> - sudo フロントエンドの設定"
+
+#. type: SH
+#: sudo.conf.man:25
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "説明"
+
+#. type: Plain text
+#: sudo.conf.man:33
+msgid ""
+"The B<sudo.conf> file is used to configure the B<sudo> front end.  It "
+"specifies the security policy and I/O logging plugins, debug flags as well "
+"as plugin-agnostic path names and settings."
+msgstr ""
+"B<sudo.conf> ファイルは、B<sudo> フロントエンドの設定に使用される。\n"
+"セキュリティポリシー・プラグイン、入出力ロギング・プラグイン、\n"
+"デバッグ・フラグの指定をはじめ、\n"
+"プラグインが何かにはかかわりののない (プログラムやライブラリの) パス名や、\n"
+"B<sudo> フロントエンドのその他の設定も、ここで指定することができる。"
+
+#. type: Plain text
+#: sudo.conf.man:37
+msgid ""
+"The B<sudo.conf> file supports the following directives, described in detail "
+"below."
+msgstr ""
+"B<sudo.conf> では、次の命令 (directive) が使用できる。各命令については、\n"
+"以下で詳しく説明する。"
+
+#. type: TP
+#: sudo.conf.man:37
+#, no-wrap
+msgid "Plugin"
+msgstr "Plugin"
+
+#. type: Plain text
+#: sudo.conf.man:40
+msgid "a security policy or I/O logging plugin"
+msgstr "セキュリティポリシー・プラグインや入出力ロギング・プラグインを指定する"
+
+#. type: TP
+#: sudo.conf.man:40
+#, no-wrap
+msgid "Path"
+msgstr "Path"
+
+#. type: Plain text
+#: sudo.conf.man:43
+msgid "a plugin-agnostic path"
+msgstr "プラグインが何かにはかかわりのない (プログラムやライブラリの) パス"
+
+#. type: TP
+#: sudo.conf.man:43
+#, no-wrap
+msgid "Set"
+msgstr "Set"
+
+#. type: Plain text
+#: sudo.conf.man:49
+msgid "a front end setting, such as I<disable_coredump> or I<group_source>"
+msgstr "I<disable_coredump> や I<group_source> のようなフロントエンドの設定"
+
+#. type: TP
+#: sudo.conf.man:49
+#, no-wrap
+msgid "Debug"
+msgstr "Debug"
+
+#. type: Plain text
+#: sudo.conf.man:58
+msgid ""
+"debug flags to aid in debugging B<sudo>, B<sudoreplay>, B<visudo>, and the "
+"B<sudoers> plugin."
+msgstr ""
+"B<sudo>, B<sudoreplay>, B<visudo>、及び B<sudoers> \n"
+"プラグインのデバッグに使用するデバッグ・フラグ"
+
+#. type: Plain text
+#: sudo.conf.man:64
+msgid ""
+"The pound sign (\\(oq#\\(cq)  is used to indicate a comment.  Both the "
+"comment character and any text after it, up to the end of the line, are "
+"ignored."
+msgstr ""
+"パウンド記号 ('#') は、コメントであることを示すために使用される。\n"
+"コメントを示す記号とそれに続くテキストは、行末に至るまで無視される。"
+
+#. type: Plain text
+#: sudo.conf.man:70
+msgid ""
+"Long lines can be continued with a backslash (\\(oq\\e\\(cq)  as the last "
+"character on the line.  Note that leading white space is removed from the "
+"beginning of lines even when the continuation character is used."
+msgstr ""
+"長い行は、行末にバックスラッシュ ('\\e') を置くことで、継続することができ"
+"る。\n"
+"行頭にあるホワイト・スペースは、行の継続を示す記号が使われている場合でも、\n"
+"行頭から取り除かれることに注意していただきたい。"
+
+#. type: Plain text
+#: sudo.conf.man:78
+msgid ""
+"Non-comment lines that don't begin with Plugin, Path, Debug, or Set are "
+"silently ignored."
+msgstr ""
+"コメント行以外でも、Plugin, Path, Debug, Set で始まっていない行は、無視され"
+"る。\n"
+"エラーや警告メッセージを出すこともない。"
+
+#. type: Plain text
+#: sudo.conf.man:84
+msgid "The B<sudo.conf> file is always parsed in the \\(LqC\\(Rq locale."
+msgstr "B<sudo.conf> ファイルの解析は、常に \"C\" ロケールで行われる。"
+
+#. type: SS
+#: sudo.conf.man:84
+#, no-wrap
+msgid "Plugin configuration"
+msgstr "プラグインの設定"
+
+#. type: Plain text
+#: sudo.conf.man:94
+msgid ""
+"B<sudo> supports a plugin architecture for security policies and input/"
+"output logging.  Third parties can develop and distribute their own policy "
+"and I/O logging plugins to work seamlessly with the B<sudo> front end.  "
+"Plugins are dynamically loaded based on the contents of B<sudo.conf>."
+msgstr ""
+"B<sudo> はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサ"
+"ポートしている。\n"
+"従って、サードパーティは、B<sudo> のフロントエンドとシームレスに協働するポリ"
+"シー・プラグインや、\n"
+"入出力ロギング・プラグインを独自に開発して、配布することができる。\n"
+"プラグインは、B<sudo.conf> の記述に基づいて、動的にロードされる。"
+
+#. type: Plain text
+#: sudo.conf.man:121
+msgid ""
+"A Plugin line consists of the Plugin keyword, followed by the I<symbol_name> "
+"and the I<path> to the dynamic shared object that contains the plugin.  The "
+"I<symbol_name> is the name of the struct policy_plugin or struct io_plugin "
+"symbol contained in the plugin.  The I<path> may be fully qualified or "
+"relative.  If not fully qualified, it is relative to the directory specified "
+"by the I<plugin_dir> Path setting, which defaults to I</usr/local/libexec/"
+"sudo>.  In other words:"
+msgstr ""
+"Plugin 行は、キーワード Plugin に始まり、I<symbol_name> と I<path> が続く。\n"
+"I<path> は、プラグインを含む動的共有オブジェクトへのパスである。\n"
+"I<symbol_name> は、プラグインに含まれる policy_plugin 構造体や \n"
+"io_plugin 構造体のシンボル名である。I<path> は絶対パスでも相対パスでもよ"
+"い。\n"
+"相対パスの場合は、Path 命令の I<plugin_dir> で指定したディレクトリを基点とす"
+"る相対パスであり、\n"
+"デフォルトの基点は I</usr/local/libexec/sudo> である。すなわち、"
+
+#. type: Plain text
+#: sudo.conf.man:125 sudo.conf.man:147
+#, no-wrap
+msgid "Plugin sudoers_policy sudoers.so\n"
+msgstr "Plugin sudoers_policy sudoers.so\n"
+
+#. type: Plain text
+#: sudo.conf.man:129
+msgid "is equivalent to:"
+msgstr "は、次のものと同じだということだ。"
+
+#. type: Plain text
+#: sudo.conf.man:133
+#, no-wrap
+msgid "Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so\n"
+msgstr "Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so\n"
+
+#. type: Plain text
+#: sudo.conf.man:143
+msgid ""
+"If the plugin was compiled statically into the B<sudo> binary instead of "
+"being installed as a dynamic shared object, the I<path> should be specified "
+"without a leading directory, as it does not actually exist in the file "
+"system.  For example:"
+msgstr ""
+"プラグインが動的な共有オブジェクトとしてインストールされているのではなく、\n"
+"B<sudo> のバイナリに静的に組み込まれている場合は、\n"
+"I<path> にディレクトリまで指定してはいけない。\n"
+"ファイルシステム中に実際に存在するわけではないからだ。\n"
+"すなわち、こんなふうに指定する。"
+
+#. type: Plain text
+#: sudo.conf.man:158
+msgid ""
+"Starting with B<sudo> 1.8.5, any additional parameters after the I<path> are "
+"passed as arguments to the plugin's I<open> function.  For example, to "
+"override the compile-time default sudoers file mode:"
+msgstr ""
+"B<sudo> 1.8.5 以降では、I<path> の後ろにパラメータを付けると、それは、\n"
+"プラグインの I<open> 関数に引き数として渡されるようになっている。たとえば、\n"
+"コンパイル時に指定した sudoers ファイルのデフォルトのモードを変更するには、\n"
+"次のようにする。"
+
+#. type: Plain text
+#: sudo.conf.man:162
+#, no-wrap
+msgid "Plugin sudoers_policy sudoers.so sudoers_mode=0440\n"
+msgstr "Plugin sudoers_policy sudoers.so sudoers_mode=0440\n"
+
+#. type: Plain text
+#: sudo.conf.man:168
+msgid "See the sudoers(5)  manual for a list of supported arguments."
+msgstr ""
+"使用できる引き数のリストについては、sudoers(5) のマニュアルをご覧いただきた"
+"い。"
+
+#. type: Plain text
+#: sudo.conf.man:175
+msgid ""
+"The same dynamic shared object may contain multiple plugins, each with a "
+"different symbol name.  The file must be owned by uid 0 and only writable by "
+"its owner.  Because of ambiguities that arise from composite policies, only "
+"a single policy plugin may be specified.  This limitation does not apply to "
+"I/O plugins."
+msgstr ""
+"一つの動的な共有オブジェクトが、\n"
+"それぞれ違ったシンボル名を持つ複数のプラグインを含んでいても構わない。\n"
+"共有オブジェクト・ファイルは、uid 0 の所有でなければならず、\n"
+"また、所有者のみ書き込み可能でなければならない。\n"
+"同時に複数のポリシーがあると、曖昧さが生じるので、\n"
+"ポリシー・プラグインは一つしか指定できない。\n"
+"この制限は 入出力プラグインには当てはまらない。"
+
+#. type: Plain text
+#: sudo.conf.man:185
+msgid ""
+"If no B<sudo.conf> file is present, or if it contains no Plugin lines, the "
+"B<sudoers> plugin will be used as the default security policy and for I/O "
+"logging (if enabled by the policy).  This is equivalent to the following:"
+msgstr ""
+"B<sudo.conf> ファイルが存在しない場合や、存在しても Plugin 行を含まない場合"
+"は、\n"
+"デフォルトのセキュリティポリシーとして B<sudoers> プラグインが使用されること"
+"になる。\n"
+"入出力ロギングにも (ポリシーによって有効になっていれば)、\n"
+"B<sudoers> プラグインが使用される。これは次の記述と同じことである。"
+
+#. type: Plain text
+#: sudo.conf.man:190
+#, no-wrap
+msgid ""
+"Plugin sudoers_policy sudoers.so\n"
+"Plugin sudoers_io sudoers.so\n"
+msgstr ""
+"Plugin sudoers_policy sudoers.so\n"
+"Plugin sudoers_io sudoers.so\n"
+
+#. type: Plain text
+#: sudo.conf.man:198
+msgid ""
+"For more information on the B<sudo> plugin architecture, see the "
+"sudo_plugin(8)  manual."
+msgstr ""
+"B<sudo> プラグインの仕組みについてもっと詳しい情報が必要なら、\n"
+"sudo_plugin(5) のマニュアルをご覧になっていただきたい。"
+
+#. type: SS
+#: sudo.conf.man:198
+#, no-wrap
+msgid "Path settings"
+msgstr "パスの設定"
+
+#. type: Plain text
+#: sudo.conf.man:205
+msgid ""
+"A Path line consists of the Path keyword, followed by the name of the path "
+"to set and its value.  For example:"
+msgstr ""
+"Path 行は、キーワード Path に始まり、設定するパスの名称とその値が続く。\n"
+"たとえば、次のようにだ。"
+
+#. type: Plain text
+#: sudo.conf.man:210
+#, no-wrap
+msgid ""
+"Path noexec /usr/local/libexec/sudo/sudo_noexec.so\n"
+"Path askpass /usr/X11R6/bin/ssh-askpass\n"
+msgstr ""
+"Path noexec /usr/local/libexec/sudo/sudo_noexec.so\n"
+"Path askpass /usr/X11R6/bin/ssh-askpass\n"
+
+#. type: Plain text
+#: sudo.conf.man:220
+msgid ""
+"If no path name is specified, features relying on the specified setting will "
+"be disabled.  Disabling Path settings is only supported in B<sudo> version "
+"1.8.16 and higher."
+msgstr ""
+"パス名が (訳注: パスの名称ではなく、パスの値が) 指定されていない場合は、\n"
+"その設定に依存する機能を無効化することになる。\n"
+"パス設定の無効化をサポートしているのは、バージョン 1.8.16 以上の B<sudo> だけ"
+"である。"
+
+#. type: Plain text
+#: sudo.conf.man:224
+msgid ""
+"The following plugin-agnostic paths may be set in the I</etc/sudo.conf> file:"
+msgstr ""
+"以下に挙げるような、\n"
+"プラグインが何かにはかかわりのない (プログラムやライブラリの) パスを \n"
+"I</etc/sudo.conf> で設定することができる。"
+
+#. type: TP
+#: sudo.conf.man:224
+#, no-wrap
+msgid "askpass"
+msgstr "askpass"
+
+#. type: Plain text
+#: sudo.conf.man:240
+msgid ""
+"The fully qualified path to a helper program used to read the user's "
+"password when no terminal is available.  This may be the case when B<sudo> "
+"is executed from a graphical (as opposed to text-based) application.  The "
+"program specified by I<askpass> should display the argument passed to it as "
+"the prompt and write the user's password to the standard output.  The value "
+"of I<askpass> may be overridden by the SUDO_ASKPASS environment variable."
+msgstr ""
+"端末が利用できないときに、ユーザのパスワードを読み込むのに使用するヘルパー・"
+"プログラムの絶対パス。\n"
+"たとえば、B<sudo> がグラフィカルな (つまり、テキストベースではない) \n"
+"アプリケーションから実行される場合がこれに当たる。\n"
+"I<askpass> で指定されたプログラムは、自分に渡された引き数をプロンプトとして表"
+"示し、\n"
+"ユーザのパスワードを標準出力に書き出すべきである。I<askpass> の値は、\n"
+"環境変数 SUDO_ASKPASS によって上書きすることができる。"
+
+#. type: TP
+#: sudo.conf.man:240
+#, no-wrap
+msgid "noexec"
+msgstr "noexec"
+
+#. type: Plain text
+#: sudo.conf.man:267
+msgid ""
+"The fully-qualified path to a shared library containing dummy versions of "
+"the B<execl>(), B<execle>(), B<execlp>(), B<exect>(), B<execv>(), "
+"B<execve>(), B<execvP>(), B<execvp>(), B<execvpe>(), B<fexecve>(), "
+"B<popen>(), B<posix_spawn>(), B<posix_spawnp>(), and B<system>()  library "
+"functions that just return an error.  This is used to implement the "
+"I<noexec> functionality on systems that support LD_PRELOAD or its "
+"equivalent.  The default value is: I</usr/local/libexec/sudo/sudo_noexec.so>."
+msgstr ""
+"ライブラリ関数 B<execl>(), B<execle>(), B<execlp>(), B<exect>(), "
+"B<execv>(), \n"
+"B<execve>(), B<execvP>(), B<execvp>(), B<execvpe>(), B<fexecve>(), \n"
+"B<popen>(), B<posix_spawn>(), B<posix_spawnp>(), B<system>() のダミー版 \n"
+"(単にエラーを返すだけの関数) が入っている共有ライブラリの絶対パス。\n"
+"これは LD_PRELOAD やそれに相当するものをサポートするシステムで \n"
+"I<noexec> 機能を実現するために使用される。デフォルトの値は\n"
+"I</usr/local/libexec/sudo/sudo_noexec.so> である。"
+
+#. type: TP
+#: sudo.conf.man:267
+#, no-wrap
+msgid "plugin_dir"
+msgstr "plugin_dir"
+
+#. type: Plain text
+#: sudo.conf.man:273
+msgid ""
+"The default directory to use when searching for plugins that are specified "
+"without a fully qualified path name.  The default value is I</usr/local/"
+"libexec/sudo>."
+msgstr ""
+"絶対パスで指定されていないプラグインを捜すときに使用されるデフォルトのディレ"
+"クトリ。\n"
+"デフォルトの値は I</usr/local/libexec/sudo> である"
+
+#. type: TP
+#: sudo.conf.man:273
+#, no-wrap
+msgid "sesh"
+msgstr "sesh"
+
+#. type: Plain text
+#: sudo.conf.man:283
+msgid ""
+"The fully-qualified path to the B<sesh> binary.  This setting is only used "
+"when B<sudo> is built with SELinux support.  The default value is I</usr/"
+"local/libexec/sudo/sesh>."
+msgstr ""
+"B<sesh> バイナリの絶対パス。この設定は、B<sudo> が SELinux \n"
+"サポートを有効にしてビルドされたときにのみ、使用される。\n"
+"デフォルトの値は I</usr/local/libexec/sudo/sesh> である。"
+
+#. type: SS
+#: sudo.conf.man:283
+#, no-wrap
+msgid "Other settings"
+msgstr "その他の設定"
+
+#. type: Plain text
+#: sudo.conf.man:287
+msgid "The B<sudo.conf> file also supports the following front end settings:"
+msgstr ""
+"B<sudo.conf> ファイルでは、以下に挙げるフロントエンドの設定も行うことができ"
+"る。"
+
+#. type: TP
+#: sudo.conf.man:287
+#, no-wrap
+msgid "disable_coredump"
+msgstr "disable_coredump"
+
+#. type: Plain text
+#: sudo.conf.man:300
+msgid ""
+"Core dumps of B<sudo> itself are disabled by default to prevent the "
+"disclosure of potentially sensitive information.  To aid in debugging "
+"B<sudo> crashes, you may wish to re-enable core dumps by setting "
+"\\(Lqdisable_coredump\\(Rq to false in B<sudo.conf> as follows:"
+msgstr ""
+"デフォルトでは、セキュリティ上問題になるかもしれない情報を漏洩しないよう"
+"に、\n"
+"B<sudo> 自体のコアダンプは無効になっている。\n"
+"B<sudo> そのもののクラッシュをデバッグするためにコアダンプを有効に戻したいな"
+"らば、\n"
+"次のように、B<sudo.conf> で \"disable_coredump\" を false にすればよい。"
+
+#. type: Plain text
+#: sudo.conf.man:304
+#, no-wrap
+msgid "Set disable_coredump false\n"
+msgstr "Set disable_coredump false\n"
+
+#. type: Plain text
+#: sudo.conf.man:321
+msgid ""
+"All modern operating systems place restrictions on core dumps from setuid "
+"processes like B<sudo> so this option can be enabled without compromising "
+"security.  To actually get a B<sudo> core file you will likely need to "
+"enable core dumps for setuid processes.  On BSD and Linux systems this is "
+"accomplished in the sysctl command.  On Solaris, the coreadm command is used "
+"to configure core dump behavior."
+msgstr ""
+"最近のオペレーティング・システムでは、どのシステムでも、\n"
+"B<sudo> のような setuid プロセスのコアダンプについて各種の制限を設けているの"
+"で、\n"
+"このオプションを有効にしても、セキュリティが弱体化することはない。\n"
+"B<sudo> のコアファイルを実際に得るためには、\n"
+"たぶん setuid プロセスに対するコアダンプを有効にする必要があるだろう。\n"
+"BSD や Linux のシステムでは、それは sysctl コマンドで行われる。\n"
+"Solaris では、coreadm コマンドがコアダンプの動作設定に使用される。"
+
+#. type: Plain text
+#: sudo.conf.man:325
+msgid "This setting is only available in B<sudo> version 1.8.4 and higher."
+msgstr "この設定は、バージョン 1.8.4 以降の B<sudo> でしか使用できない。"
+
+#. type: TP
+#: sudo.conf.man:326
+#, no-wrap
+msgid "group_source"
+msgstr "group_source"
+
+#. type: Plain text
+#: sudo.conf.man:336
+msgid ""
+"B<sudo> passes the invoking user's group list to the policy and I/O "
+"plugins.  On most systems, there is an upper limit to the number of groups "
+"that a user may belong to simultaneously (typically 16 for compatibility "
+"with NFS).  On systems with the getconf(1)  utility, running:"
+msgstr ""
+"B<sudo> は、起動したユーザが所属するグループのリストをポリシー・プラグイン"
+"と \n"
+"入出力プラグインに引き渡す。ほとんどのシステムでは、\n"
+"一人のユーザが同時に所属することのできるグループの数に上限がある (NFS \n"
+"との互換性のために、たいていは 16)。システムに getconf(1) \n"
+"ユーティリティ・コマンドが存在するなら、"
+
+#. type: Plain text
+#: sudo.conf.man:338
+msgid "getconf NGROUPS_MAX"
+msgstr "getconf NGROUPS_MAX"
+
+#. type: Plain text
+#: sudo.conf.man:341
+msgid "will return the maximum number of groups."
+msgstr "を実行すれば、グループの最大数がわかる。"
+
+#. type: Plain text
+#: sudo.conf.man:353
+msgid ""
+"However, it is still possible to be a member of a larger number of groups--"
+"they simply won't be included in the group list returned by the kernel for "
+"the user.  Starting with B<sudo> version 1.8.7, if the user's kernel group "
+"list has the maximum number of entries, B<sudo> will consult the group "
+"database directly to determine the group list.  This makes it possible for "
+"the security policy to perform matching by group name even when the user is "
+"a member of more than the maximum number of groups."
+msgstr ""
+"しかしながら、ユーザが上限を越える数のグループのメンバーになることも可能であ"
+"る -- \n"
+"上限を越えた分は、そのユーザについてカーネルが返すグループのリストに含まれな"
+"いだけのことだ。\n"
+"バージョン 1.8.7 以降の B<sudo> では、\n"
+"ユーザについてカーネルが返すグループのリストが所属グループの最大数に達してい"
+"るときは、\n"
+"B<sudo> はグループ・データベースを直接調べて、グループのリストを決定するよう"
+"になっている。\n"
+"そうすることによって、ユーザが所属グループの最大数よりも多くのグループのメン"
+"バーであるときも、\n"
+"セキュリティポリシーがグループ名によるマッチングを行うことができるようにして"
+"いるのである。"
+
+#. type: Plain text
+#: sudo.conf.man:360
+msgid ""
+"The I<group_source> setting allows the administrator to change this default "
+"behavior.  Supported values for I<group_source> are:"
+msgstr ""
+"I<group_source> の設定によって、管理者がこのデフォルトの動作を変更することが"
+"できる。\n"
+"I<group_source> に対して使用できる値は以下のものである。"
+
+#. type: TP
+#: sudo.conf.man:360
+#, no-wrap
+msgid "static"
+msgstr "static"
+
+#. type: Plain text
+#: sudo.conf.man:372
+msgid ""
+"Use the static group list that the kernel returns.  Retrieving the group "
+"list this way is very fast but it is subject to an upper limit as described "
+"above.  It is \\(Lqstatic\\(Rq in that it does not reflect changes to the "
+"group database made after the user logs in.  This was the default behavior "
+"prior to B<sudo> 1.8.7."
+msgstr ""
+"カーネルが返す static なグループ・リストを使用する。\n"
+"グループ・リストをこの方法で取得するのは迅速だが、上で述べた上限を課されるこ"
+"とになる。\n"
+"この方法が \"static (静的)\" だというのは、ユーザがログインした後で行った、\n"
+"グループ・データベースに対する変更を反映しないからである。\n"
+"これは、B<sudo> 1.8.7 以前のデフォルトの動作だった。"
+
+#. type: TP
+#: sudo.conf.man:372
+#, no-wrap
+msgid "dynamic"
+msgstr "dynamic"
+
+#. type: Plain text
+#: sudo.conf.man:388
+msgid ""
+"Always query the group database directly.  It is \\(Lqdynamic\\(Rq in that "
+"changes made to the group database after the user logs in will be reflected "
+"in the group list.  On some systems, querying the group database for all of "
+"a user's groups can be time consuming when querying a network-based group "
+"database.  Most operating systems provide an efficient method of performing "
+"such queries.  Currently, B<sudo> supports efficient group queries on AIX, "
+"BSD, HP-UX, Linux and Solaris."
+msgstr ""
+"常にグループ・データベースに問い合わせる。この方法が \"dynamic (動的)\" \n"
+"だというのは、ユーザがログインした後でグループ・データベースに行った変更"
+"が、\n"
+"グループのリストに反映するからである。システムによっては、\n"
+"グループ・データベースにユーザが所属するすべてのグループを問い合わせると、\n"
+"非常に時間がかかることがある。\n"
+"ネットワーク・ベースのグループ・データベースに問い合わせる場合などがそう"
+"だ。\n"
+"もっとも、たいていのオペレーティング・システムは、\n"
+"そうした問い合わせを効率的に行う方法を用意している。現在のところ、\n"
+"B<sudo> は、AIX, BSD, HP-UX, Linux, Solaris \n"
+"で効率的なグループの問い合わせをサポートしている。"
+
+#. type: TP
+#: sudo.conf.man:388
+#, no-wrap
+msgid "adaptive"
+msgstr "adaptive"
+
+#. type: Plain text
+#: sudo.conf.man:395
+msgid ""
+"Only query the group database if the static group list returned by the "
+"kernel has the maximum number of entries.  This is the default behavior in "
+"B<sudo> 1.8.7 and higher."
+msgstr ""
+"カーネルが返す static なグループのリストが、所属グループの最大数に達している"
+"ときにのみ、\n"
+"グループ・データベースに問い合わせる。これが B<sudo> 1.8.7 以降のデフォルトの"
+"動作である。"
+
+#. type: Plain text
+#: sudo.conf.man:399
+msgid ""
+"For example, to cause B<sudo> to only use the kernel's static list of groups "
+"for the user:"
+msgstr ""
+"たとえば、B<sudo> が、ユーザについてカーネルが返す static \n"
+"なグループのリストのみを使うようにしたかったら、以下のように指定する。"
+
+#. type: Plain text
+#: sudo.conf.man:403
+#, no-wrap
+msgid "Set group_source static\n"
+msgstr "Set group_source static\n"
+
+#. type: Plain text
+#: sudo.conf.man:409 sudo.conf.man:427
+msgid "This setting is only available in B<sudo> version 1.8.7 and higher."
+msgstr "この設定は、バージョン 1.8.7 以降の B<sudo> でしか使用できない。"
+
+#. type: TP
+#: sudo.conf.man:410
+#, no-wrap
+msgid "max_groups"
+msgstr "max_groups"
+
+#. type: Plain text
+#: sudo.conf.man:423
+msgid ""
+"The maximum number of user groups to retrieve from the group database.  "
+"Values less than one will be ignored.  This setting is only used when "
+"querying the group database directly.  It is intended to be used on systems "
+"where it is not possible to detect when the array to be populated with group "
+"entries is not sufficiently large.  By default, B<sudo> will allocate four "
+"times the system's maximum number of groups (see above)  and retry with "
+"double that number if the group database query fails.  However, some systems "
+"just return as many entries as will fit and do not indicate an error when "
+"there is a lack of space."
+msgstr ""
+"グループ・データベースから取得するユーザの所属グループの最大数。\n"
+"1 未満の値は無視されることになる。この設定が使用されるのは、\n"
+"グループ・データベースに直接問い合わせるときだけである。\n"
+"グループのリストを入れることになっている配列が十分な大きさを持っていない場合"
+"にも、\n"
+"それを検出できないシステムが存在する。\n"
+"この設定は、そうしたシステムで使用することを目的にしている。\n"
+"デフォルトでは、B<sudo> はシステムが規定しているグループの最大数の (上記参"
+"照) \n"
+"4 倍の配列を割り当て、グループ・データベースへの問い合わせが失敗した場合"
+"は、\n"
+"その数をさらに倍にして再実行することになっている。しかしながら、\n"
+"システムの中には、配列に納まる数のグループを返すだけで、\n"
+"スペースが不足していてもエラーを知らせないものがあるのだ。"
+
+#. type: TP
+#: sudo.conf.man:427
+#, no-wrap
+msgid "probe_interfaces"
+msgstr "probe_interfaces"
+
+#. type: Plain text
+#: sudo.conf.man:438
+msgid ""
+"By default, B<sudo> will probe the system's network interfaces and pass the "
+"IP address of each enabled interface to the policy plugin.  This makes it "
+"possible for the plugin to match rules based on the IP address without "
+"having to query DNS.  On Linux systems with a large number of virtual "
+"interfaces, this may take a non-negligible amount of time.  If IP-based "
+"matching is not required, network interface probing can be disabled as "
+"follows:"
+msgstr ""
+"デフォルトでは、B<sudo> はシステムのネットワーク・インターフェースを調べ"
+"て、\n"
+"有効になっている各インターフェースの IP アドレスをポリシー・プラグインに伝え"
+"る。\n"
+"そのため、プラグインは、DNS に問い合わせるまでもなく、\n"
+"ルールを適用するかどうかを IP アドレスに基づいて決めることができるわけだ。\n"
+"Linux のシステムで多数のバーチャル・インターフェースを使用している場合は、\n"
+"この作業に無視できない時間がかかるかもしれない。\n"
+"IP アドレスに基づいたルールのマッチングが必要ないならば、\n"
+"ネットワーク・インターフェースの検査を次のようにして無効にすることができる。"
+
+#. type: Plain text
+#: sudo.conf.man:442
+#, no-wrap
+msgid "Set probe_interfaces false\n"
+msgstr "Set probe_interfaces false\n"
+
+#. type: Plain text
+#: sudo.conf.man:449
+msgid "This setting is only available in B<sudo> version 1.8.10 and higher."
+msgstr "この設定は、バージョン 1.8.10 以降の B<sudo> でしか使用できない。"
+
+#. type: SS
+#: sudo.conf.man:450
+#, no-wrap
+msgid "Debug flags"
+msgstr "デバッグ・フラグ"
+
+#. type: Plain text
+#: sudo.conf.man:456
+msgid ""
+"B<sudo> versions 1.8.4 and higher support a flexible debugging framework "
+"that can help track down what B<sudo> is doing internally if there is a "
+"problem."
+msgstr ""
+"バージョン 1.8.4 以上の B<sudo> は、デバッグのための柔軟な枠組みに対応してお"
+"り、\n"
+"問題が生じたときに、B<sudo> の内部で何が起きているかを突き止めるために、\n"
+"それを利用することができる。"
+
+#. type: Plain text
+#: sudo.conf.man:473
+msgid ""
+"A Debug line consists of the Debug keyword, followed by the name of the "
+"program (or plugin) to debug (B<sudo>, B<visudo>, B<sudoreplay>, "
+"B<sudoers>), the debug file name and a comma-separated list of debug flags.  "
+"The debug flag syntax used by B<sudo> and the B<sudoers> plugin is "
+"I<subsystem>@I<priority> but a plugin is free to use a different format so "
+"long as it does not include a comma (\\(oq\\&,\\(cq)."
+msgstr ""
+"デバッグ行の構成は、Debug というキーワードに始まり、\n"
+"デバッグ対象 (B<sudo>, B<visudo>, B<sudoreplay>, B<sudoers>)\n"
+"のプログラム名、またはプラグイン名と、デバッグファイル名がそれに続き、\n"
+"最後にコンマで区切ったデバッグ・フラグのリストが来るという形になっている。\n"
+"デバッグ・フラグのシンタクスは、B<sudo> と B<sudoers> プラグインでは、\n"
+"I<subsystem>@I<priority> という書式を用いるが、コンマ ('\\&,') \n"
+"を含まないかぎり、別の書式を使用するプラグインがあっても構わない。"
+
+#. type: Plain text
+#: sudo.conf.man:475
+msgid "For example:"
+msgstr "一例を挙げよう。"
+
+#. type: Plain text
+#: sudo.conf.man:479
+#, no-wrap
+msgid "Debug sudo /var/log/sudo_debug all@warn,plugin@info\n"
+msgstr "Debug sudo /var/log/sudo_debug all@warn,plugin@info\n"
+
+#. type: Plain text
+#: sudo.conf.man:487
+msgid ""
+"would log all debugging statements at the I<warn> level and higher in "
+"addition to those at the I<info> level for the plugin subsystem."
+msgstr ""
+"上記のように指定すると、I<warn> レベル以上のすべてのデバッグ情報に加えて、\n"
+"プラグイン・サブシステムについては、I<info> レベル以上の情報もログに記録する"
+"ことになる。"
+
+#. type: Plain text
+#: sudo.conf.man:513
+msgid ""
+"As of B<sudo> 1.8.12, multiple Debug entries may be specified per program.  "
+"Older versions of B<sudo> only support a single Debug entry per program.  "
+"Plugin-specific Debug entries are also supported starting with B<sudo> "
+"1.8.12 and are matched by either the base name of the plugin that was loaded "
+"(for example sudoers.so)  or by the plugin's fully-qualified path name.  "
+"Previously, the B<sudoers> plugin shared the same Debug entry as the B<sudo> "
+"front end and could not be configured separately."
+msgstr ""
+"B<sudo> 1.8.12 以来、一つのプログラムについて複数の\n"
+"Debug 行が指定できるようになっている。\n"
+"B<sudo> のそれ以前のバージョンでは、1 プログラムにつき\n"
+"1 行の Debug 行しかサポートしていなかった。B<sudo> 1.8.12 からは、\n"
+"プラグイン独自の Debug 行もサポートされるようになり、そうした行のマッチング"
+"は、\n"
+"ロードされているプラグインのベースネーム (たとえば、sudoers.so)、\n"
+"またはプラグインの絶対パス名によって行われる (訳注: 言い換えれば、\n"
+"プラグイン独自の Debug 行では、プログラム名/プラグイン名の位置に \n"
+"Plugin 行における I<path> の部分を指定するということだろう)。以前のバージョン"
+"では、\n"
+"B<sudoers> プラグインは、B<sudo> フロントエンドと同じ \n"
+"Debug 行を共有しており、別の設定をすることができなかった。"
+
+#. type: Plain text
+#: sudo.conf.man:524
+msgid ""
+"The following priorities are supported, in order of decreasing severity: "
+"I<crit>, I<err>, I<warn>, I<notice>, I<diag>, I<info>, I<trace> and "
+"I<debug>.  Each priority, when specified, also includes all priorities "
+"higher than it.  For example, a priority of I<notice> would include debug "
+"messages logged at I<notice> and higher."
+msgstr ""
+"次の priority (重大度) が使用できる。深刻なものから挙げると、\n"
+"I<crit>, I<err>, I<warn>, I<notice>, I<diag>, I<info>, I<trace>, I<debug> で"
+"ある。\n"
+"ある priority を指定すると、それよりも深刻なすべての priority も指定したこと"
+"になる。\n"
+"たとえば、I<notice> という priority を指定すれば、\n"
+"I<notice> レベル以上のデバッグ情報がログに記録されるわけである。"
+
+#. type: Plain text
+#: sudo.conf.man:533
+msgid ""
+"The priorities I<trace> and I<debug> also include function call tracing "
+"which logs when a function is entered and when it returns.  For example, the "
+"following trace is for the get_user_groups()  function located in src/sudo.c:"
+msgstr ""
+"I<trace> と I<debug> の priority では、ファンクション・コールのトレースも行わ"
+"れ、\n"
+"関数に入ったときと関数から戻ったときのログも記録される。たとえば、\n"
+"次のトレースは、src/sudo.c にある get_user_groups() 関数に対するものである。"
+
+#. type: Plain text
+#: sudo.conf.man:538
+#, no-wrap
+msgid ""
+"sudo[123] -E<gt> get_user_groups @ src/sudo.c:385\n"
+"sudo[123] E<lt>- get_user_groups @ src/sudo.c:429 := groups=10,0,5\n"
+msgstr ""
+"sudo[123] -E<gt> get_user_groups @ src/sudo.c:385\n"
+"sudo[123] E<lt>- get_user_groups @ src/sudo.c:429 := groups=10,0,5\n"
+
+#. type: Plain text
+#: sudo.conf.man:549
+msgid ""
+"When the function is entered, indicated by a right arrow \\(oq-E<gt>\\(cq, "
+"the program, process ID, function, source file and line number are logged.  "
+"When the function returns, indicated by a left arrow \\(oqE<lt>-\\(cq, the "
+"same information is logged along with the return value.  In this case, the "
+"return value is a string."
+msgstr ""
+"関数に入ったときは、右矢印 '-E<gt>' で示され、プログラム名、プロセス ID、\n"
+"関数名、ソースファイルと行番号が記録される。\n"
+"関数から戻ったときは、左矢印 'E<lt>-' で示され、同じ情報に加えて、\n"
+"返り値が記録される。上記の場合、返り値は文字列である。"
+
+#. type: Plain text
+#: sudo.conf.man:553
+msgid "The following subsystems are used by the B<sudo> front-end:"
+msgstr "B<sudo> フロントエンドでは、以下のサブシステムが使用できる。"
+
+#. type: TP
+#: sudo.conf.man:553
+#, no-wrap
+msgid "I<all>"
+msgstr "I<all>"
+
+#. type: Plain text
+#: sudo.conf.man:556
+msgid "matches every subsystem"
+msgstr "すべてのサブシステムにマッチする"
+
+#. type: TP
+#: sudo.conf.man:556
+#, no-wrap
+msgid "I<args>"
+msgstr "I<args>"
+
+#. type: Plain text
+#: sudo.conf.man:559
+msgid "command line argument processing"
+msgstr "コマンドライン引き数の処理"
+
+#. type: TP
+#: sudo.conf.man:559
+#, no-wrap
+msgid "I<conv>"
+msgstr "I<conv>"
+
+#. type: Plain text
+#: sudo.conf.man:562
+msgid "user conversation"
+msgstr "ユーザとのやりとり"
+
+#. type: TP
+#: sudo.conf.man:562
+#, no-wrap
+msgid "I<edit>"
+msgstr "I<edit>"
+
+#. type: Plain text
+#: sudo.conf.man:565
+msgid "sudoedit"
+msgstr "sudoedit"
+
+#. type: TP
+#: sudo.conf.man:565
+#, no-wrap
+msgid "I<event>"
+msgstr "I<event>"
+
+#. type: Plain text
+#: sudo.conf.man:568
+msgid "event subsystem"
+msgstr "event サブシステム"
+
+#. type: TP
+#: sudo.conf.man:568
+#, no-wrap
+msgid "I<exec>"
+msgstr "I<exec>"
+
+#. type: Plain text
+#: sudo.conf.man:571
+msgid "command execution"
+msgstr "コマンドの実行"
+
+#. type: TP
+#: sudo.conf.man:571
+#, no-wrap
+msgid "I<main>"
+msgstr "I<main>"
+
+#. type: Plain text
+#: sudo.conf.man:575
+msgid "B<sudo> main function"
+msgstr "B<sudo> のメイン関数"
+
+#. type: TP
+#: sudo.conf.man:575
+#, no-wrap
+msgid "I<netif>"
+msgstr "I<netif>"
+
+#. type: Plain text
+#: sudo.conf.man:578
+msgid "network interface handling"
+msgstr "ネットワーク・インターフェースの取扱い"
+
+#. type: TP
+#: sudo.conf.man:578
+#, no-wrap
+msgid "I<pcomm>"
+msgstr "I<pcomm>"
+
+#. type: Plain text
+#: sudo.conf.man:581
+msgid "communication with the plugin"
+msgstr "プラグインとのやりとり"
+
+#. type: TP
+#: sudo.conf.man:581
+#, no-wrap
+msgid "I<plugin>"
+msgstr "I<plugin>"
+
+#. type: Plain text
+#: sudo.conf.man:584
+msgid "plugin configuration"
+msgstr "プラグインの設定"
+
+#. type: TP
+#: sudo.conf.man:584
+#, no-wrap
+msgid "I<pty>"
+msgstr "I<pty>"
+
+#. type: Plain text
+#: sudo.conf.man:587
+msgid "pseudo-tty related code"
+msgstr "擬似 tty 関連コード"
+
+#. type: TP
+#: sudo.conf.man:587
+#, no-wrap
+msgid "I<selinux>"
+msgstr "I<selinux>"
+
+#. type: Plain text
+#: sudo.conf.man:590
+msgid "SELinux-specific handling"
+msgstr "SELInux 特有の取扱い"
+
+#. type: TP
+#: sudo.conf.man:590
+#, no-wrap
+msgid "I<util>"
+msgstr "I<util>"
+
+#. type: Plain text
+#: sudo.conf.man:593
+msgid "utility functions"
+msgstr "ユーティリティ関数群"
+
+#. type: TP
+#: sudo.conf.man:593
+#, no-wrap
+msgid "I<utmp>"
+msgstr "I<utmp>"
+
+#. type: Plain text
+#: sudo.conf.man:596
+msgid "utmp handling"
+msgstr "utmp の取扱い"
+
+#. type: Plain text
+#: sudo.conf.man:600
+msgid "The sudoers(5)  plugin includes support for additional subsystems."
+msgstr ""
+"sudoers(5) プラグインがサポートしているサブシステムには、これ以外のものもあ"
+"る。"
+
+#. type: SH
+#: sudo.conf.man:600
+#, no-wrap
+msgid "FILES"
+msgstr "ファイル"
+
+#. type: TP
+#: sudo.conf.man:601
+#, no-wrap
+msgid "I</etc/sudo.conf>"
+msgstr "I</etc/sudo.conf>"
+
+#. type: Plain text
+#: sudo.conf.man:605
+msgid "B<sudo> front end configuration"
+msgstr "B<sudo> フロントエンドの設定ファイル"
+
+#. type: SH
+#: sudo.conf.man:605
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "用例"
+
+#. type: Plain text
+#: sudo.conf.man:628
+#, no-wrap
+msgid ""
+"#\n"
+"# Default /etc/sudo.conf file\n"
+"#\n"
+"# Format:\n"
+"#   Plugin plugin_name plugin_path plugin_options ...\n"
+"#   Path askpass /path/to/askpass\n"
+"#   Path noexec /path/to/sudo_noexec.so\n"
+"#   Debug sudo /var/log/sudo_debug all@warn\n"
+"#   Set disable_coredump true\n"
+"#\n"
+"# The plugin_path is relative to /usr/local/libexec/sudo unless\n"
+"#   fully qualified.\n"
+"# The plugin_name corresponds to a global symbol in the plugin\n"
+"#   that contains the plugin interface structure.\n"
+"# The plugin_options are optional.\n"
+"#\n"
+"# The sudoers plugin is used by default if no Plugin lines are\n"
+"# present.\n"
+"Plugin sudoers_policy sudoers.so\n"
+"Plugin sudoers_io sudoers.so\n"
+msgstr ""
+"#\n"
+"# Default /etc/sudo.conf file\n"
+"#\n"
+"# Format:\n"
+"#   Plugin plugin_name plugin_path plugin_options ...\n"
+"#   Path askpass /path/to/askpass\n"
+"#   Path noexec /path/to/sudo_noexec.so\n"
+"#   Debug sudo /var/log/sudo_debug all@warn\n"
+"#   Set disable_coredump true\n"
+"#\n"
+"# plugin_path が絶対パスでない場合は、/usr/local/libexec/sudo からの\n"
+"#   相対パスである。\n"
+"# plugin_name は、プラグイン中の、プラグインのインターフェース構造を\n"
+"#   含むグローバル・シンボルと同じものである。\n"
+"# plugin_options を指定するかしないかは、任意である。\n"
+"#\n"
+"# Plugin 行が存在しない場合、デフォルトの sudoers プラグインが\n"
+"# 使用される。\n"
+"Plugin sudoers_policy sudoers.so\n"
+"Plugin sudoers_io sudoers.so\n"
+
+#. type: Plain text
+#: sudo.conf.man:641
+#, no-wrap
+msgid ""
+"#\n"
+"# Sudo askpass:\n"
+"#\n"
+"# An askpass helper program may be specified to provide a graphical\n"
+"# password prompt for \"sudo -A\" support.  Sudo does not ship with\n"
+"# its own askpass program but can use the OpenSSH askpass.\n"
+"#\n"
+"# Use the OpenSSH askpass\n"
+"#Path askpass /usr/X11R6/bin/ssh-askpass\n"
+"#\n"
+"# Use the Gnome OpenSSH askpass\n"
+"#Path askpass /usr/libexec/openssh/gnome-ssh-askpass\n"
+msgstr ""
+"#\n"
+"# Sudo askpass:\n"
+"#\n"
+"# askpass ヘルパー・プログラムを指定すると、sudo の \"-A\" オプションで\n"
+"# 使用できるように、グラフィカルなパスワード・プロンプトを用意する\n"
+"# ことができる。sudo は、自前の askpass プログラムを配布していないが、\n"
+"# たとえば、OpenSSH の askpass を使用することが可能だ。\n"
+"#\n"
+"# OpenSSH askpass を使用する。\n"
+"#Path askpass /usr/X11R6/bin/ssh-askpass\n"
+"#\n"
+"# Gnome の OpenSSH askpass を使用する。\n"
+"#Path askpass /usr/libexec/openssh/gnome-ssh-askpass\n"
+
+#. type: Plain text
+#: sudo.conf.man:653
+#, no-wrap
+msgid ""
+"#\n"
+"# Sudo noexec:\n"
+"#\n"
+"# Path to a shared library containing dummy versions of the execv(),\n"
+"# execve() and fexecve() library functions that just return an error.\n"
+"# This is used to implement the \"noexec\" functionality on systems that\n"
+"# support CE<lt>LD_PRELOADE<gt> or its equivalent.\n"
+"# The compiled-in value is usually sufficient and should only be\n"
+"# changed if you rename or move the sudo_noexec.so file.\n"
+"#\n"
+"#Path noexec /usr/local/libexec/sudo/sudo_noexec.so\n"
+msgstr ""
+"#\n"
+"# Sudo noexec:\n"
+"#\n"
+"# ライブラリ関数 execv(), execve(), fexecve() のダミー版 (単にエラー\n"
+"# を返すだけの関数) が入っている共有ライブラリのパス。この指定は、\n"
+"# E<lt>LD_PRELOADE<gt> やそれに相当するものをサポートしているシステムで \n"
+"# \"noexec\" 機能を実現するために使用される。たいていの場合、\n"
+"# コンパイル時に組み込まれた値で十分であり、変更するのは、\n"
+"# sudo_noexec.so ファイルをリネームしたり、移動したりしたときのみに\n"
+"# するべきである。\n"
+"#\n"
+"#Path noexec /usr/local/libexec/sudo/sudo_noexec.so\n"
+
+#. type: Plain text
+#: sudo.conf.man:663
+#, no-wrap
+msgid ""
+"#\n"
+"# Core dumps:\n"
+"#\n"
+"# By default, sudo disables core dumps while it is executing\n"
+"# (they are re-enabled for the command that is run).\n"
+"# To aid in debugging sudo problems, you may wish to enable core\n"
+"# dumps by setting \"disable_coredump\" to false.\n"
+"#\n"
+"#Set disable_coredump false\n"
+msgstr ""
+"#\n"
+"# Core dumps:\n"
+"#\n"
+"# sudo はデフォルトでは、自己を実行中のコアダンプを抑止している\n"
+"# (指定されたコマンドを実行するときに、コアダンプを有効にし直す\n"
+"# のだ)。sudo 自体の問題をデバッグするために、コアダンプを有効に\n"
+"# 戻したいならば、\"disable_coredump\" を false にすればよい。 \n"
+"#\n"
+"#Set disable_coredump false\n"
+
+#. type: Plain text
+#: sudo.conf.man:680
+#, no-wrap
+msgid ""
+"#\n"
+"# User groups:\n"
+"#\n"
+"# Sudo passes the user's group list to the policy plugin.\n"
+"# If the user is a member of the maximum number of groups (usually 16),\n"
+"# sudo will query the group database directly to be sure to include\n"
+"# the full list of groups.\n"
+"#\n"
+"# On some systems, this can be expensive so the behavior is configurable.\n"
+"# The \"group_source\" setting has three possible values:\n"
+"#   static   - use the user's list of groups returned by the kernel.\n"
+"#   dynamic  - query the group database to find the list of groups.\n"
+"#   adaptive - if user is in less than the maximum number of groups.\n"
+"#              use the kernel list, else query the group database.\n"
+"#\n"
+"#Set group_source static\n"
+msgstr ""
+"#\n"
+"# User groups:\n"
+"#\n"
+"# sudo は、ユーザが属するグループのリストをポリシー・プラグインに\n"
+"# 引き渡す。ユーザの所属グループが、所属グループの最大数 (たいていは \n"
+"# 16) に達している場合は、sudo は、そのユーザが所属するグループを\n"
+"# すべて取得するため、直接グループ・データベースに問い合わせを行う。\n"
+"#\n"
+"# システムによっては、この動作は負担がかかることがあるので、設定に\n"
+"# よって変更できるようになっている。\"group_source\" で設定できる\n"
+"# 値には、三つのものがある。\n"
+"#   static   - ユーザが属するグループのリストにカーネルが返したものを\n"
+"#              使用する。\n"
+"#   dynamic  - グループのリストを知るために、グループ・データベースに\n"
+"#              問い合わせる。\n"
+"#   adaptive - ユーザの所属グループが、所属グループの最大数より少ない\n"
+"#              ときは、カーネルの返すリストを使う。さもなければ、\n"
+"#              グループ・データベースに問い合わせる。\n"
+"#\n"
+"#Set group_source static\n"
+
+#. type: SH
+#: sudo.conf.man:682
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "関連項目"
+
+#. type: Plain text
+#: sudo.conf.man:686
+msgid "sudoers(5), sudo(8), sudo_plugin(8)"
+msgstr "sudoers(5), sudo(8), sudo_plugin(5)"
+
+#. type: SH
+#: sudo.conf.man:686
+#, no-wrap
+msgid "HISTORY"
+msgstr "履歴"
+
+#. type: Plain text
+#: sudo.conf.man:691
+msgid ""
+"See the HISTORY file in the B<sudo> distribution (https://www.sudo.ws/"
+"history.html) for a brief history of sudo."
+msgstr ""
+"sudo の簡単な履歴については、B<sudo> の配布に含まれている \n"
+"HISTORY ファイルをご覧いただきたい。\n"
+"(https://www.sudo.ws/history.html) "
+
+#. type: SH
+#: sudo.conf.man:691
+#, no-wrap
+msgid "AUTHORS"
+msgstr "作者"
+
+#. type: Plain text
+#: sudo.conf.man:695
+msgid ""
+"Many people have worked on B<sudo> over the years; this version consists of "
+"code written primarily by:"
+msgstr ""
+"多数の人々が長年に渡って B<sudo> の開発に携わってきた。\n"
+"当バージョンは主として次の者が書いたコードからできている。"
+
+#. type: Plain text
+#: sudo.conf.man:698
+msgid "Todd C. Miller"
+msgstr "Todd C. Miller"
+
+#. type: Plain text
+#: sudo.conf.man:705
+msgid ""
+"See the CONTRIBUTORS file in the B<sudo> distribution (https://www.sudo.ws/"
+"contributors.html) for an exhaustive list of people who have contributed to "
+"B<sudo>."
+msgstr ""
+"B<sudo> の開発に貢献してくださった方々の詳細なリストについては、\n"
+"配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。\n"
+"(https://www.sudo.ws/contributors.html)"
+
+#. type: SH
+#: sudo.conf.man:705
+#, no-wrap
+msgid "BUGS"
+msgstr "バグ"
+
+#. type: Plain text
+#: sudo.conf.man:709
+msgid ""
+"If you feel you have found a bug in B<sudo>, please submit a bug report at "
+"https://bugzilla.sudo.ws/"
+msgstr ""
+"B<sudo> にバグを発見したと思ったら、https://www.sudo.ws/ \n"
+"にアクセスして、バグレポートを提出していただきたい。"
+
+#. type: SH
+#: sudo.conf.man:709
+#, no-wrap
+msgid "SUPPORT"
+msgstr "サポート"
+
+#. type: Plain text
+#: sudo.conf.man:713
+msgid ""
+"Limited free support is available via the sudo-users mailing list, see "
+"https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the "
+"archives."
+msgstr ""
+"ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。\n"
+"購読やアーカイブの検索には、下記 URL を御覧になるとよい。\n"
+"https://www.sudo.ws/mailman/listinfo/sudo-users"
+
+#. type: SH
+#: sudo.conf.man:713
+#, no-wrap
+msgid "DISCLAIMER"
+msgstr "免責"
+
+#. type: Plain text
+#: sudo.conf.man:722
+msgid ""
+"B<sudo> is provided \\(LqAS IS\\(Rq and any express or implied warranties, "
+"including, but not limited to, the implied warranties of merchantability and "
+"fitness for a particular purpose are disclaimed.  See the LICENSE file "
+"distributed with B<sudo> or https://www.sudo.ws/license.html for complete "
+"details."
+msgstr ""
+"B<sudo> は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証"
+"も、\n"
+"商品性や特定目的への適合性についての黙示的な保証を含め、\n"
+"またそれのみに止まらず、これを否認する。詳細な全文については、\n"
+"B<sudo> と一緒に配布されている LICENSE ファイルや、\n"
+"下記 Web ページをご覧いただきたい。\n"
+"https://www.sudo.ws/license.html"
diff --git a/manual/sudo/po4a/sudoers.5/add_ja/add0.txt b/manual/sudo/po4a/sudoers.5/add_ja/add0.txt
new file mode 100644 (file)
index 0000000..2167da6
--- /dev/null
@@ -0,0 +1,19 @@
+PO4A-HEADER: mode=before;position=\.TH
+.\" 
+.\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
+.\"   and 2009 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated Sat Oct  7 14:39:18 JST 2000
+.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
+.\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
+.\"         by Yoichi Chonan
+.\" Modified Tue Nov 24 20:00:00 JST 2009 by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
+.\"
diff --git a/manual/sudo/po4a/sudoers.5/add_ja/add1.txt b/manual/sudo/po4a/sudoers.5/add_ja/add1.txt
new file mode 100644 (file)
index 0000000..141e61c
--- /dev/null
@@ -0,0 +1,11 @@
+PO4A-HEADER: mode=after; position=後続部分がなかったら、こうした環境変数はマッチしないことになる; beginboundary=^
+.IP "[\fB訳注\fP]:" 8
+shellshock 以前の bash では、たとえば "my_func='() { ls \-F; }'"
+といったシェル変数を export することで、
+my_func という関数をサブシェルに渡すことができた。
+shellshock 以後の bash では、この方法による関数の継承はできなくなり、
+値が "() { ls \-F; }" である my_func という変数が、
+渡されるだけになっている。だから、
+sudoers ファイルの Defaults 行に上のように書いても、
+shellshock 以後の bash を使っているかぎり、
+my_func という環境変数が保存されるだけで、関数が渡されるわけではない。
diff --git a/manual/sudo/po4a/sudoers.5/add_ja/add2.txt b/manual/sudo/po4a/sudoers.5/add_ja/add2.txt
new file mode 100644 (file)
index 0000000..89f4901
--- /dev/null
@@ -0,0 +1,21 @@
+PO4A-HEADER: mode=before;position=\.SH セキュリティに関する注意点
+.IP "[\fB訳注\fP]:" 8
+注意していただきたいが、
+\fI/etc/sudoers\fP ファイルに「user1 ALL = (ALL) ALL」といった設定を書いても、
+user1 が \fBsudo\fP 経由であらゆるコマンドを実行できるようになるのは、
+自ホスト、すなわち、その \fI/etc/sudoers\fP が存在するホストだけであって、
+telnet や ssh で接続したホストで 
+\fBsudo\fP 経由でコマンドを実行できるとはかぎらない。
+他ホストの \fBsudo\fP は、自分のところにある \fI/etc/sudoers\fP 
+ファイルしか参照しないからである。
+.sp
+それでは、何故、上記の「用例」で自ホスト以外の設定が行われているのだろうか? 
+そもそも、\fIsudoers\fP の書式で自ホスト以外のホストを指定できるのは、
+何故なのか? ホストに \fBALL\fP を指定できるのは、何故なのか? 
+それは、管理しているサイトのすべてのホストの設定を記した 
+\fIsudoers\fP ファイルを一つ作って、それをすべてのホストにコピーして使う、
+そういった使い方を想定しているからだろう。昔の習慣の名残りかもしれない。
+もし、サイト中のすべてのホストの設定を一ヶ所にまとめて置き、
+それをすべてのホストに共有させたいのなら 
+(すなわち、\fIsudoers\fP セキュリティポリシー設定の集中管理がしたいのなら)、
+\fBLDAP\fP の採用を考えるべきである。
diff --git a/manual/sudo/po4a/sudoers.5/sudoers.ja.po b/manual/sudo/po4a/sudoers.5/sudoers.ja.po
new file mode 100644 (file)
index 0000000..be929ba
--- /dev/null
@@ -0,0 +1,7745 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2016-09-11 21:32+0900\n"
+"PO-Revision-Date: 2016-09-12 21:03+0900\n"
+"Last-Translator: Chonan Yoichi <cyoichi@maple.ocn.ne.jp>\n"
+"Language-Team: Linux JM project <linuxjm-discuss@lists.sourceforge.jp>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: sudoers.man:24
+#, no-wrap
+msgid "SUDOERS"
+msgstr "SUDOERS"
+
+#. type: TH
+#: sudoers.man:24
+#, no-wrap
+msgid "January 20, 2016"
+msgstr "January 20, 2016"
+
+#. type: TH
+#: sudoers.man:24
+#, no-wrap
+msgid "Sudo 1.8.17"
+msgstr "Sudo 1.8.17"
+
+#. type: TH
+#: sudoers.man:24
+#, no-wrap
+msgid "File Formats Manual"
+msgstr "File Formats Manual"
+
+#. type: SH
+#: sudoers.man:27
+#, no-wrap
+msgid "NAME"
+msgstr "名前"
+
+#. type: Plain text
+#: sudoers.man:30
+msgid "B<sudoers> - default sudo security policy plugin"
+msgstr "B<sudoers> - デフォルトの sudo 用セキュリティポリシー・プラグイン"
+
+#. type: SH
+#: sudoers.man:30
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "説明"
+
+#. type: Plain text
+#: sudoers.man:51
+msgid ""
+"The B<sudoers> policy plugin determines a user's B<sudo> privileges.  It is "
+"the default B<sudo> policy plugin.  The policy is driven by the I</etc/"
+"sudoers> file or, optionally in LDAP.  The policy format is described in "
+"detail in the I<SUDOERS FILE FORMAT> section.  For information on storing "
+"B<sudoers> policy information in LDAP, please see sudoers.ldap(5)."
+msgstr ""
+"B<sudoers> ポリシー・プラグインは、デフォルトの B<sudo> 用ポリシー・プラグイ"
+"ンであり、\n"
+"このポリシー・プラグインによってユーザがどんな B<sudo> 権限を持つかの制御が行"
+"われる。\n"
+"ポリシーの運用は I</etc/sudoers> ファイルによって行われるが、\n"
+"LDAP を使用することも可能である。ポリシーを設定するときの書式は、\n"
+"「SUDOERS ファイルの書式」セクションで詳しく説明している。\n"
+"B<sudoers> ポリシーの情報を LDAP に格納することについては、\n"
+"sudoers.ldap(5) をご覧いただきたい。"
+
+#. type: SS
+#: sudoers.man:51
+#, no-wrap
+msgid "Configuring sudo.conf for sudoers"
+msgstr "sudoers ポリシー・プラグインを使うための sudo.conf の設定"
+
+#. type: Plain text
+#: sudoers.man:68
+msgid ""
+"B<sudo> consults the sudo.conf(5)  file to determine which policy and and I/"
+"O logging plugins to load.  If no sudo.conf(5)  file is present, or if it "
+"contains no Plugin lines, B<sudoers> will be used for policy decisions and I/"
+"O logging.  To explicitly configure sudo.conf(5)  to use the B<sudoers> "
+"plugin, the following configuration can be used."
+msgstr ""
+"B<sudo> は sudo.conf(5) ファイルを参照して、\n"
+"どのポリシー・プラグインと入出力ロギング・プラグインをロードするかを決め"
+"る。\n"
+"sudo.conf(5) ファイルが存在しない場合や、存在しても Plugin 行を含まない場合"
+"は、\n"
+"B<sudoers> プラグインがポリシーの決定や 入出力ロギングに使用されることにな"
+"る。\n"
+"B<sudoers> プラグインを使用するように明示的に設定するには、\n"
+"sudo.conf(5) に次のよう書き込めばよい。"
+
+#. type: Plain text
+#: sudoers.man:73
+#, no-wrap
+msgid ""
+"Plugin sudoers_policy sudoers.so\n"
+"Plugin sudoers_io sudoers.so\n"
+msgstr ""
+"Plugin sudoers_policy sudoers.so\n"
+"Plugin sudoers_io sudoers.so\n"
+
+#. type: Plain text
+#: sudoers.man:88
+msgid ""
+"Starting with B<sudo> 1.8.5, it is possible to specify optional arguments to "
+"the B<sudoers> plugin in the sudo.conf(5)  file.  These arguments, if "
+"present, should be listed after the path to the plugin (i.e.\\& after "
+"I<sudoers.so>).  Multiple arguments may be specified, separated by white "
+"space.  For example:"
+msgstr ""
+"B<sudo> 1.8.5 以来、B<sudoers> プラグインに対する任意の引き数を \n"
+"sudo.conf(5) で指定することが可能になっている。\n"
+"そうした引き数が存在する場合は、プラグインのパスの後ろに続けることになる \n"
+"(すなわち、I<sudoers.so> の後ろだ)。\n"
+"引き数がいくつもあるときは、ホワイトスペースで区切って指定すればよい。\n"
+"一例を挙げる。"
+
+#. type: Plain text
+#: sudoers.man:92
+#, no-wrap
+msgid "Plugin sudoers_policy sudoers.so sudoers_mode=0400\n"
+msgstr "Plugin sudoers_policy sudoers.so sudoers_mode=0400\n"
+
+#. type: Plain text
+#: sudoers.man:96
+msgid "The following plugin arguments are supported:"
+msgstr "以下のプラグインに対する引き数が使用できる。"
+
+#. type: TP
+#: sudoers.man:96
+#, no-wrap
+msgid "ldap_conf=pathname"
+msgstr "ldap_conf=pathname"
+
+#. type: Plain text
+#: sudoers.man:103
+msgid ""
+"The I<ldap_conf> argument can be used to override the default path to the "
+"I<ldap.conf> file."
+msgstr ""
+"I<ldap_conf> 引き数を使用すると、\n"
+"I<ldap_conf> ファイルのパスをデフォルトのものから変更することができる。"
+
+#. type: TP
+#: sudoers.man:103
+#, no-wrap
+msgid "ldap_secret=pathname"
+msgstr "ldap_secret=pathname"
+
+#. type: Plain text
+#: sudoers.man:110
+msgid ""
+"The I<ldap_secret> argument can be used to override the default path to the "
+"I<ldap.secret> file."
+msgstr ""
+"I<ldap_secret> 引き数を使用すると、\n"
+"I<ldap_secret> ファイルのパスをデフォルトのものから変更することができる。"
+
+#. type: TP
+#: sudoers.man:110
+#, no-wrap
+msgid "sudoers_file=pathname"
+msgstr "sudoers_file=pathname"
+
+#. type: Plain text
+#: sudoers.man:117
+msgid ""
+"The I<sudoers_file> argument can be used to override the default path to the "
+"I<sudoers> file."
+msgstr ""
+"I<sudoers_file> 引き数を使用すると、\n"
+"I<sudoers> ファイルのパスをデフォルトのものから変更することができる。"
+
+#. type: TP
+#: sudoers.man:117
+#, no-wrap
+msgid "sudoers_uid=uid"
+msgstr "sudoers_uid=uid"
+
+#. type: Plain text
+#: sudoers.man:123
+msgid ""
+"The I<sudoers_uid> argument can be used to override the default owner of the "
+"sudoers file.  It should be specified as a numeric user ID."
+msgstr ""
+"I<sudoers_uid> 引き数を使用すると、\n"
+"sudoers ファイルの所有者をデフォルトのものから変更することができる。\n"
+"指定には、ユーザ ID 番号を使うべきである。"
+
+#. type: TP
+#: sudoers.man:123
+#, no-wrap
+msgid "sudoers_gid=gid"
+msgstr "sudoers_gid=gid"
+
+#. type: Plain text
+#: sudoers.man:129
+msgid ""
+"The I<sudoers_gid> argument can be used to override the default group of the "
+"sudoers file.  It must be specified as a numeric group ID (not a group name)."
+msgstr ""
+"I<sudoers_gid> 引き数を使用すると、\n"
+"sudoers ファイルのグループをデフォルトのものから変更することができる。\n"
+"指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。"
+
+#. type: TP
+#: sudoers.man:129
+#, no-wrap
+msgid "sudoers_mode=mode"
+msgstr "sudoers_mode=mode"
+
+#. type: Plain text
+#: sudoers.man:135
+msgid ""
+"The I<sudoers_mode> argument can be used to override the default file mode "
+"for the sudoers file.  It should be specified as an octal value."
+msgstr ""
+"I<sudoers_mode> 引き数を使用すると、\n"
+"sudoers ファイルのファイル・モードをデフォルトのものから変更することができ"
+"る。\n"
+"指定には、8 進数の値を使うべきである。"
+
+#. type: Plain text
+#: sudoers.man:139
+msgid ""
+"For more information on configuring sudo.conf(5), please refer to its manual."
+msgstr ""
+"sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、\n"
+"sudo.conf(5) のマニュアルをご覧になっていただきたい。"
+
+#. type: SS
+#: sudoers.man:139
+#, no-wrap
+msgid "User Authentication"
+msgstr "ユーザの認証"
+
+#. type: Plain text
+#: sudoers.man:163
+msgid ""
+"The B<sudoers> security policy requires that most users authenticate "
+"themselves before they can use B<sudo>.  A password is not required if the "
+"invoking user is root, if the target user is the same as the invoking user, "
+"or if the policy has disabled authentication for the user or command.  "
+"Unlike su(1), when B<sudoers> requires authentication, it validates the "
+"invoking user's credentials, not the target user's (or root's) credentials.  "
+"This can be changed via the I<rootpw>, I<targetpw> and I<runaspw> flags, "
+"described later."
+msgstr ""
+"B<sudoers> セキュリティポリシーでは、ユーザはたいていの場合、\n"
+"本人であることを証明してからでなければ。B<sudo> を使用できない。ただし、\n"
+"B<sudo> の実行者が root だったり、変身対象ユーザが B<sudo> の実行者と同一で"
+"あったり、\n"
+"ポリシーがその実行者やコマンドに対して認証を免除している場合は、パスワードが"
+"要求されることはない。\n"
+"su(1) とは違って、B<sudoers> ポリシーが認証に当たってチェックするのは、\n"
+"B<sudo> を実行するユーザの認証情報 (訳注: 通常はパスワード) であって、\n"
+"変身対象ユーザの (あるいは、root の) 認証情報ではない。この動作は、後述する\n"
+"I<rootpw>, I<targetpw>, I<runaspw> フラグによって変更することができる。"
+
+#. type: Plain text
+#: sudoers.man:174
+msgid ""
+"If a user who is not listed in the policy tries to run a command via "
+"B<sudo>, mail is sent to the proper authorities.  The address used for such "
+"mail is configurable via the I<mailto> Defaults entry (described later) and "
+"defaults to root."
+msgstr ""
+"ポリシーに登録されていないユーザが B<sudo> を使って、コマンドを実行しようとす"
+"ると、\n"
+"しかるべき権威者にメールが送付される。そうしたメールの宛先は、\n"
+"後述する「デフォルト設定」の I<mailto> 行によって設定できるが、\n"
+"デフォルトでは root になっている。"
+
+#. type: Plain text
+#: sudoers.man:194
+msgid ""
+"Note that no mail will be sent if an unauthorized user tries to run B<sudo> "
+"with the B<-l> or B<-v> option unless there is an authentication error and "
+"either the I<mail_always> or I<mail_badpass> flags are enabled.  This allows "
+"users to determine for themselves whether or not they are allowed to use "
+"B<sudo>.  All attempts to run B<sudo> (successful or not)  will be logged, "
+"regardless of whether or not mail is sent."
+msgstr ""
+"B<sudo> を使用する権限のないユーザが、B<-l> や B<-v> オプションを付けて \n"
+"B<sudo> の実行を試みても、認証に失敗し、しかも I<mail_always> または \n"
+"I<mail_badpass> フラグが有効になっている場合を除いて、 \n"
+"メールは送付されないことに注意していただきたい。\n"
+"そうした動作になっていることで、ユーザとしては、\n"
+"自分が B<sudo> を使用できるかどうか、自分で判断できるわけである。\n"
+"B<sudo> 実行の試みは (成功、失敗にかかわらず)、すべてログに記録される。\n"
+"メールが送られるかどうかには関係がない。"
+
+#. type: Plain text
+#: sudoers.man:215
+msgid ""
+"If B<sudo> is run by root and the SUDO_USER environment variable is set, the "
+"B<sudoers> policy will use this value to determine who the actual user is.  "
+"This can be used by a user to log commands through sudo even when a root "
+"shell has been invoked.  It also allows the B<-e> option to remain useful "
+"even when invoked via a sudo-run script or program.  Note, however, that the "
+"I<sudoers> file lookup is still done for root, not the user specified by "
+"SUDO_USER."
+msgstr ""
+"B<sudo> が root によって実行されたとき、環境変数 SUDO_USER が設定されている"
+"と、\n"
+"B<sudoers> ポリシーは、実際のユーザが誰かを判断するのに、その値を使用すること"
+"になる。\n"
+"ユーザとしては、この動作を利用することで、すでにルートシェルを起動している場"
+"合でも、\n"
+"自分が B<sudo> を介して実行したコマンドのログを取ることができる。\n"
+"また、この動作のおかげで、B<sudo> で実行するスクリプトやプログラムから呼び出"
+"される場合でさえ、\n"
+"B<-e> オプションが役に立つものになっている。ただし、そうした場合でも、\n"
+"I<sudoers> ファイルの参照はやはり root に対してなされるのであって、\n"
+"SUDO_USER が指定しているユーザに対してではないことに注意していただきたい。"
+
+#. type: Plain text
+#: sudoers.man:238
+msgid ""
+"B<sudoers> uses per-user time stamp files for credential caching.  Once a "
+"user has been authenticated, a record is written containing the uid that was "
+"used to authenticate, the terminal session ID, and a time stamp (using a "
+"monotonic clock if one is available).  The user may then use B<sudo> without "
+"a password for a short period of time (5 minutes unless overridden by the "
+"I<timeout> option)  \\&.  By default, B<sudoers> uses a separate record for "
+"each tty, which means that a user's login sessions are authenticated "
+"separately.  The I<tty_tickets> option can be disabled to force the use of a "
+"single time stamp for all of a user's sessions."
+msgstr ""
+"B<sudoers> は、認証情報の一時保存 (credential caching) にユーザごとのタイムス"
+"タンプ・ファイルを使用する。\n"
+"ユーザの認証が済むと、記録が書き込まれるが、それには、認証に使用された "
+"uid、\n"
+"端末セッション ID、タイムスタンプ (利用できるならば、単調増加時計 (monotonic "
+"clock) \n"
+"を使用する) が含まれている。ユーザは、その後しばらくの間 "
+"(I<timestamp_timeout> \n"
+"オプションによって変更されていなければ、5 分間)、パスワードなしで B<sudo> を"
+"使うことができる。\n"
+"B<sudoers> はデフォルトでは、各 tty ごとに別の記録を使用する。\n"
+"そこで、認証は、ユーザのログイン・セッションごとに独立して行われることにな"
+"る。\n"
+"I<tty_tickets> オプションを無効にすれば、あるユーザのすべてのセッションに対し"
+"て、\n"
+"単一のタイムスタンプの使用を強制することができる。"
+
+#. type: SS
+#: sudoers.man:238
+#, no-wrap
+msgid "Logging"
+msgstr "ロギング"
+
+#. type: Plain text
+#: sudoers.man:256
+msgid ""
+"B<sudoers> can log both successful and unsuccessful attempts (as well as "
+"errors) to syslog(3), a log file, or both.  By default, B<sudoers> will log "
+"via syslog(3)  but this is changeable via the I<syslog> and I<logfile> "
+"Defaults settings.  See I<LOG FORMAT> for a description of the log file "
+"format."
+msgstr ""
+"B<sudoers> は B<sudo> の実行が成功したときも失敗したときも、\n"
+"その旨を (エラーの内容とともに) syslog(3) や独自のファイル、\n"
+"あるいはその両方に記録することができる。B<sudoers> はデフォルトでは、\n"
+"syslog(3) 経由でログを記録することになっているが、この動作はデフォルト設定"
+"の \n"
+"I<syslog> と I<logfile> を使って変更することができる。\n"
+"ログファイルの書式については、「ログの書式」セクションの説明をご覧いただきた"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:275
+msgid ""
+"B<sudoers> is also capable of running a command in a pseudo-tty and logging "
+"all input and/or output.  The standard input, standard output and standard "
+"error can be logged even when not associated with a terminal.  I/O logging "
+"is not on by default but can be enabled using the I<log_input> and "
+"I<log_output> options as well as the LOG_INPUT and LOG_OUTPUT command tags.  "
+"See I<I/O LOG FILES> for details on how I/O log files are stored."
+msgstr ""
+"また B<sudoers> は、擬似 tty でコマンドを実行して、\n"
+"すべての入力や出力をログに記録することもできる。\n"
+"標準入力、標準出力、標準エラーを、それが端末と結びついていない場合でも、\n"
+"ログに記録することができるのだ。入出力ロギングは、デフォルトでは ON になって"
+"いないが、\n"
+"I<log_input> や I<log_output> オプションを使って有効にすることができる。\n"
+"コマンド・タグの LOG_INPUT や LOG_OUTPUT を使用して有効にすることも可能だ。\n"
+"入出力ログファイルがどんなふうに格納されるかについては、\n"
+"「入出力ログファイル」セクションに詳細な説明がある。"
+
+#. type: SS
+#: sudoers.man:275
+#, no-wrap
+msgid "Command environment"
+msgstr "コマンド環境"
+
+#. type: Plain text
+#: sudoers.man:284
+msgid ""
+"Since environment variables can influence program behavior, B<sudoers> "
+"provides a means to restrict which variables from the user's environment are "
+"inherited by the command to be run.  There are two distinct ways B<sudoers> "
+"can deal with environment variables."
+msgstr ""
+"環境変数はプログラムの動作に影響を与えることがあるので、B<sudoers> は、\n"
+"実行されるコマンドがユーザの環境からどんな変数を引き継ぐかについて、\n"
+"制御する手段を用意している。すなわち、B<sudoers> は二つの異なった方法で、 \n"
+"環境変数を処理することができる。"
+
+#. type: Plain text
+#: sudoers.man:324
+msgid ""
+"By default, the I<env_reset> option is enabled.  This causes commands to be "
+"executed with a new, minimal environment.  On AIX (and Linux systems without "
+"PAM), the environment is initialized with the contents of the I</etc/"
+"environment> file.  The new environment contains the TERM, PATH, HOME, MAIL, "
+"SHELL, LOGNAME, USER, USERNAME and SUDO_* variables in addition to variables "
+"from the invoking process permitted by the I<env_check> and I<env_keep> "
+"options.  This is effectively a whitelist for environment variables.  "
+"Environment variables with a value beginning with ()  are removed unless "
+"both the name and value parts are matched by I<env_keep> or I<env_check>, as "
+"they will be interpreted as functions by older versions of the B<bash> "
+"shell.  Prior to version 1.8.11, such variables were always removed."
+msgstr ""
+"デフォルトでは I<env_reset> オプションが有効になっている。\n"
+"この場合、コマンドは新しい、最小の環境で実行されることになる。\n"
+"ATX (及び PAM を使用していない Linux システム) では、I</etc/environment> \n"
+"ファイルの内容で環境が初期化される。新しい環境には、TERM, PATH, \n"
+"HOME, MAIL, SHELL, LOGNAME, USER, USERNAME, 及び SUDO_* という変数、\n"
+"それに、呼び出し側のプロセスから来た変数で、I<env_check> や I<env_keep> \n"
+"オプションによって許可されたものが含まれている。これは、言わば、\n"
+"環境変数のホワイトリストである。値が () で始まる環境変数は、\n"
+"変数名と値の両方が I<env_keep> や I<env_check> の指定にマッチしないかぎり、\n"
+"除去されるが、それは、B<bash> シェルの古いバージョンでは関数と解釈されること"
+"になるからである。\n"
+"1.8.11 より前のバージョンでは、そうした変数は無条件で除去されていた。"
+
+#. type: Plain text
+#: sudoers.man:347
+msgid ""
+"If, however, the I<env_reset> option is disabled, any variables not "
+"explicitly denied by the I<env_check> and I<env_delete> options are "
+"inherited from the invoking process.  In this case, I<env_check> and "
+"I<env_delete> behave like a blacklist.  Environment variables with a value "
+"beginning with ()  are always removed, even if they do not match one of the "
+"blacklists.  Since it is not possible to blacklist all potentially dangerous "
+"environment variables, use of the default I<env_reset> behavior is "
+"encouraged."
+msgstr ""
+"これに対して、I<env_reset> オプションが無効になっている場合は、\n"
+"I<env_check> や I<env_delete> オプションによって明示的に拒否されていないかぎ"
+"り、\n"
+"いかなる環境変数も呼び出し側のプロセスから継承される。\n"
+"この場合、I<env_check> や I<env_delete> は、ブラックリストのように振る舞うわ"
+"けだ。\n"
+"値が () で始まる環境変数は、ブラックリストの一つにマッチしない場合でも、\n"
+"必ず除去される。危険性のある環境変数のすべてをブラックリストに載せることは不"
+"可能なので、\n"
+"I<env_reset> を有効にしておくデフォルトの動作を採用することをお勧めする。"
+
+#. type: Plain text
+#: sudoers.man:355
+msgid ""
+"By default, environment variables are matched by name.  However, if the "
+"pattern includes an equal sign (\\(oq=\\&\\(cq), both the variables name and "
+"value must match.  For example, an old-style (pre-shellshock)  B<bash> shell "
+"function could be matched as follows:"
+msgstr ""
+"デフォルトでは、環境変数のマッチは変数名によって行われる。\n"
+"しかしながら、マッチに使われるパターンに等号 ('=') が含まれる場合は、\n"
+"変数名と値の両方がマッチしなければならない。たとえば、旧式の \n"
+"(shellshock 問題以前の export 方法による) \n"
+"B<bash> のシェル関数にマッチさせるならば、次のように指定すればよいだろう。"
+
+#. type: Plain text
+#: sudoers.man:359
+#, no-wrap
+msgid "env_keep += \"my_func=()*\"\n"
+msgstr "env_keep += \"my_func=()*\"\n"
+
+#. type: Plain text
+#: sudoers.man:367
+msgid ""
+"Without the \\(Lq=()*\\(Rq suffix, this would not match, as old-style "
+"B<bash> shell functions are not preserved by default."
+msgstr ""
+"旧式の B<bash> のシェル関数は、デフォルトでは保存されないので、\n"
+"\"=()*\" という後続部分がなかったら、こうした環境変数はマッチしないことにな"
+"る。"
+
+#. type: Plain text
+#: sudoers.man:376
+msgid ""
+"The complete list of environment variables that B<sudo> allows or denies is "
+"contained in the output of \\(Lqsudo -V\\(Rq when run as root.  Please note "
+"that this list varies based on the operating system B<sudo> is running on."
+msgstr ""
+"B<sudo> が許可、または拒否する環境変数すべてのリストは、\"sudo -V\" を \n"
+"root の資格で実行したときの出力中に含まれている。このリストは、\n"
+"B<sudo> が実行されるオペレーティングシステムによって異なることに気をつけてい"
+"ただきたい。"
+
+#. type: Plain text
+#: sudoers.man:399
+msgid ""
+"On systems that support PAM where the B<pam_env> module is enabled for "
+"B<sudo>, variables in the PAM environment may be merged in to the "
+"environment.  If a variable in the PAM environment is already present in the "
+"user's environment, the value will only be overridden if the variable was "
+"not preserved by B<sudoers>.  When I<env_reset> is enabled, variables "
+"preserved from the invoking user's environment by the I<env_keep> list take "
+"precedence over those in the PAM environment.  When I<env_reset> is "
+"disabled, variables present the invoking user's environment take precedence "
+"over those in the PAM environment unless they match a pattern in the "
+"I<env_delete> list."
+msgstr ""
+"PAM をサポートしているシステムで、B<pam_env> モジュールが\n"
+"B<sudo> に対して有効になっていると、\n"
+"PAM の管理する環境にある変数が、環境にマージされることになるだろう。\n"
+"ただし、PAM 環境にある変数がユーザの環境にすでに存在している場合に、\n"
+"その値が上書きされることになるのは、\n"
+"その変数が B<sudoers> によって保存されていないときだけである。\n"
+"すなわち、I<env_reset> が有効になっているときは、\n"
+"I<env_keep> のリストによって B<sudo> を実行するユーザの環境から保存された変数"
+"が、\n"
+"PAM 環境にある変数より優先される。また、\n"
+"I<env_reset> が無効になっているときは、\n"
+"B<sudo> を実行するユーザの環境にある変数が、\n"
+"I<env_delete> のリストのパターンにマッチしていないかぎり、\n"
+"PAM 環境にある変数よりも優先されるのである。"
+
+#. type: Plain text
+#: sudoers.man:420
+msgid ""
+"Note that the dynamic linker on most operating systems will remove variables "
+"that can control dynamic linking from the environment of setuid executables, "
+"including B<sudo>.  Depending on the operating system this may include "
+"_RLD*, DYLD_*, LD_*, LDR_*, LIBPATH, SHLIB_PATH, and others.  These type of "
+"variables are removed from the environment before B<sudo> even begins "
+"execution and, as such, it is not possible for B<sudo> to preserve them."
+msgstr ""
+"たいていのオペレーティングシステムのダイナミック・リンカは、\n"
+"ダイナミック・リンキングを制御する働きがある環境変数を、\n"
+"B<sudo> もその一つである setuid 実行ファイルの環境から除去するようになってい"
+"ることに注意していただきたい。\n"
+"オペレーティングシステムによって名前は様々だが、_RLD*, DYLD_*, LD_*, \n"
+"LDR_*, LIBPATH, SHLIB_PATH などが、この範疇に含まれるだろう。 \n"
+"そうした変数は、B<sudo> の実行が始まるよりも前に、環境から除去されるので、\n"
+"B<sudo> がそうした変数を保存することは不可能である。"
+
+#. type: Plain text
+#: sudoers.man:449
+msgid ""
+"As a special case, if B<sudo>'s B<-i> option (initial login) is specified, "
+"B<sudoers> will initialize the environment regardless of the value of "
+"I<env_reset>.  The DISPLAY, PATH and TERM variables remain unchanged; HOME, "
+"MAIL, SHELL, USER, and LOGNAME are set based on the target user.  On AIX "
+"(and Linux systems without PAM), the contents of I</etc/environment> are "
+"also included.  All other environment variables are removed."
+msgstr ""
+"特例として、B<sudo> に B<-i> (initial login) オプションが指定されている場合"
+"は、\n"
+"B<sudoers> は I<env_reset> の有効・無効にかかわらず、環境を初期化する。\n"
+"環境変数 DISPLAY, PATH, TERM は変更されないが、HOME, MAIL, SHELL, USER, "
+"LOGNAME \n"
+"は、変身対象ユーザのそれにセットされる。ATX (及び PAM を使用していない \n"
+"Linux システム) では、I</etc/environment> の内容も取り込まれる。\n"
+"それ以外の環境変数はすべて捨てられる。"
+
+#. type: Plain text
+#: sudoers.man:455
+msgid ""
+"Finally, if the I<env_file> option is defined, any variables present in that "
+"file will be set to their specified values as long as they would not "
+"conflict with an existing environment variable."
+msgstr ""
+"最後に、I<env_file> オプションが設定されている場合は、 \n"
+"そのファイルに記載されたいかなる変数も、\n"
+"すでに存在している環境変数と衝突しないかぎり、\n"
+"そこで指定されている値にセットされることになる。"
+
+#. type: SH
+#: sudoers.man:455
+#, no-wrap
+msgid "SUDOERS FILE FORMAT"
+msgstr "SUDOERS ファイルの書式"
+
+#. type: Plain text
+#: sudoers.man:461
+msgid ""
+"The I<sudoers> file is composed of two types of entries: aliases (basically "
+"variables) and user specifications (which specify who may run what)."
+msgstr ""
+"I<sudoers> ファイルは二種類のエントリから構成されている。\n"
+"(要するに変数である) エイリアスと (誰が何を実行できるかを指定している) ユーザ"
+"設定だ。\n"
+"(訳注: 訳者としては、「エイリアス、デフォルト設定、ユーザ設定の三種類のエント"
+"リから構成されている」と言った方が、\n"
+"現在の実態に合っているのではないかと思う。)"
+
+#. type: Plain text
+#: sudoers.man:465
+msgid ""
+"When multiple entries match for a user, they are applied in order.  Where "
+"there are multiple matches, the last match is used (which is not necessarily "
+"the most specific match)."
+msgstr ""
+"一人のユーザに複数のエントリがマッチするときは、順番に適用される。\n"
+"複数の指定がマッチしている箇所については、最後にマッチしたものが使用される \n"
+"(それが一番明示的なマッチだとはかぎらないが)。"
+
+#. type: Plain text
+#: sudoers.man:472
+msgid ""
+"The I<sudoers> file grammar will be described below in Extended Backus-Naur "
+"Form (EBNF).  Don't despair if you are unfamiliar with EBNF; it is fairly "
+"simple, and the definitions below are annotated."
+msgstr ""
+"以下では I<sudoers> ファイルの文法を拡張 Backus-Naur 記法 (EBNF) を用いて記述"
+"する。\n"
+"EBNF を御存じないからといって、あきらめないでいただきたい。\n"
+"わりと簡単なものだし、以下に出てくる定義には詳しい説明をつけておきますから。"
+
+#. type: SS
+#: sudoers.man:472
+#, no-wrap
+msgid "Quick guide to EBNF"
+msgstr "EBNF の基礎の基礎"
+
+#. type: Plain text
+#: sudoers.man:477
+msgid ""
+"EBNF is a concise and exact way of describing the grammar of a language.  "
+"Each EBNF definition is made up of I<production rules>.  E.g.,"
+msgstr ""
+"EBNF は言語の文法を記述する簡潔で厳密な方法である。\n"
+"EBNF の個々の定義は生成規則からできている。たとえば、"
+
+#. type: Plain text
+#: sudoers.man:479
+msgid "symbol ::= definition | alternate1 | alternate2 ..."
+msgstr "シンボル ::= 定義 | 別の定義 1 | 別の定義 2 ..."
+
+#. type: Plain text
+#: sudoers.man:490
+msgid ""
+"Each I<production rule> references others and thus makes up a grammar for "
+"the language.  EBNF also contains the following operators, which many "
+"readers will recognize from regular expressions.  Do not, however, confuse "
+"them with \\(Lqwildcard\\(Rq characters, which have different meanings."
+msgstr ""
+"個々の生成規則は、ほかの生成規則を参照し、そのようにして言語の文法を作り上げ"
+"ている。\n"
+"また EBNF には以下の演算子が含まれるが、正規表現で御存じの読者も多いだろ"
+"う。\n"
+"だが、いわゆる「ワイルドカード」文字と混同しないでいただきたい。 \n"
+"あれは別の意味を持っている。"
+
+#. type: TP
+#: sudoers.man:490 sudoers.man:1422
+#, no-wrap
+msgid "\\&?"
+msgstr "\\&?"
+
+#. type: Plain text
+#: sudoers.man:494
+msgid ""
+"Means that the preceding symbol (or group of symbols) is optional.  That is, "
+"it may appear once or not at all."
+msgstr ""
+"直前のシンボル (または、シンボルのグループ) が、あってもなくてもよいことを意"
+"味する。 \n"
+"すなわちそのシンボルは、1 回現れてもよいし、1 回も現れないでもよい。"
+
+#. type: TP
+#: sudoers.man:494 sudoers.man:1419
+#, no-wrap
+msgid "*"
+msgstr "*"
+
+#. type: Plain text
+#: sudoers.man:498
+msgid ""
+"Means that the preceding symbol (or group of symbols) may appear zero or "
+"more times."
+msgstr "直前のシンボル (または、シンボルのグループ) が 0 回以上現れる。"
+
+#. type: TP
+#: sudoers.man:498
+#, no-wrap
+msgid "+"
+msgstr "+"
+
+#. type: Plain text
+#: sudoers.man:502
+msgid ""
+"Means that the preceding symbol (or group of symbols) may appear one or more "
+"times."
+msgstr "直前のシンボル (または、シンボルのグループ) が 1 回以上現れる。"
+
+#. type: Plain text
+#: sudoers.man:508
+msgid ""
+"Parentheses may be used to group symbols together.  For clarity, we will use "
+"single quotes ('')  to designate what is a verbatim character string (as "
+"opposed to a symbol name)."
+msgstr ""
+"丸カッコを使うと、複数のシンボルをグループにまとめることができる。 \n"
+"なお、混乱を避けるため、以下の定義では、それが (シンボル名ではなく) \n"
+"文字どおりの文字列や記号であることを示す場合には、シングルクォート \n"
+"(' ') で囲むことにする。"
+
+#. type: SS
+#: sudoers.man:508
+#, no-wrap
+msgid "Aliases"
+msgstr "エイリアス"
+
+#. type: Plain text
+#: sudoers.man:515
+msgid ""
+"There are four kinds of aliases: User_Alias, Runas_Alias, Host_Alias and "
+"Cmnd_Alias."
+msgstr ""
+"エイリアスには四種類ある。User_Alias, Runas_Alias, Host_Alias, \n"
+"Cmnd_Alias である。"
+
+#. type: Plain text
+#: sudoers.man:522
+#, no-wrap
+msgid ""
+"Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |\n"
+"          'Runas_Alias' Runas_Alias (':' Runas_Alias)* |\n"
+"          'Host_Alias'  Host_Alias (':' Host_Alias)* |\n"
+"          'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*\n"
+msgstr ""
+"Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |\n"
+"          'Runas_Alias' Runas_Alias (':' Runas_Alias)* |\n"
+"          'Host_Alias'  Host_Alias (':' Host_Alias)* |\n"
+"          'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*\n"
+
+#. type: Plain text
+#: sudoers.man:524
+#, no-wrap
+msgid "User_Alias ::= NAME '=' User_List\n"
+msgstr "User_Alias ::= NAME '=' User_List\n"
+
+#. type: Plain text
+#: sudoers.man:526
+#, no-wrap
+msgid "Runas_Alias ::= NAME '=' Runas_List\n"
+msgstr "Runas_Alias ::= NAME '=' Runas_List\n"
+
+#. type: Plain text
+#: sudoers.man:528
+#, no-wrap
+msgid "Host_Alias ::= NAME '=' Host_List\n"
+msgstr "Host_Alias ::= NAME '=' Host_List\n"
+
+#. type: Plain text
+#: sudoers.man:530
+#, no-wrap
+msgid "Cmnd_Alias ::= NAME '=' Cmnd_List\n"
+msgstr "Cmnd_Alias ::= NAME '=' Cmnd_List\n"
+
+#. type: Plain text
+#: sudoers.man:532
+#, no-wrap
+msgid "NAME ::= [A-Z]([A-Z][0-9]_)*\n"
+msgstr "NAME ::= [A-Z]([A-Z][0-9]_)*\n"
+
+#. type: Plain text
+#: sudoers.man:538
+msgid "Each I<alias> definition is of the form"
+msgstr "個々のエイリアスの定義は、次の形をとる。"
+
+#. type: Plain text
+#: sudoers.man:542
+#, no-wrap
+msgid "Alias_Type NAME = item1, item2, ...\n"
+msgstr "Alias_Type NAME = item1, item2, ...\n"
+
+#. type: Plain text
+#: sudoers.man:567
+msgid ""
+"where I<Alias_Type> is one of User_Alias, Runas_Alias, Host_Alias, or "
+"Cmnd_Alias.  A NAME is a string of uppercase letters, numbers, and "
+"underscore characters (\\(oq_\\(cq).  A NAME B<must> start with an uppercase "
+"letter.  It is possible to put several alias definitions of the same type on "
+"a single line, joined by a colon (\\(oq:\\&\\(cq).  E.g.,"
+msgstr ""
+"上記において I<Alias_Type> は、User_Alias, Runas_Alias, Host_Alias, \n"
+"Cmnd_Alias のうちの一つである。NAME は、アルファベットの大文字、数字、\n"
+"アンダースコア ('_') からなる文字列であるが、\n"
+"先頭の文字はアルファベットの大文字でなければならない。\n"
+"同じタイプのエイリアス定義を、コロンで (':') つないで、一行に複数書くこともで"
+"きる。\n"
+"たとえば、"
+
+#. type: Plain text
+#: sudoers.man:571
+#, no-wrap
+msgid "Alias_Type NAME = item1, item2, item3 : NAME = item4, item5\n"
+msgstr "Alias_Type NAME = item1, item2, item3 : NAME = item4, item5\n"
+
+#. type: Plain text
+#: sudoers.man:579
+msgid ""
+"It is a syntax error to redefine an existing I<alias>.  It is possible to "
+"use the same name for I<aliases> of different types, but this is not "
+"recommended."
+msgstr ""
+"既存のエイリアスを再定義するのは、文法エラーである。\n"
+"異なるタイプのエイリアスに対して同じ名前を使用することはできるが、\n"
+"お薦めできることではない。"
+
+#. type: Plain text
+#: sudoers.man:583
+msgid "The definitions of what constitutes a valid I<alias> member follow."
+msgstr "エイリアスの有効な要素となるものの定義は、以下のようになる。"
+
+#. type: Plain text
+#: sudoers.man:588
+#, no-wrap
+msgid ""
+"User_List ::= User |\n"
+"              User ',' User_List\n"
+msgstr ""
+"User_List ::= User |\n"
+"              User ',' User_List\n"
+
+#. type: Plain text
+#: sudoers.man:597
+#, no-wrap
+msgid ""
+"User ::= '!'* user name |\n"
+"         '!'* #uid |\n"
+"         '!'* %group |\n"
+"         '!'* %#gid |\n"
+"         '!'* +netgroup |\n"
+"         '!'* %:nonunix_group |\n"
+"         '!'* %:#nonunix_gid |\n"
+"         '!'* User_Alias\n"
+msgstr ""
+"User ::= '!'* user name |\n"
+"         '!'* #uid |\n"
+"         '!'* %group |\n"
+"         '!'* %#gid |\n"
+"         '!'* +netgroup |\n"
+"         '!'* %:nonunix_group |\n"
+"         '!'* %:#nonunix_gid |\n"
+"         '!'* User_Alias\n"
+
+#. type: Plain text
+#: sudoers.man:626
+msgid ""
+"A User_List is made up of one or more user names, user IDs (prefixed with "
+"\\(oq#\\(cq), system group names and IDs (prefixed with \\(oq%\\(cq and \\(oq"
+"%#\\(cq respectively), netgroups (prefixed with \\(oq+\\(cq), non-Unix group "
+"names and IDs (prefixed with \\(oq%:\\(cq and \\(oq%:#\\(cq respectively) "
+"and User_Aliases.  Each list item may be prefixed with zero or more \\(oq\\&!"
+"\\(cq operators.  An odd number of \\(oq\\&!\\(cq operators negate the value "
+"of the item; an even number just cancel each other out.  User netgroups are "
+"matched using the user and domain members only; the host member is not used "
+"when matching."
+msgstr ""
+"User_List を構成するのは、一個以上の次のものである。\n"
+"ユーザ名、ユーザID (接頭辞 '#' が付く)、\n"
+"システムグループ名やその ID (それぞれ、接頭辞 '%' と '%#' が付く)、\n"
+"ネットグループ名 (接頭辞 '+' が付く)、\n"
+"non-Unix グループ名やその ID (それぞれ、接頭辞 '%:' と '%:#' が付く)、\n"
+"それに User_Alias。\n"
+"リストの各項目の前には一個以上の '!' 演算子を付けてもよい。\n"
+"奇数個の '!' はその項目の値を否定する。偶数個の場合は互い相殺されるだけだ。\n"
+"なお、ユーザのネットグループについては、\n"
+"ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行わ"
+"れる。\n"
+"ホストの要素はマッチングに使用されない。"
+
+#. type: Plain text
+#: sudoers.man:643
+msgid ""
+"A user name, uid, group, gid, netgroup, nonunix_group or nonunix_gid may be "
+"enclosed in double quotes to avoid the need for escaping special "
+"characters.  Alternately, special characters may be specified in escaped hex "
+"mode, e.g.\\& \\ex20 for space.  When using double quotes, any prefix "
+"characters must be included inside the quotes."
+msgstr ""
+"ユーザ名、uid、グループ名、gid、ネットグループ名、non-Unix グループ名、\n"
+"non-Unix グループ の gid は、ダブルクォートで囲めば、特殊文字をエスープしない"
+"ですむ。 \n"
+"ダブルクォートで囲まずに特殊文字を使いたいなら、エスケープした 16 進数を指定"
+"してやればよい。\n"
+"たとえば、スペースなら \\ex20 という具合だ。\n"
+"ダブルクォートを使用する場合は、接頭辞があれば、それをダブルクォートの内側に"
+"入れなければならない。"
+
+#. type: Plain text
+#: sudoers.man:651
+msgid ""
+"The actual nonunix_group and nonunix_gid syntax depends on the underlying "
+"group provider plugin.  For instance, the QAS AD plugin supports the "
+"following formats:"
+msgstr ""
+"non-Unix グループやその gid を指定するときのの書式が、\n"
+"実際にどんなものになるかは、\n"
+"利用するグループ・プロバイダー・プラグイン (group provider plugin) 次第であ"
+"る。\n"
+"たとえば、QAS (Quest Authentication Services) の AD プラグインは、\n"
+"以下の書式をサポートしている。"
+
+#. type: TP
+#: sudoers.man:651 sudoers.man:654 sudoers.man:657 sudoers.man:3495
+#: sudoers.man:3504 sudoers.man:3509 sudoers.man:3512
+#, no-wrap
+msgid "B<\\(bu>"
+msgstr "B<\\(bu>"
+
+#. type: Plain text
+#: sudoers.man:654
+msgid "Group in the same domain: \"%:Group Name\""
+msgstr "同じドメインのグループ: \"%:Group Name\""
+
+#. type: Plain text
+#: sudoers.man:657
+msgid "Group in any domain: \"%:Group Name@FULLY.QUALIFIED.DOMAIN\""
+msgstr "任意のドメインのグループ: \"%:Group Name@FULLY.QUALIFIED.DOMAIN\""
+
+#. type: Plain text
+#: sudoers.man:660
+msgid "Group SID: \"%:S-1-2-34-5678901234-5678901234-5678901234-567\""
+msgstr "グループ SID: \"%:S-1-2-34-5678901234-5678901234-5678901234-567\""
+
+#. type: Plain text
+#: sudoers.man:664
+msgid "See I<GROUP PROVIDER PLUGINS> for more information."
+msgstr ""
+"詳細については、\n"
+"「グループ・プロバイダー・プラグイン」セクションをご覧いただきたい。"
+
+#. type: Plain text
+#: sudoers.man:673
+msgid ""
+"Note that quotes around group names are optional.  Unquoted strings must use "
+"a backslash (\\(oq\\e\\(cq)  to escape spaces and special characters.  See "
+"I<Other special characters and reserved words> for a list of characters that "
+"need to be escaped."
+msgstr ""
+"グループ名を囲む引用符は任意であることに注意していただきたい。\n"
+"文字列を引用符で囲まない場合は、バックスラッシュ ('\\e') を使って、\n"
+"スペースや特殊文字をエスケープしなければならない。 \n"
+"エスケープする必要がある文字のリストについては、\n"
+"「ほかの特殊文字と予約語」のセクションを参照していただきたい。"
+
+#. type: Plain text
+#: sudoers.man:678
+#, no-wrap
+msgid ""
+"Runas_List ::= Runas_Member |\n"
+"               Runas_Member ',' Runas_List\n"
+msgstr ""
+"Runas_List ::= Runas_Member |\n"
+"               Runas_Member ',' Runas_List\n"
+
+#. type: Plain text
+#: sudoers.man:687
+#, no-wrap
+msgid ""
+"Runas_Member ::= '!'* user name |\n"
+"                 '!'* #uid |\n"
+"                 '!'* %group |\n"
+"                 '!'* %#gid |\n"
+"                 '!'* %:nonunix_group |\n"
+"                 '!'* %:#nonunix_gid |\n"
+"                 '!'* +netgroup |\n"
+"                 '!'* Runas_Alias\n"
+msgstr ""
+"Runas_Member ::= '!'* user name |\n"
+"                 '!'* #uid |\n"
+"                 '!'* %group |\n"
+"                 '!'* %#gid |\n"
+"                 '!'* %:nonunix_group |\n"
+"                 '!'* %:#nonunix_gid |\n"
+"                 '!'* +netgroup |\n"
+"                 '!'* Runas_Alias\n"
+
+#. type: Plain text
+#: sudoers.man:705
+msgid ""
+"A Runas_List is similar to a User_List except that instead of User_Aliases "
+"it can contain Runas_Aliases.  Note that user names and groups are matched "
+"as strings.  In other words, two users (groups) with the same uid (gid) are "
+"considered to be distinct.  If you wish to match all user names with the "
+"same uid (e.g.\\& root and toor), you can use a uid instead (#0 in the "
+"example given)."
+msgstr ""
+"Runas_List は User_List に似ている。違うのは、User_Alias ではなく、\n"
+"Runas_Alias が使えることだ。ユーザ名やグループ名のマッチは、\n"
+"文字列として行われることに気を付けていただきたい。\n"
+"言い換えると、二つのユーザ名 (あるいは、グループ名) は、\n"
+"仮に同じ uid (gid) を持っていても、別個のものと見なされるのである。\n"
+"だから、もし同じ uid を持ったすべてのユーザ名にマッチさせたかったら \n"
+"(たとえば、root と toor がそうだとしよう)、ユーザ名の代わりに uid を使えばよ"
+"い \n"
+"(この例なら、#0 である)。"
+
+#. type: Plain text
+#: sudoers.man:710
+#, no-wrap
+msgid ""
+"Host_List ::= Host |\n"
+"              Host ',' Host_List\n"
+msgstr ""
+"Host_List ::= Host |\n"
+"              Host ',' Host_List\n"
+
+#. type: Plain text
+#: sudoers.man:716
+#, no-wrap
+msgid ""
+"Host ::= '!'* host name |\n"
+"         '!'* ip_addr |\n"
+"         '!'* network(/netmask)? |\n"
+"         '!'* +netgroup |\n"
+"         '!'* Host_Alias\n"
+msgstr ""
+"Host ::= '!'* host name |\n"
+"         '!'* ip_addr |\n"
+"         '!'* network(/netmask)? |\n"
+"         '!'* +netgroup |\n"
+"         '!'* Host_Alias\n"
+
+#. type: Plain text
+#: sudoers.man:755
+msgid ""
+"A Host_List is made up of one or more host names, IP addresses, network "
+"numbers, netgroups (prefixed with \\(oq+\\(cq)  and other aliases.  Again, "
+"the value of an item may be negated with the \\(oq\\&!\\(cq operator.  Host "
+"netgroups are matched using the host (both qualified and unqualified)  and "
+"domain members only; the user member is not used when matching.  If you "
+"specify a network number without a netmask, B<sudo> will query each of the "
+"local host's network interfaces and, if the network number corresponds to "
+"one of the hosts's network interfaces, will use the netmask of that "
+"interface.  The netmask may be specified either in standard IP address "
+"notation (e.g.\\& 255.255.255.0 or ffff:ffff:ffff:ffff::), or CIDR notation "
+"(number of bits, e.g.\\& 24 or 64).  A host name may include shell-style "
+"wildcards (see the I<Wildcards> section below), but unless the host name "
+"command on your machine returns the fully qualified host name, you'll need "
+"to use the I<fqdn> option for wildcards to be useful.  Note that B<sudo> "
+"only inspects actual network interfaces; this means that IP address "
+"127.0.0.1 (localhost) will never match.  Also, the host name \\(Lqlocalhost"
+"\\(Rq will only match if that is the actual host name, which is usually only "
+"the case for non-networked systems."
+msgstr ""
+"Host_List を構成するのは、一個以上の次のものである。\n"
+"ホスト名、IP アドレス、ネットワークアドレス、\n"
+"ネットグループ名 (接頭辞 '+' が付く)、および他のエイリアス。\n"
+"ここでもまた、項目の値は、'!' 演算子によって否定することができる。なお、\n"
+"ホストのネットグループについては、ネットグループの成員中のホスト\n"
+"(完全修飾名とそうでないもののどちらでも) とドメインの要素のみを使って、\n"
+"マッチングが行われる。ユーザの要素はマッチングに使用されない。\n"
+"ネットワークアドレスをネットマスクなしで指定した場合は、 \n"
+"B<sudo> はローカルホストのネットワークインターフェースを一つ一つ参照し、\n"
+"指定されたネットワークアドレスと同じアドレスを持つインターフェースがあれ"
+"ば、\n"
+"そのネットマスクを使用することになる。ネットマスクの指定は、\n"
+"標準の IP アドレス表記 (たとえば 255.255.255.0 や ffff:ffff:ffff:ffff::) でも"
+"よく、\n"
+"CIDR 表記 (ビット数、たとえば 24 や 64) でもよい。 \n"
+"ホスト名の一部にシェル風のワイルドカードを使用することができるが\n"
+"(下記の「ワイルドカード」セクションを参照)、\n"
+"ご使用のマシンの hostname コマンドが完全修飾ドメイン名 (FQDN) を返さない場"
+"合、 \n"
+"ワイルドカードを利用するには I<fqdn> オプションを使う必要がある。\n"
+"なお、B<sudo> がチェックするのは、\n"
+"実在のネットワークインターフェースだけだということに留意してほしい。\n"
+"すなわち、IP アドレス 127.0.0.1 (localhost) がマッチすることは、絶対にないの"
+"である。\n"
+"また、\"localhost\" というホスト名がマッチするのは、\n"
+"それが実際のホスト名であるときだけであり、\n"
+"それは通常、ネットワークにつながっていないシステムの場合にしか当てはまらな"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:760
+#, no-wrap
+msgid ""
+"digest ::= [A-Fa-f0-9]+ |\n"
+"\t   [[A-Za-z0-9\\+/=]+\n"
+msgstr ""
+"digest ::= [A-Fa-f0-9]+ |\n"
+"\t   [[A-Za-z0-9\\+/=]+\n"
+
+#. type: Plain text
+#: sudoers.man:765
+#, no-wrap
+msgid ""
+"Digest_Spec ::= \"sha224\" ':' digest |\n"
+"\t\t\"sha256\" ':' digest |\n"
+"\t\t\"sha384\" ':' digest |\n"
+"\t\t\"sha512\" ':' digest\n"
+msgstr ""
+"Digest_Spec ::= \"sha224\" ':' digest |\n"
+"\t\t\"sha256\" ':' digest |\n"
+"\t\t\"sha384\" ':' digest |\n"
+"\t\t\"sha512\" ':' digest\n"
+
+#. type: Plain text
+#: sudoers.man:768
+#, no-wrap
+msgid ""
+"Cmnd_List ::= Cmnd |\n"
+"              Cmnd ',' Cmnd_List\n"
+msgstr ""
+"Cmnd_List ::= Cmnd |\n"
+"              Cmnd ',' Cmnd_List\n"
+
+#. type: Plain text
+#: sudoers.man:772
+#, no-wrap
+msgid ""
+"command name ::= file name |\n"
+"                 file name args |\n"
+"                 file name '\"\"'\n"
+msgstr ""
+"command name ::= file name |\n"
+"                 file name args |\n"
+"                 file name '\"\"'\n"
+
+#. type: Plain text
+#: sudoers.man:777
+#, no-wrap
+msgid ""
+"Cmnd ::= Digest_Spec? '!'* command name |\n"
+"         '!'* directory |\n"
+"         '!'* \"sudoedit\" |\n"
+"         '!'* Cmnd_Alias\n"
+msgstr ""
+"Cmnd ::= Digest_Spec? '!'* command name |\n"
+"         '!'* directory |\n"
+"         '!'* \"sudoedit\" |\n"
+"         '!'* Cmnd_Alias\n"
+
+#. type: Plain text
+#: sudoers.man:804
+msgid ""
+"A Cmnd_List is a list of one or more command names, directories, and other "
+"aliases.  A command name is a fully qualified file name which may include "
+"shell-style wildcards (see the I<Wildcards> section below).  A simple file "
+"name allows the user to run the command with any arguments he/she wishes.  "
+"However, you may also specify command line arguments (including wildcards).  "
+"Alternately, you can specify \\&\"\" to indicate that the command may only "
+"be run B<without> command line arguments.  A directory is a fully qualified "
+"path name ending in a \\(oq/\\(cq.  When you specify a directory in a "
+"Cmnd_List, the user will be able to run any file within that directory (but "
+"not in any sub-directories therein)."
+msgstr ""
+"Cmnd_List は一個以上の、コマンド名、ディレクトリ、\n"
+"他のエイリアスからなるリストである。コマンド名は絶対パスのファイル名であ"
+"り、\n"
+"シェル風のワイルドカードを含んでいても構わない(下記の「ワイルドカード」セク"
+"ションを参照)。\n"
+"単にファイル名だけ指定した場合、\n"
+"ユーザはお望みのどんな引き数でも付けてそのコマンドを実行することができる。\n"
+"とは言え、コマンドライン引き数を (ワイルドカードを含めて)\n"
+"指定しても構わないし、また、引き数に \"\\&\" を指定して、そのコマンドは、\n"
+"コマンドライン引き数を付けずに実行することしかできないと指示することもでき"
+"る。\n"
+"ディレクトリは '/' で終わる絶対パス名である。\n"
+"Cmnd_List にディレクトリを指定すると、\n"
+"ユーザーはそのディレクトリ内の任意のファイルを実行できるようになる\n"
+"(だが、そのサブディレクトリにあるファイルは実行できない)。"
+
+#. type: Plain text
+#: sudoers.man:835
+msgid ""
+"If a Cmnd has associated command line arguments, then the arguments in the "
+"Cmnd must match exactly those given by the user on the command line (or "
+"match the wildcards if there are any).  Note that the following characters "
+"must be escaped with a \\(oq\\e\\(cq if they are used in command arguments: "
+"\\(oq,\\&\\(cq, \\(oq:\\&\\(cq, \\(oq=\\&\\(cq, \\(oq\\e\\(cq.  The built-in "
+"command \\(Lqsudoedit\\(Rq is used to permit a user to run B<sudo> with the "
+"B<-e> option (or as B<sudoedit>).  It may take command line arguments just "
+"as a normal command does.  Note that \\(Lqsudoedit\\(Rq is a command built "
+"into B<sudo> itself and must be specified in the I<sudoers> file without a "
+"leading path."
+msgstr ""
+"Cmnd がコマンドライン引き数を伴っている場合は、 Cmnd 中の引き数は、\n"
+"ユーザがコマンドラインで打ち込む引き数と正確に一致しなければならない \n"
+"(Cmnd 中の引き数にワイルドカードがあるならば、\n"
+"それがコマンドラインの引き数とマッチしなければならない)。\n"
+"以下に挙げる文字をコマンド引き数の中で用いるときは、\n"
+"'\\e' によってエスケープしなければならないことに注意していただきたい。\n"
+"',\\&', ':\\&', '=\\&', '\\e' がそれである。\n"
+"Cmnd に \"sudoedit\" という B<sudo> の組み込みコマンドを指定すると、\n"
+"ユーザに B<sudo> を B<-e> オプション付きで \n"
+"(あるいは、B<sudoedit> というコマンド名で) 実行することを許可することにな"
+"る。\n"
+"この場合、コマンドライン引き数も指定することができるのは、\n"
+"普通のコマンドとまったく同様だ。\n"
+"\"sudoedit\" は、B<sudo> そのものに組み込まれたコマンドなので、I<sudoers> \n"
+"ファイルではパスを前に付けずに指定しなければならないことに注意していただきた"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:847
+msgid ""
+"If a command name is prefixed with a Digest_Spec, the command will only "
+"match successfully if it can be verified using the specified SHA-2 digest.  "
+"The following digest formats are supported: sha224, sha256, sha384 and "
+"sha512.  The string may be specified in either hex or base64 format (base64 "
+"is more compact).  There are several utilities capable of generating SHA-2 "
+"digests in hex format such as openssl, shasum, sha224sum, sha256sum, "
+"sha384sum, sha512sum."
+msgstr ""
+"コマンド名の前に Digest_Spec が付いている場合、コマンドのマッチに成功するの"
+"は、\n"
+"指定された SHA-2 ダイジェストを使って照合できたときだけである。\n"
+"ダイジェストのフォーマットとしては、\n"
+"sha224, sha256, sha384, sha512 をサポートしている。\n"
+"文字列は、16 進数形式でも base64 形式でも指定できる (base64 の方が短くて済"
+"む)。\n"
+"SHA-2 ダイジェストを 16 進数形式で生成できるユーティリティはいくつかある。\n"
+"openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum\n"
+"といったものがそうだ。"
+
+#. type: Plain text
+#: sudoers.man:849
+msgid "For example, using openssl:"
+msgstr "たとえば、openssl を使うなら、"
+
+#. type: Plain text
+#: sudoers.man:854
+#, no-wrap
+msgid ""
+"$ openssl dgst -sha224 /bin/ls\n"
+"SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25\n"
+msgstr ""
+"$ openssl dgst -sha224 /bin/ls\n"
+"SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25\n"
+
+#. type: Plain text
+#: sudoers.man:858
+msgid "It is also possible to use openssl to generate base64 output:"
+msgstr "openssl を使って、base64 の出力を生成することもできる。"
+
+#. type: Plain text
+#: sudoers.man:863
+#, no-wrap
+msgid ""
+"$ openssl dgst -binary -sha224 /bin/ls | openssl base64\n"
+"EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==\n"
+msgstr ""
+"$ openssl dgst -binary -sha224 /bin/ls | openssl base64\n"
+"EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==\n"
+
+#. type: Plain text
+#: sudoers.man:874
+msgid ""
+"Warning, if the user has write access to the command itself (directly or via "
+"a B<sudo> command), it may be possible for the user to replace the command "
+"after the digest check has been performed but before the command is "
+"executed.  A similar race condition exists on systems that lack the "
+"fexecve(2)  system call when the directory in which the command is located "
+"is writable by the user."
+msgstr ""
+"注意: もしユーザがコマンドそのものに対して (直接であれ、B<sudo> コマンドを通"
+"してであれ)\n"
+"書き込み権限を持っているならば、そのユーザは、ダイジェストチェックが済み、\n"
+"コマンドが実行されるまでの間に、コマンドを別のものに置き換えることができるか"
+"もしれない。\n"
+"同様の競合状態が、fexecve(2) システムコールを持っていないシステムでは、\n"
+"コマンドが存在するディレクトリがユーザによって書き込み可能であるときに起こり"
+"える。"
+
+#. type: Plain text
+#: sudoers.man:876
+msgid "Command digests are only supported by version 1.8.7 or higher."
+msgstr ""
+"コマンド・ダイジェストをサポートしているのは、バージョン 1.8.7 以上だけであ"
+"る。"
+
+#. type: SS
+#: sudoers.man:876
+#, no-wrap
+msgid "Defaults"
+msgstr "デフォルト設定 (Defaults)"
+
+#. type: Plain text
+#: sudoers.man:888
+msgid ""
+"Certain configuration options may be changed from their default values at "
+"run-time via one or more Default_Entry lines.  These may affect all users on "
+"any host, all users on a specific host, a specific user, a specific command, "
+"or commands being run as a specific user.  Note that per-command entries may "
+"not include command line arguments.  If you need to specify arguments, "
+"define a Cmnd_Alias and reference that instead."
+msgstr ""
+"かなりの設定オプションが、\n"
+"一行以上の Default_Entry 行を指定することで実行時にデフォルトの値から変更可能"
+"だ。\n"
+"その効果の及ぶ範囲は、あらゆるホストのすべてのユーザにすることもできるし、\n"
+"ある特定のホストのすべてのユーザ、ある特定のユーザ、ある特定のコマンド、\n"
+"ある特定のユーザとして実行するコマンドなどに限定することもできる。\n"
+"気を付けてほしいのは、コマンドに限定した Defaults 行にコマンドライン引き数ま"
+"で書くことができないことだ。\n"
+"引き数を指定する必要がある場合は、Cmnd_Alias を定義して、代わりにそれを参照す"
+"ればよい。"
+
+#. type: Plain text
+#: sudoers.man:896
+#, no-wrap
+msgid ""
+"Default_Type ::= 'Defaults' |\n"
+"                 'Defaults' '@' Host_List |\n"
+"                 'Defaults' ':' User_List |\n"
+"                 'Defaults' '!' Cmnd_List |\n"
+"                 'Defaults' 'E<gt>' Runas_List\n"
+msgstr ""
+"Default_Type ::= 'Defaults' |\n"
+"                 'Defaults' '@' Host_List |\n"
+"                 'Defaults' ':' User_List |\n"
+"                 'Defaults' '!' Cmnd_List |\n"
+"                 'Defaults' 'E<gt>' Runas_List\n"
+
+#. type: Plain text
+#: sudoers.man:898
+#, no-wrap
+msgid "Default_Entry ::= Default_Type Parameter_List\n"
+msgstr "Default_Entry ::= Default_Type Parameter_List\n"
+
+#. type: Plain text
+#: sudoers.man:901
+#, no-wrap
+msgid ""
+"Parameter_List ::= Parameter |\n"
+"                   Parameter ',' Parameter_List\n"
+msgstr ""
+"Parameter_List ::= Parameter |\n"
+"                   Parameter ',' Parameter_List\n"
+
+#. type: Plain text
+#: sudoers.man:906
+#, no-wrap
+msgid ""
+"Parameter ::= Parameter '=' Value |\n"
+"              Parameter '+=' Value |\n"
+"              Parameter '-=' Value |\n"
+"              '!'* Parameter\n"
+msgstr ""
+"Parameter ::= Parameter '=' Value |\n"
+"              Parameter '+=' Value |\n"
+"              Parameter '-=' Value |\n"
+"              '!'* Parameter\n"
+
+#. type: Plain text
+#: sudoers.man:927
+msgid ""
+"Parameters may be B<flags>, B<integer> values, B<strings>, or B<lists>.  "
+"Flags are implicitly boolean and can be turned off via the \\(oq\\&!\\(cq "
+"operator.  Some integer, string and list parameters may also be used in a "
+"boolean context to disable them.  Values may be enclosed in double quotes "
+"(\\&\"\")  when they contain multiple words.  Special characters may be "
+"escaped with a backslash (\\(oq\\e\\(cq)."
+msgstr ""
+"パラメータはB<フラグ>、B<整数値>、B<文字列>、B<リスト>のどれであってもよ"
+"い。\n"
+"フラグは要するにブーリアン (真偽値) であり、'\\&!' 演算子で off にできる。\n"
+"整数値、文字列、リストのパラメータにも、真偽値として使用して、\n"
+"それを無効にできるものがいくつか存在する。\n"
+"パラメータの値が複数の単語を含むときは、\n"
+"値をダブルクオート (\\&\"\") で囲むとよい。\n"
+"特殊文字はバックスラッシュ ('\\e') でエスケープすることができる。"
+
+#. type: Plain text
+#: sudoers.man:937
+msgid ""
+"Lists have two additional assignment operators, += and -=.  These operators "
+"are used to add to and delete from a list respectively.  It is not an error "
+"to use the -= operator to remove an element that does not exist in a list."
+msgstr ""
+"リストには代入演算子が = のほかにもう二つある。+= と -= である。\n"
+"こうした演算子は、それぞれ、リストに付け加えたり、リストから削除したりするの"
+"に使用する。\n"
+"-= 演算子を使って、リストに存在しない要素を消去しようとしても、エラーにはなら"
+"ない。"
+
+#. type: Plain text
+#: sudoers.man:941
+msgid ""
+"Defaults entries are parsed in the following order: generic, host and user "
+"Defaults first, then runas Defaults and finally command defaults."
+msgstr ""
+"Defaults 行の解析は、次の順序で行われる。まず、汎用、Host、User の "
+"Defaults \n"
+"が解析され、それから Runas の Defaults、最後にコマンドの Defaults の順番にな"
+"る。"
+
+#. type: Plain text
+#: sudoers.man:945
+msgid "See I<SUDOERS OPTIONS> for a list of supported Defaults parameters."
+msgstr ""
+"Defaults 行で使用できるパラメータのリストについては、\n"
+"「SUDOERS のオプション」を御覧いただきたい。"
+
+#. type: SS
+#: sudoers.man:945
+#, no-wrap
+msgid "User specification"
+msgstr "ユーザ設定 (User Specification)"
+
+#. type: Plain text
+#: sudoers.man:950
+#, no-wrap
+msgid ""
+"User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \\e\n"
+"              (':' Host_List '=' Cmnd_Spec_List)*\n"
+msgstr ""
+"User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \\e\n"
+"              (':' Host_List '=' Cmnd_Spec_List)*\n"
+
+#. type: Plain text
+#: sudoers.man:953
+#, no-wrap
+msgid ""
+"Cmnd_Spec_List ::= Cmnd_Spec |\n"
+"                   Cmnd_Spec ',' Cmnd_Spec_List\n"
+msgstr ""
+"Cmnd_Spec_List ::= Cmnd_Spec |\n"
+"                   Cmnd_Spec ',' Cmnd_Spec_List\n"
+
+#. type: Plain text
+#: sudoers.man:955
+#, no-wrap
+msgid "Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd\n"
+msgstr "Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd\n"
+
+#. type: Plain text
+#: sudoers.man:957
+#, no-wrap
+msgid "Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'\n"
+msgstr "Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'\n"
+
+#. type: Plain text
+#: sudoers.man:959
+#, no-wrap
+msgid "SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')\n"
+msgstr "SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')\n"
+
+#. type: Plain text
+#: sudoers.man:964
+#, no-wrap
+msgid ""
+"Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |\n"
+"              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |\n"
+"              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |\n"
+"              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')\n"
+msgstr ""
+"Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |\n"
+"              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |\n"
+"              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |\n"
+"              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')\n"
+
+#. type: Plain text
+#: sudoers.man:975
+msgid ""
+"A B<user specification> determines which commands a user may run (and as "
+"what user) on specified hosts.  By default, commands are run as B<root>, but "
+"this can be changed on a per-command basis."
+msgstr ""
+"B<ユーザ設定>は、あるユーザが、指定されたホストで (どのユーザに変身して)\n"
+"どのコマンドを実行できるかを決定する。デフォルトでは、コマンドは B<root> \n"
+"に変身して実行されるが、これはコマンドごとに変更することができる。"
+
+#. type: Plain text
+#: sudoers.man:979
+msgid ""
+"The basic structure of a user specification is \\(Lqwho where = (as_whom) "
+"what\\(Rq.  Let's break that down into its constituent parts:"
+msgstr ""
+"ユーザ設定の基本構造は、\"who where = (as_whom) what\" である \n"
+"(\"誰が どのホストで = (誰に変身して) 何を\")。構成部分に分けて説明しよう。"
+
+#. type: SS
+#: sudoers.man:979
+#, no-wrap
+msgid "Runas_Spec"
+msgstr "Runas_Spec"
+
+#. type: Plain text
+#: sudoers.man:1027
+msgid ""
+"A Runas_Spec determines the user and/or the group that a command may be run "
+"as.  A fully-specified Runas_Spec consists of two Runas_Lists (as defined "
+"above) separated by a colon (\\(oq:\\&\\(cq)  and enclosed in a set of "
+"parentheses.  The first Runas_List indicates which users the command may be "
+"run as via B<sudo>'s B<-u> option.  The second defines a list of groups that "
+"can be specified via B<sudo>'s B<-g> option.  If both Runas_Lists are "
+"specified, the command may be run with any combination of users and groups "
+"listed in their respective Runas_Lists.  If only the first is specified, the "
+"command may be run as any user in the list but no B<-g> option may be "
+"specified.  If the first Runas_List is empty but the second is specified, "
+"the command may be run as the invoking user with the group set to any listed "
+"in the Runas_List.  If both Runas_Lists are empty, the command may only be "
+"run as the invoking user.  If no Runas_Spec is specified the command may be "
+"run as B<root> and no group may be specified."
+msgstr ""
+"Runas_Spec は変身の対象となるユーザやグループを規定している。\n"
+"完全な形の Runas_Spec は、(上で定義しているように) コロン (':\\&') で区切ら"
+"れ、\n"
+"カッコで囲まれた、二つの Runas_List からなっている。一つ目の Runas_List "
+"は、\n"
+"B<sudo> で B<-u> オプションを使ったときに変身できるユーザを指している。\n"
+"二番目の方が規定しているのは、B<sudo> の B<-g> オプションによって指定できるグ"
+"ループのリストだ。\n"
+"両方の Runas_List が指定されている場合は、それぞれの Runas_List \n"
+"にリストされているユーザとグループの任意の組み合わせで、\n"
+"コマンドを実行することができる。一つ目の Runas_List だけが指定されている場合"
+"は、\n"
+"リスト中のいかなるユーザにでも変身してコマンドを実行できるが、\n"
+"B<-g> オプションを指定することはできない。一つ目の Runas_List が空で、\n"
+"二番目だけ指定されている場合は、B<sudo> を実行するユーザの資格で、\n"
+"グループを Runas_List にリストされている任意のグループに設定して、\n"
+"コマンドを実行することができる。Runas_Lists が両方とも空の場合は、\n"
+"B<sudo> を実行するユーザの資格でしかコマンドを実行できない。\n"
+"Runas_Spec がまったく指定されていない場合は、B<root> としてコマンドを実行でき"
+"るが、\n"
+"グループを指定することはできない。"
+
+#. type: Plain text
+#: sudoers.man:1032
+msgid ""
+"A Runas_Spec sets the default for the commands that follow it.  What this "
+"means is that for the entry:"
+msgstr ""
+"Runas_Spec は、それに続くコマンドに対してデフォルトを定める。\n"
+"それはどういうことかと言うと、次のようなエントリがあったとしよう。"
+
+#. type: Plain text
+#: sudoers.man:1036
+#, no-wrap
+msgid "dgb\tboulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm\n"
+msgstr "dgb\tboulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm\n"
+
+#. type: Plain text
+#: sudoers.man:1049
+msgid ""
+"The user B<dgb> may run I</bin/ls>, I</bin/kill>, and I</usr/bin/lprm>"
+"\\(embut only as B<operator>.  E.g.,"
+msgstr ""
+"ユーザ B<dgb> は I</bin/ls>, I</bin/kill>, I</usr/bin/lprm> を実行することが"
+"できる。\n"
+"ただし、B<operator> として実行できるだけだ。たとえば、次のようにである。"
+
+#. type: Plain text
+#: sudoers.man:1053
+#, no-wrap
+msgid "$ sudo -u operator /bin/ls\n"
+msgstr "$ sudo -u operator /bin/ls\n"
+
+#. type: Plain text
+#: sudoers.man:1060
+msgid ""
+"It is also possible to override a Runas_Spec later on in an entry.  If we "
+"modify the entry like so:"
+msgstr ""
+"エントリの後ろの方の Runas_Spec を変更することも可能だ。\n"
+"上のエントリをこんなふうに書き変えたとしよう。"
+
+#. type: Plain text
+#: sudoers.man:1064
+#, no-wrap
+msgid "dgb\tboulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm\n"
+msgstr "dgb\tboulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm\n"
+
+#. type: Plain text
+#: sudoers.man:1079
+msgid ""
+"Then user B<dgb> is now allowed to run I</bin/ls> as B<operator>, but I</bin/"
+"kill> and I</usr/bin/lprm> as B<root>."
+msgstr ""
+"すると、ユーザ B<dgb> は、I</bin/ls> こそ B<operator> としてだが、\n"
+"I</bin/kill> や I</usr/bin/lprm> は B<root> の資格で実行できるようになる。"
+
+#. type: Plain text
+#: sudoers.man:1087
+msgid ""
+"We can extend this to allow B<dgb> to run /bin/ls with either the user or "
+"group set to B<operator>:"
+msgstr ""
+"B<dgb> が /bin/ls を実行するとき、変身対象ユーザとグループのどちらでも \n"
+"B<operator> になれるように、この記述を拡張することもできる。"
+
+#. type: Plain text
+#: sudoers.man:1092
+#, no-wrap
+msgid ""
+"dgb\tboulder = (operator : operator) /bin/ls, (root) /bin/kill,\\e\n"
+"\t/usr/bin/lprm\n"
+msgstr ""
+"dgb\tboulder = (operator : operator) /bin/ls, (root) /bin/kill,\\e\n"
+"\t/usr/bin/lprm\n"
+
+#. type: Plain text
+#: sudoers.man:1104
+msgid ""
+"Note that while the group portion of the Runas_Spec permits the user to run "
+"as command with that group, it does not force the user to do so.  If no "
+"group is specified on the command line, the command will run with the group "
+"listed in the target user's password database entry.  The following would "
+"all be permitted by the sudoers entry above:"
+msgstr ""
+"注意してほしいが、Runas_Spec のグループの部分は、\n"
+"コマンドをそのグループとして実行することをユーザに許可しているのであって、\n"
+"そうすることをユーザに強制しているのではない。\n"
+"コマンドラインでグループを指定しない場合は、コマンドは、\n"
+"パスワード・データベースにある変身対象ユーザのエントリに登録されているグルー"
+"プとして実行されることになるのだ。\n"
+"以下のコマンドはすべて、上記の sudoers エントリによって許可されることになるだ"
+"ろう。"
+
+#. type: Plain text
+#: sudoers.man:1110
+#, no-wrap
+msgid ""
+"$ sudo -u operator /bin/ls\n"
+"$ sudo -u operator -g operator /bin/ls\n"
+"$ sudo -g operator /bin/ls\n"
+msgstr ""
+"$ sudo -u operator /bin/ls\n"
+"$ sudo -u operator -g operator /bin/ls\n"
+"$ sudo -g operator /bin/ls\n"
+
+#. type: Plain text
+#: sudoers.man:1117
+msgid ""
+"In the following example, user B<tcm> may run commands that access a modem "
+"device file with the dialer group."
+msgstr ""
+"次の例では、ユーザ B<tcm> がモデムのデバイスファイルにアクセスするコマンド"
+"を \n"
+"dialer グループとして実行できるようにしている。"
+
+#. type: Plain text
+#: sudoers.man:1122
+#, no-wrap
+msgid ""
+"tcm\tboulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\\e\n"
+"\t/usr/local/bin/minicom\n"
+msgstr ""
+"tcm\tboulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\\e\n"
+"\t/usr/local/bin/minicom\n"
+
+#. type: Plain text
+#: sudoers.man:1129
+msgid ""
+"Note that in this example only the group will be set, the command still runs "
+"as user B<tcm>.  E.g.\\&"
+msgstr ""
+"この例では、グループしか指定できないことに注意してほしい。コマンドは、\n"
+"ユーザ B<tcm> の資格のまま実行されるのである。たとえば、次のように。"
+
+#. type: Plain text
+#: sudoers.man:1133
+#, no-wrap
+msgid "$ sudo -g dialer /usr/bin/cu\n"
+msgstr "$ sudo -g dialer /usr/bin/cu\n"
+
+#. type: Plain text
+#: sudoers.man:1144
+msgid ""
+"Multiple users and groups may be present in a Runas_Spec, in which case the "
+"user may select any combination of users and groups via the B<-u> and B<-g> "
+"options.  In this example:"
+msgstr ""
+"Runas_Spec には複数のユーザやグループが存在してもよい。\n"
+"その場合、ユーザは B<-u> や B<-g> オプションを使って、\n"
+"ユーザとグループのどんな組み合わせでも選択することができる。"
+
+#. type: Plain text
+#: sudoers.man:1148
+#, no-wrap
+msgid "alan\tALL = (root, bin : operator, system) ALL\n"
+msgstr "alan\tALL = (root, bin : operator, system) ALL\n"
+
+#. type: Plain text
+#: sudoers.man:1155
+msgid ""
+"user B<alan> may run any command as either user root or bin, optionally "
+"setting the group to operator or system."
+msgstr ""
+"この例では、ユーザ B<alan> は root と bin のどちらのユーザにでも変身して、\n"
+"任意のコマンドを実行することができる。また、グループを\n"
+"operator や system に設定することも自由である。"
+
+#. type: SS
+#: sudoers.man:1155
+#, no-wrap
+msgid "SELinux_Spec"
+msgstr "SELinux_Spec"
+
+#. type: Plain text
+#: sudoers.man:1167
+msgid ""
+"On systems with SELinux support, I<sudoers> file entries may optionally have "
+"an SELinux role and/or type associated with a command.  If a role or type is "
+"specified with the command it will override any default values specified in "
+"I<sudoers>.  A role or type specified on the command line, however, will "
+"supersede the values in I<sudoers>."
+msgstr ""
+"SELinux をサポートするシステムでは、I<sudoers> ファイルのエントリで \n"
+"SELinux の role や type をコマンドに関連付けることも可能である。\n"
+"role や type を特定のコマンドについて指定すると、\n"
+"I<sudoers> 中でデフォルトとして設定されている role や type があっても、\n"
+"それよりも優先される。もっとも、role や type をコマンドラインで指定すれば、\n"
+"そちらが I<sudoers> 中の値よりさらに優先されることになる。"
+
+#. type: SS
+#: sudoers.man:1167
+#, no-wrap
+msgid "Tag_Spec"
+msgstr "Tag_Spec"
+
+#. type: Plain text
+#: sudoers.man:1200
+msgid ""
+"A command may have zero or more tags associated with it.  There are ten "
+"possible tag values: EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, "
+"LOG_OUTPUT, NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD, SETENV, and "
+"NOSETENV.  Once a tag is set on a Cmnd, subsequent Cmnds in the "
+"Cmnd_Spec_List, inherit the tag unless it is overridden by the opposite tag "
+"(in other words, PASSWD overrides NOPASSWD and NOEXEC overrides EXEC)."
+msgstr ""
+"コマンドは 0 個以上のタグを伴うことができる。使用できるタグの値は 14 個あ"
+"り、 \n"
+"EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT, \n"
+"NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD, SETENV, NOSETENV が、それであ"
+"る。\n"
+"ある Cmnd にタグをセットすると、\n"
+"Cmnd_Spec_List 中のそれ以後の Cmnd は、\n"
+"反対の意味を持つタグによって変更されないかぎり、そのタグを継承することにな"
+"る \n"
+"(すなわち、PASSWD は NOPASSWD を無効にし、NOEXEC は EXEC を無効にする)。"
+
+#. type: TP
+#: sudoers.man:1200
+#, no-wrap
+msgid "I<EXEC> and I<NOEXEC>"
+msgstr "I<EXEC> と I<NOEXEC>"
+
+#. type: Plain text
+#: sudoers.man:1211
+msgid ""
+"If B<sudo> has been compiled with I<noexec> support and the underlying "
+"operating system supports it, the NOEXEC tag can be used to prevent a "
+"dynamically-linked executable from running further commands itself."
+msgstr ""
+"B<sudo> が I<noexec> サポートつきでコンパイルされ、\n"
+"使用しているオペレーティングシステムがそれに対応している場合、NOEXEC タグを利"
+"用すれば、\n"
+"動的にリンクされた実行ファイルが、そこからさらにコマンドを実行するのを防ぐこ"
+"とができる。"
+
+#. type: Plain text
+#: sudoers.man:1219
+msgid ""
+"In the following example, user B<aaron> may run I</usr/bin/more> and I</usr/"
+"bin/vi> but shell escapes will be disabled."
+msgstr ""
+"次の例では、ユーザ B<aaron> は I</usr/bin/more> と \n"
+"I</usr/bin/vi> を実行できるが、シェル・エスケープは利用できない。"
+
+#. type: Plain text
+#: sudoers.man:1223 sudoers.man:4676
+#, no-wrap
+msgid "aaron\tshanty = NOEXEC: /usr/bin/more, /usr/bin/vi\n"
+msgstr "aaron\tshanty = NOEXEC: /usr/bin/more, /usr/bin/vi\n"
+
+#. type: Plain text
+#: sudoers.man:1232
+msgid ""
+"See the I<Preventing shell escapes> section below for more details on how "
+"NOEXEC works and whether or not it will work on your system."
+msgstr ""
+"NOEXEC がどんなふうに働くのか、お使いのシステムで利用できるかどうか、\n"
+"などについてさらに詳しく知りたかったら、\n"
+"後述の「シェル・エスケープの防止」セクションを御覧になるとよい。"
+
+#. type: TP
+#: sudoers.man:1233
+#, no-wrap
+msgid "I<FOLLOW> and I<NOFOLLOW>"
+msgstr "I<FOLLOW> と I<NOFOLLOW>"
+
+#. type: Plain text
+#: sudoers.man:1251
+msgid ""
+"Starting with version 1.8.15, B<sudoedit> will not open a file that is a "
+"symbolic link unless the I<sudoedit_follow> option is enabled.  The "
+"I<FOLLOW> and I<NOFOLLOW> tags override the value of I<sudoedit_follow> and "
+"can be used to permit (or deny) the editing of symbolic links on a per-"
+"command basis.  These tags are only effective for the I<sudoedit> command "
+"and are ignored for all other commands."
+msgstr ""
+"バージョン 1.8.15 以来、B<sudoedit> は、\n"
+"I<sudoedit_follow> オプションが有効になっていないかぎり、\n"
+"ファイルがシンボリックリンクならば、それを開かないようになっている。\n"
+"I<FOLLOW> と I<NOFOLLOW> タグは、I<sudoedit_follow> の値を上書きするので、\n"
+"これを使用すれば、シンボリックリンクの編集をコマンドごとに許可したり、\n"
+"禁止したりすることができる。\n"
+"この二つのタグが効果があるのは、I<sudoedit> コマンドに対してのみであり、\n"
+"他のどんなコマンドに対しても無視される。"
+
+#. type: TP
+#: sudoers.man:1251
+#, no-wrap
+msgid "I<LOG_INPUT> and I<NOLOG_INPUT>"
+msgstr "I<LOG_INPUT> と I<NOLOG_INPUT>"
+
+#. type: Plain text
+#: sudoers.man:1262
+msgid ""
+"These tags override the value of the I<log_input> option on a per-command "
+"basis.  For more information, see the description of I<log_input> in the "
+"I<SUDOERS OPTIONS> section below."
+msgstr ""
+"この二つのタグは I<log_input> オプションの値をコマンドごとに変更する。\n"
+"詳しい情報については、後述する「SUDOERS のオプション」セクションの \n"
+"I<log_input> の説明をご覧になっていただきたい。"
+
+#. type: TP
+#: sudoers.man:1262
+#, no-wrap
+msgid "I<LOG_OUTPUT> and I<NOLOG_OUTPUT>"
+msgstr "I<LOG_OUTPUT> と I<NOLOG_OUTPUT>"
+
+#. type: Plain text
+#: sudoers.man:1273
+msgid ""
+"These tags override the value of the I<log_output> option on a per-command "
+"basis.  For more information, see the description of I<log_output> in the "
+"I<SUDOERS OPTIONS> section below."
+msgstr ""
+"この二つのタグは I<log_output> オプションの値をコマンドごとに変更する。\n"
+"詳しい情報については、後述する「SUDOERS のオプション」セクションの \n"
+"I<log_output> の説明をご覧になっていただきたい。"
+
+#. type: TP
+#: sudoers.man:1273
+#, no-wrap
+msgid "I<MAIL> and I<NOMAIL>"
+msgstr "I<MAIL> と I<NOMAIL>"
+
+#. type: Plain text
+#: sudoers.man:1303
+msgid ""
+"These tags provide fine-grained control over whether mail will be sent when "
+"a user runs a command by overriding the value of the I<mail_all_cmnds> "
+"option on a per-command basis.  They have no effect when B<sudo> is run with "
+"the B<-l> or B<-v> options.  A I<NOMAIL> tag will also override the "
+"I<mail_always> and I<mail_no_perms> options.  For more information, see the "
+"descriptions of I<mail_all_cmnds>, I<mail_always>, and I<mail_no_perms> in "
+"the I<SUDOERS OPTIONS> section below."
+msgstr ""
+"この二つのタグを使えば、\n"
+"I<mail_all_cmnds> オプションの値をコマンドごとに上書きすることによって、\n"
+"ユーザがコマンドを実行したときにメールを送付するかどうかについて、\n"
+"きめ細かな制御を行うことができる。\n"
+"B<sudo> が B<-l> や B<-v> オプションを付けて実行されたときには、効果がな"
+"い。\n"
+"I<NOMAIL> は、I<mail_always> や I<mail_no_perms> オプションも上書きする。\n"
+"詳細については、後述の「SUDOERS のオプション」セクションにある \n"
+"I<mail_all_cmnds>, I<mail_always>, I<mail_no_perms> の説明をご覧いただきた"
+"い。"
+
+#. type: TP
+#: sudoers.man:1303
+#, no-wrap
+msgid "I<PASSWD> and I<NOPASSWD>"
+msgstr "I<PASSWD> と I<NOPASSWD>"
+
+#. type: Plain text
+#: sudoers.man:1324
+msgid ""
+"By default, B<sudo> requires that a user authenticate him or herself before "
+"running a command.  This behavior can be modified via the NOPASSWD tag.  "
+"Like a Runas_Spec, the NOPASSWD tag sets a default for the commands that "
+"follow it in the Cmnd_Spec_List.  Conversely, the PASSWD tag can be used to "
+"reverse things.  For example:"
+msgstr ""
+"デフォルトでは、B<sudo> はコマンドを実行する前に、ユーザが本人であることを証"
+"明するように求める。\n"
+"この振舞いは NOPASSWD タグによって変更することができる。Runas_Spec と同様、\n"
+"NOPASSWD タグも Cmnd_Spec_List 中のそれに続くコマンドに対してデフォルトを定め"
+"る。\n"
+"PASSWD の働きは反対であり、振舞いを元に戻したいときに使える。たとえば、"
+
+#. type: Plain text
+#: sudoers.man:1328
+#, no-wrap
+msgid "ray\trushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm\n"
+msgstr "ray\trushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm\n"
+
+#. type: Plain text
+#: sudoers.man:1348
+msgid ""
+"would allow the user B<ray> to run I</bin/kill>, I</bin/ls>, and I</usr/bin/"
+"lprm> as B<root> on the machine rushmore without authenticating himself.  If "
+"we only want B<ray> to be able to run I</bin/kill> without a password the "
+"entry would be:"
+msgstr ""
+"とすれば、ユーザ B<ray> はマシン rushmore 上で認証をしないでも \n"
+"B<root> として I</bin/kill>, I</bin/ls>, I</usr/bin/lprm> \n"
+"を実行できるようになる。もし B<ray> がパスワードなしで実行できるコマンドを \n"
+"I</bin/kill> だけに絞りたいのなら、エントリはこうなるだろう。"
+
+#. type: Plain text
+#: sudoers.man:1352
+#, no-wrap
+msgid "ray\trushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm\n"
+msgstr "ray\trushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm\n"
+
+#. type: Plain text
+#: sudoers.man:1360
+msgid ""
+"Note, however, that the PASSWD tag has no effect on users who are in the "
+"group specified by the I<exempt_group> option."
+msgstr ""
+"ただし、ユーザが I<exempt_group> オプションで指定されているグループに属する場"
+"合は、\n"
+"PASSWD タグが効果を持たないことに注意してほしい。"
+
+#. type: Plain text
+#: sudoers.man:1377
+msgid ""
+"By default, if the NOPASSWD tag is applied to any of the entries for a user "
+"on the current host, he or she will be able to run \\(Lqsudo -l\\(Rq without "
+"a password.  Additionally, a user may only run \\(Lqsudo -v\\(Rq without a "
+"password if the NOPASSWD tag is present for all a user's entries that "
+"pertain to the current host.  This behavior may be overridden via the "
+"I<verifypw> and I<listpw> options."
+msgstr ""
+"デフォルトでは、現在使用中のホストに関するユーザのエントリのうちに \n"
+"NOPASSWD タグが指定されているものが一つでもあれば、\n"
+"そのユーザはパスワードなしで \"sudo -l\" を実行できる。\n"
+"なお、ユーザがパスワードなしで \"sudo -v\" を実行できるのは、\n"
+"現在使用中のホストに関するそのユーザのエントリのすべてで\n"
+"NOPASSWD タグが生きているときのみである。この動作は、I<verifypw> や "
+"I<listpw> \n"
+"オプションによって変更できる。"
+
+#. type: TP
+#: sudoers.man:1378
+#, no-wrap
+msgid "I<SETENV> and I<NOSETENV>"
+msgstr "I<SETENV> と I<NOSETENV>"
+
+#. type: Plain text
+#: sudoers.man:1405
+msgid ""
+"These tags override the value of the I<setenv> option on a per-command "
+"basis.  Note that if SETENV has been set for a command, the user may disable "
+"the I<env_reset> option from the command line via the B<-E> option.  "
+"Additionally, environment variables set on the command line are not subject "
+"to the restrictions imposed by I<env_check>, I<env_delete>, or I<env_keep>.  "
+"As such, only trusted users should be allowed to set variables in this "
+"manner.  If the command matched is B<ALL>, the SETENV tag is implied for "
+"that command; this default may be overridden by use of the NOSETENV tag."
+msgstr ""
+"上記のタグは I<setenv> オプションの値をコマンドごとに変更する。\n"
+"あるコマンドに対して SETENV を設定すると、\n"
+"ユーザがコマンドラインから B<-E> オプションを使用して、\n"
+"I<env_reset> オプションを無効にできるようになることに注意してほしい。\n"
+"それだけではない。コマンドラインから設定する環境変数が I<env_check>, \n"
+"I<env_delete>, I<env_keep> による規制を受けないようにもなる。\n"
+"それ故、こうした形で環境変数を設定することを許可するのは、\n"
+"信用できるユーザだけに限るべきである。なお、マッチするコマンドが\n"
+"B<ALL> だった場合は、暗黙のうちに SETENVタグがそのコマンドに付けられるが、\n"
+"このデフォルトの動作は UNSETENV タグを使えば打ち消すことができる。"
+
+#. type: SS
+#: sudoers.man:1405
+#, no-wrap
+msgid "Wildcards"
+msgstr "ワイルドカード"
+
+#. type: Plain text
+#: sudoers.man:1419
+msgid ""
+"B<sudo> allows shell-style I<wildcards> (aka meta or glob characters)  to be "
+"used in host names, path names and command line arguments in the I<sudoers> "
+"file.  Wildcard matching is done via the glob(3)  and fnmatch(3)  functions "
+"as specified by IEEE Std 1003.1 (\\(LqPOSIX.1\\(Rq)."
+msgstr ""
+"I<sudoers> ファイルでは、ホスト名、コマンドのパス名、\n"
+"コマンドライン引き数にシェル形式のワイルドカード (メタ文字とか \n"
+"glob キャラクタとも言う) が使用できる。ワイルドカードのマッチングは、\n"
+"IEEE Std 1003.1 (\"POSIX.1\") で規定されている glob(3) や fnmatch(3) \n"
+"関数を用いて行われる。"
+
+#. type: Plain text
+#: sudoers.man:1422
+msgid "Matches any set of zero or more characters (including white space)."
+msgstr "0 個以上の任意の文字 (ホワイトスペースも含む) にマッチする。"
+
+#. type: Plain text
+#: sudoers.man:1425
+msgid "Matches any single character (including white space)."
+msgstr "任意の 1 文字 (ホワイトスペースも含む) にマッチする。"
+
+#. type: TP
+#: sudoers.man:1425
+#, no-wrap
+msgid "[...]"
+msgstr "[...]"
+
+#. type: Plain text
+#: sudoers.man:1428
+msgid "Matches any character in the specified range."
+msgstr "指定された範囲の任意の 1 文字にマッチする。"
+
+#. type: TP
+#: sudoers.man:1428
+#, no-wrap
+msgid "[!...]"
+msgstr "[!...]"
+
+#. type: Plain text
+#: sudoers.man:1433
+msgid "Matches any character I<not> in the specified range."
+msgstr "指定された範囲I<以外>の任意の 1 文字にマッチする。"
+
+#. type: TP
+#: sudoers.man:1433
+#, no-wrap
+msgid "\\ex"
+msgstr "\\ex"
+
+#. type: Plain text
+#: sudoers.man:1445
+msgid ""
+"For any character \\(oqx\\(cq, evaluates to \\(oqx\\(cq.  This is used to "
+"escape special characters such as: \\(oq*\\(cq, \\(oq\\&?\\(cq, \\(oq[\\&"
+"\\(cq, and \\(oq]\\&\\(cq."
+msgstr ""
+"'x' がどんな文字であっても、'x' そのものとして評価する。\n"
+"この表記法は '*', '\\&?', '[\\&', ']\\&' \n"
+"といった特殊文字をエスケープするために使用される。"
+
+#. type: Plain text
+#: sudoers.man:1449
+msgid ""
+"B<Note that these are not regular expressions.> Unlike a regular expression "
+"there is no way to match one or more characters within a range."
+msgstr ""
+"B<上記のものは正規表現ではないことに注意していただきたい。>\n"
+"正規表現とは違って、範囲内の文字一つ以上にマッチさせる方法は存在しない。"
+
+#. type: Plain text
+#: sudoers.man:1462
+msgid ""
+"Character classes may be used if your system's glob(3)  and fnmatch(3)  "
+"functions support them.  However, because the \\(oq:\\&\\(cq character has "
+"special meaning in I<sudoers>, it must be escaped.  For example:"
+msgstr ""
+"使用しているシステムの glob(3) や fnmatch(3) 関数が文字クラスに対応しているな"
+"ら、\n"
+"文字クラスが使用できる。ただし、':\\&' 文字は、\n"
+"I<sudoers> で特別な意味を持っているので、エスケープしなければならない。\n"
+"一例を上げる。"
+
+#. type: Plain text
+#: sudoers.man:1466
+#, no-wrap
+msgid "/bin/ls [[\\e:\\&alpha\\e:\\&]]*\n"
+msgstr "/bin/ls [[\\e:\\&alpha\\e:\\&]]*\n"
+
+#. type: Plain text
+#: sudoers.man:1470
+msgid "Would match any file name beginning with a letter."
+msgstr ""
+"I<sudoers> 中で上のように書けば、アルファベットの文字で始まるどんなファイル名"
+"にもマッチするだろう。"
+
+#. type: Plain text
+#: sudoers.man:1478
+msgid ""
+"Note that a forward slash (\\(oq/\\(cq)  will I<not> be matched by wildcards "
+"used in the file name portion of the command.  This is to make a path like:"
+msgstr ""
+"コマンドのファイル名の部分で使われたワイルドカードはフォワードスラッシュ \n"
+"('/') にI<マッチしない>ことに注意していただきたい。そこで、次のようなパスは、"
+
+#. type: Plain text
+#: sudoers.man:1482
+#, no-wrap
+msgid "/usr/bin/*\n"
+msgstr "/usr/bin/*\n"
+
+#. type: Plain text
+#: sudoers.man:1489
+msgid "match I</usr/bin/who> but not I</usr/bin/X11/xterm>."
+msgstr ""
+"I</usr/bin/who> にマッチするが、I</usr/bin/X11/xterm> にはマッチしない。"
+
+#. type: Plain text
+#: sudoers.man:1494
+msgid ""
+"When matching the command line arguments, however, a slash I<does> get "
+"matched by wildcards since command line arguments may contain arbitrary "
+"strings and not just path names."
+msgstr ""
+"だが、コマンドライン引き数の部分のマッチングでは、\n"
+"ワイルドカードはスラッシュにI<しっかりマッチする>。\n"
+"コマンドライン引き数には、任意の文字列を含むことが認められており、\n"
+"パス名しか許されていないわけではないからだ。"
+
+#. type: Plain text
+#: sudoers.man:1496
+msgid "B<Wildcards in command line arguments should be used with care.>"
+msgstr ""
+"I<sudoers> B<中でコマンドライン引き数にワイルドカードを使用するときは、>\n"
+"B<注意しなければならない。>"
+
+#. type: Plain text
+#: sudoers.man:1504
+msgid ""
+"Command line arguments are matched as a single, concatenated string.  This "
+"mean a wildcard character such as \\(oq\\&?\\(cq or \\(oq*\\(cq will match "
+"across word boundaries, which may be unexpected.  For example, while a "
+"sudoers entry like:"
+msgstr ""
+"コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行う。\n"
+"そのため、'\\&?' や '*' といったワイルドカード文字が、\n"
+"ユーザが指定したコマンドライン引き数と、\n"
+"単語の境界をまたいでマッチしてしまうことになるのだ。\n"
+"これは想定外のことかもしれない。たとえば、I<sudoers> に次のような行があると、"
+
+#. type: Plain text
+#: sudoers.man:1508
+#, no-wrap
+msgid "%operator ALL = /bin/cat /var/log/messages*\n"
+msgstr "%operator ALL = /bin/cat /var/log/messages*\n"
+
+#. type: Plain text
+#: sudoers.man:1512
+msgid "will allow command like:"
+msgstr "以下のコマンドが実行できることになるが、"
+
+#. type: Plain text
+#: sudoers.man:1516
+#, no-wrap
+msgid "$ sudo cat /var/log/messages.1\n"
+msgstr "$ sudo cat /var/log/messages.1\n"
+
+#. type: Plain text
+#: sudoers.man:1520
+msgid "It will also allow:"
+msgstr "また、以下のコマンドの実行も可能になってしまう。"
+
+#. type: Plain text
+#: sudoers.man:1524
+#, no-wrap
+msgid "$ sudo cat /var/log/messages /etc/shadow\n"
+msgstr "$ sudo cat /var/log/messages /etc/shadow\n"
+
+#. type: Plain text
+#: sudoers.man:1532
+msgid ""
+"which is probably not what was intended.  In most cases it is better to do "
+"command line processing outside of the I<sudoers> file in a scripting "
+"language."
+msgstr ""
+"後者は、おそらく意図に反しているだろう。たいていの場合、\n"
+"コマンドラインの処理は、I<sudoers> ファイルの中ではなく、\n"
+"スクリプト言語中で行った方が間違いがない。"
+
+#. type: SS
+#: sudoers.man:1532
+#, no-wrap
+msgid "Exceptions to wildcard rules"
+msgstr "ワイルドカード・ルールの例外"
+
+#. type: Plain text
+#: sudoers.man:1534
+msgid "The following exceptions apply to the above rules:"
+msgstr "上記ルールには以下の例外がある。"
+
+#. type: TP
+#: sudoers.man:1534
+#, no-wrap
+msgid "\\&\"\""
+msgstr "\\&\"\""
+
+#. type: Plain text
+#: sudoers.man:1543
+msgid ""
+"If the empty string \\&\"\" is the only command line argument in the "
+"I<sudoers> file entry it means that command is not allowed to be run with "
+"I<any> arguments."
+msgstr ""
+"I<sudoers> ファイルのエントリにおいて、空文字列 \\&\"\" \n"
+"が唯一のコマンドライン引き数だった場合は、\n"
+"そのコマンドは引き数をI<付けずに>実行しなければならないことを意味している。"
+
+#. type: TP
+#: sudoers.man:1543
+#, no-wrap
+msgid "sudoedit"
+msgstr "sudoedit"
+
+#. type: Plain text
+#: sudoers.man:1550
+msgid ""
+"Command line arguments to the I<sudoedit> built-in command should always be "
+"path names, so a forward slash (\\(oq/\\(cq)  will not be matched by a "
+"wildcard."
+msgstr ""
+"組み込みコマンド I<sudoedit> にコマンドラインで渡す引き数は、\n"
+"常にパス名であるはずだ。そこで、ワイルドカードはフォワードスラッシュ \n"
+"('/') にマッチしないようになっている \n"
+"(訳注: I<sudoers> 中で I<sudoedit> に対して引き数を指定する場合、\n"
+"それは一般のコマンドライン引き数と同じ扱いではなく、パス名扱いになるというこ"
+"と)。"
+
+#. type: SS
+#: sudoers.man:1550
+#, no-wrap
+msgid "Including other files from within sudoers"
+msgstr "sudoers に他のファイルをインクルードする"
+
+#. type: Plain text
+#: sudoers.man:1560
+msgid ""
+"It is possible to include other I<sudoers> files from within the I<sudoers> "
+"file currently being parsed using the #include and #includedir directives."
+msgstr ""
+"#include 命令や #includedir 命令を使えば、現在解析中の I<sudoers> ファイル"
+"に、\n"
+"外部にあるほかの I<sudoers> ファイルをインクルードすることができる。"
+
+#. type: Plain text
+#: sudoers.man:1577
+msgid ""
+"This can be used, for example, to keep a site-wide I<sudoers> file in "
+"addition to a local, per-machine file.  For the sake of this example the "
+"site-wide I<sudoers> file will be I</etc/sudoers> and the per-machine one "
+"will be I</etc/sudoers.local>.  To include I</etc/sudoers.local> from within "
+"I</etc/sudoers> we would use the following line in I</etc/sudoers>:"
+msgstr ""
+"この方法を使えば、たとえば、サイト全体で使用する I<sudoers> ファイルのほか"
+"に、\n"
+"マシンごとのローカルな I<sudoers> ファイルを持つことができる。\n"
+"ここでは、サイト全体の I<sudoers> ファイルを I</etc/sudoers> とし、\n"
+"マシンごとの方は I</etc/sudoers.local> とすることにしよう。\n"
+"I</etc/sudoers> に I</etc/sudoers.local> をインクルードするには、\n"
+"I</etc/sudoers> 中に次の行を書き込めばよい。"
+
+#. type: Plain text
+#: sudoers.man:1581
+#, no-wrap
+msgid "#include /etc/sudoers.local\n"
+msgstr "#include /etc/sudoers.local\n"
+
+#. type: Plain text
+#: sudoers.man:1598
+msgid ""
+"When B<sudo> reaches this line it will suspend processing of the current "
+"file (I</etc/sudoers>)  and switch to I</etc/sudoers.local>.  Upon reaching "
+"the end of I</etc/sudoers.local>, the rest of I</etc/sudoers> will be "
+"processed.  Files that are included may themselves include other files.  A "
+"hard limit of 128 nested include files is enforced to prevent include file "
+"loops."
+msgstr ""
+"B<sudo> は解析中この行に出会うと、カレントファイル (I</etc/sudoers> だ) \n"
+"の処理を一時中止して、処理の対象を I</etc/sudoers.local> に切り替える。\n"
+"そして、I</etc/sudoers.local> の末尾まで達したら、I</etc/sudoers> の残りを処"
+"理するのである。\n"
+"インクルードされるファイルが、さらに他のファイルをインクルードしていてもよ"
+"い。\n"
+"インクルートのネストには、128 ファイルまでというハード・リミットがあって、\n"
+"インクルードファイルのループが起きないようになっている。"
+
+#. type: Plain text
+#: sudoers.man:1607
+msgid ""
+"If the path to the include file is not fully-qualified (does not begin with "
+"a \\(oq/\\(cq, it must be located in the same directory as the sudoers file "
+"it was included from.  For example, if I</etc/sudoers> contains the line:"
+msgstr ""
+"インクルードファイルのパスが絶対パスでない場合は (すなわち、パスが \n"
+"'/' で始まっていない場合は)、インクルードする側の sudoers\n"
+"ファイルと同じディレクトリに、インクルードされるファイルも存在しなければなら"
+"ない。\n"
+"たとえば、I</etc/sudoers> に次のような行があったら、"
+
+#. type: Plain text
+#: sudoers.man:1611
+#, no-wrap
+msgid "#include sudoers.local\n"
+msgstr "#include sudoers.local\n"
+
+#. type: Plain text
+#: sudoers.man:1616
+msgid "the file that will be included is I</etc/sudoers.local>."
+msgstr "インクルードされるファイルは、I</etc/sudoers.local> である。"
+
+#. type: Plain text
+#: sudoers.man:1623
+msgid ""
+"The file name may also include the %h escape, signifying the short form of "
+"the host name.  In other words, if the machine's host name is \\(Lqxerxes"
+"\\(Rq, then"
+msgstr ""
+"なお、ファイル名には %h エスケープが使える。これはホスト名の短縮形を示してい"
+"る。\n"
+"たとえば、マシンのホスト名が \"xerxes\" のとき、"
+
+#. type: Plain text
+#: sudoers.man:1627
+#, no-wrap
+msgid "#include /etc/sudoers.%h\n"
+msgstr "#include /etc/sudoers.%h\n"
+
+#. type: Plain text
+#: sudoers.man:1634
+msgid "will cause B<sudo> to include the file I</etc/sudoers.xerxes>."
+msgstr ""
+"と書けば、B<sudo> はファイル I</etc/sudoers.xerxes> \n"
+"をインクルードすることになる。"
+
+#. type: Plain text
+#: sudoers.man:1643
+msgid ""
+"The #includedir directive can be used to create a I<sudoers.d> directory "
+"that the system package manager can drop I<sudoers> file rules into as part "
+"of package installation.  For example, given:"
+msgstr ""
+"#includedir 命令を使えば、I<sudoers.d> ディレクトリを作っておいて、\n"
+"システムのパッケージ管理者がパッケージをインストールする際に I<sudoers> \n"
+"のルールを記したファイルをそこに入れてやる、といったことが可能になる。\n"
+"たとえば、次のように書くと、"
+
+#. type: Plain text
+#: sudoers.man:1647
+#, no-wrap
+msgid "#includedir /etc/sudoers.d\n"
+msgstr "#includedir /etc/sudoers.d\n"
+
+#. type: Plain text
+#: sudoers.man:1671
+msgid ""
+"B<sudo> will read each file in I</etc/sudoers.d>, skipping file names that "
+"end in \\(oq~\\(cq or contain a \\(oq.\\&\\(cq character to avoid causing "
+"problems with package manager or editor temporary/backup files.  Files are "
+"parsed in sorted lexical order.  That is, I</etc/sudoers.d/01_first> will be "
+"parsed before I</etc/sudoers.d/10_second>.  Be aware that because the "
+"sorting is lexical, not numeric, I</etc/sudoers.d/1_whoops> would be loaded "
+"I<after> I</etc/sudoers.d/10_second>.  Using a consistent number of leading "
+"zeroes in the file names can be used to avoid such problems."
+msgstr ""
+"B<sudo> は I</etc/sudoers.d> にあるファイルを一つづつ読み込む。\n"
+"ただし、末尾が '~' だったり、'.\\&' 文字を含んでいたりするファイル名はスキッ"
+"プするが、\n"
+"これは、パッケージマネージャやエディタが作った、\n"
+"テンポラリファイルやバックアップファイルを読み込むような問題を起こさないため"
+"である。\n"
+"ファイルは辞書順にソートされて、解析される。すなわち、I</etc/sudoers."
+"d/01_first> は \n"
+"I</etc/sudoers.d/10_second> より前に解析されるということだ。\n"
+"ソートは辞書順であって、数値の順ではないので、\n"
+"I</etc/sudoers.d/1_whoops> というファイルがあっても、\n"
+"I</etc/sudoers.d/10_second> I<より後で>ロードされることに注意していただきた"
+"い。\n"
+"ファイル名の先頭を 0 で埋めて数字の桁を揃えれば、\n"
+"こうした問題を回避することができる。"
+
+#. type: Plain text
+#: sudoers.man:1686
+msgid ""
+"Note that unlike files included via #include, B<visudo> will not edit the "
+"files in a #includedir directory unless one of them contains a syntax "
+"error.  It is still possible to run B<visudo> with the B<-f> flag to edit "
+"the files directly, but this will not catch the redefinition of an I<alias> "
+"that is also present in a different file."
+msgstr ""
+"気をつけていただきたいが、#include でインクルードされたファイルとは違って \n"
+"(訳注: B<visudo> は I</etc/sudoers> を編集するとき、#include \n"
+"で指定したファイルがあれば、続けてそれも編集する)、\n"
+"B<visudo> が #includedir で指定したディレクトリのファイルまで編集するのは、\n"
+"シンタクスエラーを含むものがあるときだけである。\n"
+"とは言え、B<visudo> を B<-f> オプション付きで実行して、\n"
+"ディレクトリ中のファイルを直接編集することは可能だが、その場合は、\n"
+"他のファイルで定義されているエイリアスが再定義されていても、\n"
+"それを見つけて指摘してくれることはない。"
+
+#. type: SS
+#: sudoers.man:1686
+#, no-wrap
+msgid "Other special characters and reserved words"
+msgstr "ほかの特殊文字と予約語"
+
+#. type: Plain text
+#: sudoers.man:1695
+msgid ""
+"The pound sign (\\(oq#\\(cq)  is used to indicate a comment (unless it is "
+"part of a #include directive or unless it occurs in the context of a user "
+"name and is followed by one or more digits, in which case it is treated as a "
+"uid).  Both the comment character and any text after it, up to the end of "
+"the line, are ignored."
+msgstr ""
+"パウンド記号 ('#') はコメントを示すのに使用される\n"
+"(例外は、#include 命令の一部であるときや、ユーザ名に関連して現れ、\n"
+"その後に一個以上の数字が続くときであり、後者の場合は uid と見なされる)。\n"
+"コメント記号とそれに続くテキストは、行末にいたるまで無視される。"
+
+#. type: Plain text
+#: sudoers.man:1717
+msgid ""
+"The reserved word B<ALL> is a built-in I<alias> that always causes a match "
+"to succeed.  It can be used wherever one might otherwise use a Cmnd_Alias, "
+"User_Alias, Runas_Alias, or Host_Alias.  You should not try to define your "
+"own I<alias> called B<ALL> as the built-in alias will be used in preference "
+"to your own.  Please note that using B<ALL> can be dangerous since in a "
+"command context, it allows the user to run I<any> command on the system."
+msgstr ""
+"予約語 B<ALL> は組込みのエイリアスであり、何に対してでもマッチする。\n"
+"B<ALL> は、Cmnd_Alias, User_Alias, Runas_Alias, Host_Alias \n"
+"を代わりに使えるところなら、どこでも使用できる。\n"
+"B<ALL> という名前のエイリアスを自分で定義しようとしてはいけない。\n"
+"組込みのエイリアスの方が、自分で作ったエイリアスより優先して使われるから"
+"だ。\n"
+"B<ALL> の使用には危険が伴うことがあるのを忘れないでいただきたい。\n"
+"なぜなら、B<ALL> をコマンドに関して使うと、\n"
+"ユーザにシステム上のI<どんな>コマンドでも実行することを許してしまうからであ"
+"る。"
+
+#. type: Plain text
+#: sudoers.man:1731
+msgid ""
+"An exclamation point (\\(oq\\&!\\(cq)  can be used as a logical I<not> "
+"operator in a list or I<alias> as well as in front of a Cmnd.  This allows "
+"one to exclude certain values.  For the \\(oq\\&!\\(cq operator to be "
+"effective, there must be something for it to exclude.  For example, to match "
+"all users except for root one would use:"
+msgstr ""
+"エクスクラメーションマーク ('\\&!') は、リストやエイリアス中はもちろん、\n"
+"Cmnd の前でも論理 I<not> 演算子として使用することができる。\n"
+"これによってある値を除外することが可能になるわけだ。\n"
+"ただし、'\\&!' 演算子が効果を持つためには、\n"
+"そこから除外する対象が存在しなければならない。\n"
+"たとえば、root 以外のすべてのユーザにマッチさせたい場合は、\n"
+"次の表現を使用する。"
+
+#. type: Plain text
+#: sudoers.man:1735
+#, no-wrap
+msgid "ALL,!root\n"
+msgstr "ALL,!root\n"
+
+#. type: Plain text
+#: sudoers.man:1741
+msgid "If the B<ALL>, is omitted, as in:"
+msgstr "次のように B<ALL> の記述を省くと、"
+
+#. type: Plain text
+#: sudoers.man:1745
+#, no-wrap
+msgid "!root\n"
+msgstr "!root\n"
+
+#. type: Plain text
+#: sudoers.man:1752
+msgid ""
+"it would explicitly deny root but not match any other users.  This is "
+"different from a true \\(Lqnegation\\(Rq operator."
+msgstr ""
+"確かに root を明示的に否定することにはなるが、\n"
+"他のどんなユーザともマッチすることがない。\n"
+"この点が、正真の「否定」演算子とは違っている。"
+
+#. type: Plain text
+#: sudoers.man:1762
+msgid ""
+"Note, however, that using a \\(oq\\&!\\(cq in conjunction with the built-in "
+"B<ALL> alias to allow a user to run \\(Lqall but a few\\(Rq commands rarely "
+"works as intended (see I<SECURITY NOTES> below)."
+msgstr ""
+"とは言え、組込みエイリアス B<ALL> と '\\&!' を組み合わせて、\n"
+"「二三のコマンド以外のすべての」コマンドの実行をあるユーザに許可しようとして"
+"も、\n"
+"意図どおりの動きになることはめったにないことに気をつけていただきたい \n"
+"(下記の「セキュリティに関する注意点」を参照)。"
+
+#. type: Plain text
+#: sudoers.man:1766
+msgid ""
+"Long lines can be continued with a backslash (\\(oq\\e\\(cq)  as the last "
+"character on the line."
+msgstr ""
+"長い行は、行末にバックスラッシュ '\\e' を置けば、継続することができる。"
+
+#. type: Plain text
+#: sudoers.man:1775
+msgid ""
+"White space between elements in a list as well as special syntactic "
+"characters in a I<User Specification> (\\(oq=\\&\\(cq, \\(oq:\\&\\(cq, "
+"\\(oq(\\&\\(cq, \\(oq)\\&\\(cq)  is optional."
+msgstr ""
+"リストにおける要素間やユーザ設定における構文用特殊文字 ('=\\&', ':\\&', \n"
+"'(\\&', ')\\&') の前後に空白 (white space) を入れることは、任意である。"
+
+#. type: Plain text
+#: sudoers.man:1786
+msgid ""
+"The following characters must be escaped with a backslash (\\(oq\\e\\(cq)  "
+"when used as part of a word (e.g.\\& a user name or host name): \\(oq\\&!"
+"\\(cq, \\(oq=\\&\\(cq, \\(oq:\\&\\(cq, \\(oq,\\&\\(cq, \\(oq(\\&\\(cq, "
+"\\(oq)\\&\\(cq, \\(oq\\e\\(cq."
+msgstr ""
+"次の文字を単語 (ユーザ名とかホスト名とか) の一部として使うときは、\n"
+"バックスラッシュ ('\\e') でエスケープしなければならない。\n"
+"'\\&!', '=\\&', ':\\&', ',\\&', '(\\&', ')\\&', '\\e' がそれである。"
+
+#. type: SH
+#: sudoers.man:1786
+#, no-wrap
+msgid "SUDOERS OPTIONS"
+msgstr "SUDOERS のオプション"
+
+#. type: Plain text
+#: sudoers.man:1792
+msgid ""
+"B<sudo>'s behavior can be modified by Default_Entry lines, as explained "
+"earlier.  A list of all supported Defaults parameters, grouped by type, are "
+"listed below."
+msgstr ""
+"すでに説明したように、B<sudo> の動作は Default_Entry 行によって変更することが"
+"できる。 \n"
+"Defaults に与えることのできるパラメータについて、\n"
+"サポートされているもののすべてを、タイプ別にまとめて以下に列挙する。"
+
+#. type: Plain text
+#: sudoers.man:1794
+msgid "B<Boolean Flags>:"
+msgstr "B<ブーリアン・フラグ> (真偽値)"
+
+#. type: TP
+#: sudoers.man:1794
+#, no-wrap
+msgid "always_query_group_plugin"
+msgstr "always_query_group_plugin"
+
+#. type: Plain text
+#: sudoers.man:1805
+msgid ""
+"If a I<group_plugin> is configured, use it to resolve groups of the form "
+"%group as long as there is not also a system group of the same name.  "
+"Normally, only groups of the form %:group are passed to the "
+"I<group_plugin>.  This flag is I<off> by default."
+msgstr ""
+"I<group_plugin> の設定がなされている場合に、\n"
+"%group の形式のグループを解決するのに、\n"
+"同名のシステム・グループが同時に存在しないかぎり、\n"
+"指定された I<group_plugin> を使用する。\n"
+"I<always_query_group_plugin> が設定されていない通常の状態では、\n"
+"%:group の形式のグループのみが I<group_plugin> に渡されるのである。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:1805
+#, no-wrap
+msgid "always_set_home"
+msgstr "always_set_home"
+
+#. type: Plain text
+#: sudoers.man:1834
+msgid ""
+"If enabled, B<sudo> will set the HOME environment variable to the home "
+"directory of the target user (which is root unless the B<-u> option is "
+"used).  This effectively means that the B<-H> option is always implied.  "
+"Note that by default, HOME will be set to the home directory of the target "
+"user when the I<env_reset> option is enabled, so I<always_set_home> only has "
+"an effect for configurations where either I<env_reset> is disabled or HOME "
+"is present in the I<env_keep> list.  This flag is I<off> by default."
+msgstr ""
+"これを有効にすると、B<sudo> は環境変数 HOME を変身対象ユーザの \n"
+"(B<-u> オプションが使用されていないかぎり、root の)\n"
+"ホームディレクトリに設定することになる。事実上、\n"
+"暗黙のうちに B<sudo> に B<-H> オプションが常に指定されることになるわけだ。\n"
+"気をつけていただきたいが、デフォルトでは、\n"
+"I<env_reset> オプションが有効になっている場合は、\n"
+"HOME の値は、変身対象ユーザのホームディレクトリに設定されることになる。\n"
+"だから、I<always_set_home> \n"
+"の指定に効果があるのは、I<env_reset> を無効に設定している場合か、\n"
+"I<env_keep> のリストに HOME が存在する場合だけである。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:1834
+#, no-wrap
+msgid "authenticate"
+msgstr "authenticate"
+
+#. type: Plain text
+#: sudoers.man:1846
+msgid ""
+"If set, users must authenticate themselves via a password (or other means of "
+"authentication) before they may run commands.  This default may be "
+"overridden via the PASSWD and NOPASSWD tags.  This flag is I<on> by default."
+msgstr ""
+"これをセットすると、ユーザはコマンドの実行を許可される前に、パスワードで \n"
+"(あるいは、ほかの認証方法で) 自分が本人であることを証明しなければならなくな"
+"る。\n"
+"このデフォルト値は PASSWD や NOPASSWD タグで変更できる。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:1846
+#, no-wrap
+msgid "closefrom_override"
+msgstr "closefrom_override"
+
+#. type: Plain text
+#: sudoers.man:1857
+msgid ""
+"If set, the user may use B<sudo>'s B<-C> option which overrides the default "
+"starting point at which B<sudo> begins closing open file descriptors.  This "
+"flag is I<off> by default."
+msgstr ""
+"これをセットすると、ユーザが B<sudo> の B<-C> \n"
+"オプションを使用できるようになる。B<-C> オプションというのは、\n"
+"B<sudo> が開いているファイル・ディスクリプタを閉じていくとき、\n"
+"どのディスクリプタから閉じていくかという、デフォルトの始点を変更するもの"
+"だ。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:1857
+#, no-wrap
+msgid "compress_io"
+msgstr "compress_io"
+
+#. type: Plain text
+#: sudoers.man:1871
+msgid ""
+"If set, and B<sudo> is configured to log a command's input or output, the I/"
+"O logs will be compressed using B<zlib>.  This flag is I<on> by default when "
+"B<sudo> is compiled with B<zlib> support."
+msgstr ""
+"これをセットすると、\n"
+"B<sudo> がコマンドの入出力のログを取るように設定されている場合に、\n"
+"入出力のログを B<zlib> を使って、圧縮することになる。\n"
+"B<sudo> が B<zlib> をサポートするようにコンパイルされている場合、\n"
+"このフラグのデフォルトは I<on> である。"
+
+#. type: TP
+#: sudoers.man:1871
+#, no-wrap
+msgid "exec_background"
+msgstr "exec_background"
+
+#. type: Plain text
+#: sudoers.man:1903
+msgid ""
+"By default, B<sudo> runs a command as the foreground process as long as "
+"B<sudo> itself is running in the foreground.  When the I<exec_background> "
+"flag is enabled and the command is being run in a pty (due to I/O logging or "
+"the I<use_pty> flag), the command will be run as a background process.  "
+"Attempts to read from the controlling terminal (or to change terminal "
+"settings) will result in the command being suspended with the SIGTTIN signal "
+"(or SIGTTOU in the case of terminal settings).  If this happens when B<sudo> "
+"is a foreground process, the command will be granted the controlling "
+"terminal and resumed in the foreground with no user intervention required.  "
+"The advantage of initially running the command in the background is that "
+"B<sudo> need not read from the terminal unless the command explicitly "
+"requests it.  Otherwise, any terminal input must be passed to the command, "
+"whether it has required it or not (the kernel buffers terminals so it is not "
+"possible to tell whether the command really wants the input).  This is "
+"different from historic I<sudo> behavior or when the command is not being "
+"run in a pty."
+msgstr ""
+"デフォルトでは、B<sudo> 自体がフォアグラウンドで実行されているかぎり、\n"
+"コマンドは B<sudo> によってフォアグラウンド・プロセスとして実行される。それに"
+"対して、\n"
+"I<exec_background> フラグが有効になっている場合は、\n"
+"コマンドが (入出力ロギングや I<use_pty> フラグのために) pty で実行されている"
+"と、\n"
+"そのコマンドはバックグラウンド・プロセスとして実行されることになる。\n"
+"このとき、そのコマンドが制御ターミナルから読み込みを行おうとすると \n"
+"(あるいは、ターミナルの設定を変更しようとすると)、\n"
+"コマンドは SIGTTIN シグナル (ターミナル設定の場合は SIGTTOU シグナル) \n"
+"によってサスペンドされる。そうしたことが起きても、\n"
+"B<sudo> がフォアグラウンド・プロセスならば、\n"
+"そのコマンドは制御ターミナルの使用を許可され、\n"
+"ユーザが何の操作をしないでも、フォアグラウンドで実行が再開される。\n"
+"コマンドの実行をバックグラウンドで始めることの利点は、\n"
+"そうすれば、コマンドが明示的に要求しないかぎり、\n"
+"B<sudo> はターミナルから読み込みを行う必要がないということである。\n"
+"そうしない場合は、コマンドが入力を要求しているか否かに関わりなく、\n"
+"いかなる入力もコマンドに渡さなければならないのだ \n"
+"(カーネルがターミナルのバッファリングをしているので、\n"
+"コマンドが本当にその入力を必要としているかどうかを、\n"
+"判断することはできないのである)。\n"
+"この動作は、従来の I<sudo> の動作とは異なっている。\n"
+"また、コマンドが pty で実行されていないときの動作とも異なっている。"
+
+#. type: Plain text
+#: sudoers.man:1927
+msgid ""
+"For this to work seamlessly, the operating system must support the automatic "
+"restarting of system calls.  Unfortunately, not all operating systems do "
+"this by default, and even those that do may have bugs.  For example, Mac OS "
+"X fails to restart the B<tcgetattr>()  and B<tcsetattr>()  system calls "
+"(this is a bug in Mac OS X).  Furthermore, because this behavior depends on "
+"the command stopping with the SIGTTIN or SIGTTOU signals, programs that "
+"catch these signals and suspend themselves with a different signal (usually "
+"SIGTOP)  will not be automatically foregrounded.  Some versions of the linux "
+"su(1)  command behave this way.  This flag is I<off> by default."
+msgstr ""
+"この動作がシームレスに行われるためには、オペレーティングシステムが、\n"
+"システムコールの自動的な再スタートをサポートしていなければならない。\n"
+"残念なことに、すべてのオペレーティングシステムが、\n"
+"デフォルトでそれを行ってくれるわけではなく、\n"
+"それを行ってくれるオペレーティングシステムにも、バグがあることがある。たとえ"
+"ば、\n"
+"Mac OS X は、B<tcgetattr>() や B<tcsetattr>() システムコールの再スタートに失"
+"敗する \n"
+"(これは Mac OS X のバグである)。それだけではなく、この動作は、\n"
+"コマンドが SIGTTIN や SIGTTOU シグナルで停止することを当てにしているので、\n"
+"そうしたシグナルは捕獲し、別のシグナル (たいていは SIGSTOP)\n"
+"で自分を停止させるプログラムは、自動的にフォアグラウンド化できない。\n"
+"linux の su(1) コマンドの動作が、系統によっては、そんなふうになっている。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: Plain text
+#: sudoers.man:1932
+msgid ""
+"This setting is only supported by version 1.8.7 or higher.  It has no effect "
+"unless I/O logging is enabled or the I<use_pty> flag is enabled."
+msgstr ""
+"この設定は、バージョン 1.8.7 以上でのみサポートされている。\n"
+"また、入出力ロギングが有効になっている場合や、\n"
+"I<use_pty> フラグが有効になっている場合以外、この設定には効果がない。"
+
+#. type: TP
+#: sudoers.man:1932
+#, no-wrap
+msgid "env_editor"
+msgstr "env_editor"
+
+#. type: Plain text
+#: sudoers.man:1971
+msgid ""
+"If set, B<visudo> will use the value of the EDITOR or VISUAL environment "
+"variables before falling back on the default editor list.  Note that this "
+"may create a security hole as it allows the user to run any arbitrary "
+"command as root without logging.  A safer alternative is to place a colon-"
+"separated list of editors in the editor variable.  B<visudo> will then only "
+"use the EDITOR or VISUAL if they match a value specified in editor.  If the "
+"I<env_reset> flag is enabled, the EDITOR and/or VISUAL environment variables "
+"must be present in the I<env_keep> list for the I<env_editor> flag to "
+"function when B<visudo> is invoked via B<sudo>.  This flag is I<off> by "
+"default."
+msgstr ""
+"これをセットすると、B<visudo> はデフォルトのエディタ・リストを利用する前"
+"に、\n"
+"環境変数 EDITOR や VISUAL の値を使用するようになる。\n"
+"それがセキュリティホールになりかねないことに注意していただきたい。\n"
+"ユーザが root として任意のコマンドを、\n"
+"ログに記録されることなく実行できるようになるからだ。\n"
+"こうした環境変数を利用するときの、I<env_editor> を有効にするよりも安全な方法"
+"は、\n"
+"I<sudoers> ファイルの I<editor> オプションにコロンで区切ったエディタのリスト"
+"を書いておくことだ。そうすれば、\n"
+"B<visudo> が EDITOR や VISUAL を使うのは、それが I<editor> \n"
+"オプションに指定した値とマッチしたときだけになる。\n"
+"I<env_reset> フラグが有効な場合に、B<sudo> 経由で B<visudo> を起動したとき \n"
+"I<env_editor> フラグが効果を持つためには、\n"
+"環境変数 EDITOR や VISUAL が I<env_keep> のリストに存在していなければならな"
+"い。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:1971
+#, no-wrap
+msgid "env_reset"
+msgstr "env_reset"
+
+#. type: Plain text
+#: sudoers.man:2015
+msgid ""
+"If set, B<sudo> will run the command in a minimal environment containing the "
+"TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME and SUDO_* "
+"variables.  Any variables in the caller's environment that match the "
+"env_keep and env_check lists are then added, followed by any variables "
+"present in the file specified by the I<env_file> option (if any).  The "
+"contents of the env_keep and env_check lists, as modified by global Defaults "
+"parameters in I<sudoers>, are displayed when B<sudo> is run by root with the "
+"B<-V> option.  If the I<secure_path> option is set, its value will be used "
+"for the PATH environment variable.  This flag is I<on> by default."
+msgstr ""
+"これをセットすると、B<sudo> は最小限の環境でコマンドを実行することになる。\n"
+"その環境には、以下の変数が含まれている。TERM, PATH, HOME,\n"
+"MAIL, SHELL, LOGNAME, USER, USERNAME、及び SUDO_* という変数。\n"
+"それに、B<sudo> を起動するユーザの環境にある変数のうち、\n"
+"I<env_keep> や I<env_check> のリストにマッチするものが加わり、\n"
+"さらに、I<env_file> オプションによって指定されたファイルがあれば、\n"
+"そのファイルに記載されたすべての変数が追加される。\n"
+"I<env_keep> や I<env_check> のリストにどんな変数が存在するかについては、\n"
+"root ユーザとして B<sudo> に B<-V> オプションを付けて実行すれば、\n"
+"I<sudoers> 中でグローバルな Defaults パラメータによって変更された結果を、\n"
+"見ることができる。\n"
+"なお、I<secure_path> オプションが設定されているときは、\n"
+"その値が環境変数 PATH の値として使用される。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2015
+#, no-wrap
+msgid "fast_glob"
+msgstr "fast_glob"
+
+#. type: Plain text
+#: sudoers.man:2051
+msgid ""
+"Normally, B<sudo> uses the glob(3)  function to do shell-style globbing when "
+"matching path names.  However, since it accesses the file system, glob(3)  "
+"can take a long time to complete for some patterns, especially when the "
+"pattern references a network file system that is mounted on demand (auto "
+"mounted).  The I<fast_glob> option causes B<sudo> to use the fnmatch(3)  "
+"function, which does not access the file system to do its matching.  The "
+"disadvantage of I<fast_glob> is that it is unable to match relative path "
+"names such as I<./ls> or I<../bin/ls>.  This has security implications when "
+"path names that include globbing characters are used with the negation "
+"operator, \\(oq!\\&\\(cq, as such rules can be trivially bypassed.  As such, "
+"this option should not be used when the I<sudoers> file contains rules that "
+"contain negated path names which include globbing characters.  This flag is "
+"I<off> by default."
+msgstr ""
+"通常 B<sudo> はパス名のマッチングをするとき、glob(3)関数を使用して、\n"
+"シェル・スタイルのワイルドカード展開 (glob) を行う。\n"
+"しかし、glob(3) はファイルシステムにアクセスするので、\n"
+"指定パターンによっては、作業を完了するまでに時間がかかることがある。\n"
+"必要な時にマウントするようになっている (つまりオートマウントの)\n"
+"ネットワーク・ファイル・システムを参照するときは、とりわけ時間がかかる。\n"
+"I<fast_glob> オプションを指定すると、B<sudo> が fnmatch(3) 関数を使うようにな"
+"るが、\n"
+"こちらの関数はマッチングを行う際にファイルシステムにアクセスしない。\n"
+"I<fast_glob> の欠点は、I<./ls> や I<../bin/ls> \n"
+"のような相対パスに対するマッチができないことである。そのため、\n"
+"ワイルドカードを含むパス名が、否定演算子 '!\\&' \n"
+"と一緒に使われている場合に、セキュリティ上の問題が生じるおそれがある。\n"
+"そうしたルールは簡単に迂回できるからだ。\n"
+"従って、I<sudoers> ファイルに、ワイルドカードを含むパス名を否定するルールが存"
+"在する場合は、\n"
+"このオプションを使ってはいけない。このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2051
+#, no-wrap
+msgid "fqdn"
+msgstr "fqdn"
+
+#. type: Plain text
+#: sudoers.man:2069
+msgid ""
+"Set this flag if you want to put fully qualified host names in the "
+"I<sudoers> file when the local host name (as returned by the hostname "
+"command) does not contain the domain name.  In other words, instead of "
+"myhost you would use myhost.mydomain.edu.  You may still use the short form "
+"if you wish (and even mix the two).  This option is only effective when the "
+"\\(Lqcanonical\\(Rq host name, as returned by the B<getaddrinfo>()  or "
+"B<gethostbyname>()  function, is a fully-qualified domain name.  This is "
+"usually the case when the system is configured to use DNS for host name "
+"resolution."
+msgstr ""
+"ローカル・ホスト名 (hostname コマンドが返すもの) がドメイン名を含まないと"
+"き、\n"
+"I<sudoers> ファイルで完全修飾ホスト名を使用したかったら、\n"
+"このフラッグをセットするとよい。すなわち、myhost ではなく、\n"
+"myhost.mydomain.edu を使いたい場合だ。そのときでも、\n"
+"そうしたければ、短縮形も使用できる (両方を混ぜて使うこともできる)。\n"
+"このオプションに効果があるのは、B<getaddrinfo>() や B<gethostbyname>()\n"
+"関数が返すホストの「正規名 (canonical name)」が、\n"
+"完全修飾ドメイン名であるときだけである。\n"
+"システムがホスト名の解決に DNS を使用するように設定されているときは、普通そう"
+"なる。"
+
+#. type: Plain text
+#: sudoers.man:2094
+msgid ""
+"If the system is configured to use the I</etc/hosts> file in preference to "
+"DNS, the \\(Lqcanonical\\(Rq host name may not be fully-qualified.  The "
+"order that sources are queried for host name resolution is usually specified "
+"in the I</etc/nsswitch.conf>, I</etc/netsvc.conf>, I</etc/host.conf>, or, in "
+"some cases, I</etc/resolv.conf> file.  In the I</etc/hosts> file, the first "
+"host name of the entry is considered to be the \\(Lqcanonical\\(Rq name; "
+"subsequent names are aliases that are not used by B<sudoers>.  For example, "
+"the following hosts file line for the machine \\(Lqxyzzy\\(Rq has the fully-"
+"qualified domain name as the \\(Lqcanonical\\(Rq host name, and the short "
+"version as an alias."
+msgstr ""
+"システムが DNS よりも優先して I</etc/hosts> を使用するように設定されている場"
+"合、\n"
+"ホストの正規名は完全修飾名ではないかもしれない。\n"
+"ホスト名解決のために問い合わせる情報源の順番は、普通 I</etc/nsswitch."
+"conf>, \n"
+"I</etc/netsvc.conf>, I</etc/host.conf> ファイルで指定されている。\n"
+"I</etc/resolv.conf> のこともある。I</etc/hosts> ファイルでは、\n"
+"エントリの最初のホスト名が正規名と見なされる。後に続く名前はエイリアスであ"
+"り、\n"
+"B<sudoers> によって使用されることはない。たとえば、hosts ファイルに \n"
+"\"xyzzy\" というマシンについて下記の行があるとき、\n"
+"完全修飾ドメイン名がホストの正規名であり、短い方の名前はエイリアスである。"
+
+#. type: Plain text
+#: sudoers.man:2097
+msgid "192.168.1.1\txyzzy.sudo.ws xyzzy"
+msgstr "192.168.1.1\txyzzy.sudo.ws xyzzy"
+
+#. type: Plain text
+#: sudoers.man:2103
+msgid ""
+"If the machine's hosts file entry is not formatted properly, the I<fqdn> "
+"option will not be effective if it is queried before DNS."
+msgstr ""
+"hosts ファイルにおけるマシンのエントリの書式が不適切だと、\n"
+"hosts ファイルへの問い合わせが DNS より前に行われる場合、I<fqdn> \n"
+"オプションを指定しても、効果がない。"
+
+#. type: Plain text
+#: sudoers.man:2120
+msgid ""
+"Beware that when using DNS for host name resolution, turning on I<fqdn> "
+"requires B<sudoers> to make DNS lookups which renders B<sudo> unusable if "
+"DNS stops working (for example if the machine is disconnected from the "
+"network).  Also note that just like with the hosts file, you must use the "
+"\\(Lqcanonical\\(Rq name as DNS knows it.  That is, you may not use a host "
+"alias (CNAME entry)  due to performance issues and the fact that there is no "
+"way to get all aliases from DNS."
+msgstr ""
+"気を付けてほしいのは、ホスト名の解決に DNS を使用する場合、\n"
+"I<fqdn> 有効にすると、B<sudoers> は DNS に問い合わせをしなければならないの"
+"で、\n"
+"DNS が稼働していないと (たとえば、マシンがネットワークから切り離されている"
+"と)、\n"
+"B<sudo> が使えなくなるということである。\n"
+"もう一つ気を付けるべきことがある。hosts ファイルを使用する場合と同じことだ"
+"が、\n"
+"DNS が知っているホストの正規名を使わなければならない。\n"
+"言い換えれば、ホストのエイリアス (CNAME のエントリ) を使ってはいけない。\n"
+"パフォーマンスの問題もあるし、DNS からエイリアスをすべて取得する方法はないか"
+"らでもある。"
+
+#. type: Plain text
+#: sudoers.man:2124
+msgid "This flag is I<off> by default."
+msgstr "このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2125
+#, no-wrap
+msgid "ignore_dot"
+msgstr "ignore_dot"
+
+#. type: Plain text
+#: sudoers.man:2137
+msgid ""
+"If set, B<sudo> will ignore \".\" or \"\" (both denoting current directory) "
+"in the PATH environment variable; the PATH itself is not modified.  This "
+"flag is I<off> by default."
+msgstr ""
+"これをセットすると、環境変数 PATH 中に \".\" や \"\" \n"
+"(どちらもカレントディレクトリを意味する) があっても、\n"
+"B<sudo> はそれを無視する。PATH そのものは変更されない。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2137
+#, no-wrap
+msgid "ignore_local_sudoers"
+msgstr "ignore_local_sudoers"
+
+#. type: Plain text
+#: sudoers.man:2158
+msgid ""
+"If set via LDAP, parsing of I</etc/sudoers> will be skipped.  This is "
+"intended for Enterprises that wish to prevent the usage of local sudoers "
+"files so that only LDAP is used.  This thwarts the efforts of rogue "
+"operators who would attempt to add roles to I</etc/sudoers>.  When this "
+"option is present, I</etc/sudoers> does not even need to exist.  Since this "
+"option tells B<sudo> how to behave when no specific LDAP entries have been "
+"matched, this sudoOption is only meaningful for the cn=defaults section.  "
+"This flag is I<off> by default."
+msgstr ""
+"LDAP の方でこのフラグをセットすると、I</etc/sudoers> の解析がスキップされるこ"
+"とになる。\n"
+"このフラグは、ローカルにある sudoers ファイルの使用を禁じて、\n"
+"LDAP のみを使うようにしたい諸企業のためにある。\n"
+"たちの悪いオペレータが I</etc/sudoers> に手を加えて、\n"
+"自分の権限を増やそうとしても、そうした悪だくみは阻止されるわけだ。\n"
+"このオプションが設定されているときは、\n"
+"I</etc/sudoers> ファイルは存在する必要すらない。このオプションは、\n"
+"LDAP 中に、マッチする特定のエントリが存在しなかったときに、\n"
+"いかに振舞うべきかを B<sudo> に指示するものだから、\n"
+"これを指定する sudoOption は、cn=defaults のセクションになければ意味がな"
+"い。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2158
+#, no-wrap
+msgid "insults"
+msgstr "insults"
+
+#. type: Plain text
+#: sudoers.man:2166
+msgid ""
+"If set, B<sudo> will insult users when they enter an incorrect password.  "
+"This flag is I<off> by default."
+msgstr ""
+"これをセットすると、不正なパスワードが入力されたとき、\n"
+"B<sudo> がユーザに悪態をつく。このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2166
+#, no-wrap
+msgid "log_host"
+msgstr "log_host"
+
+#. type: Plain text
+#: sudoers.man:2174
+msgid ""
+"If set, the host name will be logged in the (non-syslog)  B<sudo> log file.  "
+"This flag is I<off> by default."
+msgstr ""
+"これをセットすると、ホスト名が (syslog 経由ではない) B<sudo> のログファイルに"
+"記録されることになる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2174
+#, no-wrap
+msgid "log_input"
+msgstr "log_input"
+
+#. type: Plain text
+#: sudoers.man:2188
+msgid ""
+"If set, B<sudo> will run the command in a pseudo-tty and log all user "
+"input.  If the standard input is not connected to the user's tty, due to I/O "
+"redirection or because the command is part of a pipeline, that input is also "
+"captured and stored in a separate log file.  For more information, see the "
+"I<I/O LOG FILES> section.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> は、擬似 tty でコマンドを実行し、\n"
+"ユーザの入力をすべてログに取ることになる。入出力がリダイレクトされていると"
+"か、\n"
+"コマンドがパイプラインの一部だとかいう理由で、標準入力がユーザの tty\n"
+"に結びつけられていない場合でも、その入力はやはりキャプチャーされ、\n"
+"独立したログファイルに書き込まれる。\n"
+"より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよ"
+"い。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2188
+#, no-wrap
+msgid "log_output"
+msgstr "log_output"
+
+#. type: Plain text
+#: sudoers.man:2202
+msgid ""
+"If set, B<sudo> will run the command in a pseudo-tty and log all output that "
+"is sent to the screen, similar to the script(1)  command.  For more "
+"information, see the I<I/O LOG FILES> section.  This flag is I<off> by "
+"default."
+msgstr ""
+"これをセットすると、B<sudo> は、I<擬似 tty> でコマンドを実行し、\n"
+"スクリーンに送られたすべての出力をログに取ることになる。\n"
+"script(1) コマンドと似たことをやるわけだ。\n"
+"より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよ"
+"い。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2202
+#, no-wrap
+msgid "log_year"
+msgstr "log_year"
+
+#. type: Plain text
+#: sudoers.man:2210
+msgid ""
+"If set, the four-digit year will be logged in the (non-syslog)  B<sudo> log "
+"file.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、四桁の年が (syslog 経由ではない) B<sudo> のログファイルに"
+"記入されることになる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2210
+#, no-wrap
+msgid "long_otp_prompt"
+msgstr "long_otp_prompt"
+
+#. type: Plain text
+#: sudoers.man:2222
+msgid ""
+"When validating with a One Time Password (OTP) scheme such as B<S/Key> or "
+"B<OPIE>, a two-line prompt is used to make it easier to cut and paste the "
+"challenge to a local window.  It's not as pretty as the default but some "
+"people find it more convenient.  This flag is I<off> by default."
+msgstr ""
+"B<S/Key> や B<OPIE> のような One Time Password (OTP) スキームを採用していると"
+"きにこれを有効にすると、\n"
+"チャレンジをローカルウィンドウにカット・アンド・ペーストしやすいように、\n"
+"二行のプロンプトが使用される。デフォルトのプロンプトほど見栄えはよくない"
+"が、\n"
+"こちらの方が便利だと思う人もいる。このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2222
+#, no-wrap
+msgid "mail_all_cmnds"
+msgstr "mail_all_cmnds"
+
+#. type: Plain text
+#: sudoers.man:2242
+msgid ""
+"Send mail to the I<mailto> user every time a user attempts to run a command "
+"via B<sudo> (this includes B<sudoedit>).  No mail will be sent if the user "
+"runs B<sudo> with the B<-l> or B<-v> option unless there is an "
+"authentication error and the I<mail_badpass> flag is also set.  This flag is "
+"I<off> by default."
+msgstr ""
+"ユーザが B<sudo> 経由でコマンドの実行を試みるたびに \n"
+"(B<sudoedit> の実行も含む)、I<mailto> ユーザにメールを送付する。\n"
+"ただし、ユーザが B<sudo> に B<-l> や B<-v> オプションを付けて実行したとき"
+"は、\n"
+"認証エラーがあり、しかも I<mail_badpass> フラグがセットされていないかぎり、\n"
+"メールを送付することはない。このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2242
+#, no-wrap
+msgid "mail_always"
+msgstr "mail_always"
+
+#. type: Plain text
+#: sudoers.man:2251
+msgid ""
+"Send mail to the I<mailto> user every time a user runs B<sudo>.  This flag "
+"is I<off> by default."
+msgstr ""
+"ユーザが B<sudo> を実行するたびに、I<mailto> ユーザにメールを送る。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2251
+#, no-wrap
+msgid "mail_badpass"
+msgstr "mail_badpass"
+
+#. type: Plain text
+#: sudoers.man:2271
+msgid ""
+"Send mail to the I<mailto> user if the user running B<sudo> does not enter "
+"the correct password.  If the command the user is attempting to run is not "
+"permitted by B<sudoers> and one of the I<mail_all_cmnds>, I<mail_always>, "
+"I<mail_no_host>, I<mail_no_perms> or I<mail_no_user> flags are set, this "
+"flag will have no effect.  This flag is I<off> by default."
+msgstr ""
+"B<sudo> を実行するユーザが正しいパスワードを入力しなかったら、\n"
+"I<mailto> ユーザにメールを送付する。ユーザが実行しようとしているコマンドが \n"
+"B<sudoers> によって許可されていない場合に、I<mail_all_cmnds>, \n"
+"I<mail_always>, I<mail_no_host>, I<mail_no_perms>, I<mail_no_user> \n"
+"フラグのどれかがセットされていると、このフラグは効果を持たないことになる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2271
+#, no-wrap
+msgid "mail_no_host"
+msgstr "mail_no_host"
+
+#. type: Plain text
+#: sudoers.man:2281
+msgid ""
+"If set, mail will be sent to the I<mailto> user if the invoking user exists "
+"in the I<sudoers> file, but is not allowed to run commands on the current "
+"host.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> を起動したユーザが I<sudoers> \n"
+"ファイルに記載されてはいるものの、\n"
+"使用中のホストでコマンドの実行を許可されていない場合に、\n"
+"I<mailto> ユーザにメールを送付する。このフラグはデフォルトでは \n"
+"I<off> である。"
+
+#. type: TP
+#: sudoers.man:2281
+#, no-wrap
+msgid "mail_no_perms"
+msgstr "mail_no_perms"
+
+#. type: Plain text
+#: sudoers.man:2293
+msgid ""
+"If set, mail will be sent to the I<mailto> user if the invoking user is "
+"allowed to use B<sudo> but the command they are trying is not listed in "
+"their I<sudoers> file entry or is explicitly denied.  This flag is I<off> by "
+"default."
+msgstr ""
+"これをセットすると、B<sudo> を起動したユーザが \n"
+"B<sudo> の使用を許可されているが、\n"
+"実行しようとしているコマンドが I<sudoers> ファイルの\n"
+"そのユーザのエントリに登録されていないか、明示的に禁止されている場合に、\n"
+"I<mailto> ユーザにメールを送付する。このフラグはデフォルトでは \n"
+"I<off> である。"
+
+#. type: TP
+#: sudoers.man:2293
+#, no-wrap
+msgid "mail_no_user"
+msgstr "mail_no_user"
+
+#. type: Plain text
+#: sudoers.man:2303
+msgid ""
+"If set, mail will be sent to the I<mailto> user if the invoking user is not "
+"in the I<sudoers> file.  This flag is I<on> by default."
+msgstr ""
+"これをセットすると、B<sudo> を起動したユーザが I<sudoers> \n"
+"ファイルに記載されていない場合に、I<mailto> ユーザにメールを送付する。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2303
+#, no-wrap
+msgid "netgroup_tuple"
+msgstr "netgroup_tuple"
+
+#. type: Plain text
+#: sudoers.man:2316
+msgid ""
+"If set, netgroup lookups will be performed using the full netgroup tuple: "
+"host name, user name and domain (if one is set).  Historically, B<sudo> only "
+"matched the user name and domain for netgroups used in a User_List and only "
+"matched the host name and domain for netgroups used in a Host_List.  This "
+"flag is I<off> by default."
+msgstr ""
+"これをセットすると、\n"
+"ネットグループの検索がネットグループのタプル全部を使って行われることになる\n"
+"(すなわち、ホスト名、ユーザ名、ドメインの三つが、それぞれ設定されているなら"
+"ば、\n"
+"使用される)。従来の B<sudo> では、\n"
+"User_List で使用されるネットグループについては、\n"
+"ユーザ名とドメインだけを照合し、Host_List で使用されるネットグループについて"
+"は、\n"
+"ホスト名とドメインだけを照合していた。このフラグはデフォルトでは I<off> であ"
+"る。"
+
+#. type: TP
+#: sudoers.man:2316 sudoers.man:4635
+#, no-wrap
+msgid "noexec"
+msgstr "noexec"
+
+#. type: Plain text
+#: sudoers.man:2333
+msgid ""
+"If set, all commands run via B<sudo> will behave as if the NOEXEC tag has "
+"been set, unless overridden by an EXEC tag.  See the description of I<EXEC "
+"and NOEXEC> above as well as the I<Preventing shell escapes> section at the "
+"end of this manual.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> を通して実行されるすべてのコマンドが、\n"
+"EXEC タグで無効にされないかぎり、\n"
+"あたかも NOEXEC タグが設定されているかのごとく振舞うようになる。\n"
+"前述の「I<EXEC> と I<NOEXEC>」の説明、および、\n"
+"このマニュアルの終わりの方にある「シェル・エスケープの防止」というセクション"
+"を参照していただきたい。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2333
+#, no-wrap
+msgid "pam_session"
+msgstr "pam_session"
+
+#. type: Plain text
+#: sudoers.man:2356
+msgid ""
+"On systems that use PAM for authentication, B<sudo> will create a new PAM "
+"session for the command to be run in.  Disabling I<pam_session> may be "
+"needed on older PAM implementations or on operating systems where opening a "
+"PAM session changes the utmp or wtmp files.  If PAM session support is "
+"disabled, resource limits may not be updated for the command being run.  If "
+"I<pam_session>, I<pam_setcred>, and I<use_pty> are disabled and I/O logging "
+"has not been configured, B<sudo> will execute the command directly instead "
+"of running it as a child process.  This flag is I<on> by default."
+msgstr ""
+"認証に PAM を使用するシステムでは、B<sudo> は新しい PAM セッションを作成"
+"し、\n"
+"その中でコマンドを実行する。PAM の実装が古い場合や、\n"
+"PAM セッションの開始が utmp や wtmp ファイルを変更するオペレーティングシステ"
+"ムでは、\n"
+"I<pam_session> を無効にする必要があるかもしれない。\n"
+"ただし、PAM セッションのサポートを無効にすると、\n"
+"実行されるコマンドに対するリソースの上限が更新されないかもしれない。\n"
+"なお、I<pam_session>, I<pam_setcred>, I<use_pty> が無効になっていて、\n"
+"しかも 入出力ロギングが設定されていない場合は、\n"
+"B<sudo> はコマンドを子プロセスとしてではなく、\n"
+"直接実行する。このフラグはデフォルトでは I<on> である。"
+
+#. type: Plain text
+#: sudoers.man:2358 sudoers.man:2829
+msgid "This setting is only supported by version 1.8.7 or higher."
+msgstr "この設定は、バージョン 1.8.7 以上でのみサポートされている。"
+
+#. type: TP
+#: sudoers.man:2358
+#, no-wrap
+msgid "pam_setcred"
+msgstr "pam_setcred"
+
+#. type: Plain text
+#: sudoers.man:2377
+msgid ""
+"On systems that use PAM for authentication, B<sudo> will attempt to "
+"establish credentials for the target user by default, if supported by the "
+"underlying authentication system.  One example of a credential is a Kerberos "
+"ticket.  If I<pam_session>, I<pam_setcred>, and I<use_pty> are disabled and "
+"I/O logging has not been configured, B<sudo> will execute the command "
+"directly instead of running it as a child process.  This flag is I<on> by "
+"default."
+msgstr ""
+"認証に PAM を使用するシステムでは、B<sudo> はデフォルトでは、\n"
+"使用している認証システムがサポートしているなら、変身対象ユーザの認証情報 \n"
+"(credential) が有効であることを確認しようとする。認証情報の例を一つ挙げれ"
+"ば、\n"
+"Kerberos のチケットがそれである。I<pam_session>, I<pam_setcred>, \n"
+"I<use_pty> が無効になっていて、しかも 入出力ロギングが設定されていない場合"
+"は、\n"
+"B<sudo> はコマンドを子プロセスとしてではなく、直接実行する。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: Plain text
+#: sudoers.man:2379 sudoers.man:3077 sudoers.man:3090
+msgid "This setting is only supported by version 1.8.8 or higher."
+msgstr "この設定は、バージョン 1.8.8 以上でのみサポートされている。"
+
+#. type: TP
+#: sudoers.man:2379
+#, no-wrap
+msgid "passprompt_override"
+msgstr "passprompt_override"
+
+#. type: Plain text
+#: sudoers.man:2394
+msgid ""
+"The password prompt specified by I<passprompt> will normally only be used if "
+"the password prompt provided by systems such as PAM matches the string "
+"\\(LqPassword:\\(Rq.  If I<passprompt_override> is set, I<passprompt> will "
+"always be used.  This flag is I<off> by default."
+msgstr ""
+"通常、I<passprompt> オプションによって指定されたパスワードプロンプトが使用さ"
+"れるのは、\n"
+"PAM のようなシステムが用意しているパスワードプロンプトが、\n"
+"\"Password:\" という文字列にマッチしているときだけである。\n"
+"I<passprompt_override> をセットすると、I<passprompt> が無条件で使われることに"
+"なる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2394
+#, no-wrap
+msgid "path_info"
+msgstr "path_info"
+
+#. type: Plain text
+#: sudoers.man:2412
+msgid ""
+"Normally, B<sudo> will tell the user when a command could not be found in "
+"their PATH environment variable.  Some sites may wish to disable this as it "
+"could be used to gather information on the location of executables that the "
+"normal user does not have access to.  The disadvantage is that if the "
+"executable is simply not in the user's PATH, B<sudo> will tell the user that "
+"they are not allowed to run it, which can be confusing.  This flag is I<on> "
+"by default."
+msgstr ""
+"通常 B<sudo> は、環境変数 PATH 中にコマンドが見付からないと、\n"
+"ユーザにその旨を知らせる。これを利用すれば、\n"
+"一般ユーザにアクセス権のない実行ファイルのありかについて情報を収集できるとい"
+"う理由から、\n"
+"この動作を無効にしたいサイトもあるかもしれない。\n"
+"その場合の欠点は、実行ファイルが単にユーザの PATH 中になかっただけの場合で"
+"も、\n"
+"実行の許可がないと B<sudo> がユーザに告げることになって、\n"
+"実情がわかりにくいかもしれないことである。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2412
+#, no-wrap
+msgid "preserve_groups"
+msgstr "preserve_groups"
+
+#. type: Plain text
+#: sudoers.man:2425
+msgid ""
+"By default, B<sudo> will initialize the group vector to the list of groups "
+"the target user is in.  When I<preserve_groups> is set, the user's existing "
+"group vector is left unaltered.  The real and effective group IDs, however, "
+"are still set to match the target user.  This flag is I<off> by default."
+msgstr ""
+"デフォルトでは、B<sudo> は所属グループの初期値として、\n"
+"変身対象ユーザが所属しているグループのリストを設定する。\n"
+"I<preserve_groups> をセットすると、\n"
+"B<sudo> を実行するユーザの所属グループのリストが、\n"
+"変更されずにそのまま維持される。とは言え、実グループ ID や実効グループ ID "
+"が、\n"
+"変身対象ユーザのそれに設定されることに変わりはない。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2425
+#, no-wrap
+msgid "pwfeedback"
+msgstr "pwfeedback"
+
+#. type: Plain text
+#: sudoers.man:2444
+msgid ""
+"By default, B<sudo> reads the password like most other Unix programs, by "
+"turning off echo until the user hits the return (or enter) key.  Some users "
+"become confused by this as it appears to them that B<sudo> has hung at this "
+"point.  When I<pwfeedback> is set, B<sudo> will provide visual feedback when "
+"the user presses a key.  Note that this does have a security impact as an "
+"onlooker may be able to determine the length of the password being entered.  "
+"This flag is I<off> by default."
+msgstr ""
+"ほかのたいていの Unix のプログラムと同様、\n"
+"B<sudo> はパスワードを読み込むとき、デフォルトでは、ユーザが Return\n"
+"(または Enter) キーを押すまで、エコーを off にする。\n"
+"この動作にとまどうユーザが存在する。\n"
+"彼らには B<sudo> が急に反応しなくなったように見えるのだ。\n"
+"I<pwfeedback> をセットすると、ユーザがキーを押すたびに、\n"
+"B<sudo> が目に見える反応を返すようになる。\n"
+"これには、セキュリティ上の問題があることに注意していただきたい。\n"
+"側で見ている人が、打ち込まれたパスワードの文字数を特定できてしまうかもしれな"
+"いのだ。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2444
+#, no-wrap
+msgid "requiretty"
+msgstr "requiretty"
+
+#. type: Plain text
+#: sudoers.man:2457
+msgid ""
+"If set, B<sudo> will only run when the user is logged in to a real tty.  "
+"When this flag is set, B<sudo> can only be run from a login session and not "
+"via other means such as cron(8)  or cgi-bin scripts.  This flag is I<off> by "
+"default."
+msgstr ""
+"これをセットすると、B<sudo> が実行されるのは、ユーザが実際の tty\n"
+"にログインしたときだけになる。すなわち、B<sudo> を実行できるのは、\n"
+"ログイン・セッションからだけであって、cron(8) や cgi-bin スクリプトといっ"
+"た、\n"
+"ほかの方法を介して実行することはできないということだ。\n"
+"このフラグは、デフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2457
+#, no-wrap
+msgid "root_sudo"
+msgstr "root_sudo"
+
+#. type: Plain text
+#: sudoers.man:2477
+msgid ""
+"If set, root is allowed to run B<sudo> too.  Disabling this prevents users "
+"from \\(Lqchaining\\(Rq B<sudo> commands to get a root shell by doing "
+"something like \\(Lqsudo sudo /bin/sh\\(Rq.  Note, however, that turning off "
+"I<root_sudo> will also prevent root from running B<sudoedit>.  Disabling "
+"I<root_sudo> provides no real additional security; it exists purely for "
+"historical reasons.  This flag is I<on> by default."
+msgstr ""
+"これをセットすると、root も B<sudo> を実行できるようになる。\n"
+"このフラグを無効にすると、ユーザがたとえば \"sudo sudo /bin/sh\"\n"
+"といったように B<sudo> コマンドを「連鎖的に」使って、\n"
+"ルートシェルを獲得することができなくなる。\n"
+"ところで、I<root_sudo> が off だと、\n"
+"root が B<sudoedit> まで実行できなくなることに注意していただきたい。\n"
+"I<root_sudo> を無効にしても、セキュリティが実際に向上するわけではない。\n"
+"このフラグが存在しているのは、\n"
+"もっぱら歴史的な理由からなのだ。このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2477
+#, no-wrap
+msgid "rootpw"
+msgstr "rootpw"
+
+#. type: Plain text
+#: sudoers.man:2486
+msgid ""
+"If set, B<sudo> will prompt for the root password instead of the password of "
+"the invoking user when running a command or editing a file.  This flag is "
+"I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> は、コマンドを実行したり、\n"
+"ファイルを編集したりするとき、起動したユーザのパスワードではなく、\n"
+"root のパスワードを要求するようになる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2486
+#, no-wrap
+msgid "runaspw"
+msgstr "runaspw"
+
+#. type: Plain text
+#: sudoers.man:2499
+msgid ""
+"If set, B<sudo> will prompt for the password of the user defined by the "
+"I<runas_default> option (defaults to root)  instead of the password of the "
+"invoking user when running a command or editing a file.  This flag is I<off> "
+"by default."
+msgstr ""
+"これをセットすると、B<sudo> は、コマンドを実行したり、\n"
+"ファイルを編集したりするとき、起動したユーザのパスワードではなく、\n"
+"I<sudoers> ファイルの I<runas_default> オプションで指定しているユーザーの\n"
+"(デフォルトでは root である) パスワードを要求するようになる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2499
+#, no-wrap
+msgid "set_home"
+msgstr "set_home"
+
+#. type: Plain text
+#: sudoers.man:2532
+msgid ""
+"If enabled and B<sudo> is invoked with the B<-s> option the HOME environment "
+"variable will be set to the home directory of the target user (which is root "
+"unless the B<-u> option is used).  This effectively makes the B<-s> option "
+"imply B<-H>.  Note that HOME is already set when the I<env_reset> option is "
+"enabled, so I<set_home> is only effective for configurations where either "
+"I<env_reset> is disabled or HOME is present in the I<env_keep> list.  This "
+"flag is I<off> by default."
+msgstr ""
+"これが有効なときに B<sudo> を B<-s> オプション付きで起動すると、\n"
+"環境変数 HOME が変身対象ユーザの (B<-u> オプションが使用されないかぎり、\n"
+"それは root である) ホームディレクトリに設定される。すなわち、 \n"
+"B<-s> オプションが B<-H> オプションを事実上兼ねることになるわけだ。\n"
+"気をつけてほしいのは、I<env_reset> が有効な場合、HOME はすでに \n"
+"(訳注: 変身対象ユーザのホームディレクトリに) 設定済みだということだ。\n"
+"だから、I<set_home> の効果があるのは、I<env_reset> が無効に設定されている"
+"か、\n"
+"I<env_keep> のリストに HOME が存在する場合だけである。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2532
+#, no-wrap
+msgid "set_logname"
+msgstr "set_logname"
+
+#. type: Plain text
+#: sudoers.man:2564
+msgid ""
+"Normally, B<sudo> will set the LOGNAME, USER and USERNAME environment "
+"variables to the name of the target user (usually root unless the B<-u> "
+"option is given).  However, since some programs (including the RCS revision "
+"control system) use LOGNAME to determine the real identity of the user, it "
+"may be desirable to change this behavior.  This can be done by negating the "
+"set_logname option.  Note that I<set_logname> will have no effect if the "
+"I<env_reset> option has not been disabled and the I<env_keep> list contains "
+"LOGNAME, USER or USERNAME.  This flag is I<on> by default."
+msgstr ""
+"通常 B<sudo> は環境変数 LOGNAME, USER, USERNAME を変身対象ユーザの名前 \n"
+"(B<-u> オプションが指定されていない場合、普通は root) にセットする。\n"
+"しかし、プログラムによっては \n"
+"(たとえば、RCS リビジョンコントロールシステムがその一つだが) \n"
+"ユーザが実際には誰であるかを判定するのに LOGNAME を使用していることがあり、\n"
+"そのため、この振舞いを変更したい場合もある。\n"
+"set_logname オプションに '!\\&' を付けて否定することで、それができる。\n"
+"なお I<env_reset> オプションを無効にしていない場合に、\n"
+"I<env_keep> のリストに LOGNAME, USER, USERNAME などが入っていると、\n"
+"I<set_logname> は効果を持たないので、注意していただきたい。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2564
+#, no-wrap
+msgid "set_utmp"
+msgstr "set_utmp"
+
+#. type: Plain text
+#: sudoers.man:2583
+msgid ""
+"When enabled, B<sudo> will create an entry in the utmp (or utmpx) file when "
+"a pseudo-tty is allocated.  A pseudo-tty is allocated by B<sudo> when the "
+"I<log_input>, I<log_output> or I<use_pty> flags are enabled.  By default, "
+"the new entry will be a copy of the user's existing utmp entry (if any), "
+"with the tty, time, type and pid fields updated.  This flag is I<on> by "
+"default."
+msgstr ""
+"これが有効になっていると、B<sudo> は擬似 tty を割り当てるときに、\n"
+"utmp (または utmpx) ファイルにエントリを作成する。\n"
+"B<sudo> によって擬似 tty の割り当てが行われるのは、I<log_input>, \n"
+"I<log_output>, I<use_pty> といったフラグが有効になっているときである。\n"
+"デフォルトでは、新しいエントリは、そのユーザの utmp エントリが存在すれば、\n"
+"そのコピーであり、tty, time, type, pid フィールドが更新される。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2583
+#, no-wrap
+msgid "setenv"
+msgstr "setenv"
+
+#. type: Plain text
+#: sudoers.man:2600
+msgid ""
+"Allow the user to disable the I<env_reset> option from the command line via "
+"the B<-E> option.  Additionally, environment variables set via the command "
+"line are not subject to the restrictions imposed by I<env_check>, "
+"I<env_delete>, or I<env_keep>.  As such, only trusted users should be "
+"allowed to set variables in this manner.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、ユーザがコマンドラインで B<-E> オプションを指定して、\n"
+"I<env_reset> オプションを無効にできるようになる。\n"
+"さらに、コマンドラインから設定する環境変数が \n"
+"I<env_check>, I<env_delete>, I<env_keep> による制限を受けなくなる。\n"
+"それ故、そのようなやり方で変数を設定することを許可するのは、\n"
+"信用できるユーザのみに限るべきだ。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2600
+#, no-wrap
+msgid "shell_noargs"
+msgstr "shell_noargs"
+
+#. type: Plain text
+#: sudoers.man:2614
+msgid ""
+"If set and B<sudo> is invoked with no arguments it acts as if the B<-s> "
+"option had been given.  That is, it runs a shell as root (the shell is "
+"determined by the SHELL environment variable if it is set, falling back on "
+"the shell listed in the invoking user's /etc/passwd entry if not).  This "
+"flag is I<off> by default."
+msgstr ""
+"これがセットされているとき、B<sudo> を引き数なしで起動すると、\n"
+"B<sudo> は B<-s> オプションが指定されたかのように振舞う。\n"
+"すなわち、root ユーザとしてシェルを実行するわけだ (シェルは、環境変数 \n"
+"SHELL がセットされていれば、それによって決まり、\n"
+"セットされていなければ、B<sudo> を起動したユーザの \n"
+"/etc/passwd エントリに登録されたものになる)。このフラグはデフォルトでは\n"
+"I<off> である。"
+
+#. type: TP
+#: sudoers.man:2614
+#, no-wrap
+msgid "stay_setuid"
+msgstr "stay_setuid"
+
+#. type: Plain text
+#: sudoers.man:2635
+msgid ""
+"Normally, when B<sudo> executes a command the real and effective UIDs are "
+"set to the target user (root by default).  This option changes that behavior "
+"such that the real UID is left as the invoking user's UID.  In other words, "
+"this makes B<sudo> act as a setuid wrapper.  This can be useful on systems "
+"that disable some potentially dangerous functionality when a program is run "
+"setuid.  This option is only effective on systems that support either the "
+"setreuid(2)  or setresuid(2)  system call.  This flag is I<off> by default."
+msgstr ""
+"通常 B<sudo> は、コマンドを実行するとき、実 UID と実効 UID \n"
+"を変身対象ユーザ (デフォルトでは root) のものにセットする。\n"
+"このオプションは、その振舞いを変更して、B<sudo> を起動したユーザの\n"
+"UID が、そのまま実 UID として残るようにするのだ。言い換えると、\n"
+"このオプションは B<sudo> を setuid ラッパーとして動作するようにするわけであ"
+"る。\n"
+"プログラムを setuid で動かすと、危険をもたらしかねないという理由から、\n"
+"ある種の機能を使えないようにしているシステムでは、\n"
+"このオプションが役に立つかもしれない。このオプションは、システムコールの \n"
+"setreuid() や setresuid() をサポートしているシステムでのみ有効である。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2635
+#, no-wrap
+msgid "sudoedit_checkdir"
+msgstr "sudoedit_checkdir"
+
+#. type: Plain text
+#: sudoers.man:2655
+msgid ""
+"If set, B<sudoedit> will check all directory components of the path to be "
+"edited for writability by the invoking user.  Symbolic links will not be "
+"followed in writable directories and B<sudoedit> will refuse to edit a file "
+"located in a writable directory.  These restrictions are not enforced when "
+"B<sudoedit> is run by root.  On some systems, if all directory components of "
+"the path to be edited are not readable by the target user, B<sudoedit> will "
+"be unable to edit the file.  This flag is I<on> by default."
+msgstr ""
+"これをセットすると、\n"
+"B<sudoedit> は、編集対象ファイルのパス中にあるディレクトリ部分のすべてについ"
+"て、\n"
+"B<sudoedit> を実行するユーザとって書き込み可能かどうかを、チェックすることに"
+"なる。\n"
+"ユーザに書き込み可能なディレクトリに存在するいかなるシンボリックリンクも、\n"
+"たどられることがなく、また、ユーザに書き込み可能なディレクトリにあるファイル"
+"の編集は、\n"
+"拒否されることになる。\n"
+"ただし、こうした制限は、B<sudoedit> を実行するユーザが root の場合には、行わ"
+"れない。\n"
+"システムによっては、編集対象ファイルのパス中にあるディレクトリ部分のすべて"
+"が、\n"
+"変身対象ユーザにとって読み込み可能でないかぎり、\n"
+"B<sudoedit> でファイルを編集できないものもある。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: Plain text
+#: sudoers.man:2660
+msgid ""
+"This setting was first introduced in version 1.8.15 but initially suffered "
+"from a race condition.  The check for symbolic links in writable "
+"intermediate directories was added in version 1.8.16."
+msgstr ""
+"この設定が最初に導入されたのは、バージョン 1.8.15 だったが、\n"
+"当初のものには競合状態を引き起こす欠陥があった。\n"
+"編集対象ファイルのパスの途中に書き込み可能なディレクトリがあり、\n"
+"そこにシンボリックリンクが存在する場合のチェックは、バージョン 1.8.16 で追加"
+"された。"
+
+#. type: TP
+#: sudoers.man:2660
+#, no-wrap
+msgid "sudoedit_follow"
+msgstr "sudoedit_follow"
+
+#. type: Plain text
+#: sudoers.man:2678
+msgid ""
+"By default, B<sudoedit> will not follow symbolic links when opening files.  "
+"The I<sudoedit_follow> option can be enabled to allow B<sudoedit> to open "
+"symbolic links.  It may be overridden on a per-command basis by the "
+"I<FOLLOW> and I<NOFOLLOW> tags.  This flag is I<off> by default."
+msgstr ""
+"B<sudoedit> はデフォルトでは、ファイルをオープンするときにシンボリックリンク"
+"をたどらない。\n"
+"I<sudoedit_follow> オプションを有効にすると、\n"
+"B<sudoedit> がシンボリックリンクをオープンできるようになる。\n"
+"そうした動作は I<FOLLOW> や I<NOFOLLOW> タグを使えば、\n"
+"コマンドごとに変更することができる。このフラグはデフォルトでは I<off> であ"
+"る。"
+
+#. type: Plain text
+#: sudoers.man:2680
+msgid "This setting is only supported by version 1.8.15 or higher."
+msgstr "この設定は、バージョン 1.8.15 以上でのみサポートされている。"
+
+#. type: TP
+#: sudoers.man:2680
+#, no-wrap
+msgid "targetpw"
+msgstr "targetpw"
+
+#. type: Plain text
+#: sudoers.man:2698
+msgid ""
+"If set, B<sudo> will prompt for the password of the user specified by the B<-"
+"u> option (defaults to root)  instead of the password of the invoking user "
+"when running a command or editing a file.  Note that this flag precludes the "
+"use of a uid not listed in the passwd database as an argument to the B<-u> "
+"option.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> は、コマンドを実行したり、\n"
+"ファイルを編集したりするとき、起動したユーザのパスワードではなく、\n"
+"B<-u> オプションで指定されたユーザ (デフォルトでは root) \n"
+"のパスワードを要求するようになる。\n"
+"このフラグを設定をすると、B<-u> オプションの引き数として、\n"
+"passwd データベースに登録されていない uid が使えなくなることに注意してほし"
+"い。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2698
+#, no-wrap
+msgid "tty_tickets"
+msgstr "tty_tickets"
+
+#. type: Plain text
+#: sudoers.man:2708
+msgid ""
+"If set, users must authenticate on a per-tty basis.  With this flag enabled, "
+"B<sudo> will use a separate record in the time stamp file for each tty.  If "
+"disabled, a single record is used for all login sessions.  This flag is "
+"I<on> by default."
+msgstr ""
+"これをセットすると、ユーザは tty ごとに認証をしなければならなくなる。\n"
+"このフラグが有効な場合、B<sudo> は、各 tty に対して、\n"
+"タイムスタンプ・ファイル中の、それぞれ別個に記録される情報を使用することにな"
+"る。\n"
+"それに対して、このフラグが無効な場合は、すべてのログイン・セッションに対し"
+"て、\n"
+"単一の記録が使用されるのである。このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2708
+#, no-wrap
+msgid "umask_override"
+msgstr "umask_override"
+
+#. type: Plain text
+#: sudoers.man:2728
+msgid ""
+"If set, B<sudo> will set the umask as specified in the I<sudoers> file "
+"without modification.  This makes it possible to specify a umask in the "
+"I<sudoers> file that is more permissive than the user's own umask and "
+"matches historical behavior.  If I<umask_override> is not set, B<sudo> will "
+"set the umask to be the union of the user's umask and what is specified in "
+"I<sudoers>.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> は umask を I<sudoers> の \n"
+"umask オプションで指定されたとおりの値に、変更を加えることなく設定する。\n"
+"このことによって、ユーザ自身の umask 値よりもっと緩やかな umask 値を\n"
+"I<sudoers> ファイルで指定することが可能になる。B<sudo> の昔の動作と同じになる"
+"わけだ。\n"
+"I<umask_override> をセットしない場合、\n"
+"現在の B<sudo> は umask を、ユーザの umask 値と I<sudoers> で指定した \n"
+"umask 値とのビット和に設定することになっている。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2728
+#, no-wrap
+msgid "use_netgroups"
+msgstr "use_netgroups"
+
+#. type: Plain text
+#: sudoers.man:2744
+msgid ""
+"If set, netgroups (prefixed with \\(oq+\\(cq), may be used in place of a "
+"user or host.  For LDAP-based sudoers, netgroup support requires an "
+"expensive substring match on the server unless the B<NETGROUP_BASE> "
+"directive is present in the I</etc/ldap.conf> file.  If netgroups are not "
+"needed, this option can be disabled to reduce the load on the LDAP server.  "
+"This flag is I<on> by default."
+msgstr ""
+"これをセットすると、ユーザやホストを指定する場所でネットグループ \n"
+"(接頭辞 '+' が付く) が使えるようになる。LDAP を使用する sudoers では、\n"
+"ネットグループをサポートすると、I</etc/ldap.conf> ファイルで \n"
+"B<NETGROUP_BASE> 設定オプションを指定していない場合に、\n"
+"サーバ側で負荷の高い部分文字列 (substring) のマッチングを行う必要が生じる。\n"
+"そこで、ネットグループを使用する必要がない場合は、\n"
+"このオプションを I<off> にすれば、LDAP サーバの負荷を減らすことができる。\n"
+"このフラグはデフォルトでは I<on> である。"
+
+#. type: TP
+#: sudoers.man:2744
+#, no-wrap
+msgid "use_pty"
+msgstr "use_pty"
+
+#. type: Plain text
+#: sudoers.man:2757
+msgid ""
+"If set, B<sudo> will run the command in a pseudo-pty even if no I/O logging "
+"is being gone.  A malicious program run under B<sudo> could conceivably fork "
+"a background process that retains to the user's terminal device after the "
+"main program has finished executing.  Use of this option will make that "
+"impossible.  This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> は入出力のロギングが行われていないときでも、\n"
+"擬似 tty でコマンドを実行することになる。\n"
+"B<sudo> によって実行された悪意のあるプログラムが、\n"
+"バックグラウンド・プロセスをフォークし、\n"
+"そのプロセスが、メインプログラムの実行が終了した後でも、\n"
+"ユーザのターミナルデバイスを握って離さないといったことが考えられる。\n"
+"このオプションを使えば、そういったことが不可能になる。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2757
+#, no-wrap
+msgid "utmp_runas"
+msgstr "utmp_runas"
+
+#. type: Plain text
+#: sudoers.man:2768
+msgid ""
+"If set, B<sudo> will store the name of the runas user when updating the utmp "
+"(or utmpx) file.  By default, B<sudo> stores the name of the invoking user.  "
+"This flag is I<off> by default."
+msgstr ""
+"これをセットすると、B<sudo> は utmp (または utmpx) ファイルを更新するとき、\n"
+"変身対象ユーザの名前を記録するようになる。B<sudo> はデフォルトでは、\n"
+"B<sudo> を実行したユーザの名前を記録するのだ。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: TP
+#: sudoers.man:2768
+#, no-wrap
+msgid "visiblepw"
+msgstr "visiblepw"
+
+#. type: Plain text
+#: sudoers.man:2788
+msgid ""
+"By default, B<sudo> will refuse to run if the user must enter a password but "
+"it is not possible to disable echo on the terminal.  If the I<visiblepw> "
+"flag is set, B<sudo> will prompt for a password even when it would be "
+"visible on the screen.  This makes it possible to run things like \\(Lqssh "
+"somehost sudo ls\\(Rq since by default, ssh(1)  does not allocate a tty when "
+"running a command.  This flag is I<off> by default."
+msgstr ""
+"デフォルトでは、ユーザがパスワードを入力しなければならないときに、\n"
+"使用しているターミナルでエコーの抑制ができなかったら、\n"
+"B<sudo> は実行を拒否するようになっている。\n"
+"それに対し、I<visiblepw> フラグが設定されていると、\n"
+"パスワードがスクリーンに表示されてしまう場合でも、\n"
+"B<sudo> はプロンプトを出して、パスワードを求めるようになる。\n"
+"ssh(1) はデフォルトでは、コマンドを実行する際に tty を割り当てないので、\n"
+"B<sudo> はエコーの抑制ができないが、その場合でも、この設定によって、\n"
+"\"ssh somehost sudo ls\" といった操作の実行が可能になるわけだ。\n"
+"このフラグはデフォルトでは I<off> である。"
+
+#. type: Plain text
+#: sudoers.man:2790
+msgid "B<Integers>:"
+msgstr "B<整数>:"
+
+#. type: TP
+#: sudoers.man:2790
+#, no-wrap
+msgid "closefrom"
+msgstr "closefrom"
+
+#. type: Plain text
+#: sudoers.man:2802
+msgid ""
+"Before it executes a command, B<sudo> will close all open file descriptors "
+"other than standard input, standard output and standard error (ie: file "
+"descriptors 0-2).  The I<closefrom> option can be used to specify a "
+"different file descriptor at which to start closing.  The default is 3."
+msgstr ""
+"B<sudo> はコマンドを実行する前に、標準入力、標準出力、標準エラー\n"
+"(すなわち、ファイルディスクリプタ 0-2 ) を除いて、\n"
+"開いているすべてのファイル・ディスクリプタをクローズする。\n"
+"I<closefrom> オプションを使用すると、\n"
+"0-2 以外のどのファイル・ディスクリプタから閉じて行くかを指定することができ"
+"る。\n"
+"デフォルトは 3 である。"
+
+#. type: TP
+#: sudoers.man:2802
+#, no-wrap
+msgid "maxseq"
+msgstr "maxseq"
+
+#. type: Plain text
+#: sudoers.man:2819
+msgid ""
+"The maximum sequence number that will be substituted for the \\(Lq"
+"%{seq}\\(Rq escape in the I/O log file (see the I<iolog_dir> description "
+"above for more information).  While the value substituted for \\(Lq"
+"%{seq}\\(Rq is in base 36, I<maxseq> itself should be expressed in decimal.  "
+"Values larger than 2176782336 (which corresponds to the base 36 sequence "
+"number \\(LqZZZZZZ\\(Rq)  will be silently truncated to 2176782336.  The "
+"default value is 2176782336."
+msgstr ""
+"入出力ログファイルで \n"
+"\"%{seq}\" エスケープシーケンスに置き換えられる連続番号の最大値 \n"
+"(詳細については、後述の I<iolog_dir> オプションの説明を参照すること)。\n"
+"\"%{seq}\" に置き換えられる値は 36 進数だが、I<maxseq> そのものは \n"
+"10 進数で指定するべきである。2176782336 (38 進数の連続番号では、\n"
+"\"ZZZZZZ\" に相当する) より大きい値は 、暗黙のうちに \n"
+"2176782336 に縮小される。デフォルトの値は 2176782336 である。"
+
+#. type: Plain text
+#: sudoers.man:2827
+msgid ""
+"Once the local sequence number reaches the value of I<maxseq>, it will "
+"\\(Lqroll over\\(Rq to zero, after which B<sudoers> will truncate and re-use "
+"any existing I/O log path names."
+msgstr ""
+"使用している連続番号が I<maxseq> の値に達したら、最初の値の 0 に戻る。\n"
+"それ以後は、B<sudoers> は存在している入出力ログファイルをサイズ 0 に短縮し"
+"て、\n"
+"そのパス名を再利用することになる。"
+
+#. type: TP
+#: sudoers.man:2829
+#, no-wrap
+msgid "passwd_tries"
+msgstr "passwd_tries"
+
+#. type: Plain text
+#: sudoers.man:2836
+msgid ""
+"The number of tries a user gets to enter his/her password before B<sudo> "
+"logs the failure and exits.  The default is 3."
+msgstr ""
+"B<sudo> が「失敗」をログに記録して終了する前に、\n"
+"ユーザがパスワードを入力できる回数。デフォルトは 3 回。"
+
+#. type: Plain text
+#: sudoers.man:2838
+msgid "B<Integers that can be used in a boolean context>:"
+msgstr "B<真偽値としても使用できる整数>:"
+
+#. type: TP
+#: sudoers.man:2838
+#, no-wrap
+msgid "loglinelen"
+msgstr "loglinelen"
+
+#. type: Plain text
+#: sudoers.man:2846
+msgid ""
+"Number of characters per line for the file log.  This value is used to "
+"decide when to wrap lines for nicer log files.  This has no effect on the "
+"syslog log file, only the file log.  The default is 80 (use 0 or negate the "
+"option to disable word wrap)."
+msgstr ""
+"B<sudo> 独自のログファイルの一行あたりの文字数。この値は、\n"
+"ログファイルを見やすくするために改行する位置を決めるのに使用される。\n"
+"この値は、syslog 経由のログファイルには影響せず、\n"
+"独自のファイルにログを記録するときのみ効果がある。デフォルトは 80 である \n"
+"(改行をしないようにするには、値を 0 にするか、頭に '!\\&' を付けて、\n"
+"このオプションを否定する)。"
+
+#. type: TP
+#: sudoers.man:2846
+#, no-wrap
+msgid "passwd_timeout"
+msgstr "passwd_timeout"
+
+#. type: Plain text
+#: sudoers.man:2859
+msgid ""
+"Number of minutes before the B<sudo> password prompt times out, or 0 for no "
+"timeout.  The timeout may include a fractional component if minute "
+"granularity is insufficient, for example 2.5.  The default is 5."
+msgstr ""
+"B<sudo> のパスワードプロンプトが時間切れになるまでの分単位の時間。\n"
+"0 を指定すると、時間切れなしになる。\n"
+"分よりももっと細かい時間を指定したかったら、2.5 のように、\n"
+"小数点以下を付けることもできる。デフォルトは 5 分。"
+
+#. type: TP
+#: sudoers.man:2859
+#, no-wrap
+msgid "timestamp_timeout"
+msgstr "timestamp_timeout"
+
+#. type: Plain text
+#: sudoers.man:2881
+msgid ""
+"Number of minutes that can elapse before B<sudo> will ask for a passwd "
+"again.  The timeout may include a fractional component if minute granularity "
+"is insufficient, for example 2.5.  The default is 5.  Set this to 0 to "
+"always prompt for a password.  If set to a value less than 0 the user's time "
+"stamp will not expire until the system is rebooted.  This can be used to "
+"allow users to create or delete their own time stamps via \\(Lqsudo -v\\(Rq "
+"and \\(Lqsudo -k\\(Rq respectively."
+msgstr ""
+"B<sudo> がパスワードを再び要求するようになるまでの時間を分単位で指定する。\n"
+"分よりももっと細かい時間を指定したかったら、2.5 のように、\n"
+"小数点以下を付けることもできる。デフォルトは 5 分である。\n"
+"これを 0 にセットすると、毎回パスワードを要求するようになる。\n"
+"0 よりも小さい値にセットすると、ユーザのタイムスタンプは、\n"
+"システムがリブートされるまで期限切れにならない。\n"
+"ユーザが \"sudo -v\" と \"sudo -k\" を実行することによって、\n"
+"タイムスタンプを自分で作ったり、消したりできるようにしたかったら、\n"
+"この手を使えばよい。"
+
+#. type: TP
+#: sudoers.man:2881
+#, no-wrap
+msgid "umask"
+msgstr "umask"
+
+#. type: Plain text
+#: sudoers.man:2897
+msgid ""
+"Umask to use when running the command.  Negate this option or set it to 0777 "
+"to preserve the user's umask.  The actual umask that is used will be the "
+"union of the user's umask and the value of the I<umask> option, which "
+"defaults to 0022.  This guarantees that B<sudo> never lowers the umask when "
+"running a command.  Note: on systems that use PAM, the default PAM "
+"configuration may specify its own umask which will override the value set in "
+"I<sudoers>."
+msgstr ""
+"コマンドを実行するときに使用する umask 値。\n"
+"ユーザの umask 値をそのまま使いたかったら、'!\\&' を頭に付けて、\n"
+"このオプションを否定するか、0777 にセットすればよい。\n"
+"このオプションの値が 0777 以外の場合、実際に使用される umask 値は、\n"
+"ユーザの umask 値と I<umask> オプションの値とのビット和であり、\n"
+"後者のデフォルトは 0022 である。\n"
+"このことによって、B<sudo> がコマンドを実行するときの umask 値が、\n"
+"ユーザの umask 値より低くならないようになっているわけだ。\n"
+"PAM を使用しているシステムでは、\n"
+"PAM のデフォルト設定で umask 値を指定することができるが、\n"
+"その場合は、それが I<sudoers> で指定する値に優先することに注意していただきた"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:2899
+msgid "B<Strings>:"
+msgstr "B<文字列>:"
+
+#. type: TP
+#: sudoers.man:2899
+#, no-wrap
+msgid "badpass_message"
+msgstr "badpass_message"
+
+#. type: Plain text
+#: sudoers.man:2905
+msgid ""
+"Message that is displayed if a user enters an incorrect password.  The "
+"default is Sorry, try again.  unless insults are enabled."
+msgstr ""
+"ユーザが不正なパスワードを入力したときに表示するメッセージ。\n"
+"I<insults> フラグが有効になっていないかぎり、\n"
+"デフォルトは「Sorry, try again.」である。"
+
+#. type: TP
+#: sudoers.man:2905
+#, no-wrap
+msgid "editor"
+msgstr "editor"
+
+#. type: Plain text
+#: sudoers.man:2927
+msgid ""
+"A colon (\\(oq:\\&\\(cq)  separated list of editors allowed to be used with "
+"B<visudo>.  B<visudo> will choose the editor that matches the user's EDITOR "
+"or VISUAL environment variable if possible, or the first editor in the list "
+"that exists and is executable.  Note that the EDITOR and VISUAL environment "
+"variables are not preserved by default when the I<env_reset> option is "
+"enabled.  The default is I<vi>."
+msgstr ""
+"B<visudo> で使用できるエディタをコロン (':\\&') で区切ったリスト。B<visudo> "
+"は、\n"
+"可能ならば、ユーザの EDITOR 環境変数や\n"
+"VISUAL 環境変数とマッチしたリスト中のエディタを選択する。\n"
+"それができないときは、このリストにあるエディタで、実際に存在し、\n"
+"かつ実行可能な最初のエディタを使用する。\n"
+"環境変数 EDITOR や VISUAL は、I<env_reset> オプションが有効な場合、\n"
+"デフォルトでは保存されないことに注意していただきたい。\n"
+"デフォルトは I<vi> である。"
+
+#. type: TP
+#: sudoers.man:2927
+#, no-wrap
+msgid "iolog_dir"
+msgstr "iolog_dir"
+
+#. type: Plain text
+#: sudoers.man:2943
+msgid ""
+"The top-level directory to use when constructing the path name for the input/"
+"output log directory.  Only used if the I<log_input> or I<log_output> "
+"options are enabled or when the LOG_INPUT or LOG_OUTPUT tags are present for "
+"a command.  The session sequence number, if any, is stored in the "
+"directory.  The default is I</var/log/sudo-io>."
+msgstr ""
+"このオプションの値をトップレベル・ディレクトリにして、\n"
+"入出力ログを置くディレクトリのパス名が構成される。この値が使用されるのは、\n"
+"I<log_input> や I<log_output> オプションが有効になっているときや、\n"
+"LOG_INPUT や LOG_OUTPUT タグがコマンドに付いているときだけである。\n"
+"このディレクトリ以下に、セッション ID が連番ならば、 \n"
+"セッションの連番が (訳注: 以下の \"%{seq}\" の説明にあるような形で) \n"
+"格納されることになるわけだ。デフォルトは I</var/log/sudo-io> である。"
+
+#. type: Plain text
+#: sudoers.man:2947
+msgid "The following percent (\\(oq%\\(cq)  escape sequences are supported:"
+msgstr "以下のパーセント ('%') エスケープシーケンスが使用できる。"
+
+#. type: TP
+#: sudoers.man:2950
+#, no-wrap
+msgid "%{seq}"
+msgstr "%{seq}"
+
+#. type: Plain text
+#: sudoers.man:2955
+msgid ""
+"expanded to a monotonically increasing base-36 sequence number, such as "
+"0100A5, where every two digits are used to form a new directory, e.g.\\& "
+"I<01/00/A5>"
+msgstr ""
+"単調に増加する 36 進数の連続番号に展開される。たとえば、0100A5 \n"
+"といった番号であり、二桁づつ使って新しいディレクトリを作っていく。\n"
+"この場合なら、I<01/00/A5> といった具合だ。"
+
+#. type: TP
+#: sudoers.man:2956
+#, no-wrap
+msgid "%{user}"
+msgstr "%{user}"
+
+#. type: Plain text
+#: sudoers.man:2959 sudoers.man:3129
+msgid "expanded to the invoking user's login name"
+msgstr "B<sudo> を実行するユーザーのログイン名に展開される。"
+
+#. type: TP
+#: sudoers.man:2959
+#, no-wrap
+msgid "%{group}"
+msgstr "%{group}"
+
+#. type: Plain text
+#: sudoers.man:2962
+msgid "expanded to the name of the invoking user's real group ID"
+msgstr "B<sudo> を実行するユーザーの実グループ ID の名前に展開される。"
+
+#. type: TP
+#: sudoers.man:2962
+#, no-wrap
+msgid "%{runas_user}"
+msgstr "%{runas_user}"
+
+#. type: Plain text
+#: sudoers.man:2966
+msgid ""
+"expanded to the login name of the user the command will be run as (e.g.\\& "
+"root)"
+msgstr "変身対象ユーザのログイン名に展開される (たとえば root)。"
+
+#. type: TP
+#: sudoers.man:2966
+#, no-wrap
+msgid "%{runas_group}"
+msgstr "%{runas_group}"
+
+#. type: Plain text
+#: sudoers.man:2970
+msgid ""
+"expanded to the group name of the user the command will be run as (e.g.\\& "
+"wheel)"
+msgstr "変身対象ユーザのグループ名に展開される (たとえば wheel)。"
+
+#. type: TP
+#: sudoers.man:2970
+#, no-wrap
+msgid "%{hostname}"
+msgstr "%{hostname}"
+
+#. type: Plain text
+#: sudoers.man:2973 sudoers.man:3113
+msgid "expanded to the local host name without the domain name"
+msgstr "ドメイン名なしのローカル・ホスト名に展開される。"
+
+#. type: TP
+#: sudoers.man:2973
+#, no-wrap
+msgid "%{command}"
+msgstr "%{command}"
+
+#. type: Plain text
+#: sudoers.man:2976
+msgid "expanded to the base name of the command being run"
+msgstr "実行されるコマンドのベースネームに展開される。"
+
+#. type: Plain text
+#: sudoers.man:2980
+msgid ""
+"In addition, any escape sequences supported by the system's strftime(3)  "
+"function will be expanded."
+msgstr ""
+"このほか、システムの strftime(3) 関数がサポートしているエスケープシーケンス"
+"は、\n"
+"いかなるものでも展開の対象になる。"
+
+#. type: Plain text
+#: sudoers.man:2986
+msgid ""
+"To include a literal \\(oq%\\(cq character, the string \\(oq%%\\(cq should "
+"be used."
+msgstr "'%' 文字そのものを使いたかったら、文字列 '%%' を使用すればよい。"
+
+#. type: TP
+#: sudoers.man:2987
+#, no-wrap
+msgid "iolog_file"
+msgstr "iolog_file"
+
+#. type: Plain text
+#: sudoers.man:3005
+msgid ""
+"The path name, relative to I<iolog_dir>, in which to store input/output logs "
+"when the I<log_input> or I<log_output> options are enabled or when the "
+"LOG_INPUT or LOG_OUTPUT tags are present for a command.  Note that "
+"I<iolog_file> may contain directory components.  The default is \\(Lq"
+"%{seq}\\(Rq."
+msgstr ""
+"I<iolog_dir> を基点とする相対パス名であり、I<log_input> や \n"
+"I<log_output> オプションが有効になっていたり、LOG_INPUT や LOG_OUTPUT \n"
+"タグがコマンドに付いている場合に、入出力ログがこの中に格納される。\n"
+"I<iolog_file> の値が複数のディレクトリ構成要素を含んでいることがあるのに注意"
+"していただきたい。\n"
+"デフォルトは \"%{seq}\" である。"
+
+#. type: Plain text
+#: sudoers.man:3011
+msgid ""
+"See the I<iolog_dir> option above for a list of supported percent (\\(oq%"
+"\\(cq)  escape sequences."
+msgstr ""
+"使用できるパーセント ('%') エスケープシーケンスのリストについては、\n"
+"上記の I<iolog_dir> オプションを参照。"
+
+#. type: Plain text
+#: sudoers.man:3020
+msgid ""
+"In addition to the escape sequences, path names that end in six or more Xs "
+"will have the Xs replaced with a unique combination of digits and letters, "
+"similar to the mktemp(3)  function."
+msgstr ""
+"エスケープシーケンスの展開とは別に、パス名が六個以上の X で終わっている場合"
+"は、\n"
+"X の部分が、他と重複しない英数字の組み合わせに置き換えられる。\n"
+"mktemp(3) 関数の場合と同様である。"
+
+#. type: Plain text
+#: sudoers.man:3031
+msgid ""
+"If the path created by concatenating I<iolog_dir> and I<iolog_file> already "
+"exists, the existing I/O log file will be truncated and overwritten unless "
+"I<iolog_file> ends in six or more Xs."
+msgstr ""
+"I<iolog_dir> と I<iolog_file> を結合して作られるパスがすでに存在している場合"
+"は、\n"
+"I<iolog_file> が 6 個以上の X で終わっていないかぎり、\n"
+"既存の入出力ログファイルは、サイズ 0 に短縮された上で、上書きされることにな"
+"る。"
+
+#. type: TP
+#: sudoers.man:3031
+#, no-wrap
+msgid "lecture_status_dir"
+msgstr "lecture_status_dir"
+
+#. type: Plain text
+#: sudoers.man:3045
+msgid ""
+"The directory in which B<sudo> stores per-user lecture status files.  Once a "
+"user has received the lecture, a zero-length file is created in this "
+"directory so that B<sudo> will not lecture the user again.  This directory "
+"should I<not> be cleared when the system reboots.  The default is I</var/lib/"
+"sudo/lectured>."
+msgstr ""
+"B<sudo> はこのディレクトリに、\n"
+"ユーザが訓戒を受けたかどうかを示すファイルを、ユーザごとに入れておく。\n"
+"ユーザが訓戒を受けると、サイズ 0 のファイルがこのディレクトリに作成され、\n"
+"B<sudo> はそのユーザに再び訓戒を行わなくなる。このディレクトリは、\n"
+"システムのブート時にI<消去すべきではない>。\n"
+"デフォルトは I</var/lib/sudo/lectured> である。"
+
+#. type: TP
+#: sudoers.man:3045
+#, no-wrap
+msgid "mailsub"
+msgstr "mailsub"
+
+#. type: Plain text
+#: sudoers.man:3055
+msgid ""
+"Subject of the mail sent to the I<mailto> user.  The escape %h will expand "
+"to the host name of the machine.  Default is \\(Lq*** SECURITY information "
+"for %h ***\\(Rq."
+msgstr ""
+"I<mailto> ユーザに送付するメールの件名。\n"
+"エスケープ文字 %h はマシンのホスト名に展開される。\n"
+"デフォルトは「*** SECURITY information for %h ***」である。"
+
+#. type: TP
+#: sudoers.man:3055
+#, no-wrap
+msgid "noexec_file"
+msgstr "noexec_file"
+
+#. type: Plain text
+#: sudoers.man:3063
+msgid ""
+"As of B<sudo> version 1.8.1 this option is no longer supported.  The path to "
+"the noexec file should now be set in the sudo.conf(5)  file."
+msgstr ""
+"B<sudo> バージョン 1.8.1 以来、このオプションはサポートされていない。\n"
+"現在では、noexec ファイルのパスは sudo.conf(5) ファイルで設定するべきである。"
+
+#. type: TP
+#: sudoers.man:3063
+#, no-wrap
+msgid "pam_login_service"
+msgstr "pam_login_service"
+
+#. type: Plain text
+#: sudoers.man:3075
+msgid ""
+"On systems that use PAM for authentication, this is the service name used "
+"when the B<-i> option is specified.  The default value is \\(Lqsudo\\(Rq.  "
+"See the description of I<pam_service> for more information."
+msgstr ""
+"PAM を認証に使用しているシステムでは、このオプションの値が、\n"
+"B<sudo> コマンドに B<-i> オプションが指定されたとき使用されるサービス名にな"
+"る。\n"
+"デフォルトの値は、\n"
+"\"sudo\" である。I<pam_service> の説明もご覧いただきたい。"
+
+#. type: TP
+#: sudoers.man:3077
+#, no-wrap
+msgid "pam_service"
+msgstr "pam_service"
+
+#. type: Plain text
+#: sudoers.man:3088
+msgid ""
+"On systems that use PAM for authentication, the service name specifies the "
+"PAM policy to apply.  This usually corresponds to an entry in the I<pam."
+"conf> file or a file in the I</etc/pam.d> directory.  The default value is "
+"\\(Lqsudo\\(Rq."
+msgstr ""
+"PAM を使用しているシステムでは、このオプションで指定するサービス名が、\n"
+"適用される PAM ポリシーを指定することになる。サービス名は I<pam.conf> \n"
+"ファイル中のエントリ名や、I</etc/pam.d> にあるファイル名に対応している。\n"
+"デフォルトの値は \"sudo\" である。"
+
+#. type: TP
+#: sudoers.man:3090
+#, no-wrap
+msgid "passprompt"
+msgstr "passprompt"
+
+#. type: Plain text
+#: sudoers.man:3100
+msgid ""
+"The default prompt to use when asking for a password; can be overridden via "
+"the B<-p> option or the SUDO_PROMPT environment variable.  The following "
+"percent (\\(oq%\\(cq)  escape sequences are supported:"
+msgstr ""
+"パスワードを要求するときに使用するデフォルトのプロンプト。\n"
+"B<-p> オプションや環境変数 SUDO_PROMPT によって変更することができる。\n"
+"以下のパーセント ('%') エスケープシーケンスが使用できる。"
+
+#. type: TP
+#: sudoers.man:3103
+#, no-wrap
+msgid "%H"
+msgstr "%H"
+
+#. type: Plain text
+#: sudoers.man:3109
+msgid ""
+"expanded to the local host name including the domain name (only if the "
+"machine's host name is fully qualified or the I<fqdn> option is set)"
+msgstr ""
+"ドメイン名付きのローカルホスト名に展開される (マシンのホスト名が完全修飾名"
+"か、\n"
+"I<fqdn> オプションがセットされている場合のみ)。"
+
+#. type: TP
+#: sudoers.man:3110
+#, no-wrap
+msgid "%h"
+msgstr "%h"
+
+#. type: TP
+#: sudoers.man:3113
+#, no-wrap
+msgid "%p"
+msgstr "%p"
+
+#. type: Plain text
+#: sudoers.man:3122
+msgid ""
+"expanded to the user whose password is being asked for (respects the "
+"I<rootpw>, I<targetpw> and I<runaspw> flags in I<sudoers>)"
+msgstr ""
+"パスワードを要求されているユーザ名に展開 (I<sudoers> ファイルの \n"
+"I<rootpw>, I<targetpw>, I<runaspw> フラグを尊重する)。"
+
+#. type: TP
+#: sudoers.man:3122
+#, no-wrap
+msgid "\\&%U"
+msgstr "\\&%U"
+
+#. type: Plain text
+#: sudoers.man:3126
+msgid ""
+"expanded to the login name of the user the command will be run as (defaults "
+"to root)"
+msgstr "変身対象ユーザの (デフォルトでは root) ログイン名に展開。"
+
+#. type: TP
+#: sudoers.man:3126
+#, no-wrap
+msgid "%u"
+msgstr "%u"
+
+#. type: TP
+#: sudoers.man:3129
+#, no-wrap
+msgid "%%"
+msgstr "%%"
+
+#. type: Plain text
+#: sudoers.man:3136
+msgid "two consecutive % characters are collapsed into a single % character"
+msgstr "連続した二個の % は、一個の % 文字そのものを意味する。"
+
+#. type: Plain text
+#: sudoers.man:3139
+msgid "The default value is \\(LqPassword: \\(Rq."
+msgstr "デフォルトの値は「Password:」である。"
+
+#. type: TP
+#: sudoers.man:3140
+#, no-wrap
+msgid "role"
+msgstr "role"
+
+#. type: Plain text
+#: sudoers.man:3150
+msgid ""
+"The default SELinux role to use when constructing a new security context to "
+"run the command.  The default role may be overridden on a per-command basis "
+"in the I<sudoers> file or via command line options.  This option is only "
+"available when B<sudo> is built with SELinux support."
+msgstr ""
+"コマンドの実行に当たって \n"
+"SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、\n"
+"デフォルトのロール。デフォルトのロールは、\n"
+"I<sudoers> ファイルや、コマンドラインオプションを使って、\n"
+"コマンドごとに変更することができる。このオプションが利用できるのは、\n"
+"B<sudo> が SELinux サポートつきでビルドされたときだけである。"
+
+#. type: TP
+#: sudoers.man:3150
+#, no-wrap
+msgid "runas_default"
+msgstr "runas_default"
+
+#. type: Plain text
+#: sudoers.man:3157
+msgid ""
+"The default user to run commands as if the B<-u> option is not specified on "
+"the command line.  This defaults to root."
+msgstr ""
+"コマンドラインで B<-u> オプションが指定されていないときの、\n"
+"デフォルトの変身対象ユーザ。デフォルトでは root になっている。"
+
+#. type: TP
+#: sudoers.man:3157
+#, no-wrap
+msgid "syslog_badpri"
+msgstr "syslog_badpri"
+
+#. type: Plain text
+#: sudoers.man:3162
+msgid ""
+"Syslog priority to use when user authenticates unsuccessfully.  Defaults to "
+"alert."
+msgstr ""
+"ユーザが認証に失敗したときに使用する syslog の重大度 (priority)。\n"
+"デフォルトでは alert になっている。"
+
+#. type: Plain text
+#: sudoers.man:3173
+msgid ""
+"The following syslog priorities are supported: B<alert>, B<crit>, B<debug>, "
+"B<emerg>, B<err>, B<info>, B<notice>, and B<warning>."
+msgstr ""
+"syslog の重大度には、次のものが指定できる。B<emerg>, B<alert>,\n"
+"B<crit>, B<err>, B<warning>, B<notice>, B<info>, B<debug>。"
+
+#. type: TP
+#: sudoers.man:3173
+#, no-wrap
+msgid "syslog_goodpri"
+msgstr "syslog_goodpri"
+
+#. type: Plain text
+#: sudoers.man:3178
+msgid ""
+"Syslog priority to use when user authenticates successfully.  Defaults to "
+"notice."
+msgstr ""
+"ユーザが認証に成功したときに使用する syslog の重大度 (priority)。\n"
+"デフォルトでは notice になっている。"
+
+#. type: Plain text
+#: sudoers.man:3182
+msgid "See I<syslog_badpri> for the list of supported syslog priorities."
+msgstr ""
+"どんな syslog の重大度が指定できるかについては、\n"
+"I<syslog_badpri> を参照。"
+
+#. type: TP
+#: sudoers.man:3182
+#, no-wrap
+msgid "sudoers_locale"
+msgstr "sudoers_locale"
+
+#. type: Plain text
+#: sudoers.man:3189
+msgid ""
+"Locale to use when parsing the sudoers file, logging commands, and sending "
+"email.  Note that changing the locale may affect how sudoers is "
+"interpreted.  Defaults to \\(LqC\\(Rq."
+msgstr ""
+"sudoers ファイルを解析したり、コマンドのログを記録したり、\n"
+"email を送付したりするときに使用するロケール。\n"
+"ロケールの変更は、sudoers の解釈に影響があるかもしれないので、\n"
+"気をつけていただきたい。デフォルトでは \"C\" になっている。"
+
+#. type: TP
+#: sudoers.man:3189
+#, no-wrap
+msgid "timestampdir"
+msgstr "timestampdir"
+
+#. type: Plain text
+#: sudoers.man:3197
+msgid ""
+"The directory in which B<sudo> stores its time stamp files.  This directory "
+"should be cleared when the system reboots.  The default is I</var/run/sudo/"
+"ts>."
+msgstr ""
+"B<sudo> がタイムスタンプ・ファイルを置くディレクトリ。\n"
+"このディレクトリは、システムがリブートするとき、クリアされるべきである。\n"
+"デフォルトは I</var/run/sudo/ts> になっている。"
+
+#. type: TP
+#: sudoers.man:3197
+#, no-wrap
+msgid "timestampowner"
+msgstr "timestampowner"
+
+#. type: Plain text
+#: sudoers.man:3203
+msgid ""
+"The owner of the lecture status directory, time stamp directory and all "
+"files stored therein.  The default is root."
+msgstr ""
+"ユーザが訓戒を受けたかどうかを示すファイルを入れておくディレクトリや、\n"
+"タイムスタンプ・ディレクトリ、\n"
+"及びそうしたディレクトリに置かれるすべてのファイルの所有者。\n"
+"デフォルトは root である。"
+
+#. type: TP
+#: sudoers.man:3203
+#, no-wrap
+msgid "type"
+msgstr "type"
+
+#. type: Plain text
+#: sudoers.man:3213
+msgid ""
+"The default SELinux type to use when constructing a new security context to "
+"run the command.  The default type may be overridden on a per-command basis "
+"in the I<sudoers> file or via command line options.  This option is only "
+"available when B<sudo> is built with SELinux support."
+msgstr ""
+"コマンドの実行に当たって \n"
+"SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、\n"
+"デフォルトのタイプ。デフォルトのタイプは、\n"
+"I<sudoers> ファイルや、コマンドラインオプションを使って、\n"
+"コマンドごとに変更することができる。このオプションが利用できるのは、\n"
+"B<sudo> が SELinux サポートつきでビルドされたときだけである。"
+
+#. type: Plain text
+#: sudoers.man:3215
+msgid "B<Strings that can be used in a boolean context>:"
+msgstr "B<真偽値としても使用できる文字列>:"
+
+#. type: TP
+#: sudoers.man:3215
+#, no-wrap
+msgid "env_file"
+msgstr "env_file"
+
+#. type: Plain text
+#: sudoers.man:3232
+msgid ""
+"The I<env_file> option specifies the fully qualified path to a file "
+"containing variables to be set in the environment of the program being run.  "
+"Entries in this file should either be of the form \\(LqVARIABLE=value\\(Rq "
+"or \\(Lqexport VARIABLE=value\\(Rq.  The value may optionally be surrounded "
+"by single or double quotes.  Variables in this file are subject to other "
+"B<sudo> environment settings such as I<env_keep> and I<env_check>."
+msgstr ""
+"I<env_file> オプションでは、\n"
+"実行するプログラムの環境に設定する変数を記載したファイルの絶対パスを指定す"
+"る。\n"
+"このファイルに記載する項目は、\"VARIABLE=value\" か \"export VARIABLE=value"
+"\"\n"
+"の形でなければならない。変数の値をシングルクォートやダブルクォートで囲んでも"
+"よい。\n"
+"このファイルに含まれる変数は、I<env_keep> や I<env_check> のような \n"
+"B<sudo> のほかの環境設定の影響を受ける。"
+
+#. type: TP
+#: sudoers.man:3232
+#, no-wrap
+msgid "exempt_group"
+msgstr "exempt_group"
+
+#. type: Plain text
+#: sudoers.man:3239
+msgid ""
+"Users in this group are exempt from password and PATH requirements.  The "
+"group name specified should not include a % prefix.  This is not set by "
+"default."
+msgstr ""
+"このグループのユーザはパスワードの入力や I<secure_path> などによる \n"
+"PATH の限定を免除される。指定するグループ名に接頭辞の % を付けてはいけな"
+"い。\n"
+"このオプションはデフォルトではセットされていない。"
+
+#. type: TP
+#: sudoers.man:3239
+#, no-wrap
+msgid "group_plugin"
+msgstr "group_plugin"
+
+#. type: Plain text
+#: sudoers.man:3251
+msgid ""
+"A string containing a B<sudoers> group plugin with optional arguments.  The "
+"string should consist of the plugin path, either fully-qualified or relative "
+"to the I</usr/local/libexec/sudo> directory, followed by any configuration "
+"arguments the plugin requires.  These arguments (if any) will be passed to "
+"the plugin's initialization function.  If arguments are present, the string "
+"must be enclosed in double quotes (\\&\"\")."
+msgstr ""
+"このオプションの値となる文字列には、\n"
+"B<sudoers> が使用するグループ・プラグインと、必要ならその引き数を指定する。\n"
+"値となる文字列は、プラグインのパスに続けて、その設定に必要な引き数があれ"
+"ば、\n"
+"それを付け加えたものだが、パスは絶対パスか、\n"
+"I</usr/local/libexec/sudo> を基点とする相対パスにするべきである。\n"
+"引き数が存在するなら、それはプラグインの初期化関数に渡される。\n"
+"引き数が存在する場合は、文字列全体をダブルクォート (\\&\"\") で囲まなければな"
+"らない。"
+
+#. type: Plain text
+#: sudoers.man:3254
+msgid "For more information see GROUP PROVIDER PLUGINS."
+msgstr ""
+"詳細については、\n"
+"「グループ・プロバイダー・プラグイン」セクションををご覧いただきたい。"
+
+#. type: TP
+#: sudoers.man:3254
+#, no-wrap
+msgid "lecture"
+msgstr "lecture"
+
+#. type: Plain text
+#: sudoers.man:3259
+msgid ""
+"This option controls when a short lecture will be printed along with the "
+"password prompt.  It has the following possible values:"
+msgstr ""
+"B<sudo> はパスワードプロンプトに添えて簡単な訓戒を表示することができる。\n"
+"このオプションはその訓戒をいつ表示するかを決定する。以下の値が可能である。"
+
+#. type: TP
+#: sudoers.man:3262 sudoers.man:3312 sudoers.man:3445
+#, no-wrap
+msgid "always"
+msgstr "always"
+
+#. type: Plain text
+#: sudoers.man:3265
+msgid "Always lecture the user."
+msgstr "いつでも必ず訓戒を表示する。"
+
+#. type: TP
+#: sudoers.man:3266 sudoers.man:3325 sudoers.man:3457
+#, no-wrap
+msgid "never"
+msgstr "never"
+
+#. type: Plain text
+#: sudoers.man:3269
+msgid "Never lecture the user."
+msgstr "訓戒をまったく表示しない。"
+
+#. type: TP
+#: sudoers.man:3269
+#, no-wrap
+msgid "once"
+msgstr "once"
+
+#. type: Plain text
+#: sudoers.man:3273
+msgid "Only lecture the user the first time they run B<sudo>."
+msgstr "ユーザがはじめて B<sudo> を実行したときだけ表示する。"
+
+#. type: Plain text
+#: sudoers.man:3282
+msgid ""
+"If no value is specified, a value of I<once> is implied.  Negating the "
+"option results in a value of I<never> being used.  The default value is "
+"I<once>."
+msgstr ""
+"値を指定しないと、I<once> を指定したことになる。頭に '!' を付けて、\n"
+"このオプションを否定すると、値に I<never> が使用される。\n"
+"デフォルトの値は I<once> である。"
+
+#. type: TP
+#: sudoers.man:3283
+#, no-wrap
+msgid "lecture_file"
+msgstr "lecture_file"
+
+#. type: Plain text
+#: sudoers.man:3292
+msgid ""
+"Path to a file containing an alternate B<sudo> lecture that will be used in "
+"place of the standard lecture if the named file exists.  By default, B<sudo> "
+"uses a built-in lecture."
+msgstr ""
+"標準の訓戒とは別の B<sudo> の訓戒を書き込んだファイルのパス。\n"
+"指名したファイルが存在すれば、B<sudo> は標準の訓戒の代わりに、それを使用す"
+"る。\n"
+"デフォルトでは、プログラムに埋め込まれた訓戒が使用される。"
+
+#. type: TP
+#: sudoers.man:3292
+#, no-wrap
+msgid "listpw"
+msgstr "listpw"
+
+#. type: Plain text
+#: sudoers.man:3300
+msgid ""
+"This option controls when a password will be required when a user runs "
+"B<sudo> with the B<-l> option.  It has the following possible values:"
+msgstr ""
+"このオプションは、B<sudo> を B<-l> オプション付きで実行したとき、\n"
+"ユーザがパスワードを要求されるのは、どんな場合かを決定する。\n"
+"以下の値が可能である。"
+
+#. type: TP
+#: sudoers.man:3303 sudoers.man:3437
+#, no-wrap
+msgid "all"
+msgstr "all"
+
+#. type: Plain text
+#: sudoers.man:3311 sudoers.man:3444
+msgid ""
+"All the user's I<sudoers> file entries for the current host must have the "
+"NOPASSWD flag set to avoid entering a password."
+msgstr ""
+"パスワードを入力しないですむためには、\n"
+"I<sudoers> ファイルの使用中のホストに対する当該ユーザのエントリのすべてに\n"
+"NOPASSWD タグが設定されていなければならない。"
+
+#. type: Plain text
+#: sudoers.man:3317
+msgid "The user must always enter a password to use the B<-l> option."
+msgstr ""
+"ユーザは B<-l> オプションを使用する際に、必ずパスワードを入力しなければならな"
+"い。"
+
+#. type: TP
+#: sudoers.man:3317 sudoers.man:3450
+#, no-wrap
+msgid "any"
+msgstr "any"
+
+#. type: Plain text
+#: sudoers.man:3325 sudoers.man:3457
+msgid ""
+"At least one of the user's I<sudoers> file entries for the current host must "
+"have the NOPASSWD flag set to avoid entering a password."
+msgstr ""
+"パスワードを入力しないですむためには、\n"
+"I<sudoers> ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一"
+"つに \n"
+"NOPASSWD タグが設定されていなければならない。"
+
+#. type: Plain text
+#: sudoers.man:3330
+msgid "The user need never enter a password to use the B<-l> option."
+msgstr ""
+"ユーザは B<-l> オプションを使用する際に、パスワードを入力する必要がまったくな"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:3339
+msgid ""
+"If no value is specified, a value of I<any> is implied.  Negating the option "
+"results in a value of I<never> being used.  The default value is I<any>."
+msgstr ""
+"値を指定しないと、値は I<any> だと見なされる。'!' を頭に付けて、\n"
+"このオプションを否定すると、値に I<never> が使われることになる。\n"
+"デフォルトは I<any> である。"
+
+#. type: TP
+#: sudoers.man:3340
+#, no-wrap
+msgid "logfile"
+msgstr "logfile"
+
+#. type: Plain text
+#: sudoers.man:3350
+msgid ""
+"Path to the B<sudo> log file (not the syslog log file).  Setting a path "
+"turns on logging to a file; negating this option turns it off.  By default, "
+"B<sudo> logs via syslog."
+msgstr ""
+"B<sudo> 独自のログファイルのパス (syslog 経由のログファイルではない)。\n"
+"パスを指定すると、独自ファイルへのロギングが on になり、 \n"
+"'!' を頭に付けて、このオプションを否定すると、off になる。\n"
+"デフォルトでは、B<sudo> は syslog 経由でログを取る。"
+
+#. type: TP
+#: sudoers.man:3350
+#, no-wrap
+msgid "mailerflags"
+msgstr "mailerflags"
+
+#. type: Plain text
+#: sudoers.man:3354
+msgid "Flags to use when invoking mailer. Defaults to B<-t>."
+msgstr ""
+"メーラを起動するときに使用するフラグ。デフォルトは B<-t> になっている。"
+
+#. type: TP
+#: sudoers.man:3354
+#, no-wrap
+msgid "mailerpath"
+msgstr "mailerpath"
+
+#. type: Plain text
+#: sudoers.man:3358
+msgid ""
+"Path to mail program used to send warning mail.  Defaults to the path to "
+"sendmail found at configure time."
+msgstr ""
+"警告メールの送信に使用するメール・プログラムのパス。\n"
+"デフォルトは configure したときに見つかった sendmail のパス。"
+
+#. type: TP
+#: sudoers.man:3358
+#, no-wrap
+msgid "mailfrom"
+msgstr "mailfrom"
+
+#. type: Plain text
+#: sudoers.man:3372
+msgid ""
+"Address to use for the \\(Lqfrom\\(Rq address when sending warning and error "
+"mail.  The address should be enclosed in double quotes (\\&\"\")  to protect "
+"against B<sudo> interpreting the @ sign.  Defaults to the name of the user "
+"running B<sudo>."
+msgstr ""
+"警告メールやエラー・メールを送るとき、差出人として使用するアドレス。\n"
+"B<sudo> が @ 記号を解釈しないように、\n"
+"アドレスはダブルクォート (\\&\"\") で囲むべきである。\n"
+"デフォルトは、B<sudo> を実行しているユーザの名前。"
+
+#. type: TP
+#: sudoers.man:3372
+#, no-wrap
+msgid "mailto"
+msgstr "mailto"
+
+#. type: Plain text
+#: sudoers.man:3384
+msgid ""
+"Address to send warning and error mail to.  The address should be enclosed "
+"in double quotes (\\&\"\")  to protect against B<sudo> interpreting the @ "
+"sign.  Defaults to root."
+msgstr ""
+"警告メールやエラー・メールを送付する宛先のアドレス。\n"
+"B<sudo> が @ 記号を解釈しないように、\n"
+"アドレスはダブルクォート (\\&\"\") で囲むべきである。\n"
+"デフォルトは root になっている。"
+
+#. type: TP
+#: sudoers.man:3384
+#, no-wrap
+msgid "secure_path"
+msgstr "secure_path"
+
+#. type: Plain text
+#: sudoers.man:3403
+msgid ""
+"Path used for every command run from B<sudo>.  If you don't trust the people "
+"running B<sudo> to have a sane PATH environment variable you may want to use "
+"this.  Another use is if you want to have the \\(Lqroot path\\(Rq be "
+"separate from the \\(Lquser path\\(Rq.  Users in the group specified by the "
+"I<exempt_group> option are not affected by I<secure_path>.  This option is "
+"not set by default."
+msgstr ""
+"B<sudo> から実行されるあらゆるコマンドが使用するパス。\n"
+"B<sudo> を実行するユーザが、無難な PATH 環境変数 を使っているかどうか確信が持"
+"てないなら、\n"
+"このオプションを使用するとよいだろう。もう一つの使用法は、\n"
+"「root のパス」と「一般ユーザのパス」を別のものにしておきたい場合だ。\n"
+"ユーザが I<exempt_group> オプションで指定したグループに属していると、\n"
+"そのユーザは I<secure_path> の影響を受けない。\n"
+"このオプションは、デフォルトではセットされていない。"
+
+#. type: TP
+#: sudoers.man:3403
+#, no-wrap
+msgid "syslog"
+msgstr "syslog"
+
+#. type: Plain text
+#: sudoers.man:3409
+msgid ""
+"Syslog facility if syslog is being used for logging (negate to disable "
+"syslog logging).  Defaults to authpriv."
+msgstr ""
+"syslog を使ってログを取っている場合の syslog のファシリティ\n"
+"(syslog 経由でログを取らないなら、'!' を頭に付けて、\n"
+"このオプションを否定する)。デフォルトでは authpriv になっている。"
+
+#. type: Plain text
+#: sudoers.man:3426
+msgid ""
+"The following syslog facilities are supported: B<authpriv> (if your OS "
+"supports it), B<auth>, B<daemon>, B<user>, B<local0>, B<local1>, B<local2>, "
+"B<local3>, B<local4>, B<local5>, B<local6>, and B<local7>."
+msgstr ""
+"syslog のファシリティには、次のものが指定できる。\n"
+"B<authpriv> (使用 OS が対応している場合), B<auth>, B<daemon>, B<user>, \n"
+"B<local0>, B<local1>, B<local2>, B<local3>, B<local4>, B<local5>, \n"
+"B<local6>, B<local7>。"
+
+#. type: TP
+#: sudoers.man:3426
+#, no-wrap
+msgid "verifypw"
+msgstr "verifypw"
+
+#. type: Plain text
+#: sudoers.man:3434
+msgid ""
+"This option controls when a password will be required when a user runs "
+"B<sudo> with the B<-v> option.  It has the following possible values:"
+msgstr ""
+"このオプションは、B<sudo> を B<-v> オプション付きで実行したとき、\n"
+"ユーザがパスワードを要求されるのは、どんな場合かを決定する。\n"
+"以下の値が可能である。"
+
+#. type: Plain text
+#: sudoers.man:3450
+msgid "The user must always enter a password to use the B<-v> option."
+msgstr ""
+"ユーザは B<-v> オプションを使用する際に、必ずパスワードを入力しなければならな"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:3462
+msgid "The user need never enter a password to use the B<-v> option."
+msgstr ""
+"ユーザは B<-v> オプションを使用する際に、パスワードを入力する必要がまったくな"
+"い。"
+
+#. type: Plain text
+#: sudoers.man:3471
+msgid ""
+"If no value is specified, a value of I<all> is implied.  Negating the option "
+"results in a value of I<never> being used.  The default value is I<all>."
+msgstr ""
+"値を指定しないと、値は I<all> だと見なされる。'!' を頭に付けて、\n"
+"このオプションを否定すると、値に I<never> が使われることになる。\n"
+"デフォルトは I<all> である。"
+
+#. type: Plain text
+#: sudoers.man:3474
+msgid "B<Lists that can be used in a boolean context>:"
+msgstr "B<真偽値としても使用できるリスト>:"
+
+#. type: TP
+#: sudoers.man:3474
+#, no-wrap
+msgid "env_check"
+msgstr "env_check"
+
+#. type: Plain text
+#: sudoers.man:3492
+msgid ""
+"Environment variables to be removed from the user's environment unless they "
+"are considered \\(Lqsafe\\(Rq.  For all variables except TZ, \\(Lqsafe\\(Rq "
+"means that the variable's value does not contain any \\(oq%\\(cq or \\(oq/"
+"\\(cq characters.  This can be used to guard against printf-style format "
+"vulnerabilities in poorly-written programs.  The TZ variable is considered "
+"unsafe if any of the following are true:"
+msgstr ""
+"「安全」だと見なされない場合に、ユーザの環境から取り除かれる環境変数。\n"
+"TZ 以外のすべての環境変数について、「安全」というのは、変数の値に \n"
+"'%' や '/' という文字を一つも含まないことである。この動作を利用すれば、\n"
+"出来のよくないプログラムに見られる \n"
+"printf 形式のフォーマットの脆弱性に対処することが可能になる。\n"
+"TZ 変数については、以下のどれかが真ならば、安全ではないと見なされる。"
+
+#. type: Plain text
+#: sudoers.man:3503
+msgid ""
+"It consists of a fully-qualified path name, optionally prefixed with a colon "
+"(\\(oq:\\&\\(cq), that does not match the location of the I<zoneinfo> "
+"directory."
+msgstr ""
+"変数の値が絶対パス名であり (コロン (':\\&') が先頭に付いていることもある)、\n"
+"それが I<zoneinfo> ディレクトリの位置にマッチしない。"
+
+#. type: Plain text
+#: sudoers.man:3509
+msgid "It contains a I<..> path element."
+msgstr "変数の値に I<..> というパスの要素が存在する。"
+
+#. type: Plain text
+#: sudoers.man:3512
+msgid "It contains white space or non-printable characters."
+msgstr "変数の値にホワイトスペースや表示不能文字が存在する。"
+
+#. type: Plain text
+#: sudoers.man:3516
+msgid "It is longer than the value of PATH_MAX."
+msgstr "変数の値が PATH_MAX の値より長い。"
+
+#. type: Plain text
+#: sudoers.man:3538
+msgid ""
+"The argument may be a double-quoted, space-separated list or a single value "
+"without double-quotes.  The list can be replaced, added to, deleted from, or "
+"disabled by using the =, +=, -=, and \\&! operators respectively.  "
+"Regardless of whether the env_reset option is enabled or disabled, variables "
+"specified by env_check will be preserved in the environment if they pass the "
+"aforementioned check.  The global list of environment variables to check is "
+"displayed when B<sudo> is run by root with the B<-V> option."
+msgstr ""
+"このオプションの引き数は、ダブルクォートで囲まれ、\n"
+"スペースで区切られたリストでもよく、\n"
+"ダブルクォートなしの単一の値でもよい。リストは、=, +=, -=, \\&! \n"
+"演算子を使って、それぞれ置き換えたり、追加したり、削除したり、\n"
+"無効にしたりすることができる。I<env_check> で指定された変数は、\n"
+"I<env_reset> オプショの有効・無効にかかわらず、上記のチェックにパスすれば、\n"
+"環境に保存されることになる。チェックされる環境変数のグローバルなリストは、\n"
+"root ユーザが B<sudo> に B<-V> オプションを付けて実行したときに表示される。"
+
+#. type: TP
+#: sudoers.man:3539
+#, no-wrap
+msgid "env_delete"
+msgstr "env_delete"
+
+#. type: Plain text
+#: sudoers.man:3561
+msgid ""
+"Environment variables to be removed from the user's environment when the "
+"I<env_reset> option is not in effect.  The argument may be a double-quoted, "
+"space-separated list or a single value without double-quotes.  The list can "
+"be replaced, added to, deleted from, or disabled by using the =, +=, -=, and "
+"\\&! operators respectively.  The global list of environment variables to "
+"remove is displayed when B<sudo> is run by root with the B<-V> option.  Note "
+"that many operating systems will remove potentially dangerous variables from "
+"the environment of any setuid process (such as B<sudo>)."
+msgstr ""
+"I<env_reset> オプションが無効になっているときに、\n"
+"ユーザの環境から取り除かれる環境変数。このオプションの引き数は、\n"
+"ダブルクォートで囲まれ、スペースで区切られたリストでもよく、\n"
+"ダブルクォートなしの単一の値でもよい。\n"
+"リストは、=, +=, -=, \\&! 演算子を使って、それぞれ置き換えたり、追加した"
+"り、\n"
+"削除したり、無効にしたりすることができる。\n"
+"取り除かれる環境変数のグローバルなリストは、root ユーザが B<sudo> に \n"
+"B<-V> オプションを付けて実行したときに表示される。\n"
+"なお、オペレーティングシステムには、危険をもたらしかねない変数を、\n"
+"いかなる setuid プロセス (B<sudo> もその一つ) \n"
+"の環境からも取り除くことにしているものが多いことに留意してほしい。"
+
+#. type: TP
+#: sudoers.man:3561
+#, no-wrap
+msgid "env_keep"
+msgstr "env_keep"
+
+#. type: Plain text
+#: sudoers.man:3584
+msgid ""
+"Environment variables to be preserved in the user's environment when the "
+"I<env_reset> option is in effect.  This allows fine-grained control over the "
+"environment B<sudo>-spawned processes will receive.  The argument may be a "
+"double-quoted, space-separated list or a single value without double-"
+"quotes.  The list can be replaced, added to, deleted from, or disabled by "
+"using the =, +=, -=, and \\&! operators respectively.  The global list of "
+"variables to keep is displayed when B<sudo> is run by root with the B<-V> "
+"option."
+msgstr ""
+"I<env_reset> オプションが有効になっているときでも、\n"
+"ユーザの環境にそのまま保存される環境変数。このオプションによって、\n"
+"B<sudo> から生み出されるプロセスが受け取る環境を、\n"
+"きめ細かく制御することが可能になる。このオプションの引き数は、\n"
+"ダブルクォートで囲まれ、スペースで区切られたリストでもよく、\n"
+"ダブルクォートなしの単一の値でもよい。\n"
+"リストは、=, +=, -=, \\&! 演算子を使って、\n"
+"それぞれ置き換えたり、追加したり、削除したり、無効にしたりすることができ"
+"る。\n"
+"保存される変数のグローバルなリストは、root ユーザが B<sudo> に\n"
+"B<-V> オプションを付けて実行したときに表示される。"
+
+#. type: SH
+#: sudoers.man:3584
+#, no-wrap
+msgid "GROUP PROVIDER PLUGINS"
+msgstr "グループ・プロバイダー・プラグイン"
+
+#. type: Plain text
+#: sudoers.man:3593
+msgid ""
+"The B<sudoers> plugin supports its own plugin interface to allow non-Unix "
+"group lookups which can query a group source other than the standard Unix "
+"group database.  This can be used to implement support for the nonunix_group "
+"syntax described earlier."
+msgstr ""
+"B<sudoers> プラグインは、non-Unix グループの検索を可能にするために、\n"
+"補助的なプラグインに対するインターフェースを備えており、それによって、\n"
+"標準的な Unix グループ・データベース以外のグループ情報源に対する問い合わせが"
+"できるようになっている。\n"
+"先に述べたような、non-Unix グループを指定する書式の使用を可能にしたかった"
+"ら、\n"
+"この仕組みが使用できる。"
+
+#. type: Plain text
+#: sudoers.man:3606
+msgid ""
+"Group provider plugins are specified via the I<group_plugin> Defaults "
+"setting.  The argument to I<group_plugin> should consist of the plugin path, "
+"either fully-qualified or relative to the I</usr/local/libexec/sudo> "
+"directory, followed by any configuration options the plugin requires.  These "
+"options (if specified) will be passed to the plugin's initialization "
+"function.  If options are present, the string must be enclosed in double "
+"quotes (\\&\"\")."
+msgstr ""
+"グループ・プロバイダー・プラグインは、デフォルト設定の I<group_plugin> \n"
+"によって指定する。I<group_plugin> に対する引き数は、プラグインのパスに続け"
+"て、\n"
+"その設定に必要なオプションがあれば、それを付け加えたものだが、\n"
+"パスは絶対パスか、I</usr/local/libexec/sudo> \n"
+"を基点とする相対パスにするべきである。そうしたオプションは (指定されていれ"
+"ば) \n"
+"プラグインの初期化関数に渡されることになる。オプションがある場合は、\n"
+"文字列全体をダブルクォート (\\&\"\") で囲まなければならない。"
+
+#. type: Plain text
+#: sudoers.man:3608
+msgid "The following group provider plugins are installed by default:"
+msgstr ""
+"以下のグループ・プロバイダー・プラグインがデフォルトでインストールされてい"
+"る。"
+
+#. type: TP
+#: sudoers.man:3608
+#, no-wrap
+msgid "group_file"
+msgstr "group_file"
+
+#. type: Plain text
+#: sudoers.man:3619
+msgid ""
+"The I<group_file> plugin supports an alternate group file that uses the same "
+"syntax as the I</etc/group> file.  The path to the group file should be "
+"specified as an option to the plugin.  For example, if the group file to be "
+"used is I</etc/sudo-group>:"
+msgstr ""
+"I<group_file> プラグインは、I</etc/group> の代わりに、\n"
+"I</etc/group> と同じ書式を使用する別のグループファイルを使えるようにする。\n"
+"プラグインに対するオプションとして、グループファイルのパスを指定するべきであ"
+"る。\n"
+"たとえば、使用するグループファイルが I</etc/sudo-group> ならば、\n"
+"次のように書くことになる。"
+
+#. type: Plain text
+#: sudoers.man:3623
+#, no-wrap
+msgid "Defaults group_plugin=\"group_file.so /etc/sudo-group\"\n"
+msgstr "Defaults group_plugin=\"group_file.so /etc/sudo-group\"\n"
+
+#. type: TP
+#: sudoers.man:3625
+#, no-wrap
+msgid "system_group"
+msgstr "system_group"
+
+#. type: Plain text
+#: sudoers.man:3636
+msgid ""
+"The I<system_group> plugin supports group lookups via the standard C library "
+"functions B<getgrnam>()  and B<getgrid>().  This plugin can be used in "
+"instances where the user belongs to groups not present in the user's "
+"supplemental group vector.  This plugin takes no options:"
+msgstr ""
+"I<system_group> プラグインは、標準 C ライブラリの関数 B<getgrnam>() と \n"
+"B<getgrid>() によるグループ検索をサポートしている。このプラグインは、\n"
+"ユーザがそのユーザの補助グループのリストに存在しないグループに所属していると"
+"いった場合にも使用できる。\n"
+"このプラグインはオプションを取らないので、書式は次のようになる。"
+
+#. type: Plain text
+#: sudoers.man:3640
+#, no-wrap
+msgid "Defaults group_plugin=system_group.so\n"
+msgstr "Defaults group_plugin=system_group.so\n"
+
+#. type: Plain text
+#: sudoers.man:3645
+msgid "The group provider plugin API is described in detail in sudo_plugin(8)."
+msgstr ""
+"グループ・プロバイダー・プラグインの API については、sudo_plugin(5) \n"
+"に詳細な説明がある。"
+
+#. type: SH
+#: sudoers.man:3645
+#, no-wrap
+msgid "LOG FORMAT"
+msgstr "ログの書式"
+
+#. type: Plain text
+#: sudoers.man:3651
+msgid ""
+"B<sudoers> can log events using either syslog(3)  or a simple log file.  The "
+"log format is almost identical in both cases."
+msgstr ""
+"B<sudoers> は、何が起きたかを記録するのに、suslog(3) を使用することもできる"
+"し、\n"
+"単独のログ・ファイルを使用することもできる。\n"
+"どちらの場合も、ログの書式はほとんど同じである。"
+
+#. type: SS
+#: sudoers.man:3651
+#, no-wrap
+msgid "Accepted command log entries"
+msgstr "実行を許可されたコマンドに関するログ記載事項"
+
+#. type: Plain text
+#: sudoers.man:3654
+msgid ""
+"Commands that sudo runs are logged using the following format (split into "
+"multiple lines for readability):"
+msgstr ""
+"sudo が実行したコマンドは、次の書式を使って記録される \n"
+"(読みやすいように、ここでは複数行に分けている)。"
+
+#. type: Plain text
+#: sudoers.man:3660
+#, no-wrap
+msgid ""
+"date hostname progname: username : TTY=ttyname ; PWD=cwd ; \\e\n"
+"    USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \\e\n"
+"    ENV=env_vars COMMAND=command\n"
+msgstr ""
+"date hostname progname: username : TTY=ttyname ; PWD=cwd ; \\e\n"
+"    USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \\e\n"
+"    ENV=env_vars COMMAND=command\n"
+
+#. type: Plain text
+#: sudoers.man:3664
+msgid "Where the fields are as follows:"
+msgstr "各フィールドは以下のようになっている。"
+
+#. type: TP
+#: sudoers.man:3664
+#, no-wrap
+msgid "date"
+msgstr "date"
+
+#. type: Plain text
+#: sudoers.man:3676
+msgid ""
+"The date the command was run.  Typically, this is in the format \\(LqMMM, "
+"DD, HH:MM:SS\\(Rq.  If logging via syslog(3), the actual date format is "
+"controlled by the syslog daemon.  If logging to a file and the I<log_year> "
+"option is enabled, the date will also include the year."
+msgstr ""
+"コマンドが実行された日時。たいていは、\"MMM, DD, HH:MM:SS\" の形式である。\n"
+"syslog(3) 経由でロギングしている場合に、\n"
+"日時が実際にどんな形式になるかを決めるのは、syslog デーモンである。\n"
+"B<sudo> 独自のファイルにロギングしているとき、\n"
+"I<log_year> オプションが有効だと、日時に年度も含まれることになる。"
+
+#. type: TP
+#: sudoers.man:3676
+#, no-wrap
+msgid "hostname"
+msgstr "hostname"
+
+#. type: Plain text
+#: sudoers.man:3683
+msgid ""
+"The name of the host B<sudo> was run on.  This field is only present when "
+"logging via syslog(3)."
+msgstr ""
+"B<sudo> が実行されたホストの名前。このフィールドは、\n"
+"syslog(3) 経由でロギングしているときにのみ存在する。"
+
+#. type: TP
+#: sudoers.man:3683
+#, no-wrap
+msgid "progname"
+msgstr "progname"
+
+#. type: Plain text
+#: sudoers.man:3691
+msgid ""
+"The name of the program, usually I<sudo> or I<sudoedit>.  This field is only "
+"present when logging via syslog(3)."
+msgstr ""
+"プログラム名。普通は、I<sudo> か I<sudoedit>。このフィールドは、\n"
+"syslog(3) 経由でロギングしているときのみ存在する。"
+
+#. type: TP
+#: sudoers.man:3691
+#, no-wrap
+msgid "username"
+msgstr "username"
+
+#. type: Plain text
+#: sudoers.man:3695
+msgid "The login name of the user who ran B<sudo>."
+msgstr "B<sudo> を実行したユーザのログイン名。"
+
+#. type: TP
+#: sudoers.man:3695
+#, no-wrap
+msgid "ttyname"
+msgstr "ttyname"
+
+#. type: Plain text
+#: sudoers.man:3706
+msgid ""
+"The short name of the terminal (e.g.\\& \\(Lqconsole\\(Rq, \\(Lqtty01\\(Rq, "
+"or \\(Lqpts/0\\(Rq)  B<sudo> was run on, or \\(Lqunknown\\(Rq if there was "
+"no terminal present."
+msgstr ""
+"B<sudo> が実行された端末の短縮名 \n"
+"(たとえば、\"console\", \"tty01\", \"pts/0\" など)。端末が存在しなかった場合"
+"は、\n"
+"\"unknown\" になる。"
+
+#. type: TP
+#: sudoers.man:3706
+#, no-wrap
+msgid "cwd"
+msgstr "cwd"
+
+#. type: Plain text
+#: sudoers.man:3711
+msgid "The current working directory that B<sudo> was run in."
+msgstr "B<sudo> が実行されたカレント・ワーキング・ディレクトリ。"
+
+#. type: TP
+#: sudoers.man:3711
+#, no-wrap
+msgid "runasuser"
+msgstr "runasuser"
+
+#. type: Plain text
+#: sudoers.man:3714
+msgid "The user the command was run as."
+msgstr "変身対象ユーザ。"
+
+#. type: TP
+#: sudoers.man:3714
+#, no-wrap
+msgid "runasgroup"
+msgstr "runasgroup"
+
+#. type: Plain text
+#: sudoers.man:3717
+msgid ""
+"The group the command was run as if one was specified on the command line."
+msgstr "変身対象グループがコマンドラインで指定されていれば、そのグループ。"
+
+#. type: TP
+#: sudoers.man:3717
+#, no-wrap
+msgid "logid"
+msgstr "logid"
+
+#. type: Plain text
+#: sudoers.man:3725
+msgid ""
+"An I/O log identifier that can be used to replay the command's output.  This "
+"is only present when the I<log_input> or I<log_output> option is enabled."
+msgstr ""
+"入出力ログの識別名。コマンドの出力を再生するときに使用できる。\n"
+"このフィールドは、I<log_input> や I<log_output> \n"
+"オプションが有効なときにのみ存在する。"
+
+#. type: TP
+#: sudoers.man:3725
+#, no-wrap
+msgid "env_vars"
+msgstr "env_vars"
+
+#. type: Plain text
+#: sudoers.man:3729
+msgid ""
+"A list of environment variables specified on the command line, if specified."
+msgstr "環境変数がコマンドラインで指定された場合、そのリスト。"
+
+#. type: TP
+#: sudoers.man:3729
+#, no-wrap
+msgid "command"
+msgstr "command"
+
+#. type: Plain text
+#: sudoers.man:3732
+msgid "The actual command that was executed."
+msgstr "実行された実際のコマンド。"
+
+#. type: Plain text
+#: sudoers.man:3738
+msgid ""
+"Messages are logged using the locale specified by I<sudoers_locale>, which "
+"defaults to the \\(LqC\\(Rq locale."
+msgstr ""
+"メッセージは I<sudoers_locale> で指定されたロケールを使って記録される。\n"
+"デフォルトは \"C\" である。"
+
+#. type: SS
+#: sudoers.man:3738
+#, no-wrap
+msgid "Denied command log entries"
+msgstr "実行を拒否されたコマンドに関するログ記載事項"
+
+#. type: Plain text
+#: sudoers.man:3742
+msgid ""
+"If the user is not allowed to run the command, the reason for the denial "
+"will follow the user name.  Possible reasons include:"
+msgstr ""
+"ユーザがコマンドの実行を認められなかった場合、\n"
+"拒否された理由が、ユーザ名の後に記録されることになる。\n"
+"理由として挙げられるものには、次のようなものがある。"
+
+#. type: TP
+#: sudoers.man:3742
+#, no-wrap
+msgid "user NOT in sudoers"
+msgstr "user NOT in sudoers"
+
+#. type: Plain text
+#: sudoers.man:3747
+msgid "The user is not listed in the I<sudoers> file."
+msgstr "そのユーザに関する記載が I<sudoers> ファイルに存在しない。"
+
+#. type: TP
+#: sudoers.man:3747
+#, no-wrap
+msgid "user NOT authorized on host"
+msgstr "user NOT authorized on host"
+
+#. type: Plain text
+#: sudoers.man:3752
+msgid ""
+"The user is listed in the I<sudoers> file but is not allowed to run commands "
+"on the host."
+msgstr ""
+"そのユーザに関する記載が I<sudoers> ファイルに存在するが、\n"
+"このホストではコマンドの実行を許可されていない。"
+
+#. type: TP
+#: sudoers.man:3752
+#, no-wrap
+msgid "command not allowed"
+msgstr "command not allowed"
+
+#. type: Plain text
+#: sudoers.man:3757
+msgid ""
+"The user is listed in the I<sudoers> file for the host but they are not "
+"allowed to run the specified command."
+msgstr ""
+"このホストに対するそのユーザの記載が I<sudoers> ファイルに存在するが、\n"
+"指定されたコマンドの実行を許可されていない。"
+
+#. type: TP
+#: sudoers.man:3757
+#, no-wrap
+msgid "3 incorrect password attempts"
+msgstr "3 incorrect password attempts"
+
+#. type: Plain text
+#: sudoers.man:3764
+msgid ""
+"The user failed to enter their password after 3 tries.  The actual number of "
+"tries will vary based on the number of failed attempts and the value of the "
+"I<passwd_tries> option."
+msgstr ""
+"ユーザがパスワードの入力に 3 回失敗した。実際に書き込まれる試行回数は、\n"
+"失敗した回数と I<passwd_tries> オプションの値によって様々である。"
+
+#. type: TP
+#: sudoers.man:3764
+#, no-wrap
+msgid "a password is required"
+msgstr "a password is required"
+
+#. type: Plain text
+#: sudoers.man:3769
+msgid "B<sudo>'s B<-n> option was specified but a password was required."
+msgstr "B<sudo> に B<-n> オプションを指定したが、パスワードが必要だった。"
+
+#. type: TP
+#: sudoers.man:3769
+#, no-wrap
+msgid "sorry, you are not allowed to set the following environment variables"
+msgstr "sorry, you are not allowed to set the following environment variables"
+
+#. type: Plain text
+#: sudoers.man:3774
+msgid ""
+"The user specified environment variables on the command line that were not "
+"allowed by I<sudoers>."
+msgstr ""
+"ユーザがコマンドラインで環境変数を指定したが、\n"
+"それは I<sudoers> によって許可されていない。"
+
+#. type: SS
+#: sudoers.man:3774
+#, no-wrap
+msgid "Error log entries"
+msgstr "エラーに関するログ記載事項"
+
+#. type: Plain text
+#: sudoers.man:3780
+msgid ""
+"If an error occurs, B<sudoers> will log a message and, in most cases, send a "
+"message to the administrator via email.  Possible errors include:"
+msgstr ""
+"エラーが起きると、B<sudoers> はメッセージをログに記録し、たいていの場合は、\n"
+"管理者に email で報告する。起きるかもしれないエラーには次のものがある。"
+
+#. type: TP
+#: sudoers.man:3780
+#, no-wrap
+msgid "parse error in /etc/sudoers near line N"
+msgstr "parse error in /etc/sudoers near line N"
+
+#. type: Plain text
+#: sudoers.man:3786
+msgid ""
+"B<sudoers> encountered an error when parsing the specified file.  In some "
+"cases, the actual error may be one line above or below the line number "
+"listed, depending on the type of error."
+msgstr ""
+"B<sudoers> が上記ファイルの解析中にエラーに出会った。\n"
+"エラーのタイプによっては、実際のエラーは、記載された行番号より 1 行上、\n"
+"あるいは、1 行下にあることもある。"
+
+#. type: TP
+#: sudoers.man:3786
+#, no-wrap
+msgid "problem with defaults entries"
+msgstr "problem with defaults entries"
+
+#. type: Plain text
+#: sudoers.man:3797
+msgid ""
+"The I<sudoers> file contains one or more unknown Defaults settings.  This "
+"does not prevent B<sudo> from running, but the I<sudoers> file should be "
+"checked using B<visudo>."
+msgstr ""
+"I<sudoers> ファイル中に意味不明なデフォルト設定 (Defaults setting) が、\n"
+"一つ以上ある。このエラーがあっても、B<sudo> が実行できなくなることはない"
+"が、\n"
+"B<visudo> を使って I<sudoers> ファイルをチェックするべきである。"
+
+#. type: TP
+#: sudoers.man:3797
+#, no-wrap
+msgid "timestamp owner (username): \\&No such user"
+msgstr "timestamp owner (username): \\&No such user"
+
+#. type: Plain text
+#: sudoers.man:3802
+msgid ""
+"The time stamp directory owner, as specified by the I<timestampowner> "
+"setting, could not be found in the password database."
+msgstr ""
+"I<timestampowner> オプションで指定されたタイムスタンプ・ディレクトリの所有者"
+"が、\n"
+"パスワード・データベースに存在しなかった。"
+
+#. type: TP
+#: sudoers.man:3802
+#, no-wrap
+msgid "unable to open/read /etc/sudoers"
+msgstr "unable to open/read /etc/sudoers"
+
+#. type: Plain text
+#: sudoers.man:3830
+msgid ""
+"The I<sudoers> file could not be opened for reading.  This can happen when "
+"the I<sudoers> file is located on a remote file system that maps user ID 0 "
+"to a different value.  Normally, B<sudoers> tries to open the I<sudoers> "
+"file using group permissions to avoid this problem.  Consider either "
+"changing the ownership of I</etc/sudoers> or adding an argument like "
+"\\(Lqsudoers_uid=N\\(Rq (where \\(oqN\\(cq is the user ID that owns the "
+"I<sudoers> file) to the end of the B<sudoers> Plugin line in the sudo."
+"conf(5)  file."
+msgstr ""
+"I<sudoers> ファイルを読み込もうとしたが、オープンできなかった。\n"
+"そうしたことは、I<sudoers> ファイルがリモート・ファイルシステムに存在して、\n"
+"そこではユーザ ID 0 を別の値にマップしている場合に起きることがある \n"
+"(訳注: たとえば、NFS で root_squash が有効な場合)。\n"
+"通常 B<sudoers> は、この問題を回避するために、グループのパーミッションを使っ"
+"て\n"
+"I<sudoers> ファイルをオープンしようとする。\n"
+"I</etc/sudoers> の所有権を変更するなり、\n"
+"sudo.conf(5) ファイルの B<sudoers> Plugin 行の末尾に \"sudoers_uid=N\"\n"
+"('N' は、I<sudoers> ファイルの所有者のユーザ ID)\n"
+"といった引き数を追加するなりを、考慮すべきである。"
+
+#. type: TP
+#: sudoers.man:3830
+#, no-wrap
+msgid "unable to stat /etc/sudoers"
+msgstr "unable to stat /etc/sudoers"
+
+#. type: Plain text
+#: sudoers.man:3835
+msgid "The I</etc/sudoers> file is missing."
+msgstr "I</etc/sudoers> ファイルが見つからない。"
+
+#. type: TP
+#: sudoers.man:3835
+#, no-wrap
+msgid "/etc/sudoers is not a regular file"
+msgstr "/etc/sudoers is not a regular file"
+
+#. type: Plain text
+#: sudoers.man:3840
+msgid ""
+"The I</etc/sudoers> file exists but is not a regular file or symbolic link."
+msgstr ""
+"I</etc/sudoers> は存在するが、通常ファイルでもシンボリック・リンクでもない。"
+
+#. type: TP
+#: sudoers.man:3840
+#, no-wrap
+msgid "/etc/sudoers is owned by uid N, should be 0"
+msgstr "/etc/sudoers is owned by uid N, should be 0"
+
+#. type: Plain text
+#: sudoers.man:3859
+msgid ""
+"The I<sudoers> file has the wrong owner.  If you wish to change the "
+"I<sudoers> file owner, please add \\(Lqsudoers_uid=N\\(Rq (where \\(oqN\\(cq "
+"is the user ID that owns the I<sudoers> file) to the B<sudoers> Plugin line "
+"in the sudo.conf(5)  file."
+msgstr ""
+"I<sudoers> ファイルの所有者が適切ではない。\n"
+"I<sudoers> ファイルの所有者を変更したい場合には、sudo.conf(5) ファイルの \n"
+"B<sudoers> Plugin 行に \"sudoers_uid=N\" ('N' は、\n"
+"I<sudoers> ファイルの所有者のユーザ ID) を付け加えていただきたい。"
+
+#. type: TP
+#: sudoers.man:3859
+#, no-wrap
+msgid "/etc/sudoers is world writable"
+msgstr "/etc/sudoers is world writable"
+
+#. type: Plain text
+#: sudoers.man:3876
+msgid ""
+"The permissions on the I<sudoers> file allow all users to write to it.  The "
+"I<sudoers> file must not be world-writable, the default file mode is 0440 "
+"(readable by owner and group, writable by none).  The default mode may be "
+"changed via the \\(Lqsudoers_mode\\(Rq option to the B<sudoers> Plugin line "
+"in the sudo.conf(5)  file."
+msgstr ""
+"I<sudoers> ファイルのパーミッションがすべてのユーザに書き込みを許している。\n"
+"I<sudoers> ファイルは、誰にでも書き込み可であってはならず、\n"
+"デフォルトのファイルモードは 0440 である (所有者とグループのみ読むことがで"
+"き、\n"
+"書き込み権限は誰にもない)。デフォルトのモードは、sudo.conf(5) ファイルの \n"
+"B<sudoers> Plugin 行に \"sudoers_mode\" \n"
+"オプションを指定することで変更することができる。"
+
+#. type: TP
+#: sudoers.man:3876
+#, no-wrap
+msgid "/etc/sudoers is owned by gid N, should be 1"
+msgstr "/etc/sudoers is owned by gid N, should be 1"
+
+#. type: Plain text
+#: sudoers.man:3895
+msgid ""
+"The I<sudoers> file has the wrong group ownership.  If you wish to change "
+"the I<sudoers> file group ownership, please add \\(Lqsudoers_gid=N\\(Rq "
+"(where \\(oqN\\(cq is the group ID that owns the I<sudoers> file) to the "
+"B<sudoers> Plugin line in the sudo.conf(5)  file."
+msgstr ""
+"I<sudoers> ファイルの所有グループが適切ではない。\n"
+"I<sudoers> ファイルの所有グループを変更したい場合には、\n"
+"sudo.conf(5) ファイルの B<sudoers> Plugin 行に \"sudoers_gid=N\" \n"
+"('N' は、I<sudoers> ファイルの所有グループ ID) を付け加えていただきたい。"
+
+#. type: TP
+#: sudoers.man:3895
+#, no-wrap
+msgid "unable to open /var/run/sudo/ts/username"
+msgstr "unable to open /var/run/sudo/ts/username"
+
+#. type: Plain text
+#: sudoers.man:3907
+msgid ""
+"B<sudoers> was unable to read or create the user's time stamp file.  This "
+"can happen when I<timestampowner> is set to a user other than root and the "
+"mode on I</var/run/sudo> is not searchable by group or other.  The default "
+"mode for I</var/run/sudo> is 0711."
+msgstr ""
+"B<sudoers> がユーザのタイムスタンプ・ファイルを読み込んだり、\n"
+"作成したりすることができなかった。そうしたことは、\n"
+"I<timestampowner> が root 以外のユーザに設定されていて、\n"
+"しかも I</var/run/sudo> のモードが、\n"
+"グループやその他のユーザに対して検索不可になっている場合に起きることがあ"
+"る。\n"
+"I</var/run/sudo> のデフォルトのモードは、0711 である。"
+
+#. type: TP
+#: sudoers.man:3907
+#, no-wrap
+msgid "unable to write to /var/run/sudo/ts/username"
+msgstr "unable to write to /var/run/sudo/ts/username"
+
+#. type: Plain text
+#: sudoers.man:3911
+msgid "B<sudoers> was unable to write to the user's time stamp file."
+msgstr ""
+"B<sudoers> がユーザのタイムスタンプ・ファイルに書き込むことができなかった。"
+
+#. type: TP
+#: sudoers.man:3911
+#, no-wrap
+msgid "/var/run/sudo/ts is owned by uid X, should be Y"
+msgstr "/var/run/sudo/ts is owned by uid X, should be Y"
+
+#. type: Plain text
+#: sudoers.man:3920
+msgid ""
+"The time stamp directory is owned by a user other than I<timestampowner>.  "
+"This can occur when the value of I<timestampowner> has been changed.  "
+"B<sudoers> will ignore the time stamp directory until the owner is corrected."
+msgstr ""
+"タイムスタンプ・ディレクトリの所有者が I<timestampowner> 以外のユーザであ"
+"る。\n"
+"そうしたことは、I<timestampowner> の値を変更した時に起きることがある。\n"
+"B<sudoers> は、ディレクトリの所有者が訂正されるまで、\n"
+"タイムスタンプ・ディレクトリを無視することになる。"
+
+#. type: TP
+#: sudoers.man:3920
+#, no-wrap
+msgid "/var/run/sudo/ts is group writable"
+msgstr "/var/run/sudo/ts is group writable"
+
+#. type: Plain text
+#: sudoers.man:3927
+msgid ""
+"The time stamp directory is group-writable; it should be writable only by "
+"I<timestampowner>.  The default mode for the time stamp directory is 0700.  "
+"B<sudoers> will ignore the time stamp directory until the mode is corrected."
+msgstr ""
+"タイムスタンプ・ディレクトリがグループによって書き込み可能になっている。\n"
+"書き込みが可能なのは、I<timestampowner> のみにするべきだ。\n"
+"タイムスタンプ・ディレクトリのデフォルトのモードは、700 である。\n"
+"B<sudoers> は、ディレクトリのモードが訂正されるまで、\n"
+"タイムスタンプ・ディレクトリを無視することになる。"
+
+#. type: SS
+#: sudoers.man:3927
+#, no-wrap
+msgid "Notes on logging via syslog"
+msgstr "syslog 経由でロギングするときの注意点"
+
+#. type: Plain text
+#: sudoers.man:3941
+msgid ""
+"By default, B<sudoers> logs messages via syslog(3).  The I<date>, "
+"I<hostname>, and I<progname> fields are added by the syslog daemon, not "
+"B<sudoers> itself.  As such, they may vary in format on different systems."
+msgstr ""
+"デフォルトでは、B<sudoers> は syslog(3) 経由でメッセージをログに記録する。\n"
+"その場合、I<date>, I<hostname>, I<progname> フィールドをログに付加するの"
+"は、\n"
+"syslog デーモンであって、B<sudoers> ではない。\n"
+"従って、そうしたフィールドは、システムが違えば書式も違うかもしれない。"
+
+#. type: Plain text
+#: sudoers.man:3953
+msgid ""
+"On most systems, syslog(3)  has a relatively small log buffer.  To prevent "
+"the command line arguments from being truncated, B<sudoers> will split up "
+"log messages that are larger than 960 characters (not including the date, "
+"hostname, and the string \\(Lqsudo\\(Rq).  When a message is split, "
+"additional parts will include the string \\(Lq(command continued)\\(Rq after "
+"the user name and before the continued command line arguments."
+msgstr ""
+"ほとんどのシステムで、syslog(3) は、かなり小さなログ・バッファしか持っていな"
+"い。\n"
+"そこで、コマンドライン引き数の後ろの方が切り捨てられたりしないように、\n"
+"B<sudoers> は、(date, hostname, 及び \"sudo\" という文字列を別にして) \n"
+"ログ・メッセージが 960 字以上になると、それを分割するようになっている。\n"
+"メッセージが分割される場合、後続部分では、\n"
+"ユーザ名の後ろに \"(command continued)\" という文字列が続き、\n"
+"その後にコマンドライン引き数の残りが続くことになる。"
+
+#. type: SS
+#: sudoers.man:3953
+#, no-wrap
+msgid "Notes on logging to a file"
+msgstr "ファイルにロギングするときの注意点"
+
+#. type: Plain text
+#: sudoers.man:3965
+msgid ""
+"If the I<logfile> option is set, B<sudoers> will log to a local file, such "
+"as I</var/log/sudo>.  When logging to a file, B<sudoers> uses a format "
+"similar to syslog(3), with a few important differences:"
+msgstr ""
+"I<logfile> オプションを設定すると、B<sudoers> は I</var/log/sudo> \n"
+"といったローカルなファイルにログを記録するようになる。ファイルにロギングする"
+"場合も、\n"
+"B<sudoers> は syslog(3) とほとんど同じ書式を使用するが、\n"
+"いつくかの重要な違いがある。"
+
+#. type: TP
+#: sudoers.man:3965
+#, no-wrap
+msgid "1.\\&"
+msgstr "1.\\&"
+
+#. type: Plain text
+#: sudoers.man:3972
+msgid "The I<progname> and I<hostname> fields are not present."
+msgstr "I<progname> と I<hostname> フィールドは存在しない。"
+
+#. type: TP
+#: sudoers.man:3972
+#, no-wrap
+msgid "2.\\&"
+msgstr "2.\\&"
+
+#. type: Plain text
+#: sudoers.man:3978
+msgid ""
+"If the I<log_year> option is enabled, the date will also include the year."
+msgstr "I<log_year> オプションが有効な場合、日付には年度も含まれることになる。"
+
+#. type: TP
+#: sudoers.man:3978
+#, no-wrap
+msgid "3.\\&"
+msgstr "3.\\&"
+
+#. type: Plain text
+#: sudoers.man:3993
+msgid ""
+"Lines that are longer than I<loglinelen> characters (80 by default) are word-"
+"wrapped and continued on the next line with a four character indent.  This "
+"makes entries easier to read for a human being, but makes it more difficult "
+"to use grep(1)  on the log files.  If the I<loglinelen> option is set to 0 "
+"(or negated with a \\(oq\\&!\\(cq), word wrap will be disabled."
+msgstr ""
+"I<loglinelen> (デフォルトでは 80) 文字よりも長い行は改行され、\n"
+"4 文字分のインデントを付けて次の行に続くことになる。\n"
+"そうすることで、記述情報が人間に読みやすくなるが、\n"
+"ログファイルに対して grep(1) を使用することは難しくなる。\n"
+"I<loglinelen> オプションに 0 を指定すると \n"
+"(あるいは、頭に '\\&!' をつけて、否定すると)、改行は行われなくなる。"
+
+#. type: SH
+#: sudoers.man:3993
+#, no-wrap
+msgid "I/O LOG FILES"
+msgstr "入出力ログファイル"
+
+#. type: Plain text
+#: sudoers.man:4009
+msgid ""
+"When I/O logging is enabled, B<sudo> will run the command in a pseudo-tty "
+"and log all user input and/or output.  I/O is logged to the directory "
+"specified by the I<iolog_dir> option (I</var/log/sudo-io> by default)  using "
+"a unique session ID that is included in the B<sudo> log line, prefixed with "
+"\\(LqTSID=\\(Rq.  The I<iolog_file> option may be used to control the format "
+"of the session ID."
+msgstr ""
+"入出力ロギングを有効にすると、B<sudo> は擬似 tty でコマンドを実行して、\n"
+"ユーザのすべての入力や出力のログを取ることになる。\n"
+"入出力は、I<iolog_dir> オプションで指定したディレクトリに \n"
+"(デフォルトでは I</var/log/sudo-io>)、\n"
+"一意なセッション ID を使って記録される。\n"
+"このセッション ID は、(訳注: syslog 経由であれ、独自ファイルであれ) \n"
+"B<sudo> に関するログの行に、\"TSID=\" に続く値として書き込まれているもの"
+"だ。\n"
+"I<iolog_file> オプションを使えば、\n"
+"セッション ID の形式を変更することができる。"
+
+#. type: Plain text
+#: sudoers.man:4012
+msgid ""
+"Each I/O log is stored in a separate directory that contains the following "
+"files:"
+msgstr ""
+"各入出力ログは、独立したディレクトリに収納される。\n"
+"そうしたディレクトリには、次のようなファイルが入っている。"
+
+#. type: TP
+#: sudoers.man:4012
+#, no-wrap
+msgid "I<log>"
+msgstr "I<log>"
+
+#. type: Plain text
+#: sudoers.man:4023
+msgid ""
+"a text file containing the time the command was run, the name of the user "
+"who ran B<sudo>, the name of the target user, the name of the target group "
+"(optional), the terminal that B<sudo> was run from, the number of rows and "
+"columns of the terminal, the working directory the command was run from and "
+"the path name of the command itself (with arguments if present)"
+msgstr ""
+"次のような情報を含むテキストファイル。コマンドが実行された日時、\n"
+"B<sudo> を実行したユーザの名前、変身対象ユーザ名、変身対象グループ名 (ないこ"
+"ともある)、\n"
+"B<sudo> が実行された端末、その端末の縦横のサイズ (何行何桁か)、\n"
+"コマンドがそこから実行されたカレントディレクトリ、\n"
+"それに、コマンドそのもののパス名 (引き数があれば、それも)"
+
+#. type: TP
+#: sudoers.man:4023
+#, no-wrap
+msgid "I<timing>"
+msgstr "I<timing>"
+
+#. type: Plain text
+#: sudoers.man:4027
+msgid ""
+"a log of the amount of time between, and the number of bytes in, each I/O "
+"log entry (used for session playback)"
+msgstr ""
+"入出力ログに記録される各事項間の時間間隔と各事項の入出力バイト数のログ \n"
+"(セッションの再生で使用される)"
+
+#. type: TP
+#: sudoers.man:4027
+#, no-wrap
+msgid "I<ttyin>"
+msgstr "I<ttyin>"
+
+#. type: Plain text
+#: sudoers.man:4030
+msgid "input from the user's tty (what the user types)"
+msgstr "ユーザが使用している端末からの入力 (ユーザがタイプしたこと)。"
+
+#. type: TP
+#: sudoers.man:4030
+#, no-wrap
+msgid "I<stdin>"
+msgstr "I<stdin>"
+
+#. type: Plain text
+#: sudoers.man:4033
+msgid "input from a pipe or file"
+msgstr "パイプやファイルからの入力"
+
+#. type: TP
+#: sudoers.man:4033
+#, no-wrap
+msgid "I<ttyout>"
+msgstr "I<ttyout>"
+
+#. type: Plain text
+#: sudoers.man:4036
+msgid "output from the pseudo-tty (what the command writes to the screen)"
+msgstr "擬似 tty の出力 (コマンドがスクリーンに書き出したこと)"
+
+#. type: TP
+#: sudoers.man:4036
+#, no-wrap
+msgid "I<stdout>"
+msgstr "I<stdout>"
+
+#. type: Plain text
+#: sudoers.man:4039
+msgid "standard output to a pipe or redirected to a file"
+msgstr "パイプへ出力されたり、ファイルにリダイレクトされた標準出力"
+
+#. type: TP
+#: sudoers.man:4039
+#, no-wrap
+msgid "I<stderr>"
+msgstr "I<stderr>"
+
+#. type: Plain text
+#: sudoers.man:4042
+msgid "standard error to a pipe or redirected to a file"
+msgstr "パイプへ出力されたり、ファイルへリダイレクトされた標準エラー"
+
+#. type: Plain text
+#: sudoers.man:4054
+msgid ""
+"All files other than I<log> are compressed in gzip format unless the "
+"I<compress_io> option has been disabled.  Due to buffering, the I/O log data "
+"will not be complete until the B<sudo> command has completed.  The output "
+"portion of an I/O log file can be viewed with the sudoreplay(8)  utility, "
+"which can also be used to list or search the available logs."
+msgstr ""
+"I<log> 以外のすべてのファイルは、I<compress_io> オプションが無効になっていな"
+"いかぎり、\n"
+"gzip 形式で圧縮される。バッファリングを行うので、入出力のデータは、\n"
+"B<sudo> コマンドが完了するまで、完全なものにはならない。\n"
+"入出力ログファイルの出力の部分は、sudoreplay(8) を使って再生することができ"
+"る。\n"
+"また、sudoreplay(8) ユーティリティは、利用できるログをリスト表示したり、\n"
+"検索したりするのに使うこともできる。"
+
+#. type: Plain text
+#: sudoers.man:4063
+msgid ""
+"Note that user input may contain sensitive information such as passwords "
+"(even if they are not echoed to the screen), which will be stored in the log "
+"file unencrypted.  In most cases, logging the command output via "
+"I<log_output> or LOG_OUTPUT is all that is required."
+msgstr ""
+"ユーザの入力には、パスワードのような (たとえ、\n"
+"画面にエコーされることはないにしても) 秘密情報が含まれていることがある。\n"
+"そういった情報も、暗号化されずに、ログファイルに記録されることに注意していた"
+"だきたい。\n"
+"たいていの場合、I<log_output> や LOG_OUTPUT を使って、\n"
+"コマンドの出力をログに記録するだけで十分用が足りる。"
+
+#. type: Plain text
+#: sudoers.man:4075
+msgid ""
+"Since each session's I/O logs are stored in a separate directory, "
+"traditional log rotation utilities cannot be used to limit the number of I/O "
+"logs.  The simplest way to limit the number of I/O is by setting the "
+"I<maxseq> option to the maximum number of logs you wish to store.  Once the "
+"I/O log sequence number reaches I<maxseq>, it will be reset to zero and "
+"B<sudoers> will truncate and re-use any existing I/O logs."
+msgstr ""
+"入出力ログは、セッションごとに独立したディレクトリに収納される。\n"
+"そのため、従来からあるログローテーション・ユーティリティを使用して、\n"
+"保存しておく入出力ログ数を制限することはできない。\n"
+"保存する入出力ログ数を制限する最も簡単な方法は、\n"
+"I<maxseq> オプションで保存したいログの最大数を指定することである。\n"
+"入出力ログの連番が I<maxseq> に達すると、連番は 0 にリセットされ、\n"
+"B<sudoers> は既存の入出力ログファイルをサイズ 0 に短縮して、再利用することに"
+"なる。"
+
+#. type: SH
+#: sudoers.man:4075
+#, no-wrap
+msgid "FILES"
+msgstr "ファイル"
+
+#. type: TP
+#: sudoers.man:4076
+#, no-wrap
+msgid "I</etc/sudo.conf>"
+msgstr "I</etc/sudo.conf>"
+
+#. type: Plain text
+#: sudoers.man:4079
+msgid "Sudo front end configuration"
+msgstr "sudo フロントエンドの設定"
+
+#. type: TP
+#: sudoers.man:4079
+#, no-wrap
+msgid "I</etc/sudoers>"
+msgstr "I</etc/sudoers>"
+
+#. type: Plain text
+#: sudoers.man:4082
+msgid "List of who can run what"
+msgstr "誰が何を実行できるかのリスト"
+
+#. type: TP
+#: sudoers.man:4082
+#, no-wrap
+msgid "I</etc/group>"
+msgstr "I</etc/group>"
+
+#. type: Plain text
+#: sudoers.man:4085
+msgid "Local groups file"
+msgstr "ローカルのグループファイル"
+
+#. type: TP
+#: sudoers.man:4085
+#, no-wrap
+msgid "I</etc/netgroup>"
+msgstr "I</etc/netgroup>"
+
+#. type: Plain text
+#: sudoers.man:4088
+msgid "List of network groups"
+msgstr "ネットワークグループのリスト"
+
+#. type: TP
+#: sudoers.man:4088
+#, no-wrap
+msgid "I</var/log/sudo-io>"
+msgstr "I</var/log/sudo-io>"
+
+#. type: Plain text
+#: sudoers.man:4091
+msgid "I/O log files"
+msgstr ""
+"入出力のログファイル (訳注: 厳密には、\n"
+"入出力のログを記録するファイル群をその下に格納するトップディレクトリ)"
+
+#. type: TP
+#: sudoers.man:4091
+#, no-wrap
+msgid "I</var/run/sudo/ts>"
+msgstr "I</var/run/sudo/ts>"
+
+#. type: Plain text
+#: sudoers.man:4096
+msgid "Directory containing time stamps for the B<sudoers> security policy"
+msgstr ""
+"B<sudoers> セキュリティポリシーが使用するタイムスタンプを格納するディレクトリ"
+
+#. type: TP
+#: sudoers.man:4096
+#, no-wrap
+msgid "I</var/lib/sudo/lectured>"
+msgstr "I</var/lib/sudo/lectured>"
+
+#. type: Plain text
+#: sudoers.man:4101
+msgid ""
+"Directory containing lecture status files for the B<sudoers> security policy"
+msgstr ""
+"B<sudoers> セキュリティポリシーが使用する訓戒状態ファイルを格納するディレクト"
+"リ"
+
+#. type: TP
+#: sudoers.man:4101
+#, no-wrap
+msgid "I</etc/environment>"
+msgstr "I</etc/environment>"
+
+#. type: Plain text
+#: sudoers.man:4106
+msgid "Initial environment for B<-i> mode on AIX and Linux systems"
+msgstr "Linux や AIX で B<-i> モードを使用するときの初期環境"
+
+#. type: SH
+#: sudoers.man:4106
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "用例"
+
+#. type: Plain text
+#: sudoers.man:4113
+msgid ""
+"Below are example I<sudoers> file entries.  Admittedly, some of these are a "
+"bit contrived.  First, we allow a few environment variables to pass and then "
+"define our I<aliases>:"
+msgstr ""
+"以下は I<sudoers> ファイルの記載例である。\n"
+"正直なところ、いささか凝りすぎの部分もある。\n"
+"まず最初に継承を許可する環境変数をいくつか指定し、\n"
+"続いて I<aliases> の定義をする。"
+
+#. type: Plain text
+#: sudoers.man:4120
+#, no-wrap
+msgid ""
+"# Run X applications through sudo; HOME is used to find the\n"
+"# .Xauthority file.  Note that other programs use HOME to find\n"
+"# configuration files and this may lead to privilege escalation!\n"
+"Defaults env_keep += \"DISPLAY HOME\"\n"
+msgstr ""
+"# sudo 経由で X アプリケーションを実行するとき、HOME は\n"
+"# .Xauthority ファイルを探すために使用される。ほかのプログラムも\n"
+"# 設定ファイルを探すのに HOME を使用するので、この指定が\n"
+"# 権限の昇格を引き起こしかねないことに注意してほしい。\n"
+"Defaults env_keep += \"DISPLAY HOME\"\n"
+
+#. type: Plain text
+#: sudoers.man:4125
+#, no-wrap
+msgid ""
+"# User alias specification\n"
+"User_Alias\tFULLTIMERS = millert, mikef, dowdy\n"
+"User_Alias\tPARTTIMERS = bostley, jwfox, crawl\n"
+"User_Alias\tWEBMASTERS = will, wendy, wim\n"
+msgstr ""
+"# User alias の指定\n"
+"User_Alias\tFULLTIMERS = millert, mikef, dowdy\n"
+"User_Alias\tPARTTIMERS = bostley, jwfox, crawl\n"
+"User_Alias\tWEBMASTERS = will, wendy, wim\n"
+
+#. type: Plain text
+#: sudoers.man:4130
+#, no-wrap
+msgid ""
+"# Runas alias specification\n"
+"Runas_Alias\tOP = root, operator\n"
+"Runas_Alias\tDB = oracle, sybase\n"
+"Runas_Alias\tADMINGRP = adm, oper\n"
+msgstr ""
+"# Runas alias の指定\n"
+"Runas_Alias\tOP = root, operator\n"
+"Runas_Alias\tDB = oracle, sybase\n"
+"Runas_Alias\tADMINGRP = adm, oper\n"
+
+#. type: Plain text
+#: sudoers.man:4140
+#, no-wrap
+msgid ""
+"# Host alias specification\n"
+"Host_Alias\tSPARC = bigtime, eclipse, moet, anchor :\\e\n"
+"\t\tSGI = grolsch, dandelion, black :\\e\n"
+"\t\tALPHA = widget, thalamus, foobar :\\e\n"
+"\t\tHPPA = boa, nag, python\n"
+"Host_Alias\tCUNETS = 128.138.0.0/255.255.0.0\n"
+"Host_Alias\tCSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0\n"
+"Host_Alias\tSERVERS = master, mail, www, ns\n"
+"Host_Alias\tCDROM = orion, perseus, hercules\n"
+msgstr ""
+"# Host alias の指定\n"
+"Host_Alias\tSPARC = bigtime, eclipse, moet, anchor :\\e\n"
+"\t\tSGI = grolsch, dandelion, black :\\e\n"
+"\t\tALPHA = widget, thalamus, foobar :\\e\n"
+"\t\tHPPA = boa, nag, python\n"
+"Host_Alias\tCUNETS = 128.138.0.0/255.255.0.0\n"
+"Host_Alias\tCSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0\n"
+"Host_Alias\tSERVERS = master, mail, www, ns\n"
+"Host_Alias\tCDROM = orion, perseus, hercules\n"
+
+#. type: Plain text
+#: sudoers.man:4156
+#, no-wrap
+msgid ""
+"# Cmnd alias specification\n"
+"Cmnd_Alias\tDUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\\e\n"
+"\t\t\t/usr/sbin/restore, /usr/sbin/rrestore,\\e\n"
+"\t\t\tsha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \\e\n"
+"\t\t\t/home/operator/bin/start_backups\n"
+"Cmnd_Alias\tKILL = /usr/bin/kill\n"
+"Cmnd_Alias\tPRINTING = /usr/sbin/lpc, /usr/bin/lprm\n"
+"Cmnd_Alias\tSHUTDOWN = /usr/sbin/shutdown\n"
+"Cmnd_Alias\tHALT = /usr/sbin/halt\n"
+"Cmnd_Alias\tREBOOT = /usr/sbin/reboot\n"
+"Cmnd_Alias\tSHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\\e\n"
+"\t\t\t /usr/local/bin/tcsh, /usr/bin/rsh,\\e\n"
+"\t\t\t /usr/local/bin/zsh\n"
+"Cmnd_Alias\tSU = /usr/bin/su\n"
+"Cmnd_Alias\tPAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less\n"
+msgstr ""
+"# Cmnd alias の指定\n"
+"Cmnd_Alias\tDUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\\e\n"
+"\t\t\t/usr/sbin/restore, /usr/sbin/rrestore,\\e\n"
+"\t\t\tsha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \\e\n"
+"\t\t\t/home/operator/bin/start_backups\n"
+"Cmnd_Alias\tKILL = /usr/bin/kill\n"
+"Cmnd_Alias\tPRINTING = /usr/sbin/lpc, /usr/bin/lprm\n"
+"Cmnd_Alias\tSHUTDOWN = /usr/sbin/shutdown\n"
+"Cmnd_Alias\tHALT = /usr/sbin/halt\n"
+"Cmnd_Alias\tREBOOT = /usr/sbin/reboot\n"
+"Cmnd_Alias\tSHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\\e\n"
+"\t\t\t /usr/local/bin/tcsh, /usr/bin/rsh,\\e\n"
+"\t\t\t /usr/local/bin/zsh\n"
+"Cmnd_Alias\tSU = /usr/bin/su\n"
+"Cmnd_Alias\tPAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less\n"
+
+#. type: Plain text
+#: sudoers.man:4193
+msgid ""
+"Here we override some of the compiled in default values.  We want B<sudo> to "
+"log via syslog(3)  using the I<auth> facility in all cases.  We don't want "
+"to subject the full time staff to the B<sudo> lecture, user B<millert> need "
+"not give a password, and we don't want to reset the LOGNAME, USER or "
+"USERNAME environment variables when running commands as root.  Additionally, "
+"on the machines in the I<SERVERS> Host_Alias, we keep an additional local "
+"log file and make sure we log the year in each log line since the log "
+"entries will be kept around for several years.  Lastly, we disable shell "
+"escapes for the commands in the PAGERS Cmnd_Alias (I</usr/bin/more>, I</usr/"
+"bin/pg> and I</usr/bin/less>)  \\&.  Note that this will not effectively "
+"constrain users with B<sudo> B<ALL> privileges."
+msgstr ""
+"以下では、コンパイル時に埋め込まれたデフォルト値のいくつかを変更している。\n"
+"B<sudo> には syslog(3) 経由でログを記録し、\n"
+"ファシリティにはすべての場合に I<auth> を使用させたい。\n"
+"フルタイムのスタッフには B<sudo> の訓戒を出さないようにしたい。\n"
+"ユーザ B<millert> はパスワードを入力しないでよい。\n"
+"コマンドを root として実行するときは、\n"
+"環境変数 LOGNAME, USER, USERNAME を変更したくない。\n"
+"さらに、I<SERVERS> という Host_Alias に属するマシンでは、\n"
+"ローカルなログファイルを副本として作り、\n"
+"ログの記入事項は数年に渡って保存されるので、\n"
+"ログの各行に間違いなく年度が入るようにする。\n"
+"最後に I<PAGERS> という Cmnd_Alias に属するコマンド\n"
+"(I</usr/bin/more>, I</usr/bin/pg>, I</usr/bin/less>) については、\n"
+"シェル・エスケープを無効にする。なお、最後の設定は、\n"
+"許可するコマンドが ALL になっているユーザに対しては、\n"
+"効果的な抑制にはならないことに注意していただきたい。"
+
+#. type: Plain text
+#: sudoers.man:4203
+#, no-wrap
+msgid ""
+"# Override built-in defaults\n"
+"Defaults\t\tsyslog=auth\n"
+"DefaultsE<gt>root\t\t!set_logname\n"
+"Defaults:FULLTIMERS\t!lecture\n"
+"Defaults:millert\t!authenticate\n"
+"Defaults@SERVERS\tlog_year, logfile=/var/log/sudo.log\n"
+"Defaults!PAGERS\t\tnoexec\n"
+msgstr ""
+"# built-in defaults の変更\n"
+"Defaults\t\tsyslog=auth\n"
+"DefaultsE<gt>root\t\t!set_logname\n"
+"Defaults:FULLTIMERS\t!lecture\n"
+"Defaults:millert\t!authenticate\n"
+"Defaults@SERVERS\tlog_year, logfile=/var/log/sudo.log\n"
+"Defaults!PAGERS\t\tnoexec\n"
+
+#. type: Plain text
+#: sudoers.man:4209
+msgid ""
+"The I<User specification> is the part that actually determines who may run "
+"what."
+msgstr "ユーザ設定が、誰が何を実行できるかを実際に決めている部分だ。"
+
+#. type: Plain text
+#: sudoers.man:4214
+#, no-wrap
+msgid ""
+"root\t\tALL = (ALL) ALL\n"
+"%wheel\t\tALL = (ALL) ALL\n"
+msgstr ""
+"root\t\tALL = (ALL) ALL\n"
+"%wheel\t\tALL = (ALL) ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4222
+msgid ""
+"We let B<root> and any user in group B<wheel> run any command on any host as "
+"any user."
+msgstr ""
+"B<root> と B<wheel> グループに属するすべてのユーザには、\n"
+"どのホストでも任意のユーザとしていかなるコマンドでも実行することを認める。"
+
+#. type: Plain text
+#: sudoers.man:4226
+#, no-wrap
+msgid "FULLTIMERS\tALL = NOPASSWD: ALL\n"
+msgstr "FULLTIMERS\tALL = NOPASSWD: ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4235
+msgid ""
+"Full time sysadmins (B<millert>, B<mikef>, and B<dowdy>)  may run any "
+"command on any host without authenticating themselves."
+msgstr ""
+"フルタイムのシステム管理者 (B<millert>, B<mikef>, B<dowdy>) は、\n"
+"どのホストでも任意のコマンドを認証なしで実行できる。"
+
+#. type: Plain text
+#: sudoers.man:4239
+#, no-wrap
+msgid "PARTTIMERS\tALL = ALL\n"
+msgstr "PARTTIMERS\tALL = ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4251
+msgid ""
+"Part time sysadmins B<bostley>, B<jwfox>, and B<crawl>)  may run any command "
+"on any host but they must authenticate themselves first (since the entry "
+"lacks the NOPASSWD tag)."
+msgstr ""
+"パートタイムのシステム管理者 (B<bostley>, B<jwfox>, B<crawl>) は、\n"
+"どのホストでも任意のコマンドを実行できるが、その際に認証をしなければならな"
+"い \n"
+"(このエントリには NOPASSWD タグが指定されていないので)。"
+
+#. type: Plain text
+#: sudoers.man:4255
+#, no-wrap
+msgid "jack\t\tCSNETS = ALL\n"
+msgstr "jack\t\tCSNETS = ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4273
+msgid ""
+"The user B<jack> may run any command on the machines in the I<CSNETS> alias "
+"(the networks 128.138.243.0, 128.138.204.0, and 128.138.242.0).  Of those "
+"networks, only 128.138.204.0 has an explicit netmask (in CIDR notation) "
+"indicating it is a class C network.  For the other networks in I<CSNETS>, "
+"the local machine's netmask will be used during matching."
+msgstr ""
+"ユーザ B<jack> は、I<CSNETS> というエイリアスに属するマシンで、\n"
+"任意のコマンドを実行できる (すなわち、ネットワークが 128.138.243.0, \n"
+"128.138.204.0, 128.138.242.0 のマシンだ)。この内、128.138.204.0 にのみ \n"
+"class C のネットワークであることを示す明示的な (CIDR 表記の) \n"
+"netmask がある。I<CSNETS> のほかのネットワークについては、\n"
+"ローカルマシンの netmask がマッチングの際に使われることになる。"
+
+#. type: Plain text
+#: sudoers.man:4277
+#, no-wrap
+msgid "lisa\t\tCUNETS = ALL\n"
+msgstr "lisa\t\tCUNETS = ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4286
+msgid ""
+"The user B<lisa> may run any command on any host in the I<CUNETS> alias (the "
+"class B network 128.138.0.0)."
+msgstr ""
+"ユーザ B<lisa> は、エイリアスが I<CUNETS> のいかなるホストでも、\n"
+"任意のコマンドを実行することができる \n"
+"(すなわち、128.138.0.0 という class B ネットワークのマシンだ)。"
+
+#. type: Plain text
+#: sudoers.man:4291
+#, no-wrap
+msgid ""
+"operator\tALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\\e\n"
+"\t\tsudoedit /etc/printcap, /usr/oper/bin/\n"
+msgstr ""
+"operator\tALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\\e\n"
+"\t\tsudoedit /etc/printcap, /usr/oper/bin/\n"
+
+#. type: Plain text
+#: sudoers.man:4310
+msgid ""
+"The B<operator> user may run commands limited to simple maintenance.  Here, "
+"those are commands related to backups, killing processes, the printing "
+"system, shutting down the system, and any commands in the directory I</usr/"
+"oper/bin/>.  Note that one command in the DUMPS Cmnd_Alias includes a sha224 "
+"digest, I</home/operator/bin/start_backups>.  This is because the directory "
+"containing the script is writable by the operator user.  If the script is "
+"modified (resulting in a digest mismatch) it will no longer be possible to "
+"run it via B<sudo>."
+msgstr ""
+"ユーザ B<operator> は、\n"
+"簡単な保守管理に用途が限定されたコマンドを実行できる。この場合それは、\n"
+"バックアップしたり、プロセスを kill したり、印刷システムを操作したり、\n"
+"システムをシャットダウンしたりするのに関係するコマンドと、\n"
+"I</usr/oper/bin/> ディレクトリにある任意のコマンドである。\n"
+"注意: I<DUMPS> という Cmnd_Alias に属するコマンドのひとつ、すなわち\n"
+"I</home/operator/bin/start_backups> は、sha224 ダイジェスト付きである。\n"
+"そうしているのは、そのスクリプトが置かれているディレクトリが \n"
+"operator ユーザによって書き込み可能だからだ。スクリプトが変更された場合 \n"
+"(その結果、ダイジェストが一致しないことになる)、\n"
+"B<sudo> 経由でそのスクリプトを実行することはもはや不可能になる。"
+
+#. type: Plain text
+#: sudoers.man:4314
+#, no-wrap
+msgid "joe\t\tALL = /usr/bin/su operator\n"
+msgstr "joe\t\tALL = /usr/bin/su operator\n"
+
+#. type: Plain text
+#: sudoers.man:4322
+msgid "The user B<joe> may only su(1)  to operator."
+msgstr "ユーザ B<joe> は、su(1) を使って operator になることしかできない。"
+
+#. type: Plain text
+#: sudoers.man:4326
+#, no-wrap
+msgid "pete\t\tHPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root\n"
+msgstr "pete\t\tHPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root\n"
+
+#. type: Plain text
+#: sudoers.man:4328
+#, no-wrap
+msgid "%opers\t\tALL = (: ADMINGRP) /usr/sbin/\n"
+msgstr "%opers\t\tALL = (: ADMINGRP) /usr/sbin/\n"
+
+#. type: Plain text
+#: sudoers.man:4344
+msgid ""
+"Users in the B<opers> group may run commands in I</usr/sbin/> as themselves "
+"with any group in the I<ADMINGRP> Runas_Alias (the B<adm> and B<oper> "
+"groups)."
+msgstr ""
+"B<opers> グループのユーザは、I</usr/sbin/> にあるコマンドを、\n"
+"自分自身の資格で、Runas_Alias I<ADMINGRP> に属する任意のグループ \n"
+"(すなわち、B<adm> か B<oper> グループ) として実行できる。"
+
+#. type: Plain text
+#: sudoers.man:4364
+msgid ""
+"The user B<pete> is allowed to change anyone's password except for root on "
+"the I<HPPA> machines.  Because command line arguments are matched as a "
+"single, concatenated string, the \\(oq*\\(cq wildcard will match I<multiple> "
+"words.  This example assumes that passwd(1)  does not take multiple user "
+"names on the command line.  Note that on GNU systems, options to passwd(1)  "
+"may be specified after the user argument.  As a result, this rule will also "
+"allow:"
+msgstr ""
+"ユーザ B<pete> は、I<HPPA> に属するマシンで \n"
+"root 以外なら誰のパスワードでも変更することを許されている。\n"
+"コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行うの"
+"で、\n"
+"ワイルドカード '*' は、I<複数の>単語とマッチすることになる。だから、\n"
+"この例は、passwd(1) がコマンドラインで複数のユーザ名を受け付けないことを前提"
+"としているのである。\n"
+"GNU のシステムでは、\n"
+"passwd(1) に対するオプションをユーザ引き数の後ろに置くことができるのに注意し"
+"ていただきたい。\n"
+"そのため、このルールは次のようなコマンドも許可してしまうことになる。"
+
+#. type: Plain text
+#: sudoers.man:4368
+#, no-wrap
+msgid "passwd username --expire\n"
+msgstr "passwd username --expire\n"
+
+#. type: Plain text
+#: sudoers.man:4372
+msgid "which may not be desirable."
+msgstr "これは、望ましくないことかもしれない。"
+
+#. type: Plain text
+#: sudoers.man:4376
+#, no-wrap
+msgid "bob\t\tSPARC = (OP) ALL : SGI = (OP) ALL\n"
+msgstr "bob\t\tSPARC = (OP) ALL : SGI = (OP) ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4391
+msgid ""
+"The user B<bob> may run anything on the I<SPARC> and I<SGI> machines as any "
+"user listed in the I<OP> Runas_Alias (B<root> and B<operator>.)"
+msgstr ""
+"ユーザ B<bob> は、I<SPARC> や I<SGI> に属するマシンで\n"
+"Runas_Alias I<OP>に登録されている任意のユーザとして \n"
+"(B<root> と B<operator> である) どんなコマンドでも実行できる。"
+
+#. type: Plain text
+#: sudoers.man:4395
+#, no-wrap
+msgid "jim\t\t+biglab = ALL\n"
+msgstr "jim\t\t+biglab = ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4409
+msgid ""
+"The user B<jim> may run any command on machines in the I<biglab> netgroup.  "
+"B<sudo> knows that \\(Lqbiglab\\(Rq is a netgroup due to the \\(oq+\\(cq "
+"prefix."
+msgstr ""
+"ユーザ B<jim> は、I<biglab> ネットグループに属するマシンで、\n"
+"どんなコマンドでも実行できる。\n"
+"B<sudo> は、\"biglab\" に '+' の接頭辞が付いているので、\n"
+"それをネットグループだと認識する。"
+
+#. type: Plain text
+#: sudoers.man:4413
+#, no-wrap
+msgid "+secretaries\tALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser\n"
+msgstr "+secretaries\tALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser\n"
+
+#. type: Plain text
+#: sudoers.man:4420
+msgid ""
+"Users in the B<secretaries> netgroup need to help manage the printers as "
+"well as add and remove users, so they are allowed to run those commands on "
+"all machines."
+msgstr ""
+"B<secretaries> ネットグループのユーザは、ユーザの追加や削除はもちろん、\n"
+"プリンタの管理にも協力する必要がある。\n"
+"そこで、すべてのマシンでその種のコマンドの実行を認められている。"
+
+#. type: Plain text
+#: sudoers.man:4424
+#, no-wrap
+msgid "fred\t\tALL = (DB) NOPASSWD: ALL\n"
+msgstr "fred\t\tALL = (DB) NOPASSWD: ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4436
+msgid ""
+"The user B<fred> can run commands as any user in the I<DB> Runas_Alias "
+"(B<oracle> or B<sybase>)  without giving a password."
+msgstr ""
+"ユーザ B<fred> は、Runas_Alias I<DB> の任意のユーザとして \n"
+"(B<oracle> か B<sybase> だ) \n"
+"パスワードを入力しないでもコマンドを実行することができる。"
+
+#. type: Plain text
+#: sudoers.man:4440
+#, no-wrap
+msgid "john\t\tALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*\n"
+msgstr "john\t\tALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*\n"
+
+#. type: Plain text
+#: sudoers.man:4451
+msgid ""
+"On the I<ALPHA> machines, user B<john> may su to anyone except root but he "
+"is not allowed to specify any options to the su(1)  command."
+msgstr ""
+"ユーザ B<john> は、I<ALPHA> に属するマシンで su(1) を使って \n"
+"root 以外の誰にでもなることができるが、\n"
+"su にオプションを指定することは許されていない。"
+
+#. type: Plain text
+#: sudoers.man:4455
+#, no-wrap
+msgid "jen\t\tALL, !SERVERS = ALL\n"
+msgstr "jen\t\tALL, !SERVERS = ALL\n"
+
+#. type: Plain text
+#: sudoers.man:4464
+msgid ""
+"The user B<jen> may run any command on any machine except for those in the "
+"I<SERVERS> Host_Alias (master, mail, www and ns)."
+msgstr ""
+"ユーザ B<jen> は、Host_Alias I<SERVERS> に属するマシン \n"
+"(master, mail, www, ns) を除くいかなるマシンでも、任意のコマンドを実行でき"
+"る。"
+
+#. type: Plain text
+#: sudoers.man:4468
+#, no-wrap
+msgid "jill\t\tSERVERS = /usr/bin/, !SU, !SHELLS\n"
+msgstr "jill\t\tSERVERS = /usr/bin/, !SU, !SHELLS\n"
+
+#. type: Plain text
+#: sudoers.man:4492
+msgid ""
+"For any machine in the I<SERVERS> Host_Alias, B<jill> may run any commands "
+"in the directory I</usr/bin/> except for those commands belonging to the "
+"I<SU> and I<SHELLS> Cmnd_Aliases.  While not specifically mentioned in the "
+"rule, the commands in the I<PAGERS> Cmnd_Alias all reside in I</usr/bin> and "
+"have the I<noexec> option set."
+msgstr ""
+"B<jill> は、Host_Alias I<SERVERS> のいかなるマシンでも \n"
+"I</usr/bin/> ディレクトリにある任意のコマンドを実行できるが、\n"
+"I<SU> や I<SHELLS> という Cmnd_Alias に属するコマンドは実行できない。\n"
+"ルールのこのくだりでは特に言っていないが、\n"
+"Cmnd_Alias I<PAGER> のコマンドはすべて I</usr/bin> にあり、\n"
+"I<noexec> オプションが設定されている。"
+
+#. type: Plain text
+#: sudoers.man:4496
+#, no-wrap
+msgid "steve\t\tCSNETS = (operator) /usr/local/op_commands/\n"
+msgstr "steve\t\tCSNETS = (operator) /usr/local/op_commands/\n"
+
+#. type: Plain text
+#: sudoers.man:4503
+msgid ""
+"The user B<steve> may run any command in the directory /usr/local/"
+"op_commands/ but only as user operator."
+msgstr ""
+"ユーザ B<steve> は、ディレクトリ I</usr/local/op_commands/> \n"
+"にある任意のコマンドを実行できるが、\n"
+"operator というユーザとして実行できるだけだ。"
+
+#. type: Plain text
+#: sudoers.man:4507
+#, no-wrap
+msgid "matt\t\tvalkyrie = KILL\n"
+msgstr "matt\t\tvalkyrie = KILL\n"
+
+#. type: Plain text
+#: sudoers.man:4513
+msgid ""
+"On his personal workstation, valkyrie, B<matt> needs to be able to kill hung "
+"processes."
+msgstr ""
+"B<matt> も、自分用のワークステーション valkyrie で、\n"
+"ハングしたプロセスの kill ぐらいはできる必要がある。"
+
+#. type: Plain text
+#: sudoers.man:4517
+#, no-wrap
+msgid "WEBMASTERS\twww = (www) ALL, (root) /usr/bin/su www\n"
+msgstr "WEBMASTERS\twww = (www) ALL, (root) /usr/bin/su www\n"
+
+#. type: Plain text
+#: sudoers.man:4527
+msgid ""
+"On the host www, any user in the I<WEBMASTERS> User_Alias (will, wendy, and "
+"wim), may run any command as user www (which owns the web pages) or simply "
+"su(1)  to www."
+msgstr ""
+"ホスト www で User_Alias I<WEBMASTERS> に属するいかなるユーザも \n"
+"(will, wendy, wim だ)、ユーザ www (web ページの所有者) \n"
+"として任意のコマンドを実行することができる。\n"
+"単に su(1) でユーザ www になってもよい。"
+
+#. type: Plain text
+#: sudoers.man:4532
+#, no-wrap
+msgid ""
+"ALL\t\tCDROM = NOPASSWD: /sbin/umount /CDROM,\\e\n"
+"\t\t/sbin/mount -o nosuid\\e,nodev /dev/cd0a /CDROM\n"
+msgstr ""
+"ALL\t\tCDROM = NOPASSWD: /sbin/umount /CDROM,\\e\n"
+"\t\t/sbin/mount -o nosuid\\e,nodev /dev/cd0a /CDROM\n"
+
+#. type: Plain text
+#: sudoers.man:4540
+msgid ""
+"Any user may mount or unmount a CD-ROM on the machines in the CDROM "
+"Host_Alias (orion, perseus, hercules) without entering a password.  This is "
+"a bit tedious for users to type, so it is a prime candidate for "
+"encapsulating in a shell script."
+msgstr ""
+"いかなるユーザも、Host_Alias が I<CDROM> のマシンで\n"
+"(orion, perseus, hercules)、パスワードを入力することなく \n"
+"CD-ROM をマウント、アンマウントできる。\n"
+"上記のコマンドを打ち込むのはユーザにとっていささか面倒なので、\n"
+"シェルスクリプトとしてカプセル化してしまうのがよいだろう。"
+
+#. type: SH
+#: sudoers.man:4540
+#, no-wrap
+msgid "SECURITY NOTES"
+msgstr "セキュリティに関する注意点"
+
+#. type: SS
+#: sudoers.man:4541
+#, no-wrap
+msgid "Limitations of the \\(oq!\\&\\(cq operator"
+msgstr "'!\\&' 演算子の限界"
+
+#. type: Plain text
+#: sudoers.man:4552
+msgid ""
+"It is generally not effective to \\(Lqsubtract\\(Rq commands from B<ALL> "
+"using the \\(oq!\\&\\(cq operator.  A user can trivially circumvent this by "
+"copying the desired command to a different name and then executing that.  "
+"For example:"
+msgstr ""
+"一般的に言って、演算子 '!\\&' を使用して B<ALL> \n"
+"からコマンドの「引き算」をするのは、あまり効果的な方法ではない。\n"
+"ユーザは実行したいコマンドを名前を変えてコピーし、\n"
+"それからそれを実行するといった簡単な方法で、裏をかくことができるからだ。\n"
+"たとえば、"
+
+#. type: Plain text
+#: sudoers.man:4556
+#, no-wrap
+msgid "bill\tALL = ALL, !SU, !SHELLS\n"
+msgstr "bill\tALL = ALL, !SU, !SHELLS\n"
+
+#. type: Plain text
+#: sudoers.man:4569
+msgid ""
+"Doesn't really prevent B<bill> from running the commands listed in I<SU> or "
+"I<SHELLS> since he can simply copy those commands to a different name, or "
+"use a shell escape from an editor or other program.  Therefore, these kind "
+"of restrictions should be considered advisory at best (and reinforced by "
+"policy)."
+msgstr ""
+"という行は、I<SU> や I<SHELLS> に列記されているコマンドの B<bill> による実行"
+"を、\n"
+"本当に阻止することにはならない。なぜなら、B<bill> としては、\n"
+"そうしたコマンドを単に名前を変えてコピーすればよいし、\n"
+"エディタなどのプログラムからシェル・エスケープを利用することもできるから"
+"だ。\n"
+"だから、この種の制限はやった方がまし程度に考えておくべきである\n"
+"(そして、しっかりした運用方針によって制限の実効力を上げるべきだ)。"
+
+#. type: Plain text
+#: sudoers.man:4576
+msgid ""
+"In general, if a user has sudo B<ALL> there is nothing to prevent them from "
+"creating their own program that gives them a root shell (or making their own "
+"copy of a shell) regardless of any \\(oq!\\&\\(cq elements in the user "
+"specification."
+msgstr ""
+"一般に、もし ユーザに許可するコマンドに B<ALL> が入っているならば、\n"
+"ユーザが自分でプログラムを作って\n"
+"(あるいは、シェルを自分専用に別の名前でコピーして)、\n"
+"ルート・シェルを獲得するのを防ぐことはできない。\n"
+"ユーザ設定でどんな項目に '!\\&'  を付けようとも防止不可能である。"
+
+#. type: SS
+#: sudoers.man:4576
+#, no-wrap
+msgid "Security implications of I<fast_glob>"
+msgstr "I<fast_glob> の持つセキュリティ上の問題"
+
+#. type: Plain text
+#: sudoers.man:4586
+msgid ""
+"If the I<fast_glob> option is in use, it is not possible to reliably negate "
+"commands where the path name includes globbing (aka wildcard) characters.  "
+"This is because the C library's fnmatch(3)  function cannot resolve relative "
+"paths.  While this is typically only an inconvenience for rules that grant "
+"privileges, it can result in a security issue for rules that subtract or "
+"revoke privileges."
+msgstr ""
+"I<fast_glob> オプションが使われている場合、\n"
+"パス名に glob 文字 (ワイルドカードとも言う)\n"
+"が含まれるコマンドを確実に無効にすることは不可能である。その理由は、\n"
+"C ライブラリの fnmatch(3) 関数は、相対パスのパス名展開ができないからだ。\n"
+"このことは、権限を許可するルールにとっては、\n"
+"たいていの場合不便なだけにすぎないが、権限を減らしたり、\n"
+"取り消したりするルールにとっては、セキュリティ上の問題をもたらしかねない。"
+
+#. type: Plain text
+#: sudoers.man:4590
+msgid "For example, given the following I<sudoers> file entry:"
+msgstr "たとえば、I<sudoers> ファイルに次のエントリがあったとしよう。"
+
+#. type: Plain text
+#: sudoers.man:4595
+#, no-wrap
+msgid ""
+"john\tALL = /usr/bin/passwd [a-zA-Z0-9]*, /usr/bin/chsh [a-zA-Z0-9]*,\\e\n"
+"              /usr/bin/chfn [a-zA-Z0-9]*, !/usr/bin/* root\n"
+msgstr ""
+"john\tALL = /usr/bin/passwd [a-zA-Z0-9]*, /usr/bin/chsh [a-zA-Z0-9]*,\\e\n"
+"              /usr/bin/chfn [a-zA-Z0-9]*, !/usr/bin/* root\n"
+
+#. type: Plain text
+#: sudoers.man:4609
+msgid ""
+"User B<john> can still run /usr/bin/passwd root if I<fast_glob> is enabled "
+"by changing to I</usr/bin> and running ./passwd root instead."
+msgstr ""
+"それでも、I<fast_glob> が有効になっていれば、B<john> は \n"
+"\"/usr/bin/passwd root\" を実行できてしまう。\n"
+"I</usr/bin> に移動して、\"./passwd root\" を実行すればよいのだ。"
+
+#. type: SS
+#: sudoers.man:4609
+#, no-wrap
+msgid "Preventing shell escapes"
+msgstr "シェル・エスケープの防止"
+
+#. type: Plain text
+#: sudoers.man:4620
+msgid ""
+"Once B<sudo> executes a program, that program is free to do whatever it "
+"pleases, including run other programs.  This can be a security issue since "
+"it is not uncommon for a program to allow shell escapes, which lets a user "
+"bypass B<sudo>'s access control and logging.  Common programs that permit "
+"shell escapes include shells (obviously), editors, paginators, mail and "
+"terminal programs."
+msgstr ""
+"B<sudo> があるプログラムを実行した場合、そのプログラムは、\n"
+"ほかのプログラムの実行も含めて、何でも自由に好きなことができる。\n"
+"このことがセキュリティ上の問題になりかねないのは、\n"
+"プログラムがシェル・エスケープを許しているのは珍しいことではなく、\n"
+"そのために、ユーザが B<sudo> \n"
+"のアクセス制御やロギングをすり抜けることが可能になるからだ。\n"
+"よく使うプログラムでシェル・エスケープを許しているものには、\n"
+"(当然ながら) シェル、エディタ、\n"
+"ページャ、メーラ、ターミナルなどがある。"
+
+#. type: Plain text
+#: sudoers.man:4622
+msgid "There are two basic approaches to this problem:"
+msgstr "この問題に対処するには、基本的に二つの方法がある。"
+
+#. type: TP
+#: sudoers.man:4622
+#, no-wrap
+msgid "restrict"
+msgstr "制限"
+
+#. type: Plain text
+#: sudoers.man:4635
+msgid ""
+"Avoid giving users access to commands that allow the user to run arbitrary "
+"commands.  Many editors have a restricted mode where shell escapes are "
+"disabled, though B<sudoedit> is a better solution to running editors via "
+"B<sudo>.  Due to the large number of programs that offer shell escapes, "
+"restricting users to the set of programs that do not is often unworkable."
+msgstr ""
+"ユーザに任意のコマンドの実行を許すようなコマンドに対して、\n"
+"ユーザがアクセスできないようにする。\n"
+"エディタの場合は、制限モード (restricted mode) と称して、\n"
+"シェル・エスケープが使えないモードを持っているものも多い。\n"
+"とは言え、B<sudo> 経由でエディタを使うのなら、\n"
+"B<sudoedit> を使用する方がより優れた対策である。\n"
+"シェル・エスケープを提供するプログラムはたくさんあるので、\n"
+"それを提供しないプログラムのみを使用するようにユーザを制限するのは、\n"
+"たいてい実現不可能である。"
+
+#. type: Plain text
+#: sudoers.man:4652
+msgid ""
+"Many systems that support shared libraries have the ability to override "
+"default library functions by pointing an environment variable (usually "
+"LD_PRELOAD)  to an alternate shared library.  On such systems, B<sudo>'s "
+"I<noexec> functionality can be used to prevent a program run by B<sudo> from "
+"executing any other programs.  Note, however, that this applies only to "
+"native dynamically-linked executables.  Statically-linked executables and "
+"foreign executables running under binary emulation are not affected."
+msgstr ""
+"共有ライブラリをサポートしているシステムには、\n"
+"環境変数 (たいていは LD_PRELOAD) で別の共有ライブラリを指定することによっ"
+"て、\n"
+"デフォルトのライブラリ関数を置き換えることができるものが多い。\n"
+"そういったシステムでは、B<sudo> の I<noexec> 機能を使えば、\n"
+"B<sudo> から実行されるプログラムが、\n"
+"何かほかのプログラムを実行するのを防ぐことができる。\n"
+"とは言え、これが当てはまるのは、\n"
+"動的にリンクされたネイティブなプログラムだけだということに留意してほしい。\n"
+"静的にリンクされたプログラムや、\n"
+"バイナリ・エミュレーションのもとで動くほかの OS のプログラムには効果がない。"
+
+#. type: Plain text
+#: sudoers.man:4664
+msgid ""
+"The I<noexec> feature is known to work on SunOS, Solaris, *BSD, Linux, IRIX, "
+"Tru64 UNIX, MacOS X, HP-UX 11.x and AIX 5.3 and above.  It should be "
+"supported on most operating systems that support the LD_PRELOAD environment "
+"variable.  Check your operating system's manual pages for the dynamic linker "
+"(usually ld.so, ld.so.1, dyld, dld.sl, rld, or loader) to see if LD_PRELOAD "
+"is supported."
+msgstr ""
+"I<noexec> 機能は SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX, \n"
+"MacOS X, HP-UX 11.x、それに 5.3 以上の AIX で使えることがわかっている。\n"
+"環境変数 LD_PRELOAD をサポートしているたいていのオペレーティングシステム"
+"が、\n"
+"この機能に対応しているはずだ。\n"
+"使用しているオペレーティングシステムのマニュアルページを調べて、\n"
+"ダイナミック・リンカについて (通例 ld.so, ld.so.1, dyld, dld.sl, rld,\n"
+"loader といった名前になっている) LD_PRELOAD \n"
+"がサポートされているかどうか確認していただきたい。"
+
+#. type: Plain text
+#: sudoers.man:4672
+msgid ""
+"To enable I<noexec> for a command, use the NOEXEC tag as documented in the "
+"User Specification section above.  Here is that example again:"
+msgstr ""
+"あるコマンドに対して I<noexec> を有効にするには、\n"
+"上述の「ユーザ設定」セクションで解説したように、NOEXEC タグを使用する。\n"
+"そのときの例を再掲しよう。"
+
+#. type: Plain text
+#: sudoers.man:4696
+msgid ""
+"This allows user B<aaron> to run I</usr/bin/more> and I</usr/bin/vi> with "
+"I<noexec> enabled.  This will prevent those two commands from executing "
+"other commands (such as a shell).  If you are unsure whether or not your "
+"system is capable of supporting I<noexec> you can always just try it out and "
+"check whether shell escapes work when I<noexec> is enabled."
+msgstr ""
+"この例では、ユーザ B<aaron> 対して、I<noexec> を有効にした上で、\n"
+"I</usr/bin/more> と I</usr/bin/vi> の実行を許可している。\n"
+"このようにすれば、この二つのコマンドから (シェルのような) \n"
+"ほかのコマンドを実行することができなくなるわけだ。使用しているシステムが \n"
+"I<noexec> に対応する能力があるかどうかよくわからない場合でも、\n"
+"取りあえず試してみることなら、いつだってできる。I<noexec> を有効にして、\n"
+"シェル・エスケープが可能かどうか確かめてみればよいのだ。"
+
+#. type: Plain text
+#: sudoers.man:4706
+msgid ""
+"Note that restricting shell escapes is not a panacea.  Programs running as "
+"root are still capable of many potentially hazardous operations (such as "
+"changing or overwriting files) that could lead to unintended privilege "
+"escalation.  In the specific case of an editor, a safer approach is to give "
+"the user permission to run B<sudoedit> (see below)."
+msgstr ""
+"注意してほしいが、シェル・エスケープの禁止は万能薬ではない。\n"
+"root の権限で動いているプログラムには、ほかにも、危険性のあるさまざまな作"
+"業 \n"
+"(ファイルの属性を変更するとか、上書きしてしまうとか) が可能であり、\n"
+"思いがけずに権限を拡大してしまうこともありえるのだ。特にエディタについて言う"
+"と、\n"
+"ユーザには B<sudoedit> を実行する許可を与えるのが、より安全な方法である \n"
+"(下記参照)。"
+
+#. type: SS
+#: sudoers.man:4706
+#, no-wrap
+msgid "Secure editing"
+msgstr "安全な編集作業"
+
+#. type: Plain text
+#: sudoers.man:4724
+msgid ""
+"The B<sudoers> plugin includes B<sudoedit> support which allows users to "
+"securely edit files with the editor of their choice.  As B<sudoedit> is a "
+"built-in command, it must be specified in the I<sudoers> file without a "
+"leading path.  However, it may take command line arguments just as a normal "
+"command does.  Wildcards used in I<sudoedit> command line arguments are "
+"expected to be path names, so a forward slash (\\(oq/\\(cq)  will not be "
+"matched by a wildcard."
+msgstr ""
+"B<sudoers> プラグインでは B<sudoedit> が使用できるようになっており、\n"
+"ユーザは好みのエディタを使って、安全にファイルを編集することができる。\n"
+"B<sudoedit> は B<sudo> の組み込みコマンドなので、\n"
+"I<sudoers> ファイル中で指定するときは、\n"
+"頭にパスを付けてはいけない。ただし、コマンドライン引き数については、\n"
+"通常のコマンドと全く同じように指定することができる。\n"
+"B<sudoedit> のコマンドライン引き数にワイルドカードを使用した場合は、\n"
+"B<sudoedit> の引き数にはパス名が来るはずなので、\n"
+"ワイルドカードはフォワードスラッシュ ('/') にマッチしないようになっている。"
+
+#. type: Plain text
+#: sudoers.man:4733
+msgid ""
+"Unlike other B<sudo> commands, the editor is run with the permissions of the "
+"invoking user and with the environment unmodified.  More information may be "
+"found in the description of the B<-e> option in sudo(8)."
+msgstr ""
+"B<sudo> 経由で実行される他のコマンドとは違って、エディターは \n"
+"B<sudo> を起動するユーザの資格で、環境を変更せずに実行される。\n"
+"詳しくは、sudo(8) のマニュアルの B<-e> オプションの説明をご覧になるとよい。"
+
+#. type: Plain text
+#: sudoers.man:4737
+msgid ""
+"For example, to allow user operator to edit the \\(Lqmessage of the day\\(Rq "
+"file:"
+msgstr ""
+"たとえば、ユーザ operator が \"message of the day\" ファイルを編集できるよう"
+"にするには、I<sudoers> で次のように指定する。"
+
+#. type: Plain text
+#: sudoers.man:4741
+#, no-wrap
+msgid "operator\tsudoedit /etc/motd\n"
+msgstr "operator\tALL = sudoedit /etc/motd\n"
+
+#. type: Plain text
+#: sudoers.man:4747
+msgid "The operator user then runs B<sudoedit> as follows:"
+msgstr "そして、ユーザ operator は、B<sudoedit> を次のように実行する。"
+
+#. type: Plain text
+#: sudoers.man:4751
+#, no-wrap
+msgid "$ sudoedit /etc/motd\n"
+msgstr "$ sudoedit /etc/motd\n"
+
+#. type: Plain text
+#: sudoers.man:4759
+msgid ""
+"The editor will run as the operator user, not root, on a temporary copy of "
+"I</etc/motd>.  After the file has been edited, I</etc/motd> will be updated "
+"with the contents of the temporary copy."
+msgstr ""
+"エディタは、root ではなく、ユーザ operator の資格で、I</etc/motd> \n"
+"の作業用コピーに対して実行される。ファイルの編集が済むと、\n"
+"I</etc/motd> は作業用コピーの内容で更新されることになる。"
+
+#. type: Plain text
+#: sudoers.man:4787
+msgid ""
+"Users should I<never> be granted B<sudoedit> permission to edit a file that "
+"resides in a directory the user has write access to, either directly or via "
+"a wildcard.  If the user has write access to the directory it is possible to "
+"replace the legitimate file with a link to another file, allowing the "
+"editing of arbitrary files.  To prevent this, starting with version 1.8.16, "
+"symbolic links will not be followed in writable directories and B<sudoedit> "
+"will refuse to edit a file located in a writable directory unless the "
+"I<sudoedit_checkdir> option has been disabled or the invoking user is root.  "
+"Additionally, in version 1.8.15 and higher, B<sudoedit> will refuse to open "
+"a symbolic link unless either the I<sudoedit_follow> option is enabled or "
+"the I<sudoedit> command is prefixed with the FOLLOW tag in the I<sudoers> "
+"file."
+msgstr ""
+"ユーザが書き込み権限を持っているディレクトリに存在するファイルに対して、\n"
+"ファイル名を直接指定してであれ、ワイルドカードによって指定してであれ、\n"
+"B<sudoedit> を使って編集する許可をそのユーザに与えてはいけない。\n"
+"もし、ユーザがディレクトリに対して書き込み権限を持っているならば、編集を許可"
+"されたファイルを、\n"
+"別のファイルに対するリンクで置き換えることができるわけで、そうすることによっ"
+"て、\n"
+"任意のどんなファイルでも編集できるようになってしまうからだ。\n"
+"そうした事態を防ぐために、バージョン 1.8.16 以降の B<sudoedit> では、\n"
+"I<sudoedit_checkdir> オプションが無効になっている場合や、\n"
+"B<sudoedit> を実行するユーザが root である場合を除いて、\n"
+"ユーザが書き込み権限を持っているディレクトリに存在するいかなるシンボリックリ"
+"ンクも、\n"
+"たどらないようになっている。\n"
+"また、書き込み権限があるディレクトリに存在するファイルの編集を行うことも拒否"
+"する。\n"
+"さらに、バージョン 1.8.15 以降の B<sudoedit> では、\n"
+"I<sudoers> ファイルで I<sudoedit_follow> オプションが有効になっているか、\n"
+"I<sudoedit> コマンドの前に FOLLOW タグが指定してあるかのどちらかでないかぎ"
+"り、\n"
+"シンボリックリンクをオープンしないようになっている。"
+
+#. type: SS
+#: sudoers.man:4787
+#, no-wrap
+msgid "Time stamp file checks"
+msgstr "タイムスタンプ・ファイルのチェック"
+
+#. type: Plain text
+#: sudoers.man:4801
+msgid ""
+"B<sudoers> will check the ownership of its time stamp directory (I</var/run/"
+"sudo/ts> by default)  and ignore the directory's contents if it is not owned "
+"by root or if it is writable by a user other than root.  Older versions of "
+"B<sudo> stored time stamp files in I</tmp>; this is no longer recommended as "
+"it may be possible for a user to create the time stamp themselves on systems "
+"that allow unprivileged users to change the ownership of files they create."
+msgstr ""
+"B<sudoers> は、タイムスタンプ・ディレクトリ (デフォルトでは \n"
+"I</var/run/sudo/ts>) の所有者を調べて、所有者が root でなかったり、\n"
+"root 以外のユーザにも書き込み可能であったりすると、\n"
+"そのディレクトリの中身を無視する。古いバージョンの B<sudo> は、\n"
+"タイムスタンプ・ファイルを I</tmp> に置いていたが、\n"
+"そうしたことは今では推奨できない。\n"
+"特権を持たないユーザが自分の作ったファイルの所有者を変更できるシステムで"
+"は、\n"
+"ユーザがタイムスタンプを自分で作成することが可能になるかもしれないからだ。"
+
+#. type: Plain text
+#: sudoers.man:4811
+msgid ""
+"While the time stamp directory I<should> be cleared at reboot time, not all "
+"systems contain a I</var/run> directory.  To avoid potential problems, "
+"B<sudoers> will ignore time stamp files that date from before the machine "
+"booted on systems where the boot time is available."
+msgstr ""
+"タイムスタンプ・ディレクトリは、\n"
+"リブートしたときにその中身をI<消去されるべき>だが、\n"
+"すべてのシステムに I</var/run> ディレクトリが存在するとはかぎらない。\n"
+"問題が起きるのを避けるために、B<sudoers> は、\n"
+"ブートタイムを参照できるシステムでは、\n"
+"マシンがブートした時刻よりも古い日時を持つタイムスタンプ・ファイルを無視す"
+"る。"
+
+#. type: Plain text
+#: sudoers.man:4826
+msgid ""
+"Some systems with graphical desktop environments allow unprivileged users to "
+"change the system clock.  Since B<sudoers> relies on the system clock for "
+"time stamp validation, it may be possible on such systems for a user to run "
+"B<sudo> for longer than I<timestamp_timeout> by setting the clock back.  To "
+"combat this, B<sudoers> uses a monotonic clock (which never moves backwards) "
+"for its time stamps if the system supports it."
+msgstr ""
+"グラフィカルなデスクトップ環境を持っているシステムの中には、\n"
+"特権を持たないユーザにシステム・クロックの変更を許しているものがある。\n"
+"B<sudoers> は、タイムスタンプが有効か否を確認するのに、\n"
+"システム・クロックを拠り所にしている。そこで、そうしたシステムでは、\n"
+"ユーザがクロックを後戻りさせることで、I<timestamp_timeout> よりも長い時間 \n"
+"B<sudo> を実行することが可能になるかもしれない。そうした事態に対抗するた"
+"め、\n"
+"B<sudoers> は、システムがサポートしているならば、\n"
+"タイムスタンプに単調増加時計 (monotonic clock) を使用する \n"
+"(単調増加時計は後戻りすることがないからだ)。"
+
+#. type: Plain text
+#: sudoers.man:4834
+msgid ""
+"B<sudoers> will not honor time stamps set far in the future.  Time stamps "
+"with a date greater than current_time + 2 * TIMEOUT will be ignored and "
+"B<sudoers> will log and complain."
+msgstr ""
+"B<sudoers> はあまりにも未来に設定されたタイムスタンプを認めない。\n"
+"タイムスタンプが「現在時 + 2 * TIMEOUT」より新しい日時だった場合、\n"
+"そのタイムスタンプは無視され、B<sudoers> はログに記録して、警告を発する。"
+
+#. type: Plain text
+#: sudoers.man:4860
+msgid ""
+"Since time stamp files live in the file system, they can outlive a user's "
+"login session.  As a result, a user may be able to login, run a command with "
+"B<sudo> after authenticating, logout, login again, and run B<sudo> without "
+"authenticating so long as the record's time stamp is within 5 minutes (or "
+"whatever value the timeout is set to in the I<sudoers> file).  When the "
+"I<tty_tickets> option is enabled, the time stamp record includes the device "
+"number of the terminal the user authenticated with.  This provides per-tty "
+"granularity but time stamp records still may outlive the user's session.  "
+"The time stamp record also includes the session ID of the process that last "
+"authenticated.  This prevents processes in different terminal sessions from "
+"using the same time stamp record.  It also helps reduce the chance that a "
+"user will be able to run B<sudo> without entering a password when logging "
+"out and back in again on the same terminal."
+msgstr ""
+"タイムスタンプ・ファイルはファイルシステム中に作られるものだから、\n"
+"ユーザのログイン・セッションが終わっても残っている。\n"
+"そのため、ユーザがログインし、認証を行ってから \n"
+"B<sudo> を使ってコマンドを実行し、一旦ログアウトして、再度ログインしたと"
+"き、\n"
+"認証なしで B<sudo> を実行することが可能になってしまうかもしれない。\n"
+"タイムスタンプ・ファイルに記録されているタイムスタンプが 5 分以内のものであれ"
+"ば \n"
+"(あるいは、I<sudoers> ファイルで設定されているタイムアウト時間以内のものであ"
+"れば)、\n"
+"そういうことが可能かもしれないのだ。\n"
+"I<tty_tickets> オプションが有効な場合は、タイムスタンプの記録に、\n"
+"ユーザが認証するときに使った端末のデバイス番号が含まれる。それよって、\n"
+"tty ごとのきめ細かな管理が可能になるが、それでもタイムスタンプの記録が、\n"
+"ユーザのセッションが終わった後まで有効である可能性もある。また、\n"
+"タイムスタンプの記録には、最後に認証を行ったプロセスのセッション ID も含まれ"
+"ている。\n"
+"別の端末セッションのプロセスが、同じタイムスタンプの記録を使えないようにして"
+"いるのだ。\n"
+"それはまた、ユーザがログアウトし、再度同じ端末にログインしたときに、\n"
+"パスワードを入力することなしに B<sudo> を実行できる可能性を減少させる役にも"
+"立っている。"
+
+#. type: SH
+#: sudoers.man:4860
+#, no-wrap
+msgid "DEBUGGING"
+msgstr "デバッギング"
+
+#. type: Plain text
+#: sudoers.man:4868
+msgid ""
+"Versions 1.8.4 and higher of the B<sudoers> plugin support a flexible "
+"debugging framework that can help track down what the plugin is doing "
+"internally if there is a problem.  This can be configured in the sudo."
+"conf(5)  file."
+msgstr ""
+"バージョン 1.8.4 以上の B<sudoers> プラグインは、\n"
+"デバッグのための柔軟な枠組みをサポートしており、問題が発生したときに、\n"
+"プラグインの内部で何が起きているかを突き止めるために、\n"
+"それを利用することができる。設定は sudo.conf(5) ファイルで行うことが可能だ。"
+
+#. type: Plain text
+#: sudoers.man:4875
+msgid ""
+"The B<sudoers> plugin uses the same debug flag format as the B<sudo> front-"
+"end: I<subsystem>@I<priority>."
+msgstr ""
+"B<sudoers> プラグインは、\n"
+"フロントエンドである B<sudo> と同じデバッグ・フラグの書式を使用する。\n"
+"すなわち、I<subsystem>@I<priority> である。"
+
+#. type: Plain text
+#: sudoers.man:4890
+msgid ""
+"The priorities used by B<sudoers>, in order of decreasing severity, are: "
+"I<crit>, I<err>, I<warn>, I<notice>, I<diag>, I<info>, I<trace> and "
+"I<debug>.  Each priority, when specified, also includes all priorities "
+"higher than it.  For example, a priority of I<notice> would include debug "
+"messages logged at I<notice> and higher."
+msgstr ""
+"B<sudoers> が使用する priority (重大度) を深刻なものから挙げると、\n"
+"I<crit>, I<err>, I<warn>, I<notice>, I<diag>, I<info>, I<trace>, \n"
+"I<debug> である。ある priority を指定すると、\n"
+"それより深刻なすべての priority も併せて指定したことになる。\n"
+"たとえば、I<notice> という priority を指定すれば、\n"
+"I<notice> レベル以上のデバッグメッセージがログに記録される。"
+
+#. type: Plain text
+#: sudoers.man:4894
+msgid "The following subsystems are used by the B<sudoers> plugin:"
+msgstr "B<sudoers> では以下のサブシステムが使用できる。"
+
+#. type: TP
+#: sudoers.man:4894
+#, no-wrap
+msgid "I<alias>"
+msgstr "I<alias>"
+
+#. type: Plain text
+#: sudoers.man:4902
+msgid "User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias processing"
+msgstr "User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias の処理"
+
+#. type: TP
+#: sudoers.man:4902
+#, no-wrap
+msgid "I<all>"
+msgstr "I<all>"
+
+#. type: Plain text
+#: sudoers.man:4905
+msgid "matches every subsystem"
+msgstr "すべてのサブシステムにマッチする"
+
+#. type: TP
+#: sudoers.man:4905
+#, no-wrap
+msgid "I<audit>"
+msgstr "I<audit>"
+
+#. type: Plain text
+#: sudoers.man:4908
+msgid "BSM and Linux audit code"
+msgstr "Solaris BSM (Basic Security Module) と Linux の監査コード"
+
+#. type: TP
+#: sudoers.man:4908
+#, no-wrap
+msgid "I<auth>"
+msgstr "I<auth>"
+
+#. type: Plain text
+#: sudoers.man:4911
+msgid "user authentication"
+msgstr "ユーザの認証"
+
+#. type: TP
+#: sudoers.man:4911
+#, no-wrap
+msgid "I<defaults>"
+msgstr "I<defaults>"
+
+#. type: Plain text
+#: sudoers.man:4917
+msgid "I<sudoers> file I<Defaults> settings"
+msgstr "I<sudoers> ファイルの I<Defaults> 設定"
+
+#. type: TP
+#: sudoers.man:4917
+#, no-wrap
+msgid "I<env>"
+msgstr "I<env>"
+
+#. type: Plain text
+#: sudoers.man:4920
+msgid "environment handling"
+msgstr "環境の取扱い"
+
+#. type: TP
+#: sudoers.man:4920
+#, no-wrap
+msgid "I<ldap>"
+msgstr "I<ldap>"
+
+#. type: Plain text
+#: sudoers.man:4923
+msgid "LDAP-based sudoers"
+msgstr "LDAP を使用する sudoers"
+
+#. type: TP
+#: sudoers.man:4923
+#, no-wrap
+msgid "I<logging>"
+msgstr "I<logging>"
+
+#. type: Plain text
+#: sudoers.man:4926
+msgid "logging support"
+msgstr "ロギングのサポート"
+
+#. type: TP
+#: sudoers.man:4926
+#, no-wrap
+msgid "I<match>"
+msgstr "I<match>"
+
+#. type: Plain text
+#: sudoers.man:4931
+msgid "matching of users, groups, hosts and netgroups in the I<sudoers> file"
+msgstr ""
+"I<sudoers> ファイルにおけるユーザ、グループ、ホスト、ネットグループのマッチン"
+"グ"
+
+#. type: TP
+#: sudoers.man:4931
+#, no-wrap
+msgid "I<netif>"
+msgstr "I<netif>"
+
+#. type: Plain text
+#: sudoers.man:4934
+msgid "network interface handling"
+msgstr "ネットワークインターフェースの取扱い"
+
+#. type: TP
+#: sudoers.man:4934
+#, no-wrap
+msgid "I<nss>"
+msgstr "I<nss>"
+
+#. type: Plain text
+#: sudoers.man:4938
+msgid "network service switch handling in B<sudoers>"
+msgstr "B<sudoers> におけるネームサービス・スイッチの取扱い"
+
+#. type: TP
+#: sudoers.man:4938
+#, no-wrap
+msgid "I<parser>"
+msgstr "I<parser>"
+
+#. type: Plain text
+#: sudoers.man:4942
+msgid "I<sudoers> file parsing"
+msgstr "I<sudoers> ファイルの解析"
+
+#. type: TP
+#: sudoers.man:4942
+#, no-wrap
+msgid "I<perms>"
+msgstr "I<perms>"
+
+#. type: Plain text
+#: sudoers.man:4945
+msgid "permission setting"
+msgstr "パーミッションの設定"
+
+#. type: TP
+#: sudoers.man:4945
+#, no-wrap
+msgid "I<plugin>"
+msgstr "I<plugin>"
+
+#. type: Plain text
+#: sudoers.man:4950
+msgid "The equivalent of I<main> for the plugin."
+msgstr "プラグインにとって I<main> に相当する"
+
+#. type: TP
+#: sudoers.man:4950
+#, no-wrap
+msgid "I<pty>"
+msgstr "I<pty>"
+
+#. type: Plain text
+#: sudoers.man:4953
+msgid "pseudo-tty related code"
+msgstr "擬似 tty 関連コード"
+
+#. type: TP
+#: sudoers.man:4953
+#, no-wrap
+msgid "I<rbtree>"
+msgstr "I<rbtree>"
+
+#. type: Plain text
+#: sudoers.man:4956
+msgid "redblack tree internals"
+msgstr "赤黒木 (redblack tree) の内部情報"
+
+#. type: TP
+#: sudoers.man:4956
+#, no-wrap
+msgid "I<sssd>"
+msgstr "I<sssd>"
+
+#. type: Plain text
+#: sudoers.man:4959
+msgid "SSSD-based sudoers"
+msgstr "SSSD を使用する sudoers"
+
+#. type: TP
+#: sudoers.man:4959
+#, no-wrap
+msgid "I<util>"
+msgstr "I<util>"
+
+#. type: Plain text
+#: sudoers.man:4962
+msgid "utility functions"
+msgstr "ユーティリティ関数群"
+
+#. type: Plain text
+#: sudoers.man:4965
+msgid "For example:"
+msgstr "一例を挙げておく。"
+
+#. type: Plain text
+#: sudoers.man:4969
+#, no-wrap
+msgid "Debug sudo /var/log/sudo_debug match@info,nss@info\n"
+msgstr "Debug sudoers.so /var/log/sudo_debug match@info,nss@info\n"
+
+#. type: Plain text
+#: sudoers.man:4976
+msgid "For more information, see the sudo.conf(5)  manual."
+msgstr "より詳しい情報については、sudo.conf(5) マニュアルをご覧いただきたい。"
+
+#. type: SH
+#: sudoers.man:4976
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "関連項目"
+
+#. type: Plain text
+#: sudoers.man:4988
+msgid ""
+"ssh(1), su(1), fnmatch(3), glob(3), mktemp(3), strftime(3), sudo.conf(5), "
+"sudoers.ldap(5), sudo(8), sudo_plugin(8), visudo(8)"
+msgstr ""
+"ssh(1), su(1), fnmatch(3), glob(3), mktemp(3), strftime(3), sudo.conf(5), "
+"sudoers.ldap(5), sudo(8), sudo_plugin(5), visudo(8)"
+
+#. type: SH
+#: sudoers.man:4988
+#, no-wrap
+msgid "AUTHORS"
+msgstr "作者"
+
+#. type: Plain text
+#: sudoers.man:4992
+msgid ""
+"Many people have worked on B<sudo> over the years; this version consists of "
+"code written primarily by:"
+msgstr ""
+"多数の人々が長年に渡って B<sudo> の開発に携わってきた。\n"
+"当バージョンは主として次の者が書いたコードからできている。"
+
+#. type: Plain text
+#: sudoers.man:4995
+msgid "Todd C. Miller"
+msgstr "Todd C. Miller"
+
+#. type: Plain text
+#: sudoers.man:5002
+msgid ""
+"See the CONTRIBUTORS file in the B<sudo> distribution (https://www.sudo.ws/"
+"contributors.html) for an exhaustive list of people who have contributed to "
+"B<sudo>."
+msgstr ""
+"B<sudo> の開発に貢献してくださった方々の詳細なリストについては、\n"
+"配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。\n"
+"(https://www.sudo.ws/contributors.html)"
+
+#. type: SH
+#: sudoers.man:5002
+#, no-wrap
+msgid "CAVEATS"
+msgstr "警告"
+
+#. type: Plain text
+#: sudoers.man:5018
+msgid ""
+"The I<sudoers> file should B<always> be edited by the B<visudo> command "
+"which locks the file and does grammatical checking.  It is imperative that "
+"the I<sudoers> file be free of syntax errors since B<sudo> will not run with "
+"a syntactically incorrect I<sudoers> file."
+msgstr ""
+"I<sudoers> ファイルの編集には、B<必ず> B<visudo> コマンドを使うべきである。\n"
+"そうすれば、B<visudo> がファイルをロックし、文法のチェックをやってくれる。\n"
+"I<sudoers> ファイルに文法的な間違いがあると、B<sudo> が動かなくなるので、\n"
+"I<sudoers> ファイルには文法エラーが絶対にあってはならないのだ。"
+
+#. type: Plain text
+#: sudoers.man:5028
+msgid ""
+"When using netgroups of machines (as opposed to users), if you store fully "
+"qualified host name in the netgroup (as is usually the case), you either "
+"need to have the machine's host name be fully qualified as returned by the "
+"hostname command or use the I<fqdn> option in I<sudoers>."
+msgstr ""
+"ネットグループを (ユーザについてではなく) マシンについて使用し、\n"
+"I<netgroup> ファイルに完全修飾ホスト名を記載する場合は \n"
+"(たいていそうするものだが)、そのマシンのホスト名を \n"
+"hostname コマンドが出力する通りの完全修飾名で書くか、さもなければ、\n"
+"I<sudoers> ファイルで I<fqdn> オプションを使うかしなければならない。"
+
+#. type: SH
+#: sudoers.man:5028
+#, no-wrap
+msgid "BUGS"
+msgstr "バグ"
+
+#. type: Plain text
+#: sudoers.man:5032
+msgid ""
+"If you feel you have found a bug in B<sudo>, please submit a bug report at "
+"https://bugzilla.sudo.ws/"
+msgstr ""
+"B<sudo> にバグを発見したと思ったら、https://bugzilla.sudo.ws/ \n"
+"にアクセスして、バグレポートを提出していただきたい。"
+
+#. type: SH
+#: sudoers.man:5032
+#, no-wrap
+msgid "SUPPORT"
+msgstr "サポート"
+
+#. type: Plain text
+#: sudoers.man:5036
+msgid ""
+"Limited free support is available via the sudo-users mailing list, see "
+"https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the "
+"archives."
+msgstr ""
+"ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。\n"
+"購読やアーカイブの検索には、下記 URL をご覧になるとよい。\n"
+"https://www.sudo.ws/mailman/listinfo/sudo-users"
+
+#. type: SH
+#: sudoers.man:5036
+#, no-wrap
+msgid "DISCLAIMER"
+msgstr "免責"
+
+#. type: Plain text
+#: sudoers.man:5045
+msgid ""
+"B<sudo> is provided \\(LqAS IS\\(Rq and any express or implied warranties, "
+"including, but not limited to, the implied warranties of merchantability and "
+"fitness for a particular purpose are disclaimed.  See the LICENSE file "
+"distributed with B<sudo> or https://www.sudo.ws/license.html for complete "
+"details."
+msgstr ""
+"B<sudo> は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証"
+"も、\n"
+"商品性や特定目的への適合性についての黙示的な保証を含め、\n"
+"またそれのみに止まらず、これを否認する。詳細な全文については、\n"
+"B<sudo> と一緒に配布されている LICENSE ファイルや、\n"
+"下記 Web ページをご覧いただきたい。\n"
+"https://www.sudo.ws/license.html"
diff --git a/manual/sudo/po4a/sudoers.ldap.5/add_ja/add0.txt b/manual/sudo/po4a/sudoers.ldap.5/add_ja/add0.txt
new file mode 100644 (file)
index 0000000..4149d00
--- /dev/null
@@ -0,0 +1,11 @@
+PO4A-HEADER: mode=before;position=\.TH
+.\"
+.\" Japanese Version Copyright (c) 2009 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
+.\"         by Yoichi Chonan <cyoichi@maple.con.ne.jp>
+.\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
+.\"
diff --git a/manual/sudo/po4a/sudoers.ldap.5/add_ja/add1.txt b/manual/sudo/po4a/sudoers.ldap.5/add_ja/add1.txt
new file mode 100644 (file)
index 0000000..a754ac9
--- /dev/null
@@ -0,0 +1,6 @@
+PO4A-HEADER: mode=after; position=複数のユーザを割り当てればよい; beginboundary=^
+.IP "[\fB訳注\fP]:" 8
+原文の著者は、sudoers セキュリティポリシーの設定の単位となる 
+objectClass 属性が sudoRole の LDAP エントリのうち、
+\fI/etc/sudoers\fP の各ユーザ設定に相当するものを「a sudoRole」と呼んでいる。
+「sudoRole エントリ」という訳語を当てた。
diff --git a/manual/sudo/po4a/sudoers.ldap.5/add_ja/add2.txt b/manual/sudo/po4a/sudoers.ldap.5/add_ja/add2.txt
new file mode 100644 (file)
index 0000000..4c3bb63
--- /dev/null
@@ -0,0 +1,16 @@
+PO4A-HEADER: mode=after; position=コンテナの下に配置されている; beginboundary=^
+.IP "[\fB訳注\fP]:" 8
+ここで言うコンテナ (容器、入れもの) とは、データを格納するためではなく、
+データを含む下位のエントリをまとめておくために存在する上位エントリのことである。
+たとえば、OpenLDAP 用の ou=SUDOers コンテナなら、
+その設定ファイルの記述はこんなふうになる (sudo 同梱の README.LDAP から引用)。
+.nf
+.sp
+.RS 12n
+dn: ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: organizationalUnit
+ou: SUDOers
+.RE
+.fi
+.PP
diff --git a/manual/sudo/po4a/sudoers.ldap.5/sudoers.ldap.ja.po b/manual/sudo/po4a/sudoers.ldap.5/sudoers.ldap.ja.po
new file mode 100644 (file)
index 0000000..598c71b
--- /dev/null
@@ -0,0 +1,2688 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2016-09-11 21:39+0900\n"
+"PO-Revision-Date: 2016-09-20 08:54+0900\n"
+"Last-Translator: Chonan Yoichi <cyoichi@maple.ocn.ne.jp>\n"
+"Language-Team: Linux JM project <linuxjm-discuss@lists.sourceforge.jp>>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: sudoers.ldap.man:19
+#, no-wrap
+msgid "SUDOERS.LDAP"
+msgstr "SUDOERS.LDAP"
+
+#. type: TH
+#: sudoers.ldap.man:19
+#, no-wrap
+msgid "June 15, 2016"
+msgstr "June 15, 2016"
+
+#. type: TH
+#: sudoers.ldap.man:19
+#, no-wrap
+msgid "Sudo 1.8.17"
+msgstr "Sudo 1.8.17"
+
+#. type: TH
+#: sudoers.ldap.man:19
+#, no-wrap
+msgid "File Formats Manual"
+msgstr "File Formats Manual"
+
+#. type: SH
+#: sudoers.ldap.man:22
+#, no-wrap
+msgid "NAME"
+msgstr "名前"
+
+#. type: Plain text
+#: sudoers.ldap.man:25
+msgid "B<sudoers.ldap> - sudo LDAP configuration"
+msgstr "B<sudoers.ldap> - LDAP を使用した sudoers ポリシーの設定"
+
+#. type: SH
+#: sudoers.ldap.man:25
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "説明"
+
+#. type: Plain text
+#: sudoers.ldap.man:35
+msgid ""
+"In addition to the standard I<sudoers> file, B<sudo> may be configured via "
+"LDAP.  This can be especially useful for synchronizing I<sudoers> in a "
+"large, distributed environment."
+msgstr ""
+"B<sudoers> セキュリティポリシーは I<sudoers> ファイルによって設定するのが標準"
+"だが、\n"
+"LDAP を通して設定することもできる。この方法は、大規模な分散環境で \n"
+"sudoers セキュリティポリシーの設定を同期させたい場合に、\n"
+"とりわけ便利かもしれない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:39
+msgid "Using LDAP for I<sudoers> has several benefits:"
+msgstr ""
+"sudoers セキュリティポリシーの設定に LDAP を使用すると、有利な点がいくつかあ"
+"る。"
+
+#. type: TP
+#: sudoers.ldap.man:39 sudoers.ldap.man:47 sudoers.ldap.man:58
+#: sudoers.ldap.man:67
+#, no-wrap
+msgid "B<\\(bu>"
+msgstr "B<\\(bu>"
+
+#. type: Plain text
+#: sudoers.ldap.man:47
+msgid ""
+"B<sudo> no longer needs to read I<sudoers> in its entirety.  When LDAP is "
+"used, there are only two or three LDAP queries per invocation.  This makes "
+"it especially fast and particularly usable in LDAP environments."
+msgstr ""
+"B<sudo> はもはや sudoers セキュリティポリシーの設定をまるまる全部読み込む必要"
+"がない。\n"
+"LDAP を使用する場合は、B<sudo> の実行ごとに、たった二、三回 \n"
+"LDAP に問い合わせを行うだけですむ。\n"
+"そのため、LDAP 環境は実行速度が非常に早く、たいへん使い勝手がよい。"
+
+#. type: Plain text
+#: sudoers.ldap.man:58
+msgid ""
+"B<sudo> no longer exits if there is a typo in I<sudoers>.  It is not "
+"possible to load LDAP data into the server that does not conform to the "
+"sudoers schema, so proper syntax is guaranteed.  It is still possible to "
+"have typos in a user or host name, but this will not prevent B<sudo> from "
+"running."
+msgstr ""
+"sudoers セキュリティポリシーの設定にタイプミスがあっても、\n"
+"もうそのために B<sudo> が終了してしまうことがない。\n"
+"LDAP のデータは、sudo 用のスキーマに従っていなければ、\n"
+"サーバーにロードできない。結果として、\n"
+"正しいシンタクスが保証されることになる。\n"
+"ユーザ名やホスト名をタイプミスすることなら相変わらずあるだろうが、\n"
+"そのために B<sudo> が動かなくなることはない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:67
+msgid ""
+"It is possible to specify per-entry options that override the global default "
+"options.  I</etc/sudoers> only supports default options and limited options "
+"associated with user/host/commands/aliases.  The syntax is complicated and "
+"can be difficult for users to understand.  Placing the options directly in "
+"the entry is more natural."
+msgstr ""
+"エントリごとにオプションを指定して、\n"
+"グローバルなデフォルト・オプションを上書きすることができる。\n"
+"I</etc/sudoers> はグローバルなデフォルト・オプションと、ユーザ、ホスト、\n"
+"コマンド、変身対象に結びついた限定されたオプションしかサポートしていない。\n"
+"また、I</etc/sudoers> の書式は複雑で、ユーザには理解しにくいかもしれない。\n"
+"オプションをエントリ内で直接指定する方が、ずっと自然である。"
+
+#. type: Plain text
+#: sudoers.ldap.man:79
+msgid ""
+"The B<visudo> program is no longer needed.  B<visudo> provides locking and "
+"syntax checking of the I</etc/sudoers> file.  Since LDAP updates are atomic, "
+"locking is no longer necessary.  Because syntax is checked when the data is "
+"inserted into LDAP, there is no need for a specialized tool to check syntax."
+msgstr ""
+"B<visudo> プログラムはもう必要がない。B<visudo> の役割は、\n"
+"I</etc/sudoers> ファイルのロッキングとシンタクス・チェックである。\n"
+"LDAP のデータ更新はアトミック操作なので \n"
+"(訳注: それ故、データは更新されていないか、\n"
+"すでに更新されたかのどちらかであって、中間状態がないので)、\n"
+"ロッキングはもはや必要ではない。シンタクスは、\n"
+"データが LDAP にインサートされるときチェックされるから、\n"
+"シンタクス・チェック用の特別なツールも不要になっている。"
+
+#. type: Plain text
+#: sudoers.ldap.man:85
+msgid ""
+"Another major difference between LDAP and file-based I<sudoers> is that in "
+"LDAP, B<sudo>-specific Aliases are not supported."
+msgstr ""
+"LDAP による設定と I<sudoers> ファイルによる設定との、もう一つの大きな違い"
+"は、\n"
+"LDAP では B<sudo> 専用のエイリアスがサポートされていないことである。"
+
+#. type: Plain text
+#: sudoers.ldap.man:96
+msgid ""
+"For the most part, there is really no need for B<sudo>-specific Aliases.  "
+"Unix groups, non-Unix groups (via the I<group_plugin>)  or user netgroups "
+"can be used in place of User_Aliases and Runas_Aliases.  Host netgroups can "
+"be used in place of Host_Aliases.  Since groups and netgroups can also be "
+"stored in LDAP there is no real need for B<sudo>-specific aliases."
+msgstr ""
+"たいていの場合、B<sudo> 専用のエイリアスは実のところ必要がない。\n"
+"User_Aliases や Runas_Aliases の代わりに、\n"
+"Unix のグループ、non-Unix グループ (I<group_plugin> を介して)、\n"
+"ユーザのネットグループが使用できる。\n"
+"また、Host_Aliases の代わりには、ホストのネットグループが使える。\n"
+"LDAP には グループやネットグループも格納できるので、\n"
+"B<sudo> 専用のエイリアスがどうしても必要というわけではないのだ。"
+
+#. type: Plain text
+#: sudoers.ldap.man:104
+msgid ""
+"Cmnd_Aliases are not really required either since it is possible to have "
+"multiple users listed in a sudoRole.  Instead of defining a Cmnd_Alias that "
+"is referenced by multiple users, one can create a sudoRole that contains the "
+"commands and assign multiple users to it."
+msgstr ""
+"Cmnd_Aliases もまったく必要がない。\n"
+"一つの sudoRole エントリに複数のユーザを登録できるからだ。\n"
+"複数のユーザが参照する Cmnd_Alias を定義する代わりに、\n"
+"複数のコマンドを含む sudoRole エントリを一つ作成して、\n"
+"そこに複数のユーザを割り当てればよい。"
+
+#. type: SS
+#: sudoers.ldap.man:104
+#, no-wrap
+msgid "SUDOers LDAP container"
+msgstr "LDAP の SUDOers コンテナ"
+
+#. type: Plain text
+#: sudoers.ldap.man:110
+msgid ""
+"The I<sudoers> configuration is contained in the ou=SUDOers LDAP container."
+msgstr ""
+"LDAP では、sudoers セキュリティポリシーの設定は \n"
+"ou=SUDOers コンテナの下に配置されている。"
+
+#. type: Plain text
+#: sudoers.ldap.man:123
+msgid ""
+"Sudo first looks for the cn=defaults entry in the SUDOers container.  If "
+"found, the multi-valued sudoOption attribute is parsed in the same manner as "
+"a global Defaults line in I</etc/sudoers>.  In the following example, the "
+"SSH_AUTH_SOCK variable will be preserved in the environment for all users."
+msgstr ""
+"sudo はまず最初に SUDOers コンテナ配下に cn=defaults のエントリを捜す。\n"
+"見つかった場合は、複数回指定可能な sudoOption 属性が、I</etc/sudoers> \n"
+"のグローバルな Defaults 行と同じやり方で解析される。以下の例では、\n"
+"環境変数 SSH_AUTH_SOCK がすべてのユーザの環境に保存されることになる。"
+
+#. type: Plain text
+#: sudoers.ldap.man:132
+#, no-wrap
+msgid ""
+"dn: cn=defaults,ou=SUDOers,dc=example,dc=com\n"
+"objectClass: top\n"
+"objectClass: sudoRole\n"
+"cn: defaults\n"
+"description: Default sudoOption's go here\n"
+"sudoOption: env_keep+=SSH_AUTH_SOCK\n"
+msgstr ""
+"dn: cn=defaults,ou=SUDOers,dc=example,dc=com\n"
+"objectClass: top\n"
+"objectClass: sudoRole\n"
+"cn: defaults\n"
+"description: Default sudoOption's go here\n"
+"sudoOption: env_keep+=SSH_AUTH_SOCK\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:138
+msgid ""
+"The equivalent of a sudoer in LDAP is a sudoRole.  It consists of the "
+"following attributes:"
+msgstr ""
+"LDAP において I</etc/sudoers> の個々の「ユーザ設定」に相当するのは、\n"
+"sudoRole エントリである。それは以下の属性からなっている。"
+
+#. type: TP
+#: sudoers.ldap.man:138
+#, no-wrap
+msgid "B<sudoUser>"
+msgstr "B<sudoUser>"
+
+#. type: Plain text
+#: sudoers.ldap.man:161
+msgid ""
+"A user name, user ID (prefixed with \\(oq#\\(cq), Unix group name or ID "
+"(prefixed with \\(oq%\\(cq or \\(oq%#\\(cq respectively), user netgroup "
+"(prefixed with \\(oq+\\(cq), or non-Unix group name or ID (prefixed with "
+"\\(oq%:\\(cq or \\(oq%:#\\(cq respectively).  User netgroups are matched "
+"using the user and domain members only; the host member is not used when "
+"matching.  Non-Unix group support is only available when an appropriate "
+"I<group_plugin> is defined in the global I<defaults> sudoRole object."
+msgstr ""
+"次のうちのいづれか。ユーザ名、ユーザ ID (接頭辞 '#' が付く)、\n"
+"Unix グループ名またはグループ ID (それぞれ接頭辞 '%' と \n"
+"'%#' が付く)、ユーザのネットグループ (接頭辞 '+' が付く)、\n"
+"non-Unix グループ名またはグループ ID (それぞれ接頭辞 '%:' と '%:#' が付"
+"く)。\n"
+"なお、ユーザのネットグループについては、\n"
+"ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行わ"
+"れる。\n"
+"ホストの要素はマッチングに使用されない。\n"
+"non-Unix グループが使用できるのは、グローバルな I<defaults> sudoRole \n"
+"オブジェクトで適切な I<group_plugin> が指定されているときだけである。"
+
+#. type: TP
+#: sudoers.ldap.man:161
+#, no-wrap
+msgid "B<sudoHost>"
+msgstr "B<sudoHost>"
+
+#. type: Plain text
+#: sudoers.ldap.man:170
+msgid ""
+"A host name, IP address, IP network, or host netgroup (prefixed with a \\(oq+"
+"\\(cq).  The special value ALL will match any host.  Host netgroups are "
+"matched using the host (both qualified and unqualified)  and domain members "
+"only; the user member is not used when matching."
+msgstr ""
+"次のうちのいづれか。ホスト名、IP アドレス、ネットワークアドレス、\n"
+"ホストのネットグループ (接頭辞 '+' が付く)。\n"
+"ALL という特別な値はいかなるホストにもマッチする。\n"
+"なお、ホストのネットグループについては、\n"
+"ネットグループの成員中のホスト (完全修飾名とそうでないもののどちらでも)\n"
+"とドメインの要素のみを使って、マッチングが行われる。\n"
+"ユーザの要素はマッチングに使用されない。"
+
+#. type: TP
+#: sudoers.ldap.man:170
+#, no-wrap
+msgid "B<sudoCommand>"
+msgstr "B<sudoCommand>"
+
+#. type: Plain text
+#: sudoers.ldap.man:177
+msgid ""
+"A fully-qualified Unix command name with optional command line arguments, "
+"potentially including globbing characters (aka wild cards).  If a command "
+"name is preceded by an exclamation point, \\(oq\\&!\\(cq, the user will be "
+"prohibited from running that command."
+msgstr ""
+"絶対パスで指定した Unix のコマンド名。コマンドライン引数を付けてもよく、\n"
+"glob 文字 (ワイルドカードとも言う) を含んでいてもよい。\n"
+"コマンドに感嘆符 '\\&!' を接頭辞として付けると、\n"
+"ユーザにそのコマンドの実行を禁じることになる。"
+
+#. type: Plain text
+#: sudoers.ldap.man:192
+msgid ""
+"The built-in command \\(Lqsudoedit\\(Rq is used to permit a user to run "
+"B<sudo> with the B<-e> option (or as B<sudoedit>).  It may take command line "
+"arguments just as a normal command does.  Note that \\(Lqsudoedit\\(Rq is a "
+"command built into B<sudo> itself and must be specified in without a leading "
+"path."
+msgstr ""
+"コマンド名として組み込みコマンドの \"sudoedit\" を使用すれば、\n"
+"ユーザが B<sudo> を B<-e> オプション付きで (あるいは、B<sudoedit> の名前"
+"で) \n"
+"実行するのを許可することになる。普通のコマンドの場合と同じように、\n"
+"コマンドライン引数まで指定してもよい。\"sudoedit\" は \n"
+"B<sudo> 本体に組み込まれたコマンドなので、これをコマンド名に指定するとき"
+"は、\n"
+"頭にパスをつけてはいけないことに注意していただきたい。"
+
+#. type: Plain text
+#: sudoers.ldap.man:196
+msgid "The special value ALL will match any command."
+msgstr "ALL という特別な値は、いかなるコマンドにもマッチする。"
+
+#. type: Plain text
+#: sudoers.ldap.man:207
+msgid ""
+"If a command name is prefixed with a SHA-2 digest, it will only be allowed "
+"if the digest matches.  This may be useful in situations where the user "
+"invoking B<sudo> has write access to the command or its parent directory.  "
+"The following digest formats are supported: sha224, sha256, sha384 and "
+"sha512.  The digest name must be followed by a colon (\\(oq:\\&\\(cq)  and "
+"then the actual digest, in either hex or base64 format.  For example, given "
+"the following value for sudoCommand:"
+msgstr ""
+"コマンド名の前に SHA-2 ダイジェストが付いていると、実行が許可されるのは、\n"
+"ダイジェストがマッチしたときだけになる。これは、B<sudo> を実行するユーザ"
+"が、\n"
+"対象となるコマンドやその親ディレクトリに書き込み権限を持っているような場合"
+"に、\n"
+"役に立つだろう。ダイジェストのフォーマットとしては、sha224, sha256, \n"
+"sha384, sha512 がサポートされている。ダイジェスト名の後ろにはコロン \n"
+"(':\\&') を置いて、その後に実際のダイジェストを続けなければならない。\n"
+"ダイジェストは、16 進数でも base64 形式でもよい。\n"
+"たとえば、sudoCommand に対して以下の値を指定すると、"
+
+#. type: Plain text
+#: sudoers.ldap.man:211
+#, no-wrap
+msgid "sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ /bin/ls\n"
+msgstr "sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ /bin/ls\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:219
+msgid ""
+"The user may only run I</bin/ls> if its sha224 digest matches the specified "
+"value.  Command digests are only supported by version 1.8.7 or higher."
+msgstr ""
+"ユーザが I</bin/ls> を実行できるのは、I</bin/ls> の sha224 \n"
+"ダイジェストが指定した値とマッチしたときだけになる。\n"
+"コマンドのダイジェストをサポートしているのは、バージョン 1.8.7 以上だけであ"
+"る。"
+
+#. type: TP
+#: sudoers.ldap.man:220
+#, no-wrap
+msgid "B<sudoOption>"
+msgstr "B<sudoOption>"
+
+#. type: Plain text
+#: sudoers.ldap.man:226
+msgid ""
+"Identical in function to the global options described above, but specific to "
+"the sudoRole in which it resides."
+msgstr ""
+"働きは、前述のグローバルオプションと同じだが、それが属している \n"
+"sudoRole エントリに対してのみ効果がある。"
+
+#. type: TP
+#: sudoers.ldap.man:226
+#, no-wrap
+msgid "B<sudoRunAsUser>"
+msgstr "B<sudoRunAsUser>"
+
+#. type: Plain text
+#: sudoers.ldap.man:238
+msgid ""
+"A user name or uid (prefixed with \\(oq#\\(cq)  that commands may be run as "
+"or a Unix group (prefixed with a \\(oq%\\(cq)  or user netgroup (prefixed "
+"with a \\(oq+\\(cq)  that contains a list of users that commands may be run "
+"as.  The special value ALL will match any user."
+msgstr ""
+"変身対象となるユーザ名か uid (接頭辞 '#' が付く) を指定する。\n"
+"変身対象ユーザをリストに含む Unix グループ名 (接頭辞 '%' が付く) や、\n"
+"ユーザのネットグループ (接頭辞 '+' が付く) も使える。\n"
+"特別な値 ALL は、いかなるユーザにもマッチする。"
+
+#. type: Plain text
+#: sudoers.ldap.man:250
+msgid ""
+"The sudoRunAsUser attribute is only available in B<sudo> versions 1.7.0 and "
+"higher.  Older versions of B<sudo> use the sudoRunAs attribute instead."
+msgstr ""
+"属性 sudoRunAsUser は、バージョン 1.7.0 以上の B<sudo> でなければ、\n"
+"利用できない。それ以前のバージョンの B<sudo> では、\n"
+"代わりに属性 sudoRunAs を使用している。"
+
+#. type: TP
+#: sudoers.ldap.man:250
+#, no-wrap
+msgid "B<sudoRunAsGroup>"
+msgstr "B<sudoRunAsGroup>"
+
+#. type: Plain text
+#: sudoers.ldap.man:258
+msgid ""
+"A Unix group or gid (prefixed with \\(oq#\\(cq)  that commands may be run "
+"as.  The special value ALL will match any group."
+msgstr ""
+"変身対象となる Unix グループ名か gid (接頭辞 '#' が付く)。\n"
+"特別な値 ALL はいかなるグループにもマッチする。"
+
+#. type: Plain text
+#: sudoers.ldap.man:265
+msgid ""
+"The sudoRunAsGroup attribute is only available in B<sudo> versions 1.7.0 and "
+"higher."
+msgstr ""
+"属性 sudoRunAsGroup は、バージョン 1.7.0 以上の B<sudo> でなければ、\n"
+"利用できない。"
+
+#. type: TP
+#: sudoers.ldap.man:265
+#, no-wrap
+msgid "B<sudoNotBefore>"
+msgstr "B<sudoNotBefore>"
+
+#. type: Plain text
+#: sudoers.ldap.man:279
+msgid ""
+"A timestamp in the form yyyymmddHHMMSSZ that can be used to provide a start "
+"date/time for when the sudoRole will be valid.  If multiple sudoNotBefore "
+"entries are present, the earliest is used.  Note that timestamps must be in "
+"Coordinated Universal Time (UTC), not the local timezone.  The minute and "
+"seconds portions are optional, but some LDAP servers require that they be "
+"present (contrary to the RFC)."
+msgstr ""
+"yyyymmddHHMMSSZ 形式のタイムスタンプ。\n"
+"この属性を含む sudoRole エントリがいつから有効になるかという、\n"
+"スタート日時を指定するのに使用する。\n"
+"複数の sudoNotBefore が存在する場合は、一番早い日時が採用される。\n"
+"タイムスタンプは協定世界時 (UTC) によるものでなければならず、\n"
+"ローカル・タイムゾーンによるものではないことに注意していただきたい。\n"
+"分や秒の部分は省略できるが、LDAP サーバによっては (RFC の規定に反して) \n"
+"分や秒の指定を必須にしていることもある。"
+
+#. type: Plain text
+#: sudoers.ldap.man:288
+msgid ""
+"The sudoNotBefore attribute is only available in B<sudo> versions 1.7.5 and "
+"higher and must be explicitly enabled via the B<SUDOERS_TIMED> option in I</"
+"etc/ldap.conf>."
+msgstr ""
+"属性 sudoNotBefore は、バージョン 1.7.5 以上の B<sudo> でなければ、\n"
+"利用できない。また、I</etc/ldap.conf> の B<SUDOERS_TIMED> \n"
+"オプションで明示的に有効にする必要がある。"
+
+#. type: TP
+#: sudoers.ldap.man:288
+#, no-wrap
+msgid "B<sudoNotAfter>"
+msgstr "B<sudoNotAfter>"
+
+#. type: Plain text
+#: sudoers.ldap.man:302
+msgid ""
+"A timestamp in the form yyyymmddHHMMSSZ that indicates an expiration date/"
+"time, after which the sudoRole will no longer be valid.  If multiple "
+"sudoNotAfter entries are present, the last one is used.  Note that "
+"timestamps must be in Coordinated Universal Time (UTC), not the local "
+"timezone.  The minute and seconds portions are optional, but some LDAP "
+"servers require that they be present (contrary to the RFC)."
+msgstr ""
+"yyyymmddHHMMSSZ 形式のタイムスタンプ。\n"
+"この属性を含む sudoRole エントリがもはや有効ではなくなる、\n"
+"失効日時を示している。複数の sudoNotAfter が存在する場合は、\n"
+"一番最後の日時が採用される。\n"
+"タイムスタンプは協定世界時 (UTC) によるものでなければならず、\n"
+"ローカル・タイムゾーンによるものではないことに注意していただきたい。\n"
+"分や秒の部分は省略できるが、LDAP サーバによっては (RFC の規定に反して) \n"
+"分や秒の指定を必須にしていることもある。"
+
+#. type: Plain text
+#: sudoers.ldap.man:312
+msgid ""
+"The sudoNotAfter attribute is only available in B<sudo> versions 1.7.5 and "
+"higher and must be explicitly enabled via the B<SUDOERS_TIMED> option in I</"
+"etc/ldap.conf>."
+msgstr ""
+"属性  sudoNotAfter は、バージョン 1.7.5 以上の B<sudo> でなければ、\n"
+"利用できない。また、I</etc/ldap.conf> の B<SUDOERS_TIMED> \n"
+"オプションで明示的に有効にする必要がある。"
+
+#. type: TP
+#: sudoers.ldap.man:312
+#, no-wrap
+msgid "B<sudoOrder>"
+msgstr "B<sudoOrder>"
+
+#. type: Plain text
+#: sudoers.ldap.man:332
+msgid ""
+"The sudoRole entries retrieved from the LDAP directory have no inherent "
+"order.  The sudoOrder attribute is an integer (or floating point value for "
+"LDAP servers that support it) that is used to sort the matching entries.  "
+"This allows LDAP-based sudoers entries to more closely mimic the behavior of "
+"the sudoers file, where the order of the entries influences the result.  If "
+"multiple entries match, the entry with the highest sudoOrder attribute is "
+"chosen.  This corresponds to the \\(Lqlast match\\(Rq behavior of the "
+"sudoers file.  If the sudoOrder attribute is not present, a value of 0 is "
+"assumed."
+msgstr ""
+"LDAP から取り出される sudoRole エントリには、固有の順番というものがない。\n"
+"そこで、整数の値を取る sudoOrder 属性を使用して (浮動小数点値をサポートす"
+"る \n"
+"LDAP サーバでは、浮動小数点値も使える)、マッチするエントリの順番付けを行"
+"う。\n"
+"そうすることで、LDAP による sudoers 設定のエントリが、\n"
+"エントリの順番が結果に影響を及ぼす sudoers ファイルの動作を、\n"
+"より忠実に真似られるようになるわけだ。\n"
+"sudoOrder 属性を使用すると、複数のエントリがマッチする場合には、\n"
+"一番大きな sudoOrder 属性を持つエントリが選ばれることになる。この動作は、\n"
+"sudoers ファイルの「最後にマッチしたものが選ばれる」動作に相当するわけであ"
+"る。\n"
+"sudoOrder 属性が指定されていない場合は、値が 0 であると見なされる。"
+
+#. type: Plain text
+#: sudoers.ldap.man:338
+msgid ""
+"The sudoOrder attribute is only available in B<sudo> versions 1.7.5 and "
+"higher."
+msgstr ""
+"属性 sudoOrder は、バージョン 1.7.5 以上の B<sudo> でなければ、\n"
+"利用できない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:348
+msgid ""
+"Each attribute listed above should contain a single value, but there may be "
+"multiple instances of each attribute type.  A sudoRole must contain at least "
+"one sudoUser, sudoHost and sudoCommand."
+msgstr ""
+"上記の各属性は単一の値を持つべきだが、同じタイプの属性が複数回現れても構わな"
+"い。\n"
+"sudoRole エントリは、sudoUser、sudoHost、sudoCommand を、\n"
+"少なくともそれぞれ一個は含んでいなければならない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:352
+msgid ""
+"The following example allows users in group wheel to run any command on any "
+"host via B<sudo>:"
+msgstr ""
+"次の例では、wheel グループのユーザに \n"
+"B<sudo> 経由でいかなるホストでも任意のコマンドの実行を許可している。"
+
+#. type: Plain text
+#: sudoers.ldap.man:362
+#, no-wrap
+msgid ""
+"dn: cn=%wheel,ou=SUDOers,dc=example,dc=com\n"
+"objectClass: top\n"
+"objectClass: sudoRole\n"
+"cn: %wheel\n"
+"sudoUser: %wheel\n"
+"sudoHost: ALL\n"
+"sudoCommand: ALL\n"
+msgstr ""
+"dn: cn=%wheel,ou=SUDOers,dc=example,dc=com\n"
+"objectClass: top\n"
+"objectClass: sudoRole\n"
+"cn: %wheel\n"
+"sudoUser: %wheel\n"
+"sudoHost: ALL\n"
+"sudoCommand: ALL\n"
+
+#. type: SS
+#: sudoers.ldap.man:364
+#, no-wrap
+msgid "Anatomy of LDAP sudoers lookup"
+msgstr "LDAP を使って sudoers セキュリティポリシーの設定を照合するときの詳細"
+
+#. type: Plain text
+#: sudoers.ldap.man:376
+msgid ""
+"When looking up a sudoer using LDAP there are only two or three LDAP queries "
+"per invocation.  The first query is to parse the global options.  The second "
+"is to match against the user's name and the groups that the user belongs "
+"to.  (The special ALL tag is matched in this query too.)  If no match is "
+"returned for the user's name and groups, a third query returns all entries "
+"containing user netgroups and other non-Unix groups and checks to see if the "
+"user belongs to any of them."
+msgstr ""
+"LDAP を使って、あるユーザに関する sudoers セキュリティポリシーを照合すると"
+"き、\n"
+"LDAP の問い合わせは B<sudo> の実行ごとにたった二回か三回行われるだけであ"
+"る。\n"
+"一回目の問い合わせは、グローバル・オプションを解析するために行われる。\n"
+"二回目の問い合わせは、B<sudo> を実行するユーザのユーザ名や、\n"
+"所属グループに対応するエントリを見つけるためだ \n"
+"(特別なタグ ALL が何にでもマッチするのは、この場合も同様である)。\n"
+"ユーザ名やグループに対応するエントリが得られなかった場合は、\n"
+"三回目の問い合わせが行われ、ユーザのネットグループや \n"
+"non-Unix グループを含んでいるすべてのエントリーを取得して、\n"
+"問題のユーザがそのどれかに属していないかをチェックする。"
+
+#. type: Plain text
+#: sudoers.ldap.man:381
+msgid ""
+"If timed entries are enabled with the B<SUDOERS_TIMED> configuration "
+"directive, the LDAP queries include a sub-filter that limits retrieval to "
+"entries that satisfy the time constraints, if any."
+msgstr ""
+"I</etc/ldap.conf> の設定オプション B<SUDOERS_TIMED> を有功にして、\n"
+"エントリの日時制限を使えるようにしている場合は、\n"
+"LDAP の問い合わせにサブフィルターによる選別が伴うことになる。\n"
+"そのサブフィルターが、日時制限が存在するエントリについては、\n"
+"その制限を満たしているエントリのみに、情報の検索を限定するのである。"
+
+#. type: Plain text
+#: sudoers.ldap.man:395
+msgid ""
+"If the B<NETGROUP_BASE> configuration directive is present (see "
+"I<Configuring ldap.conf> below), queries are performed to determine the list "
+"of netgroups the user belongs to before the sudoers query.  This makes it "
+"possible to include netgroups in the sudoers query string in the same manner "
+"as Unix groups.  The third query mentioned above is not performed unless a "
+"group provider plugin is also configured.  The actual LDAP queries performed "
+"by B<sudo> are as follows:"
+msgstr ""
+"B<NETGROUP_BASE> 設定オプションが使用されている場合は \n"
+"(下記の 「ldap.conf の設定」を参照)、\n"
+"ユーザがどことどこのネットグループに所属しているかを調べるための問い合わせ"
+"が、\n"
+"sudoers セキュリティポリシー設定の問い合わせの前に行われる。\n"
+"そうすることで、セキュリティポリシー設定の問い合わせに使う文字列に、\n"
+"ネットグループを Unix グループと同じように使うことが可能になるのだ。\n"
+"上で述べた三回目の問い合わせは、\n"
+"グループ・プロバイダー・プラグインも同時に設定されていないかぎり、行われな"
+"い。\n"
+"ネットグループについての B<sudo> による LDAP の問い合わせは、\n"
+"実際には次のように行われる。"
+
+#. type: TP
+#: sudoers.ldap.man:395
+#, no-wrap
+msgid "1.\\&"
+msgstr "1.\\&"
+
+#. type: Plain text
+#: sudoers.ldap.man:413
+msgid ""
+"Match all nisNetgroup records with a nisNetgroupTriple containing the user, "
+"host and NIS domain.  The query will match nisNetgroupTriple entries with "
+"either the short or long form of the host name or no host name specified in "
+"the tuple.  If the NIS domain is set, the query will match only match "
+"entries that include the domain or for which there is no domain present.  If "
+"the NIS domain is I<not> set, a wildcard is used to match any domain name "
+"but be aware that the NIS schema used by some LDAP servers may not support "
+"wild cards for nisNetgroupTriple."
+msgstr ""
+"nisNetgroupTriple (ユーザ、ホスト、NIS ドメインを含む) を持ったすべての \n"
+"nisNetgroup レコードと照合を行う。この問い合わせでは、 \n"
+"nisNetgroupTriple エントリーのホスト名が長い形式でも短い形式でも、\n"
+"あるいは、タプルにホスト名が指定されていなくても、マッチすることになる。\n"
+"問い合わせに NIS ドメインがセットされている場合にマッチするのは、\n"
+"そのドメインを含むか、あるいは、ドメインの指定がないエントリだけである。\n"
+"NIS ドメインがセットされていない場合は、ワイルドカードが使用され、\n"
+"どんなドメイン名にもマッチすることになるが、\n"
+"LDAP サーバの中には、使用している NIS スキーマが、\n"
+"nisNetgroupTriple に対するワイルドカードをサポートしていないものがあることに"
+"留意していただきたい。"
+
+#. type: TP
+#: sudoers.ldap.man:413
+#, no-wrap
+msgid "2.\\&"
+msgstr "2.\\&"
+
+#. type: Plain text
+#: sudoers.ldap.man:420
+msgid ""
+"Repeated queries are performed to find any nested nisNetgroup records with a "
+"memberNisNetgroup entry that refers to an already-matched record."
+msgstr ""
+"問い合わせを繰り返して行い、すでにマッチしたレコードを指す \n"
+"memberNisNetgroup エントリが、入れ子のように使われている \n"
+"nisNetgroup レコードがあれば、そうしたものを見つけ出す。"
+
+#. type: Plain text
+#: sudoers.ldap.man:426
+msgid ""
+"For sites with a large number of netgroups, using B<NETGROUP_BASE> can "
+"significantly speed up B<sudo>'s execution time."
+msgstr ""
+"多数のネットグループを持つサイトでは、B<NETGROUP_BASE> を使用すると、\n"
+"B<sudo> の実行速度を大幅に向上させることができる。"
+
+#. type: SS
+#: sudoers.ldap.man:426
+#, no-wrap
+msgid "Differences between LDAP and non-LDAP sudoers"
+msgstr "LDAP を使う場合と使わない場合の sudoers セキュリティポリシー設定の相違点"
+
+#. type: Plain text
+#: sudoers.ldap.man:432
+msgid ""
+"There are some subtle differences in the way sudoers is handled once in "
+"LDAP.  Probably the biggest is that according to the RFC, LDAP ordering is "
+"arbitrary and you cannot expect that Attributes and Entries are returned in "
+"any specific order."
+msgstr ""
+"LDAP を使用した場合は、sudoers セキュリティポリシー設定の処理方法に \n"
+"I</etc/sudoers> の場合とは微妙な違いがいくつかある。たぶん最大の違いは、\n"
+"RFC に書いてあるとおり、LDAP の順序づけは不定なので、\n"
+"属性やエントリが何らかの決まった順序で返されることを期待できないことだろう。"
+
+#. type: Plain text
+#: sudoers.ldap.man:442
+msgid ""
+"The order in which different entries are applied can be controlled using the "
+"sudoOrder attribute, but there is no way to guarantee the order of "
+"attributes within a specific entry.  If there are conflicting command rules "
+"in an entry, the negative takes precedence.  This is called paranoid "
+"behavior (not necessarily the most specific match)."
+msgstr ""
+"それでも、個々のエントリに割り振られる順番については、sudoOrder \n"
+"によってコントロールすることができる。\n"
+"だが、ある特定のエントリ内での属性の順番については、\n"
+"それを確定する方法は存在しないのだ。\n"
+"もっとも、あるエントリーにコマンドに関して相反するルールがある場合は、\n"
+"否定する方が優先される。いわゆるパラノイア的動作である \n"
+"(それが一番すっきりしたマッチだとはかぎらないが)。"
+
+#. type: Plain text
+#: sudoers.ldap.man:444
+msgid "Here is an example:"
+msgstr "例を挙げてみよう。"
+
+#. type: Plain text
+#: sudoers.ldap.man:452
+#, no-wrap
+msgid ""
+"# /etc/sudoers:\n"
+"# Allow all commands except shell\n"
+"johnny  ALL=(root) ALL,!/bin/sh\n"
+"# Always allows all commands because ALL is matched last\n"
+"puddles ALL=(root) !/bin/sh,ALL\n"
+msgstr ""
+"# /etc/sudoers の場合:\n"
+"# shell 以外のすべてのコマンドを許可する\n"
+"johnny  ALL=(root) ALL,!/bin/sh\n"
+"# 次の設定は、ALL が最後にマッチするので、常にすべての\n"
+"# コマンドを許可することになる\n"
+"puddles ALL=(root) !/bin/sh,ALL\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:463
+#, no-wrap
+msgid ""
+"# LDAP equivalent of johnny\n"
+"# Allows all commands except shell\n"
+"dn: cn=role1,ou=Sudoers,dc=my-domain,dc=com\n"
+"objectClass: sudoRole\n"
+"objectClass: top\n"
+"cn: role1\n"
+"sudoUser: johnny\n"
+"sudoHost: ALL\n"
+"sudoCommand: ALL\n"
+"sudoCommand: !/bin/sh\n"
+msgstr ""
+"# 上記の johnny に相当する LDAP のエントリ:\n"
+"# shell 以外のすべてのコマンドを許可する\n"
+"dn: cn=role1,ou=Sudoers,dc=my-domain,dc=com\n"
+"objectClass: sudoRole\n"
+"objectClass: top\n"
+"cn: role1\n"
+"sudoUser: johnny\n"
+"sudoHost: ALL\n"
+"sudoCommand: ALL\n"
+"sudoCommand: !/bin/sh\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:475
+#, no-wrap
+msgid ""
+"# LDAP equivalent of puddles\n"
+"# Notice that even though ALL comes last, it still behaves like\n"
+"# role1 since the LDAP code assumes the more paranoid configuration\n"
+"dn: cn=role2,ou=Sudoers,dc=my-domain,dc=com\n"
+"objectClass: sudoRole\n"
+"objectClass: top\n"
+"cn: role2\n"
+"sudoUser: puddles\n"
+"sudoHost: ALL\n"
+"sudoCommand: !/bin/sh\n"
+"sudoCommand: ALL\n"
+msgstr ""
+"# 上記の puddles に相当する LDAP のエントリ:\n"
+"# ALL が最後に指定されているが、LDAP のコードでは、\n"
+"# よりパラノイア的な方を、指定された設定と見なすようになって\n"
+"# いるため、これもまた role1 と同じように動作することに\n"
+"# 注意していただきたい\n"
+"dn: cn=role2,ou=Sudoers,dc=my-domain,dc=com\n"
+"objectClass: sudoRole\n"
+"objectClass: top\n"
+"cn: role2\n"
+"sudoUser: puddles\n"
+"sudoHost: ALL\n"
+"sudoCommand: !/bin/sh\n"
+"sudoCommand: ALL\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:481
+msgid ""
+"Another difference is that negations on the Host, User or Runas are "
+"currently ignored.  For example, the following attributes do not behave the "
+"way one might expect."
+msgstr ""
+"もう一つの相違は、Host、User、Runas についての否定は、\n"
+"現在のところ無視されるということだ。\n"
+"たとえば、以下に挙げるような属性は期待どおりに動作しない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:487
+#, no-wrap
+msgid ""
+"# does not match all but joe\n"
+"# rather, does not match anyone\n"
+"sudoUser: !joe\n"
+msgstr ""
+"# joe 以外の全員とマッチしないどころか、\n"
+"# 誰にもマッチしない\n"
+"sudoUser: !joe\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:492
+#, no-wrap
+msgid ""
+"# does not match all but joe\n"
+"# rather, matches everyone including Joe\n"
+"sudoUser: ALL\n"
+"sudoUser: !joe\n"
+msgstr ""
+"# joe 以外の全員とマッチしないどころか、\n"
+"# joe を含む全員にマッチしてしまう\n"
+"sudoUser: ALL\n"
+"sudoUser: !joe\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:497
+#, no-wrap
+msgid ""
+"# does not match all but web01\n"
+"# rather, matches all hosts including web01\n"
+"sudoHost: ALL\n"
+"sudoHost: !web01\n"
+msgstr ""
+"# web01 以外のすべてとマッチしないどころか、\n"
+"# web01 を含むすべてのホストにマッチしてしまう\n"
+"sudoHost: ALL\n"
+"sudoHost: !web01\n"
+
+#. type: SS
+#: sudoers.ldap.man:499
+#, no-wrap
+msgid "Sudoers schema"
+msgstr "sudo 用のスキーマ"
+
+#. type: Plain text
+#: sudoers.ldap.man:509
+msgid ""
+"In order to use B<sudo>'s LDAP support, the B<sudo> schema must be installed "
+"on your LDAP server.  In addition, be sure to index the sudoUser attribute."
+msgstr ""
+"B<sudo> の LDAP サポートを利用するためには、お使いの LDAP サーバに \n"
+"B<sudo> 用のスキーマをインストールしなければならない。\n"
+"そして、sudoUser 属性の索引を必ず作成しておく。"
+
+#. type: Plain text
+#: sudoers.ldap.man:519
+msgid ""
+"Three versions of the schema: one for OpenLDAP servers (I<schema.OpenLDAP>), "
+"one for Netscape-derived servers (I<schema.iPlanet>), and one for Microsoft "
+"Active Directory (I<schema.ActiveDirectory>)  may be found in the B<sudo> "
+"distribution."
+msgstr ""
+"たぶん、B<sudo> の配布物中には三種類のスキーマが入っていると思う。\n"
+"すなわち OpenLDAP サーバ用 (I<schema.OpenLDAP>)、\n"
+"Netscape ディレクトリサーバの流れを汲むサーバ用 (I<schema.iPlanet>)、\n"
+"Microsoft Active Directory 用 (I<schema.ActiveDirectory>) のスキーマである。"
+
+#. type: Plain text
+#: sudoers.ldap.man:525
+msgid ""
+"The schema for B<sudo> in OpenLDAP form is also included in the I<EXAMPLES> "
+"section."
+msgstr ""
+"OpenLDAP 用の形式にした B<sudo> のスキーマは、\n"
+"「用例」セクションにも記載しておいた。"
+
+#. type: SS
+#: sudoers.ldap.man:525
+#, no-wrap
+msgid "Configuring ldap.conf"
+msgstr "ldap.conf の設定"
+
+#. type: Plain text
+#: sudoers.ldap.man:546
+msgid ""
+"Sudo reads the I</etc/ldap.conf> file for LDAP-specific configuration.  "
+"Typically, this file is shared between different LDAP-aware clients.  As "
+"such, most of the settings are not B<sudo>-specific.  Note that B<sudo> "
+"parses I</etc/ldap.conf> itself and may support options that differ from "
+"those described in the system's ldap.conf(5)  manual.  The path to I<ldap."
+"conf> may be overridden via the I<ldap_conf> plugin argument in sudo.conf(5)."
+msgstr ""
+"sudo は LDAP に関する設定を知るために I</etc/ldap.conf> を読み込む。\n"
+"通例、このファイルは、\n"
+"LDAP に対応しているさまざまなクライアントの間で共有されている。\n"
+"それ故、設定の大部分は B<sudo> 専用ではない。\n"
+"注意すべきは、B<sudo> は I</etc/ldap.conf> を独自に解析しており、\n"
+"ldap.conf(5) のマニュアルで説明されているものとは\n"
+"異なるオプションをサポートしていることがあるということだ。\n"
+"I<ldap.conf> のパスは、sudo.conf(5) ファイルでプラグインに対する引き数 \n"
+"I<ldap_conf> を使用すれば、変更することができる\n"
+"(訳注: sudoers ポリシー・プラグインに対して指定できる引き数については、\n"
+"sudoers(5) のマニュアルの「sudoers ポリシー・プラグインを使うための \n"
+"sudo.conf の設定」セクションに説明がある)。"
+
+#. type: Plain text
+#: sudoers.ldap.man:553
+msgid ""
+"Also note that on systems using the OpenLDAP libraries, default values "
+"specified in I</etc/openldap/ldap.conf> or the user's I<.ldaprc> files are "
+"not used."
+msgstr ""
+"もうひとつ注意していただきたいのは、\n"
+"OpenLDAP ライブラリを使っているシステムでは、\n"
+"I</etc/openldap/ldap.conf> やユーザの I<.ldaprc> \n"
+"ファイルで指定しているデフォルト値が使用されないことである。"
+
+#. type: Plain text
+#: sudoers.ldap.man:561
+msgid ""
+"Only those options explicitly listed in I</etc/ldap.conf> as being supported "
+"by B<sudo> are honored.  Configuration options are listed below in upper "
+"case but are parsed in a case-independent manner."
+msgstr ""
+"すなわち、I</etc/ldap.conf> に明示的に記載され、かつ B<sudo> \n"
+"でサポートされているオプションのみが使用される。\n"
+"設定オプションを以下に大文字で列挙するが、\n"
+"解析されるときは大文字小文字は区別されない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:572
+msgid ""
+"The pound sign (\\(oq#\\(cq)  is used to indicate a comment.  Both the "
+"comment character and any text after it, up to the end of the line, are "
+"ignored.  Long lines can be continued with a backslash (\\(oq\\e\\(cq)  as "
+"the last character on the line.  Note that leading white space is removed "
+"from the beginning of lines even when the continuation character is used."
+msgstr ""
+"パウンド記号 ('#') を使用すれば、\n"
+"以下はコメントであると示すことができる。すなわち、\n"
+"コメントの印と、それに続くいかなるテキストも、行末に至るまで、\n"
+"無視されることになる。長い行は、行末にバックスラッシュ ('\\e') \n"
+"を置けば、継続することができる。\n"
+"行頭の空白 (white space)は、継続記号を使用している場合でも、\n"
+"行頭から取り除かれることに注意していただきたい。"
+
+#. type: TP
+#: sudoers.ldap.man:572
+#, no-wrap
+msgid "B<BIND_TIMELIMIT> I<seconds>"
+msgstr "B<BIND_TIMELIMIT> I<seconds>"
+
+#. type: Plain text
+#: sudoers.ldap.man:584
+msgid ""
+"The B<BIND_TIMELIMIT> parameter specifies the amount of time, in seconds, to "
+"wait while trying to connect to an LDAP server.  If multiple B<URI>s or "
+"B<HOST>s are specified, this is the amount of time to wait before trying the "
+"next one in the list."
+msgstr ""
+"B<BIND_TIMELIMIT> パラメータでは、\n"
+"LDAP サーバに接続しようとするときの待ち時間を秒数で指定する。\n"
+"B<URI> や B<HOST> が複数指定されている場合は、その時間だけ待ってから、\n"
+"リスト中の次のサーバに接続を試みることになる。"
+
+#. type: TP
+#: sudoers.ldap.man:584
+#, no-wrap
+msgid "B<BINDDN> I<DN>"
+msgstr "B<BINDDN> I<DN>"
+
+#. type: Plain text
+#: sudoers.ldap.man:592
+msgid ""
+"The B<BINDDN> parameter specifies the identity, in the form of a "
+"Distinguished Name (DN), to use when performing LDAP operations.  If not "
+"specified, LDAP operations are performed with an anonymous identity.  By "
+"default, most LDAP servers will allow anonymous access."
+msgstr ""
+"B<BINDDN> パラメータでは、誰の名前で LDAP の操作を行うかを、\n"
+"識別名 (DN) を使って指定する。これが指定されていない場合、\n"
+"LDAP の操作は anonymous の名前で実行される。LDAP サーバは、\n"
+"たいていデフォルトで anonymous によるアクセスを許可しているものである。"
+
+#. type: TP
+#: sudoers.ldap.man:592
+#, no-wrap
+msgid "B<BINDPW> I<secret>"
+msgstr "B<BINDPW> I<secret>"
+
+#. type: Plain text
+#: sudoers.ldap.man:606
+msgid ""
+"The B<BINDPW> parameter specifies the password to use when performing LDAP "
+"operations.  This is typically used in conjunction with the B<BINDDN> "
+"parameter.  The I<secret> may be a plain text password or a base64-encoded "
+"string with a \\(Lqbase64:\\(Rq prefix.  For example:"
+msgstr ""
+"B<BINDPW> パラメータでは、LDAP の操作を行うときに使用するパスワードを指定す"
+"る。\n"
+"通常、このパラメータは、B<BINDDN> パラメータと組み合わせて使用する。\n"
+"I<secret> は、プレーンテキストのパスワードでもよく、\n"
+"\"base64:\" という接頭辞付きの、base64 でエンコードした文字列でもよい。\n"
+"たとえば、次のようなものだ。"
+
+#. type: Plain text
+#: sudoers.ldap.man:610
+#, no-wrap
+msgid "BINDPW base64:dGVzdA==\n"
+msgstr "BINDPW base64:dGVzdA==\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:620
+msgid ""
+"If a plain text password is used, it should be a simple string without "
+"quotes.  Plain text passwords may not include the comment character (\\(oq#"
+"\\(cq)  and the escaping of special characters with a backslash (\\(oq\\e"
+"\\(cq)  is not supported."
+msgstr ""
+"プレーンテキストのパスワードを使用する場合、\n"
+"パスワードは引用符を付けない単なる文字列にするべきだ。\n"
+"プレーンテキストのパスワード中には、コメント文字 ('#') \n"
+"があってはならない。また、バックスラッシュ ('\\e') \n"
+"による特殊文字のエスケープはサポートされていない。"
+
+#. type: TP
+#: sudoers.ldap.man:621
+#, no-wrap
+msgid "B<DEREF> I<never/searching/finding/always>"
+msgstr "B<DEREF> I<never/searching/finding/always>"
+
+#. type: Plain text
+#: sudoers.ldap.man:627
+msgid ""
+"How alias dereferencing is to be performed when searching.  See the ldap."
+"conf(5)  manual for a full description of this option."
+msgstr ""
+"検索を行うときに、alias の参照展開をどうするかを指定する。\n"
+"このオプションについての詳しい説明は、ldap.conf(5) のマニュアルにある。"
+
+#. type: TP
+#: sudoers.ldap.man:627
+#, no-wrap
+msgid "B<HOST> I<name[:port] ...>"
+msgstr "B<HOST> I<name[:port] ...>"
+
+#. type: Plain text
+#: sudoers.ldap.man:643
+msgid ""
+"If no B<URI> is specified (see below), the B<HOST> parameter specifies a "
+"white space-delimited list of LDAP servers to connect to.  Each host may "
+"include an optional I<port> separated by a colon (\\(oq:\\&\\(cq).  The "
+"B<HOST> parameter is deprecated in favor of the B<URI> specification and is "
+"included for backwards compatibility only."
+msgstr ""
+"B<URI> パラメータ (下記参照) が指定されていない場合は、\n"
+"B<HOST> パラメータで指定する空白 (white space)\n"
+"で区切ったリストが、接続する LDAP サーバになる。\n"
+"各ホストにはコロン (':\\&') に続けて、ポート番号を書いてもよい。\n"
+"B<HOST> パラメータは非推奨であり、B<URI> で指定する方が望ましい。\n"
+"このパラメータがあるのは、後方互換のためである。"
+
+#. type: TP
+#: sudoers.ldap.man:643
+#, no-wrap
+msgid "B<KRB5_CCNAME> I<file name>"
+msgstr "B<KRB5_CCNAME> I<file name>"
+
+#. type: Plain text
+#: sudoers.ldap.man:648
+msgid ""
+"The path to the Kerberos 5 credential cache to use when authenticating with "
+"the remote server.  This option is only relevant when using SASL "
+"authentication (see below)."
+msgstr ""
+"リモート・サーバに対して認証をするときに使用する Kerberos 5\n"
+"資格証明キャッシュのパス。このオプションは、SASL 認証 (下記参照) \n"
+"を使用するときしか意味を持たない。"
+
+#. type: TP
+#: sudoers.ldap.man:648
+#, no-wrap
+msgid "B<LDAP_VERSION> I<number>"
+msgstr "B<LDAP_VERSION> I<number>"
+
+#. type: Plain text
+#: sudoers.ldap.man:652
+msgid ""
+"The version of the LDAP protocol to use when connecting to the server.  The "
+"default value is protocol version 3."
+msgstr ""
+"サーバに接続するときに使用する LDAP プロトコルのバージョン。\n"
+"デフォルトの値は、プロトコルバージョン 3 である。"
+
+#. type: TP
+#: sudoers.ldap.man:652
+#, no-wrap
+msgid "B<NETGROUP_BASE> I<base>"
+msgstr "B<NETGROUP_BASE> I<base>"
+
+#. type: Plain text
+#: sudoers.ldap.man:662
+msgid ""
+"The base DN to use when performing LDAP netgroup queries.  Typically this is "
+"of the form ou=netgroup,dc=example,dc=com for the domain example.com.  "
+"Multiple B<NETGROUP_BASE> lines may be specified, in which case they are "
+"queried in the order specified."
+msgstr ""
+"LDAP でネットグループの問い合わせを行うときに使用するベース DN を指定する。\n"
+"ドメインが example.com ならば、たいてい ou=netgroup,dc=example,dc=com  \n"
+"という形になる。B<NETGROUP_BASE> を複数回指定してもよい。\n"
+"その場合は、指定された順番で問い合わせが行われることになる。"
+
+#. type: Plain text
+#: sudoers.ldap.man:682
+msgid ""
+"This option can be used to query a user's netgroups directly via LDAP which "
+"is usually faster than fetching every sudoRole object containing a sudoUser "
+"that begins with a \\(oq+\\(cq prefix.  The NIS schema used by some LDAP "
+"servers need a modificaton to support querying the nisNetgroup object by its "
+"nisNetgroupTriple member.  OpenLDAP's B<slapd> requires the following change "
+"to the nisNetgroupTriple attribute:"
+msgstr ""
+"このオプションを使用すると、\n"
+"LDAP 経由で直接ユーザのネットグループを問い合わせることができる。\n"
+"そうする方が、sudoRole オブジェクトのうちで \n"
+"'+' という接頭辞を持つ sudoUser を含んでいるものをすべて取得するよりも、\n"
+"たいていの場合動作が高速になる。LDAP サーバによっては、\n"
+"nisNetgroup オブジェクトをその nisNetgroupTriple メンバによって検索できるよう"
+"にするためには、\n"
+"使用している NIS スキーマに変更を加える必要があるものも存在する。\n"
+"OpenLDAP の B<slapd> の場合は、\n"
+"nisNetgroupTriple アトリビュートに以下の変更を加えなければならない。"
+
+#. type: Plain text
+#: sudoers.ldap.man:690
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'\n"
+"    DESC 'Netgroup triple'\n"
+"    EQUALITY caseIgnoreIA5Match\n"
+"    SUBSTR caseIgnoreIA5SubstringsMatch\n"
+"    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'\n"
+"    DESC 'Netgroup triple'\n"
+"    EQUALITY caseIgnoreIA5Match\n"
+"    SUBSTR caseIgnoreIA5SubstringsMatch\n"
+"    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: TP
+#: sudoers.ldap.man:692
+#, no-wrap
+msgid "B<NETGROUP_SEARCH_FILTER> I<ldap_filter>"
+msgstr "B<NETGROUP_SEARCH_FILTER> I<ldap_filter>"
+
+#. type: Plain text
+#: sudoers.ldap.man:707
+msgid ""
+"An LDAP filter which is used to restrict the set of records returned when "
+"performing an LDAP netgroup query.  Typically, this is of the form "
+"attribute=value or (&(attribute=value)(attribute2=value2)).  The default "
+"search filter is: objectClass=nisNetgroup.  If I<ldap_filter> is omitted, no "
+"search filter will be used.  This option is only when querying netgroups "
+"directly via LDAP."
+msgstr ""
+"B<sudo> が LDAP でネットグループの問い合わせを行うとき、\n"
+"どんな情報を返すかを限定する LDAP のフィルター。通常 I<ldap_filter> は、\n"
+"attribute=value とか (&(attribute=value)(attribute2=value2))\n"
+"という形を取る。デフォルトの検索フィルターは、\n"
+"objectClass=nisNetgroupである。I<ldap_filter> の指定を省略すると、\n"
+"検索フィルターが全く使われないことになる。このオプションは、\n"
+"LDAP で直接ネットグループの問い合わせを行うときしか効果を持たない。"
+
+#. type: TP
+#: sudoers.ldap.man:707
+#, no-wrap
+msgid "B<NETWORK_TIMEOUT> I<seconds>"
+msgstr "B<NETWORK_TIMEOUT> I<seconds>"
+
+#. type: Plain text
+#: sudoers.ldap.man:712
+msgid "An alias for B<BIND_TIMELIMIT> provided for OpenLDAP compatibility."
+msgstr "B<BIND_TIMELIMIT> の別名。OpenLDAP との互換のためにある。"
+
+#. type: TP
+#: sudoers.ldap.man:712
+#, no-wrap
+msgid "B<PORT> I<port_number>"
+msgstr "B<PORT> I<port_number>"
+
+#. type: Plain text
+#: sudoers.ldap.man:730
+msgid ""
+"If no B<URI> is specified, the B<PORT> parameter specifies the default port "
+"to connect to on the LDAP server if a B<HOST> parameter does not specify the "
+"port itself.  If no B<PORT> parameter is used, the default is port 389 for "
+"LDAP and port 636 for LDAP over TLS (SSL).  The B<PORT> parameter is "
+"deprecated in favor of the B<URI> specification and is included for "
+"backwards compatibility only."
+msgstr ""
+"B<URI> パラメータが指定されず、B<HOST> \n"
+"パラメータでもポートが指定されていないときは、B<PORT> パラメータが \n"
+"LDAP サーバに接続するときのデフォルトのポートを示すことになる。\n"
+"B<PORT> パラメータが使用されていない場合、デフォルトのポートは \n"
+"LDAP では 389 番、LDAP over TLS (SSL) では 636 番である。\n"
+"B<PORT> パラメータは非推奨であり、B<URI> で指定する方が望ましい。\n"
+"このパラメータは後方互換のためにのみ存在している。"
+
+#. type: TP
+#: sudoers.ldap.man:730
+#, no-wrap
+msgid "B<ROOTBINDDN> I<DN>"
+msgstr "B<ROOTBINDDN> I<DN>"
+
+#. type: Plain text
+#: sudoers.ldap.man:750
+msgid ""
+"The B<ROOTBINDDN> parameter specifies the identity, in the form of a "
+"Distinguished Name (DN), to use when performing privileged LDAP operations, "
+"such as I<sudoers> queries.  The password corresponding to the identity "
+"should be stored in the or the path specified by the I<ldap_secret> plugin "
+"argument in sudo.conf(5), which defaults to I</etc/ldap.secret>.  If no "
+"B<ROOTBINDDN> is specified, the B<BINDDN> identity is used (if any)."
+msgstr ""
+"B<ROOTBINDDN> パラメータでは、\n"
+"sudoers セキュリティポリシー設定の問い合わせのような、\n"
+"特権的な LDAP 操作をするとき、誰の名前で行うかを識別名 (DN) \n"
+"を使って指定する。その名前に対応するパスワードは、\n"
+"sudo.conf(5) の中でプラグインに対する引き数 I<ldap_secret> \n"
+"によってパスを指定されたファイルに書き込んでおくべきだ。\n"
+"このパスのデフォルトは I</etc/ldap.secret> である \n"
+"(訳注: B<sudoers> プラグインに対する引き数 I<ldap_secret> \n"
+"については、sudoers(5) のマニュアルに記述がある)。\n"
+"このパラメータが設定されていない場合は、\n"
+"B<BINDDN> で指定した名前があるならば、それが使用される。"
+
+#. type: TP
+#: sudoers.ldap.man:750
+#, no-wrap
+msgid "B<ROOTUSE_SASL> I<on/true/yes/off/false/no>"
+msgstr "B<ROOTUSE_SASL> I<on/true/yes/off/false/no>"
+
+#. type: Plain text
+#: sudoers.ldap.man:757
+msgid ""
+"Enable B<ROOTUSE_SASL> to enable SASL authentication when connecting to an "
+"LDAP server from a privileged process, such as B<sudo>."
+msgstr ""
+"B<ROOTUSE_SASL> を有効にすると、\n"
+"B<sudo> のような特権的なプロセスから LDAP サーバに接続するときに \n"
+"SASL 認証が可能になる。"
+
+#. type: TP
+#: sudoers.ldap.man:757
+#, no-wrap
+msgid "B<SASL_AUTH_ID> I<identity>"
+msgstr "B<SASL_AUTH_ID> I<identity>"
+
+#. type: Plain text
+#: sudoers.ldap.man:764
+msgid ""
+"The SASL user name to use when connecting to the LDAP server.  By default, "
+"B<sudo> will use an anonymous connection.  This option is only relevant when "
+"using SASL authentication."
+msgstr ""
+"LDAP サーバに接続するときに使用する SASL ユーザ名。\n"
+"デフォルトでは、B<sudo> は anonymous 接続を使用する。\n"
+"このオプションは、SASL 認証を使用するときしか意味を持たない。"
+
+#. type: TP
+#: sudoers.ldap.man:764
+#, no-wrap
+msgid "B<SASL_SECPROPS> I<none/properties>"
+msgstr "B<SASL_SECPROPS> I<none/properties>"
+
+#. type: Plain text
+#: sudoers.ldap.man:771
+msgid ""
+"SASL security properties or I<none> for no properties.  See the SASL "
+"programmer's manual for details.  This option is only relevant when using "
+"SASL authentication."
+msgstr ""
+"SASL セキュリティ・プロパティを指定する。プロパティなしならば、\n"
+"I<none> である。詳細については、\n"
+"SASL プログラマーズ・マニュアルを参照すること。\n"
+"このオプションは、SASL 認証を使用するときしか意味を持たない。"
+
+#. type: TP
+#: sudoers.ldap.man:771
+#, no-wrap
+msgid "B<SSL> I<on/true/yes/off/false/no>"
+msgstr "B<SSL> I<on/true/yes/off/false/no>"
+
+#. type: Plain text
+#: sudoers.ldap.man:782
+msgid ""
+"If the B<SSL> parameter is set to on, true or yes, TLS (SSL) encryption is "
+"always used when communicating with the LDAP server.  Typically, this "
+"involves connecting to the server on port 636 (ldaps)."
+msgstr ""
+"B<SSL> パラメータが on, true, yes になっていると、\n"
+"LDAP サーバと通信する際に、常に TLS (SSL) の暗号化を使用することになる。\n"
+"普通、そのためには、636 番ポート (ldaps) でサーバに接続していなければならな"
+"い。"
+
+#. type: TP
+#: sudoers.ldap.man:782
+#, no-wrap
+msgid "B<SSL> I<start_tls>"
+msgstr "B<SSL> I<start_tls>"
+
+#. type: Plain text
+#: sudoers.ldap.man:795
+msgid ""
+"If the B<SSL> parameter is set to start_tls, the LDAP server connection is "
+"initiated normally and TLS encryption is begun before the bind credentials "
+"are sent.  This has the advantage of not requiring a dedicated port for "
+"encrypted communications.  This parameter is only supported by LDAP servers "
+"that honor the I<start_tls> extension, such as the OpenLDAP and Tivoli "
+"Directory servers."
+msgstr ""
+"B<SSL> パラメータを start_tls  に設定すると、LDAP サーバへの接続を平文で開始"
+"し、\n"
+"バインド操作のために認証情報を送信する直前に、TLS の暗号化を始めることにな"
+"る。\n"
+"これには、暗号化された通信のために専用のポートを必要としないという長所があ"
+"る。\n"
+"このパラメータをサポートしているのは、\n"
+"OpenLDAP サーバや Tivoli ディレクトリ・サーバのような \n"
+"start_tls 拡張に対応している LDAP サーバのみである。"
+
+#. type: TP
+#: sudoers.ldap.man:795
+#, no-wrap
+msgid "B<SUDOERS_BASE> I<base>"
+msgstr "B<SUDOERS_BASE> I<base>"
+
+#. type: Plain text
+#: sudoers.ldap.man:807
+msgid ""
+"The base DN to use when performing B<sudo> LDAP queries.  Typically this is "
+"of the form ou=SUDOers,dc=example,dc=com for the domain example.com.  "
+"Multiple B<SUDOERS_BASE> lines may be specified, in which case they are "
+"queried in the order specified."
+msgstr ""
+"B<sudo> が LDAP の問い合わせを行うときに使用するベース DN を指定する。\n"
+"ドメインが example.com ならば、普通 ou=SUDOers,dc=example,dc=com \n"
+"という形になる。B<SUDOERS_BASE> を複数回指定してもよい。\n"
+"その場合は、指定された順番で問い合わせが行われることになる。"
+
+#. type: TP
+#: sudoers.ldap.man:807
+#, no-wrap
+msgid "B<SUDOERS_DEBUG> I<debug_level>"
+msgstr "B<SUDOERS_DEBUG> I<debug_level>"
+
+#. type: Plain text
+#: sudoers.ldap.man:817
+msgid ""
+"This sets the debug level for B<sudo> LDAP queries.  Debugging information "
+"is printed to the standard error.  A value of 1 results in a moderate amount "
+"of debugging information.  A value of 2 shows the results of the matches "
+"themselves.  This parameter should not be set in a production environment as "
+"the extra information is likely to confuse users."
+msgstr ""
+"B<sudo> が LDAP の問い合わせをするときのデバッグレベルを決める。\n"
+"デバック情報の出力先は標準エラーである。値を 1 にすると、\n"
+"多からず少なからずほどほどのデバック情報が表示される。\n"
+"値を 2 にすると、マッチの結果そのものも出力される。\n"
+"実用環境では、このパラメータを設定するべきではない。\n"
+"ユーザが余計な情報に混乱しかねないからだ。"
+
+#. type: Plain text
+#: sudoers.ldap.man:837
+msgid ""
+"The B<SUDOERS_DEBUG> parameter is deprecated and will be removed in a future "
+"release.  The same information is now logged via the B<sudo> debugging "
+"framework using the \\(Lqldap\\(Rq subsystem at priorities I<diag> and "
+"I<info> for I<debug_level> values 1 and 2 respectively.  See the sudo."
+"conf(5)  manual for details on how to configure B<sudo> debugging."
+msgstr ""
+"B<SUDOERS_DEBUG> パラメータは非推奨であり、\n"
+"将来のリリースでは廃止されることになる。今では同じ情報が、\n"
+"B<sudo> のデバッグ用フレームワークを通してログに記録されるようになってい"
+"る。\n"
+"I<debug_level> の値に 1 や 2 を指定する代わりに、サブシステムとして \n"
+"\"ldap\" を使用し、重大度 (priority) にそれぞれ I<diag> や I<info> \n"
+"を指定すればよいのだ。\n"
+"B<sudo> のデバッグを設定する方法について詳細を知りたければ、\n"
+"sudo.conf(5) のマニュアルをご覧になるとよい \n"
+"(訳注: sudoers(5) のマニュアルの「デバッギング」セクションも参照)。"
+
+#. type: TP
+#: sudoers.ldap.man:837
+#, no-wrap
+msgid "B<SUDOERS_SEARCH_FILTER> I<ldap_filter>"
+msgstr "B<SUDOERS_SEARCH_FILTER> I<ldap_filter>"
+
+#. type: Plain text
+#: sudoers.ldap.man:853
+msgid ""
+"An LDAP filter which is used to restrict the set of records returned when "
+"performing a B<sudo> LDAP query.  Typically, this is of the form "
+"attribute=value or (&(attribute=value)(attribute2=value2)).  The default "
+"search filter is: objectClass=sudoRole.  If I<ldap_filter> is omitted, no "
+"search filter will be used."
+msgstr ""
+"B<sudo> が LDAP の問い合わせを行うとき、\n"
+"どんな情報を返すかを限定する LDAP のフィルター。通常 I<ldap_filter> は、\n"
+"attribute=value とか (&(attribute=value)(attribute2=value2)) \n"
+"という形を取る。デフォルトの検索フィルターは、objectClass=sudoRole である。\n"
+"I<ldap_filter> の指定を省略すると、検索フィルターが全く使われないことになる。"
+
+#. type: TP
+#: sudoers.ldap.man:853
+#, no-wrap
+msgid "B<SUDOERS_TIMED> I<on/true/yes/off/false/no>"
+msgstr "B<SUDOERS_TIMED> I<on/true/yes/off/false/no>"
+
+#. type: Plain text
+#: sudoers.ldap.man:860
+msgid ""
+"Whether or not to evaluate the sudoNotBefore and sudoNotAfter attributes "
+"that implement time-dependent sudoers entries."
+msgstr ""
+"属性 sudoNotBefore や sudoNotAfter を評価するか、しないかを指定する。\n"
+"この二つの属性によって日時制限のある sudoers \n"
+"セキュリティポリシー設定のエントリを実現している。"
+
+#. type: TP
+#: sudoers.ldap.man:860
+#, no-wrap
+msgid "B<TIMELIMIT> I<seconds>"
+msgstr "B<TIMELIMIT> I<seconds>"
+
+#. type: Plain text
+#: sudoers.ldap.man:866
+msgid ""
+"The B<TIMELIMIT> parameter specifies the amount of time, in seconds, to wait "
+"for a response to an LDAP query."
+msgstr ""
+"B<TIMELIMIT> パラメータでは、\n"
+"LDAP の問い合わせに対して応答が返ってくるまでの待ち時間を秒数で指定する。"
+
+#. type: TP
+#: sudoers.ldap.man:866
+#, no-wrap
+msgid "B<TIMEOUT> I<seconds>"
+msgstr "B<TIMEOUT> I<seconds>"
+
+#. type: Plain text
+#: sudoers.ldap.man:872
+msgid ""
+"The B<TIMEOUT> parameter specifies the amount of time, in seconds, to wait "
+"for a response from the various LDAP APIs."
+msgstr ""
+"B<TIMEOUT> パラメータでは、\n"
+"様々な LDAP API から応答が返ってくるまでの待ち時間を秒数で指定する。"
+
+#. type: TP
+#: sudoers.ldap.man:872
+#, no-wrap
+msgid "B<TLS_CACERT> I<file name>"
+msgstr "B<TLS_CACERT> I<file name>"
+
+#. type: Plain text
+#: sudoers.ldap.man:877
+msgid "An alias for B<TLS_CACERTFILE> for OpenLDAP compatibility."
+msgstr "B<TLS_CACERTFILE> の別名。OpenLDAP との互換のためにある。"
+
+#. type: TP
+#: sudoers.ldap.man:877
+#, no-wrap
+msgid "B<TLS_CACERTFILE> I<file name>"
+msgstr "B<TLS_CACERTFILE> I<file name>"
+
+#. type: Plain text
+#: sudoers.ldap.man:886
+msgid ""
+"The path to a certificate authority bundle which contains the certificates "
+"for all the Certificate Authorities the client knows to be valid, e.g.\\& I</"
+"etc/ssl/ca-bundle.pem>.  This option is only supported by the OpenLDAP "
+"libraries.  Netscape-derived LDAP libraries use the same certificate "
+"database for CA and client certificates (see B<TLS_CERT>)."
+msgstr ""
+"認証局の証明書を一つにまとめたファイルのパス。たとえば、\n"
+"I</etc/ssl/ca-bundle.pem> といったファイルであり、\n"
+"正当なものだとクライアントが認識している、\n"
+"すべての認証局の証明書がそこに入っている。\n"
+"このオプションをサポートしているのは、OpenLDAP ライブラリだけである。\n"
+"Netscape 由来の LDAP ライブラリは、認証局とクライアント、\n"
+"両方の証明書に対して、同一の証明書データベースを使用する \n"
+"(B<TLS_CERT> を参照)。"
+
+#. type: TP
+#: sudoers.ldap.man:886
+#, no-wrap
+msgid "B<TLS_CACERTDIR> I<directory>"
+msgstr "B<TLS_CACERTDIR> I<directory>"
+
+#. type: Plain text
+#: sudoers.ldap.man:898
+msgid ""
+"Similar to B<TLS_CACERTFILE> but instead of a file, it is a directory "
+"containing individual Certificate Authority certificates, e.g.\\& I</etc/ssl/"
+"certs>.  The directory specified by B<TLS_CACERTDIR> is checked after "
+"B<TLS_CACERTFILE>.  This option is only supported by the OpenLDAP libraries."
+msgstr ""
+"B<TLS_CACERTFILE> に似ているが、ファイルではなく、たとえば \n"
+"I</etc/ssl/certs> といったディレクトリであり、\n"
+"認証局の証明書が 1 認証局 1 ファイルの形でそこに入っている。\n"
+"B<TLS_CACERTDIR> で指定したディレクトリは、B<TLS_CACERTFILE> \n"
+"の後でチェックされる。このオプションをサポートしているのは、\n"
+"OpenLDAP ライブラリだけである。"
+
+#. type: TP
+#: sudoers.ldap.man:898
+#, no-wrap
+msgid "B<TLS_CERT> I<file name>"
+msgstr "B<TLS_CERT> I<file name>"
+
+#. type: Plain text
+#: sudoers.ldap.man:903
+msgid ""
+"The path to a file containing the client certificate which can be used to "
+"authenticate the client to the LDAP server.  The certificate type depends on "
+"the LDAP libraries used."
+msgstr ""
+"クライアントの証明書が入っているファイルのパス。この証明書は、\n"
+"LDAP サーバに対するクライアントの認証に使用できる。\n"
+"証明書のタイプは、利用する LDAP ライブラリによって異なっている。"
+
+#. type: TP
+#: sudoers.ldap.man:906 sudoers.ldap.man:952
+#, no-wrap
+msgid "OpenLDAP:"
+msgstr "OpenLDAP:"
+
+#. type: Plain text
+#: sudoers.ldap.man:909
+msgid "tls_cert /etc/ssl/client_cert.pem"
+msgstr "tls_cert /etc/ssl/client_cert.pem"
+
+#. type: TP
+#: sudoers.ldap.man:910 sudoers.ldap.man:956
+#, no-wrap
+msgid "Netscape-derived:"
+msgstr "Netscape 由来:"
+
+#. type: Plain text
+#: sudoers.ldap.man:913
+msgid "tls_cert /var/ldap/cert7.db"
+msgstr "tls_cert /var/ldap/cert7.db"
+
+#. type: TP
+#: sudoers.ldap.man:913 sudoers.ldap.man:959
+#, no-wrap
+msgid "Tivoli Directory Server:"
+msgstr "Tivoli ディレクトリ・サーバ:"
+
+#. type: Plain text
+#: sudoers.ldap.man:918
+msgid ""
+"Unused, the key database specified by B<TLS_KEY> contains both keys and "
+"certificates."
+msgstr ""
+"使用しない。B<TLS_KEY> で指定するキー・データベースに、\n"
+"キーと証明書の両方が入っている。"
+
+#. type: Plain text
+#: sudoers.ldap.man:921
+msgid ""
+"When using Netscape-derived libraries, this file may also contain "
+"Certificate Authority certificates."
+msgstr ""
+"Netscape 由来のライブラリを使う場合は、\n"
+"このファイルに認証局の証明書も入れることができる。"
+
+#. type: TP
+#: sudoers.ldap.man:925
+#, no-wrap
+msgid "B<TLS_CHECKPEER> I<on/true/yes/off/false/no>"
+msgstr "B<TLS_CHECKPEER> I<on/true/yes/off/false/no>"
+
+#. type: Plain text
+#: sudoers.ldap.man:942
+msgid ""
+"If enabled, B<TLS_CHECKPEER> will cause the LDAP server's TLS certificated "
+"to be verified.  If the server's TLS certificate cannot be verified (usually "
+"because it is signed by an unknown certificate authority), B<sudo> will be "
+"unable to connect to it.  If B<TLS_CHECKPEER> is disabled, no check is "
+"made.  Note that disabling the check creates an opportunity for man-in-the-"
+"middle attacks since the server's identity will not be authenticated.  If "
+"possible, the CA's certificate should be installed locally so it can be "
+"verified.  This option is not supported by the Tivoli Directory Server LDAP "
+"libraries."
+msgstr ""
+"B<TLS_CHECKPEER> が有効になっていると、\n"
+"LDAP サーバの TLS 証明書が正当かどうかチェックが行われる。\n"
+"LDAP サーバの証明書が正当であることを確認できない場合 \n"
+"(たいていは、署名している認証局が未知 (unknown) であることが理由だ)、\n"
+"B<sudo> はそのサーバに接続することができない。\n"
+"B<TLS_CHECKPEER> が無効になっている場合は、チェックが行われない。\n"
+"このチェックをやらないことにすると、サーバーの身元の正真性を確認できないの"
+"で、\n"
+"中間者攻撃の可能性が生じることに気をつけていただきたい。\n"
+"可能ならば、認証局の証明書は、その正当性のチェックができるように、\n"
+"手元のマシンにインストールしておくべきである。このオプションは、\n"
+"Tivoli ディレクトリ・サーバの LDAP ライブラリではサポートされていない。"
+
+#. type: TP
+#: sudoers.ldap.man:942
+#, no-wrap
+msgid "B<TLS_KEY> I<file name>"
+msgstr "B<TLS_KEY> I<file name>"
+
+#. type: Plain text
+#: sudoers.ldap.man:949
+msgid ""
+"The path to a file containing the private key which matches the certificate "
+"specified by B<TLS_CERT>.  The private key must not be password-protected.  "
+"The key type depends on the LDAP libraries used."
+msgstr ""
+"B<TLS_CERT> で指定した証明書に対応する、秘密鍵が入っているファイルのパス。\n"
+"この秘密鍵はパスワードでプロテクトされていてはならない。\n"
+"鍵のタイプは利用する LDAP ライブラリによって異なっている。"
+
+#. type: Plain text
+#: sudoers.ldap.man:955
+msgid "tls_key /etc/ssl/client_key.pem"
+msgstr "tls_key /etc/ssl/client_key.pem"
+
+#. type: Plain text
+#: sudoers.ldap.man:959
+msgid "tls_key /var/ldap/key3.db"
+msgstr "tls_key /var/ldap/key3.db"
+
+#. type: Plain text
+#: sudoers.ldap.man:962
+msgid "tls_key /usr/ldap/ldapkey.kdb"
+msgstr "tls_key /usr/ldap/ldapkey.kdb"
+
+#. type: Plain text
+#: sudoers.ldap.man:966
+msgid ""
+"When using Tivoli LDAP libraries, this file may also contain Certificate "
+"Authority and client certificates and may be encrypted."
+msgstr ""
+"Tivoli LDAP ライブラリを使用する場合は、\n"
+"このファイルに認証局やクライアントの証明書も入れることができる。\n"
+"また、暗号化することもできる。"
+
+#. type: TP
+#: sudoers.ldap.man:968
+#, no-wrap
+msgid "B<TLS_CIPHERS> I<cipher list>"
+msgstr "B<TLS_CIPHERS> I<cipher list>"
+
+#. type: Plain text
+#: sudoers.ldap.man:977
+msgid ""
+"The B<TLS_CIPHERS> parameter allows the administer to restrict which "
+"encryption algorithms may be used for TLS (SSL) connections.  See the "
+"OpenLDAP or Tivoli Directory Server manual for a list of valid ciphers.  "
+"This option is not supported by Netscape-derived libraries."
+msgstr ""
+"B<TLS_CIPHERS> パラメータを使用すると、\n"
+"管理者が TLS (SSL) 接続に使用可能な暗号アルゴリズムを限定することができる。\n"
+"有効な暗号のリストについては、\n"
+"OpenLDAP や Tivoli ディレクトリ・サーバのマニュアルを参照していただきたい。\n"
+"Netscape 由来のライブラリは、このオプションをサポートしていない。"
+
+#. type: TP
+#: sudoers.ldap.man:977
+#, no-wrap
+msgid "B<TLS_KEYPW> I<secret>"
+msgstr "B<TLS_KEYPW> I<secret>"
+
+#. type: Plain text
+#: sudoers.ldap.man:989
+msgid ""
+"The B<TLS_KEYPW> contains the password used to decrypt the key database on "
+"clients using the Tivoli Directory Server LDAP library.  The I<secret> may "
+"be a plain text password or a base64-encoded string with a \\(Lqbase64:\\(Rq "
+"prefix.  For example:"
+msgstr ""
+"B<TLS_KEYPW> では、\n"
+"Tivoli ディレクトリ・サーバの LDAP ライブラリを使っているクライアントで、\n"
+"キー・データベースを復号するのに使用するパスワードを指定する。\n"
+"I<secret> は、プレーンテキストのパスワードでもよく、\n"
+"\"base64:\" という接頭辞付きの、base64 でエンコードした文字列でもよい。\n"
+"たとえば、次のようなものだ。"
+
+#. type: Plain text
+#: sudoers.ldap.man:993
+#, no-wrap
+msgid "TLS_KEYPW base64:dGVzdA==\n"
+msgstr "TLS_KEYPW base64:dGVzdA==\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1009
+msgid ""
+"If a plain text password is used, it should be a simple string without "
+"quotes.  Plain text passwords may not include the comment character (\\(oq#"
+"\\(cq)  and the escaping of special characters with a backslash (\\(oq\\e"
+"\\(cq)  is not supported.  If this option is used, I</etc/ldap.conf> must "
+"not be world-readable to avoid exposing the password.  Alternately, a "
+"I<stash file> can be used to store the password in encrypted form (see "
+"below)."
+msgstr ""
+"プレーンテキストのパスワードを使用する場合、\n"
+"パスワードは引用符を付けない単なる文字列にするべきだ。\n"
+"プレーンテキストのパスワード中には、コメント文字 ('#') \n"
+"があってはならない。また、バックスラッシュ ('\\e') \n"
+"による特殊文字のエスケープはサポートされていない。\n"
+"このオプションを使用するのならば、\n"
+"I</etc/ldap.conf> を誰にでも読める状態にしてはいけない。\n"
+"さもないと、パスワードを公開してしまうことになる。\n"
+"パスワードの公開を避ける別の方法としては、\n"
+"I<stash file> を使用することも可能だ。そうすれば、\n"
+"パスワードを暗号化した形で格納することができる (下記参照)。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1034
+msgid ""
+"If no B<TLS_KEYPW> is specified, a I<stash file> will be used if it exists.  "
+"The I<stash file> must have the same path as the file specified by "
+"B<TLS_KEY>, but use a .sth file extension instead of .kdb, e.g.\\& ldapkey."
+"sth.  The default ldapkey.kdb that ships with Tivoli Directory Server is "
+"encrypted with the password ssl_password.  The I<gsk8capicmd> utility can be "
+"used to manage the key database and create a I<stash file>.  This option is "
+"only supported by the Tivoli LDAP libraries."
+msgstr ""
+"B<TLS_KEYPW> が指定されていない場合、\n"
+"I<stash file> が存在すれば、それを使用することになる。I<stash file> は、\n"
+"B<TLS_KEY> で指定されるファイルと同じパスを持たなければならないが、\n"
+"拡張子には .kdb の代わりに、.sth を使わなければならない。\n"
+"たとえば、ldapkey.sth といった具合だ。\n"
+"Tivoli ディレクトリ・サーバ出荷時のデフォルトの ldapkey.kdb は、\n"
+"ssl_password というパスワードを使って暗号化されている。\n"
+"I<gsk8capicmd> というユーティリティを使用すれば、\n"
+"キー・データベースの管理と、I<stash file> の作成を行うことができる。\n"
+"このオプションをサポートしているのは、Tivoli LDAP ライブラリだけである。"
+
+#. type: TP
+#: sudoers.ldap.man:1035
+#, no-wrap
+msgid "B<TLS_RANDFILE> I<file name>"
+msgstr "B<TLS_RANDFILE> I<file name>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1046
+msgid ""
+"The B<TLS_RANDFILE> parameter specifies the path to an entropy source for "
+"systems that lack a random device.  It is generally used in conjunction with "
+"I<prngd> or I<egd>.  This option is only supported by the OpenLDAP libraries."
+msgstr ""
+"B<TLS_RANDFILE> では、random デバイスを持っていないシステムのために\n"
+"エントロピー・ソースのパスを指定する。\n"
+"これは通例、I<prngd> や I<egd> と組み合わせて使用するものだ。\n"
+"このオプションをサポートしているのは、OpenLDAP ライブラリだけである。"
+
+#. type: TP
+#: sudoers.ldap.man:1046
+#, no-wrap
+msgid "B<URI> I<ldap[s]://[hostname[:port]] ...>"
+msgstr "B<URI> I<ldap[s]://[hostname[:port]] ...>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1080
+msgid ""
+"Specifies a white space-delimited list of one or more URIs describing the "
+"LDAP server(s) to connect to.  The I<protocol> may be either I<ldap> "
+"I<ldaps>, the latter being for servers that support TLS (SSL) encryption.  "
+"If no I<port> is specified, the default is port 389 for ldap:// or port 636 "
+"for ldaps://.  If no I<hostname> is specified, B<sudo> will connect to "
+"I<localhost>.  Multiple B<URI> lines are treated identically to a B<URI> "
+"line containing multiple entries.  Only systems using the OpenSSL libraries "
+"support the mixing of ldap:// and ldaps:// URIs.  Both the Netscape-derived "
+"and Tivoli LDAP libraries used on most commercial versions of Unix are only "
+"capable of supporting one or the other."
+msgstr ""
+"接続する一個以上の LDAP サーバ の URI を、空白 (white space) \n"
+"で区切ったリストの形で指定する。プロトコルは I<ldap> と I<ldaps> \n"
+"のどちらでもよい。後者は TLS (SSL) 暗号化に対応しているサーバの場合である。\n"
+"ポートを指定しないときのデフォルトは、\n"
+"ldap:// では 389 番ポート、ldaps:// では 636 番ポートである。\n"
+"I<hostname> を一つも指定しないと、\n"
+"B<sudo> は I<localhost> に接続することになる。B<URI> の行が二行以上ある場合"
+"は、\n"
+"B<URI> の行に複数のエントリがあるときと同様に処理される。\n"
+"OpenSSL ライブラリを使用しているシステムのみが、\n"
+"ldap:// と ldaps:// 両方の URI を混ぜて使うことに対応している。\n"
+"たいていの商用 Unix では Netscape 由来のライブラリや \n"
+"Tivoli LDAP ライブラリが使用されているが、\n"
+"そうしたライブラリはどちらか一方に対応することしかできない。"
+
+#. type: TP
+#: sudoers.ldap.man:1080
+#, no-wrap
+msgid "B<USE_SASL> I<on/true/yes/off/false/no>"
+msgstr "B<USE_SASL> I<on/true/yes/off/false/no>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1085
+msgid "Enable B<USE_SASL> for LDAP servers that support SASL authentication."
+msgstr ""
+"LDAP サーバが SASL 認証をサポートしているとき、\n"
+"B<USE_SASL> を有効にする。"
+
+#. type: TP
+#: sudoers.ldap.man:1085
+#, no-wrap
+msgid "B<ROOTSASL_AUTH_ID> I<identity>"
+msgstr "B<ROOTSASL_AUTH_ID> I<identity>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1090
+msgid "The SASL user name to use when B<ROOTUSE_SASL> is enabled."
+msgstr "B<ROOTUSE_SASL> が有効なとき使用する SASL ユーザ名。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1096
+msgid "See the I<ldap.conf> entry in the I<EXAMPLES> section."
+msgstr "「用例」セクションにある I<ldap.conf> のくだりも参照していただきたい。"
+
+#. type: SS
+#: sudoers.ldap.man:1096
+#, no-wrap
+msgid "Configuring nsswitch.conf"
+msgstr "nsswitch.conf の設定"
+
+#. type: Plain text
+#: sudoers.ldap.man:1113
+msgid ""
+"Unless it is disabled at build time, B<sudo> consults the Name Service "
+"Switch file, I</etc/nsswitch.conf>, to specify the I<sudoers> search order.  "
+"Sudo looks for a line beginning with sudoers: and uses this to determine the "
+"search order.  Note that B<sudo> does not stop searching after the first "
+"match and later matches take precedence over earlier ones.  The following "
+"sources are recognized:"
+msgstr ""
+"ビルド時に無効にしないかぎり、B<sudo> はネームサービス・スイッチ・ファイル \n"
+"I</etc/nsswitch.conf> を調べて、\n"
+"sudoers セキュリティポリシーの設定を参照する順番を決める。\n"
+"すなわち、I</etc/nsswitch.conf> で sudoers: という文字列に始まる行を探し、\n"
+"その行によって参照順を決定するのである。\n"
+"気をつけていただきたいのは、B<sudo> は参照中、\n"
+"マッチする項目に一度出会ったからと言って、そこで参照を終わりにしないこと"
+"だ。\n"
+"後でマッチしたものが前にマッチしたものよりも優先されるのである。\n"
+"以下の参照元が有効である。"
+
+#. type: TP
+#: sudoers.ldap.man:1116
+#, no-wrap
+msgid "files"
+msgstr "files"
+
+#. type: Plain text
+#: sudoers.ldap.man:1120
+msgid "read sudoers from I</etc/sudoers>"
+msgstr "I</etc/sudoers> から sudoers セキュリティポリシーの設定を読み込む"
+
+#. type: TP
+#: sudoers.ldap.man:1120
+#, no-wrap
+msgid "ldap"
+msgstr "ldap"
+
+#. type: Plain text
+#: sudoers.ldap.man:1123
+msgid "read sudoers from LDAP"
+msgstr "LDAP から sudoers セキュリティポリシーの設定を読み込む"
+
+#. type: Plain text
+#: sudoers.ldap.man:1130
+msgid ""
+"In addition, the entry [NOTFOUND=return] will short-circuit the search if "
+"the user was not found in the preceding source."
+msgstr ""
+"なお、[NOTFOUND=return] の記述があると、\n"
+"先行する参照元にユーザが見つからなかった場合、参照を中断することになる。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1133 sudoers.ldap.man:1180
+msgid ""
+"To consult LDAP first followed by the local sudoers file (if it exists), use:"
+msgstr ""
+"最初に LDAP を参照し、その後で (もし存在するならば)\n"
+"ローカルマシン上の I<sudoers> ファイルを調べるには、次のように指定する。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1137
+#, no-wrap
+msgid "sudoers: ldap files\n"
+msgstr "sudoers: ldap files\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1143 sudoers.ldap.man:1190
+msgid "The local I<sudoers> file can be ignored completely by using:"
+msgstr ""
+"ローカルマシン上の I<sudoers> ファイルをまったく無視するには、\n"
+"次のようにする。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1147
+#, no-wrap
+msgid "sudoers: ldap\n"
+msgstr "sudoers: ldap\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1154
+msgid ""
+"If the I</etc/nsswitch.conf> file is not present or there is no sudoers "
+"line, the following default is assumed:"
+msgstr ""
+"I</etc/nsswitch.conf> ファイルが存在しなかったり、存在しても sudoers \n"
+"の行がなかったりした場合は、次のデフォルト設定が使用される。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1158
+#, no-wrap
+msgid "sudoers: files\n"
+msgstr "sudoers: files\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1165
+msgid ""
+"Note that I</etc/nsswitch.conf> is supported even when the underlying "
+"operating system does not use an nsswitch.conf file, except on AIX (see "
+"below)."
+msgstr ""
+"使用しているオペーレーティング・システムが nsswitch.conf \n"
+"ファイルを使用しない場合でも、B<sudo> は、AIX のシステム以外では \n"
+"(次のセクションを参照)、I</etc/nsswitch.conf> \n"
+"をサポートしていることに注意していただきたい。"
+
+#. type: SS
+#: sudoers.ldap.man:1165
+#, no-wrap
+msgid "Configuring netsvc.conf"
+msgstr "netsvc.conf の設定"
+
+#. type: Plain text
+#: sudoers.ldap.man:1177
+msgid ""
+"On AIX systems, the I</etc/netsvc.conf> file is consulted instead of I</etc/"
+"nsswitch.conf>.  B<sudo> simply treats I<netsvc.conf> as a variant of "
+"I<nsswitch.conf>; information in the previous section unrelated to the file "
+"format itself still applies."
+msgstr ""
+"AIX システムでは、I</etc/nsswitch.conf> ではなく、\n"
+"I</etc/netsvc.conf> ファイルを調べに行く。B<sudo> としては、\n"
+"I<netsvc.conf> を I<nsswitch.conf> のバリエーションとして扱うだけだ。\n"
+"それ故、上のセクションの記述のうち、ファイルの書式に関係のないものは、\n"
+"ここでも当てはまることになる。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1184
+#, no-wrap
+msgid "sudoers = ldap, files\n"
+msgstr "sudoers = ldap, files\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1194
+#, no-wrap
+msgid "sudoers = ldap\n"
+msgstr "sudoers = ldap\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1199
+msgid ""
+"To treat LDAP as authoritative and only use the local sudoers file if the "
+"user is not present in LDAP, use:"
+msgstr ""
+"LDAP を正式の参照元と見なし、LDAP にユーザが見つからなかったときのみ、\n"
+"ローカルの I<sudoers> ファイルを使用する。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1203
+#, no-wrap
+msgid "sudoers = ldap = auth, files\n"
+msgstr "sudoers = ldap = auth, files\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1213
+msgid ""
+"Note that in the above example, the auth qualifier only affects user "
+"lookups; both LDAP and I<sudoers> will be queried for Defaults entries."
+msgstr ""
+"注意していただきたいが、上記の例において、auth 修飾子が影響を及ぼすのは、\n"
+"ユーザを検索するときだけである。\n"
+"Defaults エントリについては、LDAP と I<sudoers> の両方が参照される。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1218
+msgid ""
+"If the I</etc/netsvc.conf> file is not present or there is no sudoers line, "
+"the following default is assumed:"
+msgstr ""
+"I</etc/netsvc.conf> ファイルが存在しなかったり、存在しても \n"
+"sudoers の行がなかったりした場合は、次のデフォルト設定が使用される。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1222
+#, no-wrap
+msgid "sudoers = files\n"
+msgstr "sudoers = files\n"
+
+#. type: SS
+#: sudoers.ldap.man:1224
+#, no-wrap
+msgid "Integration with sssd"
+msgstr "sssd との統合"
+
+#. type: Plain text
+#: sudoers.ldap.man:1251
+msgid ""
+"On systems with the I<System Security Services Daemon> (SSSD) and where "
+"B<sudo> has been built with SSSD support, it is possible to use SSSD to "
+"cache LDAP I<sudoers> rules.  To use SSSD as the I<sudoers> source, you "
+"should use sssd instead of ldap for the sudoers entry in I</etc/nsswitch."
+"conf>.  Note that the I</etc/ldap.conf> file is not used by the SSSD B<sudo> "
+"back end.  Please see sssd-sudo(5)  for more information on configuring "
+"B<sudo> to work with SSSD."
+msgstr ""
+"I<System Security Services Daemon> (SSSD) を使用しているシステムで、\n"
+"B<sudo> が SSSD サポートを有効にしてビルドされている場合は、\n"
+"LDAP の I<sudoers> ルールをキャッシュするのに SSSD を使用することができる。\n"
+"I<sudoers> の参照先として SSSD を使用するためには、\n"
+"I</etc/nsswitch.conf> の sudoers のエントリで ldap の代わりに \n"
+"sssd を使わねばならない。なお、SSSD 用の B<sudo> のバックエンドは、\n"
+"I</etc/ldap.conf> ファイルを使用しないことに気をつけていただきたい。\n"
+"SSSD と共に使用するときの B<sudo> の設定についてより詳しい情報をお知りになり"
+"たかったら、\n"
+"sssd-sudo(5) をご覧になるとよい。"
+
+#. type: SH
+#: sudoers.ldap.man:1251
+#, no-wrap
+msgid "FILES"
+msgstr "ファイル"
+
+#. type: TP
+#: sudoers.ldap.man:1252
+#, no-wrap
+msgid "I</etc/ldap.conf>"
+msgstr "I</etc/ldap.conf>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1255
+msgid "LDAP configuration file"
+msgstr "LDAP の設定ファイル"
+
+#. type: TP
+#: sudoers.ldap.man:1255
+#, no-wrap
+msgid "I</etc/nsswitch.conf>"
+msgstr "I</etc/nsswitch.conf>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1258
+msgid "determines sudoers source order"
+msgstr "sudoers セキュリティポリシー設定の参照元の順番を決める"
+
+#. type: TP
+#: sudoers.ldap.man:1258
+#, no-wrap
+msgid "I</etc/netsvc.conf>"
+msgstr "I</etc/netsvc.conf>"
+
+#. type: Plain text
+#: sudoers.ldap.man:1261
+msgid "determines sudoers source order on AIX"
+msgstr "AIX で sudoers セキュリティポリシー設定の参照元の順番を決める"
+
+#. type: SH
+#: sudoers.ldap.man:1261
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "用例"
+
+#. type: SS
+#: sudoers.ldap.man:1262
+#, no-wrap
+msgid "Example ldap.conf"
+msgstr "ldap.conf の一例"
+
+#. type: Plain text
+#: sudoers.ldap.man:1371
+#, no-wrap
+msgid ""
+"# Either specify one or more URIs or one or more host:port pairs.\n"
+"# If neither is specified sudo will default to localhost, port 389.\n"
+"#\n"
+"#host          ldapserver\n"
+"#host          ldapserver1 ldapserver2:390\n"
+"#\n"
+"# Default port if host is specified without one, defaults to 389.\n"
+"#port          389\n"
+"#\n"
+"# URI will override the host and port settings.\n"
+"uri            ldap://ldapserver\n"
+"#uri            ldaps://secureldapserver\n"
+"#uri            ldaps://secureldapserver ldap://ldapserver\n"
+"#\n"
+"# The amount of time, in seconds, to wait while trying to connect to\n"
+"# an LDAP server.\n"
+"bind_timelimit 30\n"
+"#\n"
+"# The amount of time, in seconds, to wait while performing an LDAP query.\n"
+"timelimit 30\n"
+"#\n"
+"# Must be set or sudo will ignore LDAP; may be specified multiple times.\n"
+"sudoers_base   ou=SUDOers,dc=example,dc=com\n"
+"#\n"
+"# verbose sudoers matching from ldap\n"
+"#sudoers_debug 2\n"
+"#\n"
+"# Enable support for time-based entries in sudoers.\n"
+"#sudoers_timed yes\n"
+"#\n"
+"# optional proxy credentials\n"
+"#binddn        E<lt>who to search asE<gt>\n"
+"#bindpw        E<lt>passwordE<gt>\n"
+"#rootbinddn    E<lt>who to search as, uses /etc/ldap.secret for bindpwE<gt>\n"
+"#\n"
+"# LDAP protocol version, defaults to 3\n"
+"#ldap_version 3\n"
+"#\n"
+"# Define if you want to use an encrypted LDAP connection.\n"
+"# Typically, you must also set the port to 636 (ldaps).\n"
+"#ssl on\n"
+"#\n"
+"# Define if you want to use port 389 and switch to\n"
+"# encryption before the bind credentials are sent.\n"
+"# Only supported by LDAP servers that support the start_tls\n"
+"# extension such as OpenLDAP.\n"
+"#ssl start_tls\n"
+"#\n"
+"# Additional TLS options follow that allow tweaking of the\n"
+"# SSL/TLS connection.\n"
+"#\n"
+"#tls_checkpeer yes # verify server SSL certificate\n"
+"#tls_checkpeer no  # ignore server SSL certificate\n"
+"#\n"
+"# If you enable tls_checkpeer, specify either tls_cacertfile\n"
+"# or tls_cacertdir.  Only supported when using OpenLDAP.\n"
+"#\n"
+"#tls_cacertfile /etc/certs/trusted_signers.pem\n"
+"#tls_cacertdir  /etc/certs\n"
+"#\n"
+"# For systems that don't have /dev/random\n"
+"# use this along with PRNGD or EGD.pl to seed the\n"
+"# random number pool to generate cryptographic session keys.\n"
+"# Only supported when using OpenLDAP.\n"
+"#\n"
+"#tls_randfile /etc/egd-pool\n"
+"#\n"
+"# You may restrict which ciphers are used.  Consult your SSL\n"
+"# documentation for which options go here.\n"
+"# Only supported when using OpenLDAP.\n"
+"#\n"
+"#tls_ciphers E<lt>cipher-listE<gt>\n"
+"#\n"
+"# Sudo can provide a client certificate when communicating to\n"
+"# the LDAP server.\n"
+"# Tips:\n"
+"#   * Enable both lines at the same time.\n"
+"#   * Do not password protect the key file.\n"
+"#   * Ensure the keyfile is only readable by root.\n"
+"#\n"
+"# For OpenLDAP:\n"
+"#tls_cert /etc/certs/client_cert.pem\n"
+"#tls_key  /etc/certs/client_key.pem\n"
+"#\n"
+"# For SunONE or iPlanet LDAP, tls_cert and tls_key may specify either\n"
+"# a directory, in which case the files in the directory must have the\n"
+"# default names (e.g. cert8.db and key4.db), or the path to the cert\n"
+"# and key files themselves.  However, a bug in version 5.0 of the LDAP\n"
+"# SDK will prevent specific file names from working.  For this reason\n"
+"# it is suggested that tls_cert and tls_key be set to a directory,\n"
+"# not a file name.\n"
+"#\n"
+"# The certificate database specified by tls_cert may contain CA certs\n"
+"# and/or the client's cert.  If the client's cert is included, tls_key\n"
+"# should be specified as well.\n"
+"# For backward compatibility, \"sslpath\" may be used in place of tls_cert.\n"
+"#tls_cert /var/ldap\n"
+"#tls_key /var/ldap\n"
+"#\n"
+"# If using SASL authentication for LDAP (OpenSSL)\n"
+"# use_sasl yes\n"
+"# sasl_auth_id E<lt>SASL user nameE<gt>\n"
+"# rootuse_sasl yes\n"
+"# rootsasl_auth_id E<lt>SASL user name for root accessE<gt>\n"
+"# sasl_secprops none\n"
+"# krb5_ccname /etc/.ldapcache\n"
+msgstr ""
+"# URI または host:port の組み合わせを一つ以上指定する。\n"
+"# どちらも指定されていない場合、sudo はデフォルトの localhost と \n"
+"# 389 番ポートを使用する。\n"
+"#\n"
+"#host          ldapserver\n"
+"#host          ldapserver1 ldapserver2:390\n"
+"#\n"
+"# host がポートなしで指定されている場合のポート番号。\n"
+"# デフォルトは 389 である。\n"
+"#port          389\n"
+"#\n"
+"# URI による指定は、host と port による指定に優先する。\n"
+"uri            ldap://ldapserver\n"
+"#uri            ldaps://secureldapserver\n"
+"#uri            ldaps://secureldapserver ldap://ldapserver\n"
+"#\n"
+"# LDAP サーバに接続しようとしているときの、秒単位の待ち時間。\n"
+"bind_timelimit 30\n"
+"#\n"
+"# LDAP に問い合わせを行っているときの、秒単位の待ち時間。\n"
+"timelimit 30\n"
+"#\n"
+"# 必ず設定すること。さもないと、sudo は LDAP を無視することになる。\n"
+"# 複数回指定してもよい。\n"
+"sudoers_base   ou=SUDOers,dc=example,dc=com\n"
+"#\n"
+"# LDAP で sudoers セキュリティポリシー設定を問い合わせる際の\n"
+"# マッチングについて詳細情報を表示する。\n"
+"#sudoers_debug 2\n"
+"#\n"
+"# sudoers セキュリティポリシー設定中で日時制限のあるエントリの\n"
+"# サポートを有効にする。\n"
+"#sudoers_timed yes\n"
+"#\n"
+"# LDAP の操作を行う者の認証情報 (設定する、しないは任意)。\n"
+"#binddn        E<lt>who to search asE<gt>\n"
+"#bindpw        E<lt>passwordE<gt>\n"
+"#rootbinddn    E<lt>who to search as, uses /etc/ldap.secret for bindpwE<gt>\n"
+"#\n"
+"# LDAP プロトコルのバージョン。デフォルトは 3 である。\n"
+"#ldap_version 3\n"
+"#\n"
+"# LDAP 接続を暗号化したい場合に設定する。\n"
+"# 通例、ポートを 636 (ldaps) にすることも必要。\n"
+"#ssl on\n"
+"#\n"
+"# ポート 389 を使用し、バインド操作のために認証情報が\n"
+"# 送信される直前に、暗号化セッションに切り替えたい場合に設定する。\n"
+"# これをサポートしているのは、OpenLDAP のような start_tls 拡張に\n"
+"# 対応している LDAP サーバだけである。\n"
+"#ssl start_tls\n"
+"#\n"
+"# さらに以下の TLS 関連オプションを使うことで SSL/TLS 接続の\n"
+"# 細かい調整ができる。\n"
+"#\n"
+"#tls_checkpeer yes # サーバの SSL 証明書の正当性をチェックする。\n"
+"#tls_checkpeer no  # サーバの SSL 証明書の正当性をチェックしない。\n"
+"#\n"
+"# tls_checkpeer を有効にするときは、 tls_cacertfile か\n"
+"# tls_cacertdir のどちらかを指定すること。tls_cacertfile や\n"
+"# tls_cacertdir は OpenLDAP の使用時のみ使える。\n"
+"#\n"
+"#tls_cacertfile /etc/certs/trusted_signers.pem\n"
+"#tls_cacertdir  /etc/certs\n"
+"#\n"
+"# /dev/random がないシステムでは、下記の設定を PRNGD、あるいは\n"
+"# EGD.pl と一緒に使用すれば、暗号セッション用の鍵を生成するための\n"
+"# 乱数プールの種を供給できる。このオプションが使えるのは、\n"
+"# OpenLDAP を使用しているときだけである。\n"
+"#\n"
+"#tls_randfile /etc/egd-pool\n"
+"#\n"
+"# 使用する暗号を限定することができる。どの暗号が使えるかに\n"
+"# ついては、SSL の文書を参照すること。このオプションが\n"
+"# 使えるのは、OpenLDAP を使用しているときだけである。\n"
+"#\n"
+"#tls_ciphers E<lt>cipher-listE<gt>\n"
+"#\n"
+"# sudo は LDAP サーバと交信するときに、クライアントの証明書を\n"
+"# 提示することができる。\n"
+"# 注意:\n"
+"#   * 両方の行を同時に有効にすること。\n"
+"#   * キーファイルをパスワードでプロテクトしてはいけない。\n"
+"#   * キーファイルが読めるのは root だけにするのを忘れずに。\n"
+"#\n"
+"# OpenLDAP の場合:\n"
+"#tls_cert /etc/certs/client_cert.pem\n"
+"#tls_key  /etc/certs/client_key.pem\n"
+"#\n"
+"# SunONE や iPlanet LDAP (訳注: Netscape 由来) の場合:\n"
+"# こちらの場合は、tls_cert や tls_key で指定するのは、証明書や\n"
+"# キーファイルの入っているディレクトリでもよく、ファイルそのものの\n"
+"# パスでもよい。前者の場合、ディレクトリ中のファイルは、所定の名前 \n"
+"# (たとえばcert8.db と key4.db) でなければならない。もっとも、\n"
+"# ファイルのパスを指定した場合は、バージョン 5.0 の LDAP SDK には\n"
+"# バグがあるので、ファイル名によってはうまく動作しないことがある。\n"
+"# この理由から、tls_cert や tls_key には、ファイル名ではなく、\n"
+"# ディレクトリを指定する方をお薦めする。\n"
+"#\n"
+"# tls_cert で指定した証明書のデータベースには、認証局の証明書と\n"
+"# クライアントの証明書が、どちらか一方だけ入っていてもよく、\n"
+"# 両方入っていてもよい。クライアントの証明書が入っている場合は、\n"
+"# tls_key も指定するべきである。\n"
+"# 後方互換のため、tls_cert のかわりに sslpath を使うこともできる。\n"
+"#tls_cert /var/ldap\n"
+"#tls_key /var/ldap\n"
+"#\n"
+"# LDAP に SASL 認証を使用する場合 (OpenSSL)\n"
+"# use_sasl yes\n"
+"# sasl_auth_id E<lt>SASL user nameE<gt>\n"
+"# rootuse_sasl yes\n"
+"# rootsasl_auth_id E<lt>SASL user name for root accessE<gt>\n"
+"# sasl_secprops none\n"
+"# krb5_ccname /etc/.ldapcache\n"
+
+#. type: SS
+#: sudoers.ldap.man:1373
+#, no-wrap
+msgid "Sudo schema for OpenLDAP"
+msgstr "OpenLDAP 用の sudo のスキーマ"
+
+#. type: Plain text
+#: sudoers.ldap.man:1387
+msgid ""
+"The following schema, in OpenLDAP format, is included with B<sudo> source "
+"and binary distributions as I<schema.OpenLDAP>.  Simply copy it to the "
+"schema directory (e.g.\\& I</etc/openldap/schema>), add the proper include "
+"line in I<slapd.conf> and restart B<slapd>."
+msgstr ""
+"下記のスキーマは OpenLDAP 用の形式になっており、\n"
+"B<sudo> のソースやバイナリの配布には I<schema.OpenLDAP> \n"
+"として収録されている。その I<schema.OpenLDAP> \n"
+"ファイルをスキーマ・ディレクトリ (たとえば I</etc/openldap/schema>) \n"
+"にそのままコピーし、適切な include 行を I<slapd.conf> に追加して、\n"
+"B<slapd> をリスタートすればよい。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1396
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.1\n"
+"   NAME 'sudoUser'\n"
+"   DESC 'User(s) who may  run sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SUBSTR caseExactIA5SubstringsMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.1\n"
+"   NAME 'sudoUser'\n"
+"   DESC 'User(s) who may  run sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SUBSTR caseExactIA5SubstringsMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1403
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.2\n"
+"   NAME 'sudoHost'\n"
+"   DESC 'Host(s) who may run sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SUBSTR caseExactIA5SubstringsMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.2\n"
+"   NAME 'sudoHost'\n"
+"   DESC 'Host(s) who may run sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SUBSTR caseExactIA5SubstringsMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1409
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.3\n"
+"   NAME 'sudoCommand'\n"
+"   DESC 'Command(s) to be executed by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.3\n"
+"   NAME 'sudoCommand'\n"
+"   DESC 'Command(s) to be executed by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1415
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.4\n"
+"   NAME 'sudoRunAs'\n"
+"   DESC 'User(s) impersonated by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.4\n"
+"   NAME 'sudoRunAs'\n"
+"   DESC 'User(s) impersonated by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1421
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.5\n"
+"   NAME 'sudoOption'\n"
+"   DESC 'Options(s) followed by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.5\n"
+"   NAME 'sudoOption'\n"
+"   DESC 'Options(s) followed by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1427
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.6\n"
+"   NAME 'sudoRunAsUser'\n"
+"   DESC 'User(s) impersonated by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.6\n"
+"   NAME 'sudoRunAsUser'\n"
+"   DESC 'User(s) impersonated by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1433
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.7\n"
+"   NAME 'sudoRunAsGroup'\n"
+"   DESC 'Group(s) impersonated by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.7\n"
+"   NAME 'sudoRunAsGroup'\n"
+"   DESC 'Group(s) impersonated by sudo'\n"
+"   EQUALITY caseExactIA5Match\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1440
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.8\n"
+"   NAME 'sudoNotBefore'\n"
+"   DESC 'Start of time interval for which the entry is valid'\n"
+"   EQUALITY generalizedTimeMatch\n"
+"   ORDERING generalizedTimeOrderingMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.8\n"
+"   NAME 'sudoNotBefore'\n"
+"   DESC 'Start of time interval for which the entry is valid'\n"
+"   EQUALITY generalizedTimeMatch\n"
+"   ORDERING generalizedTimeOrderingMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1447
+#, no-wrap
+msgid ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.9\n"
+"   NAME 'sudoNotAfter'\n"
+"   DESC 'End of time interval for which the entry is valid'\n"
+"   EQUALITY generalizedTimeMatch\n"
+"   ORDERING generalizedTimeOrderingMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )\n"
+msgstr ""
+"attributetype ( 1.3.6.1.4.1.15953.9.1.9\n"
+"   NAME 'sudoNotAfter'\n"
+"   DESC 'End of time interval for which the entry is valid'\n"
+"   EQUALITY generalizedTimeMatch\n"
+"   ORDERING generalizedTimeOrderingMatch\n"
+"   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1454
+#, no-wrap
+msgid ""
+"attributeTypes ( 1.3.6.1.4.1.15953.9.1.10\n"
+"    NAME 'sudoOrder'\n"
+"    DESC 'an integer to order the sudoRole entries'\n"
+"    EQUALITY integerMatch\n"
+"    ORDERING integerOrderingMatch\n"
+"    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )\n"
+msgstr ""
+"attributeTypes ( 1.3.6.1.4.1.15953.9.1.10\n"
+"    NAME 'sudoOrder'\n"
+"    DESC 'an integer to order the sudoRole entries'\n"
+"    EQUALITY integerMatch\n"
+"    ORDERING integerOrderingMatch\n"
+"    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )\n"
+
+#. type: Plain text
+#: sudoers.ldap.man:1462
+#, no-wrap
+msgid ""
+"objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL\n"
+"   DESC 'Sudoer Entries'\n"
+"   MUST ( cn )\n"
+"   MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $\n"
+"\t sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $\n"
+"\t sudoOrder $ description )\n"
+"   )\n"
+msgstr ""
+"objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL\n"
+"   DESC 'Sudoer Entries'\n"
+"   MUST ( cn )\n"
+"   MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $\n"
+"\t sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $\n"
+"\t sudoOrder $ description )\n"
+"   )\n"
+
+#. type: SH
+#: sudoers.ldap.man:1464
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "関連項目"
+
+#. type: Plain text
+#: sudoers.ldap.man:1469
+msgid "ldap.conf(5), sssd-sudo(5), sudo.conf(5), sudoers(5)"
+msgstr "ldap.conf(5), sssd-sudo(5), sudo.conf(5), sudoers(5)"
+
+#. type: SH
+#: sudoers.ldap.man:1469
+#, no-wrap
+msgid "AUTHORS"
+msgstr "作者"
+
+#. type: Plain text
+#: sudoers.ldap.man:1473
+msgid ""
+"Many people have worked on B<sudo> over the years; this version consists of "
+"code written primarily by:"
+msgstr ""
+"多数の人々が長年に渡って B<sudo> の開発に携わってきた。\n"
+"当バージョンは主として次の者が書いたコードからできている。"
+
+#. type: Plain text
+#: sudoers.ldap.man:1476
+msgid "Todd C. Miller"
+msgstr "Todd C. Miller"
+
+#. type: Plain text
+#: sudoers.ldap.man:1483
+msgid ""
+"See the CONTRIBUTORS file in the B<sudo> distribution (https://www.sudo.ws/"
+"contributors.html) for an exhaustive list of people who have contributed to "
+"B<sudo>."
+msgstr ""
+"B<sudo> の開発に貢献してくださった方々の詳細なリストについては、\n"
+"配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。\n"
+"(https://www.sudo.ws/contributors.html)"
+
+#. type: SH
+#: sudoers.ldap.man:1483
+#, no-wrap
+msgid "CAVEATS"
+msgstr "警告"
+
+#. type: Plain text
+#: sudoers.ldap.man:1491
+msgid ""
+"Note that there are differences in the way that LDAP-based I<sudoers> is "
+"parsed compared to file-based I<sudoers>.  See the I<Differences between "
+"LDAP and non-LDAP sudoers> section for more information."
+msgstr ""
+"LDAP を使用する sudoers セキュリティポリシーの設定と \n"
+"I<sudoers> ファイルによる設定では、設定を解析する仕方に相違があるので、\n"
+"注意していただきたい。詳細については、「LDAP を使う場合と使わない場合の \n"
+"sudoers セキュリティポリシー設定の相違点」のセクションを参照すること。"
+
+#. type: SH
+#: sudoers.ldap.man:1491
+#, no-wrap
+msgid "BUGS"
+msgstr "バグ"
+
+#. type: Plain text
+#: sudoers.ldap.man:1495
+msgid ""
+"If you feel you have found a bug in B<sudo>, please submit a bug report at "
+"https://bugzilla.sudo.ws/"
+msgstr ""
+"B<sudo> にバグを発見したと思ったら、https://bugzilla.sudo.ws/  \n"
+"にアクセスして、バグレポートを提出していただきたい。"
+
+#. type: SH
+#: sudoers.ldap.man:1495
+#, no-wrap
+msgid "SUPPORT"
+msgstr "サポート"
+
+#. type: Plain text
+#: sudoers.ldap.man:1499
+msgid ""
+"Limited free support is available via the sudo-users mailing list, see "
+"https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the "
+"archives."
+msgstr ""
+"ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。\n"
+"購読やアーカイブの検索には、下記 URL を御覧になるとよい。\n"
+"https://www.sudo.ws/mailman/listinfo/sudo-users"
+
+#. type: SH
+#: sudoers.ldap.man:1499
+#, no-wrap
+msgid "DISCLAIMER"
+msgstr "免責"
+
+#. type: Plain text
+#: sudoers.ldap.man:1508
+msgid ""
+"B<sudo> is provided \\(LqAS IS\\(Rq and any express or implied warranties, "
+"including, but not limited to, the implied warranties of merchantability and "
+"fitness for a particular purpose are disclaimed.  See the LICENSE file "
+"distributed with B<sudo> or https://www.sudo.ws/license.html for complete "
+"details."
+msgstr ""
+"B<sudo> は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証"
+"も、\n"
+"商品性や特定目的への適合性についての黙示的な保証を含め、\n"
+"またそれのみに止まらず、これを否認する。詳細な全文については、\n"
+"B<sudo> と一緒に配布されている LICENSE ファイルや、\n"
+"下記 Web ページをご覧いただきたい。\n"
+"https://www.sudo.ws/license.html"
diff --git a/manual/sudo/po4a/sudoreplay.8/add_ja/add0.txt b/manual/sudo/po4a/sudoreplay.8/add_ja/add0.txt
new file mode 100644 (file)
index 0000000..ccfaca8
--- /dev/null
@@ -0,0 +1,9 @@
+PO4A-HEADER: mode=before;position=\.TH
+.\"
+.\" Japanese Version Copyright (c) 2012 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
+.\"
diff --git a/manual/sudo/po4a/sudoreplay.8/add_ja/add1.txt b/manual/sudo/po4a/sudoreplay.8/add_ja/add1.txt
new file mode 100644 (file)
index 0000000..eaa9f51
--- /dev/null
@@ -0,0 +1,6 @@
+PO4A-HEADER: mode=after; position=突き止めることもできる。; beginboundary=^
+.IP "[\fB訳注\fP]:" 8
+セッションの出力のロギングを有効にするには、\fIsudoers\fP ファイルの 
+Defaults 行で \fIlog_output\fP を指定するか、あるいは、
+同ファイルのユーザ設定でコマンドに \fILOG_OUTPUT\fP タグを付ける。
+詳細については、\fIsudoers\fP のマニュアルを参照していただきたい。
diff --git a/manual/sudo/po4a/sudoreplay.8/sudoreplay.ja.po b/manual/sudo/po4a/sudoreplay.8/sudoreplay.ja.po
new file mode 100644 (file)
index 0000000..b7a523f
--- /dev/null
@@ -0,0 +1,989 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2016-09-11 21:44+0900\n"
+"PO-Revision-Date: 2016-09-10 10:35+0900\n"
+"Last-Translator: Chonan Yoichi <cyoichi@maple.ocn.ne.jp>\n"
+"Language-Team: Linux JM project <linuxjm-discuss@lists.sourceforge.jp>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: sudoreplay.man:19
+#, no-wrap
+msgid "SUDOREPLAY"
+msgstr "SUDOREPLAY"
+
+#. type: TH
+#: sudoreplay.man:19
+#, no-wrap
+msgid "May 4, 2016"
+msgstr "May 4, 2016"
+
+#. type: TH
+#: sudoreplay.man:19
+#, no-wrap
+msgid "Sudo 1.8.17"
+msgstr "Sudo 1.8.17"
+
+#. type: TH
+#: sudoreplay.man:19
+#, no-wrap
+msgid "System Manager's Manual"
+msgstr "System Manager's Manual"
+
+#. type: SH
+#: sudoreplay.man:22
+#, no-wrap
+msgid "NAME"
+msgstr "名前"
+
+#. type: Plain text
+#: sudoreplay.man:25
+msgid "B<sudoreplay> - replay sudo session logs"
+msgstr "B<sudoreplay> - sudo のセッションログを再生する"
+
+#. type: SH
+#: sudoreplay.man:25
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "書式"
+
+#. type: Plain text
+#: sudoreplay.man:34
+msgid ""
+"B<sudoreplay> [B<-h>] [B<-d>\\ I<dir>] [B<-f>\\ I<filter>] [B<-m>\\ I<num>] "
+"[B<-s>\\ I<num>] ID"
+msgstr ""
+"B<sudoreplay> [B<-h>] [B<-d>\\ I<dir>] [B<-f>\\ I<filter>] [B<-m>\\ I<num>] "
+"[B<-s>\\ I<num>] ID"
+
+#. type: Plain text
+#: sudoreplay.man:40
+msgid "B<sudoreplay> [B<-h>] [B<-d>\\ I<dir>] B<-l> [search\\ expression]"
+msgstr "B<sudoreplay> [B<-h>] [B<-d>\\ I<dir>] B<-l> [search\\ expression]"
+
+#. type: SH
+#: sudoreplay.man:40
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "説明"
+
+#. type: Plain text
+#: sudoreplay.man:48
+msgid ""
+"B<sudoreplay> plays back or lists the output logs created by B<sudo>.  When "
+"replaying, B<sudoreplay> can play the session back in real-time, or the "
+"playback speed may be adjusted (faster or slower) based on the command line "
+"options."
+msgstr ""
+"B<sudoreplay> は、B<sudo> が生成した出力ログの再生、\n"
+"または一覧表示を行う。再生する場合、\n"
+"B<sudoreplay> はセッションの再生をリアルタイムで実行することもできるし、\n"
+"コマンドライン・オプションによって再生速度を (早くしたり、\n"
+"遅くしたり) 調節することもできる。 "
+
+#. type: Plain text
+#: sudoreplay.man:75
+msgid ""
+"The I<ID> should either be a six character sequence of digits and upper case "
+"letters, e.g.\\& 0100A5, or a pattern matching the I<iolog_file> option in "
+"the I<sudoers> file.  When a command is run via B<sudo> with I<log_output> "
+"enabled in the I<sudoers> file, a TSID=ID string is logged via syslog or to "
+"the B<sudo> log file.  The I<ID> may also be determined using "
+"B<sudoreplay>'s list mode."
+msgstr ""
+"上記書式の一つ目 (再生モード) で指定する引数 I<ID> は、たとえば 0100A5 のよう"
+"な、\n"
+"数字とアルファベットの大文字からなる 6 字の文字列か、\n"
+"I<sudoers> ファイルの I<iolog_file> オプションにマッチするパターンかの、\n"
+"どちらかでなければならない。\n"
+"I<sudoers> ファイルの I<log_output> オプションが有効な状態で \n"
+"B<sudo> を使ってコマンドを実行すると、\n"
+"TSID=ID という文字列が、syslog 経由や B<sudo> 独自のログファイルに記録され"
+"る \n"
+"(訳注: その ID を引数として指定するのである)。\n"
+"また、I<ID> は、B<sudoreplay> のリストモード (上記書式の二つ目) を使用し"
+"て、\n"
+"突き止めることもできる。"
+
+#. type: Plain text
+#: sudoreplay.man:80
+msgid ""
+"In list mode, B<sudoreplay> can be used to find the ID of a session based on "
+"a number of criteria such as the user, tty or command run."
+msgstr ""
+"リストモードで B<sudoreplay> を使用すると、ユーザ、使用した端末 (tty)、\n"
+"実行したコマンドなど、いくつかの条件に基づいて、セッションの ID \n"
+"を知ることができる。"
+
+#. type: Plain text
+#: sudoreplay.man:84
+msgid ""
+"In replay mode, if the standard output has not been redirected, "
+"B<sudoreplay> will act on the following keys:"
+msgstr ""
+"再生モードでは、標準出力がリダイレクトされていないかぎり、\n"
+"以下のキーが有効である。"
+
+#. type: TP
+#: sudoreplay.man:84
+#, no-wrap
+msgid "\\(oq\\en\\(cq or \\(oq\\er\\(cq"
+msgstr "'\\en' または '\\er'"
+
+#. type: Plain text
+#: sudoreplay.man:87
+msgid "Skip to the next replay event; useful for long pauses."
+msgstr "次の再生イベントに飛ぶ。イベント間の休止が長いとき便利。"
+
+#. type: TP
+#: sudoreplay.man:87
+#, no-wrap
+msgid "\\(oq\\ \\(cq (space)"
+msgstr "'\\ ' (space)"
+
+#. type: Plain text
+#: sudoreplay.man:90
+msgid "Pause output; press any key to resume."
+msgstr "出力を停止する。任意のキーを押せば、続行する。"
+
+#. type: TP
+#: sudoreplay.man:90
+#, no-wrap
+msgid "\\(oqE<lt>\\(cq"
+msgstr "'E<lt>'"
+
+#. type: Plain text
+#: sudoreplay.man:93
+msgid "Reduce the playback speed by one half."
+msgstr "再生速度を半分に下げる。"
+
+#. type: TP
+#: sudoreplay.man:93
+#, no-wrap
+msgid "\\(oqE<gt>\\(cq"
+msgstr "'E<gt>'"
+
+#. type: Plain text
+#: sudoreplay.man:96
+msgid "Double the playback speed."
+msgstr "再生速度を倍にする。"
+
+#. type: Plain text
+#: sudoreplay.man:98
+msgid "The options are as follows:"
+msgstr "オプションとして以下のものが使用できる。"
+
+#. type: TP
+#: sudoreplay.man:98
+#, no-wrap
+msgid "B<-d> I<dir>, B<--directory>=I<dir>"
+msgstr "B<-d> I<dir>, B<--directory>=I<dir>"
+
+#. type: Plain text
+#: sudoreplay.man:104
+msgid ""
+"Store session logs in I<dir> instead of the default, I</var/log/sudo-io>."
+msgstr ""
+"セッションログは、デフォルトの I</var/log/sudo-io> ではなく、\n"
+"I<dir> にある。"
+
+#. type: TP
+#: sudoreplay.man:104
+#, no-wrap
+msgid "B<-f> I<filter>, B<--filter>=I<filter>"
+msgstr "B<-f> I<filter>, B<--filter>=I<filter>"
+
+#. type: Plain text
+#: sudoreplay.man:117
+msgid ""
+"Select which I/O type(s) to display.  By default, B<sudoreplay> will display "
+"the command's standard output, standard error and tty output.  The I<filter> "
+"argument is a comma-separated list, consisting of one or more of following: "
+"I<stdout>, I<stderr>, and I<ttyout>."
+msgstr ""
+"再生する I/O タイプを選択する。\n"
+"デフォルトでは、B<sudoreplay> はコマンドの標準出力、標準エラー、\n"
+"それに端末 (tty) への出力を表示することになっている。\n"
+"引き数 I<filter> は、コンマで区切ったリストであり、I<stdout>, I<stderr>, \n"
+"I<ttyout> から一つ以上指定する。"
+
+#. type: TP
+#: sudoreplay.man:117
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: sudoreplay.man:120
+msgid "Display a short help message to the standard output and exit."
+msgstr "簡単なヘルプ・メッセージを標準出力に表示して終了する。"
+
+#. type: TP
+#: sudoreplay.man:120
+#, no-wrap
+msgid "B<-l>, B<--list> [I<search expression>]"
+msgstr "B<-l>, B<--list> [I<search expression>]"
+
+#. type: Plain text
+#: sudoreplay.man:133
+msgid ""
+"Enable \\(Lqlist mode\\(Rq.  In this mode, B<sudoreplay> will list available "
+"sessions in a format similar to the B<sudo> log file format, sorted by file "
+"name (or sequence number).  If a I<search expression> is specified, it will "
+"be used to restrict the IDs that are displayed.  An expression is composed "
+"of the following predicates:"
+msgstr ""
+"「リスト・モード」を有効にする。\n"
+"このモードでは、B<sudoreplay> は、再生可能なセッションのリストを、\n"
+"B<sudo> のログファイルにおける表記と同じような書式で、\n"
+"/var/log/sudo-io 以下のファイル名 (すなわち、シーケンス・ナンバー) \n"
+"によってソートして表示する。検索式 (I<search expression>) を指定すると、\n"
+"表示する ID を絞り込むために、それが使用されることになる。\n"
+"検索式は以下の述語 (predicate) から構成される。"
+
+#. type: TP
+#: sudoreplay.man:136
+#, no-wrap
+msgid "command I<pattern>"
+msgstr "command I<pattern>"
+
+#. type: Plain text
+#: sudoreplay.man:141
+msgid ""
+"Evaluates to true if the command run matches the POSIX extended regular "
+"expression I<pattern>."
+msgstr ""
+"実行されたコマンドが POSIX の拡張正規表現 I<pattern> にマッチすれば、\n"
+"真になる。"
+
+#. type: TP
+#: sudoreplay.man:142
+#, no-wrap
+msgid "cwd I<directory>"
+msgstr "cwd I<directory>"
+
+#. type: Plain text
+#: sudoreplay.man:146
+msgid ""
+"Evaluates to true if the command was run with the specified current working "
+"directory."
+msgstr ""
+"指定したディレクトリをカレントディレクトリとしてコマンドが実行されていれ"
+"ば、\n"
+"真になる。"
+
+#. type: TP
+#: sudoreplay.man:146
+#, no-wrap
+msgid "fromdate I<date>"
+msgstr "fromdate I<date>"
+
+#. type: Plain text
+#: sudoreplay.man:153
+msgid ""
+"Evaluates to true if the command was run on or after I<date>.  See I<Date "
+"and time format> for a description of supported date and time formats."
+msgstr ""
+"コマンドを実行した日付が I<date> 以後なら、真になる。\n"
+"サポートしている日時のフォーマットについては、\n"
+"「日付と時刻のフォーマット」を参照すること。"
+
+#. type: TP
+#: sudoreplay.man:153
+#, no-wrap
+msgid "group I<runas_group>"
+msgstr "group I<runas_group>"
+
+#. type: Plain text
+#: sudoreplay.man:162
+msgid ""
+"Evaluates to true if the command was run with the specified I<runas_group>.  "
+"Note that unless a I<runas_group> was explicitly specified when B<sudo> was "
+"run this field will be empty in the log."
+msgstr ""
+"指定された I<runas_group> としてコマンドが実行されていれば、真になる。\n"
+"I<runas_group> を明示的に指定して、\n"
+"B<sudo> を実行していないかぎり、\n"
+"この欄はログに書き込まれないことに注意していただきたい。"
+
+#. type: TP
+#: sudoreplay.man:162
+#, no-wrap
+msgid "runas I<runas_user>"
+msgstr "runas I<runas_user>"
+
+#. type: Plain text
+#: sudoreplay.man:171
+msgid ""
+"Evaluates to true if the command was run as the specified I<runas_user>.  "
+"Note that B<sudo> runs commands as user I<root> by default."
+msgstr ""
+"指定された I<runas_user> としてコマンドが実行されていれば、真になる。\n"
+"B<sudo> は、デフォルトでは \n"
+"I<root> ユーザとしてコマンドを実行することをお忘れなく。"
+
+#. type: TP
+#: sudoreplay.man:171
+#, no-wrap
+msgid "todate I<date>"
+msgstr "todate I<date>"
+
+#. type: Plain text
+#: sudoreplay.man:178
+msgid ""
+"Evaluates to true if the command was run on or prior to I<date>.  See I<Date "
+"and time format> for a description of supported date and time formats."
+msgstr ""
+"コマンドを実行した日付が I<date> 以前なら、真になる。\n"
+"サポートしている日付のフォーマットについては、\n"
+"「日付と時刻のフォーマット」を参照すること。"
+
+#. type: TP
+#: sudoreplay.man:178
+#, no-wrap
+msgid "tty I<tty name>"
+msgstr "tty I<tty name>"
+
+#. type: Plain text
+#: sudoreplay.man:189
+msgid ""
+"Evaluates to true if the command was run on the specified terminal device.  "
+"The I<tty name> should be specified without the I</dev/> prefix, e.g.\\& "
+"I<tty01> instead of I</dev/tty01>."
+msgstr ""
+"コマンドを実行したのが指定した端末デバイスならば、\n"
+"真になる。I<tty name> は I</dev/> の部分を取って指定するべきである。\n"
+"たとえば、I</dev/tty01> ではなく、I<tty01> のように。\n"
+"(訳注: この説明は sudo-1.7.4 のころの指定法である。\n"
+"最近の B<sudoreplay> では、I</dev/tty01> などと指定する必要があるようだ。)"
+
+#. type: TP
+#: sudoreplay.man:189
+#, no-wrap
+msgid "user I<user name>"
+msgstr "user I<user name>"
+
+#. type: Plain text
+#: sudoreplay.man:193
+msgid "Evaluates to true if the ID matches a command run by I<user name>."
+msgstr "コマンドを実行したユーザが I<user name> なら、真になる。"
+
+#. type: Plain text
+#: sudoreplay.man:195
+msgid "Predicates may be abbreviated to the shortest unique string."
+msgstr ""
+"述語は、他と区別できるなら、最短の文字列にまで短縮することができる\n"
+"(訳注: たとえば、現在のところ、述語 user の代わりに u が使える)。"
+
+#. type: Plain text
+#: sudoreplay.man:212
+msgid ""
+"Predicates may be combined using I<and>, I<or> and I<\\&!> operators as well "
+"as \\(oq\\&(\\(cq and \\(oq\\&)\\(cq grouping (note that parentheses must "
+"generally be escaped from the shell).  The I<and> operator is optional, "
+"adjacent predicates have an implied I<and> unless separated by an I<or>."
+msgstr ""
+"述語は、I<and>, I<or>, I<\\&!> 演算子を使って、組み合わせることができる。\n"
+"また、'\\&(' と '\\&)' によるグループ化も可能だ\n"
+"(ただし、たいていの場合、カッコはシェルに解釈されないように、\n"
+"エスケープしなければならない)。I<and> 演算子は省略可能である。\n"
+"隣り合った述語は、間に I<or> がないかぎり、\n"
+"I<and> で結合していると見なされるからだ。"
+
+#. type: TP
+#: sudoreplay.man:213
+#, no-wrap
+msgid "B<-m>, B<--max-wait> I<max_wait>"
+msgstr "B<-m>, B<--max-wait> I<max_wait>"
+
+#. type: Plain text
+#: sudoreplay.man:229
+msgid ""
+"Specify an upper bound on how long to wait between key presses or output "
+"data.  By default, B<sudoreplay> will accurately reproduce the delays "
+"between key presses or program output.  However, this can be tedious when "
+"the session includes long pauses.  When the B<-m> option is specified, "
+"B<sudoreplay> will limit these pauses to at most I<max_wait> seconds.  The "
+"value may be specified as a floating point number, e.g.\\& I<2.5>."
+msgstr ""
+"キーを押してから次のキーを押すまでの間や、データ出力同士の間にある\n"
+"待ち時間の上限を指定する。B<sudoreplay> はデフォルトでは、\n"
+"キーの押し下げやプログラムの出力の間にある経過時間を正確に再現する。\n"
+"しかし、それだと、セッション中に長い間合いがある場合など、\n"
+"うんざりすることになりかねない。\n"
+"I<-m> オプションを指定すると、B<sudoreplay> はそうした間合いを、\n"
+"長くても I<max_wait> 秒以内に抑えるようになる。この値は、\n"
+"たとえば I<2.5> といった、浮動小数点数で指定することも可能だ。"
+
+#. type: TP
+#: sudoreplay.man:229
+#, no-wrap
+msgid "B<-s>, B<--speed> I<speed_factor>"
+msgstr "B<-s>, B<--speed> I<speed_factor>"
+
+#. type: Plain text
+#: sudoreplay.man:245
+msgid ""
+"This option causes B<sudoreplay> to adjust the number of seconds it will "
+"wait between key presses or program output.  This can be used to slow down "
+"or speed up the display.  For example, a I<speed_factor> of I<2> would make "
+"the output twice as fast whereas a I<speed_factor> of I<.5> would make the "
+"output twice as slow."
+msgstr ""
+"このオプションを指定すると、B<sudoreplay> は、\n"
+"キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。\n"
+"このオプションを使えば、再生速度を早くしたり遅くしたりできるわけだ。\n"
+"たとえば、I<speed_factor> に I<2> を指定すれば、再生速度が 2 倍になるし、\n"
+"I<.5> を指定すれば、再生速度が半分になる。"
+
+#. type: TP
+#: sudoreplay.man:245
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr "B<-V>, B<--version>"
+
+#. type: Plain text
+#: sudoreplay.man:250
+msgid "Print the B<sudoreplay> versions version number and exit."
+msgstr "B<sudoreplay> のバージョン番号を表示して終了する。"
+
+#. type: SS
+#: sudoreplay.man:250
+#, no-wrap
+msgid "Date and time format"
+msgstr "日付と時刻のフォーマット"
+
+#. type: Plain text
+#: sudoreplay.man:252
+msgid ""
+"The time and date may be specified multiple ways, common formats include:"
+msgstr ""
+"日付と時刻の指定には、幾通りもの方法がある。よく使うフォーマットには、\n"
+"次のものがある。"
+
+#. type: TP
+#: sudoreplay.man:252
+#, no-wrap
+msgid "HH:MM:SS am MM/DD/CCYY timezone"
+msgstr "HH:MM:SS am MM/DD/CCYY timezone"
+
+#. type: Plain text
+#: sudoreplay.man:255
+msgid "24 hour time may be used in place of am/pm."
+msgstr "午前/午後 (am/pm) の代わりに 24 時間制の時刻を使ってもよい。"
+
+#. type: TP
+#: sudoreplay.man:255
+#, no-wrap
+msgid "HH:MM:SS am Month, Day Year timezone"
+msgstr "HH:MM:SS am Month Day, Year timezone"
+
+#. type: Plain text
+#: sudoreplay.man:260
+msgid ""
+"24 hour time may be used in place of am/pm, and month and day names may be "
+"abbreviated.  Note that month and day of the week names must be specified in "
+"English."
+msgstr ""
+"午前/午後 (am/pm) の代わりに 24 時間制の時刻を使ってもよい。\n"
+"月や曜日の名前には短縮形を使うこともできる。\n"
+"月や曜日の名前は、英語で指定しなければならないのに注意すること。\n"
+"(訳注: 曜日を指定する場合は、月と日にちの間以外なら、\n"
+"たいていの場所に置くことができる。\n"
+"なお、上記書式のように、日にちの後ろにコンマを入れるかどうかは、任意である。)"
+
+#. type: TP
+#: sudoreplay.man:260
+#, no-wrap
+msgid "CCYY-MM-DD HH:MM:SS"
+msgstr "CCYY-MM-DD HH:MM:SS"
+
+#. type: Plain text
+#: sudoreplay.man:263
+msgid "ISO time format"
+msgstr "ISO の日時フォーマット。"
+
+#. type: TP
+#: sudoreplay.man:263
+#, no-wrap
+msgid "DD Month CCYY HH:MM:SS"
+msgstr "DD Month CCYY HH:MM:SS"
+
+#. type: Plain text
+#: sudoreplay.man:266
+msgid "The month name may be abbreviated."
+msgstr "月の名前には短縮形も使える。"
+
+#. type: Plain text
+#: sudoreplay.man:272
+msgid ""
+"Either time or date may be omitted, the am/pm and timezone are optional.  If "
+"no date is specified, the current day is assumed; if no time is specified, "
+"the first second of the specified date is used.  The less significant parts "
+"of both time and date may also be omitted, in which case zero is assumed."
+msgstr ""
+"日付と時刻の一方を省略することができる。am/pm とタイムゾーンは、\n"
+"指定してもしなくてもよい。日付が指定されない場合は、\n"
+"当日が指定されたものと見なされる。時刻が指定されない場合は、\n"
+"指定された日にちの 00:00:00 が使用される。\n"
+"時刻や日付のそれほど重要ではない部分も省略できるが、\n"
+"その場合は 0 が指定されたものと見なされる。"
+
+#. type: Plain text
+#: sudoreplay.man:274
+msgid "The following are all valid time and date specifications:"
+msgstr "以下の表記は、すべて有効な日時の指定である。"
+
+#. type: TP
+#: sudoreplay.man:274
+#, no-wrap
+msgid "now"
+msgstr "now"
+
+#. type: Plain text
+#: sudoreplay.man:277
+msgid "The current time and date."
+msgstr "今日の今。"
+
+#. type: TP
+#: sudoreplay.man:277
+#, no-wrap
+msgid "tomorrow"
+msgstr "tomorrow"
+
+#. type: Plain text
+#: sudoreplay.man:280
+msgid "Exactly one day from now."
+msgstr "今からちょうど 1 日後。"
+
+#. type: TP
+#: sudoreplay.man:280
+#, no-wrap
+msgid "yesterday"
+msgstr "yesterday"
+
+#. type: Plain text
+#: sudoreplay.man:283
+msgid "24 hours ago."
+msgstr "24 時間前。"
+
+#. type: TP
+#: sudoreplay.man:283
+#, no-wrap
+msgid "2 hours ago"
+msgstr "2 hours ago"
+
+#. type: Plain text
+#: sudoreplay.man:286
+msgid "2 hours ago."
+msgstr "2 時間前。"
+
+#. type: TP
+#: sudoreplay.man:286
+#, no-wrap
+msgid "next Friday"
+msgstr "next Friday"
+
+#. type: Plain text
+#: sudoreplay.man:292
+msgid ""
+"The first second of the Friday in the next (upcoming) week.  Not to be "
+"confused with \\(Lqthis friday\\(Rq which would match the friday of the "
+"current week."
+msgstr ""
+"来週の (やがて来る週の) 金曜日の 00:00:00。\n"
+"\"this friday\" と混同してはいけない。\n"
+"\"this friday\" ならば、今週の金曜日とマッチする。"
+
+#. type: TP
+#: sudoreplay.man:292
+#, no-wrap
+msgid "last week"
+msgstr "last week"
+
+#. type: Plain text
+#: sudoreplay.man:297
+msgid ""
+"The current time but 7 days ago.  This is equivalent to \\(Lqa week ago\\(Rq."
+msgstr "7 日前の現在時刻。\"a week ago\" と同じ。"
+
+#. type: TP
+#: sudoreplay.man:297
+#, no-wrap
+msgid "a fortnight ago"
+msgstr "a fortnight ago"
+
+#. type: Plain text
+#: sudoreplay.man:300
+msgid "The current time but 14 days ago."
+msgstr "14 日前の現在時刻。"
+
+#. type: TP
+#: sudoreplay.man:300
+#, no-wrap
+msgid "10:01 am 9/17/2009"
+msgstr "10:01 am 9/17/2009"
+
+#. type: Plain text
+#: sudoreplay.man:303 sudoreplay.man:315
+msgid "10:01 am, September 17, 2009."
+msgstr "2009 年 9 月 17 日 午前 10 時 01 分。"
+
+#. type: TP
+#: sudoreplay.man:303
+#, no-wrap
+msgid "10:01 am"
+msgstr "10:01 am"
+
+#. type: Plain text
+#: sudoreplay.man:306
+msgid "10:01 am on the current day."
+msgstr "今日の午前 10 時 01 分。"
+
+#. type: TP
+#: sudoreplay.man:306
+#, no-wrap
+msgid "10"
+msgstr "10"
+
+#. type: Plain text
+#: sudoreplay.man:309
+msgid "10:00 am on the current day."
+msgstr "今日の午前 10 時 00 分。"
+
+#. type: TP
+#: sudoreplay.man:309
+#, no-wrap
+msgid "9/17/2009"
+msgstr "9/17/2009"
+
+#. type: Plain text
+#: sudoreplay.man:312
+msgid "00:00 am, September 17, 2009."
+msgstr "2009 年 9 月 17 日 午前 0 時 00 分。"
+
+#. type: TP
+#: sudoreplay.man:312
+#, no-wrap
+msgid "10:01 am Sep 17, 2009"
+msgstr "10:01 am Sep 17, 2009"
+
+#. type: Plain text
+#: sudoreplay.man:329
+msgid ""
+"Note that relative time specifications do not always work as expected.  For "
+"example, the \\(Lqnext\\(Rq qualifier is intended to be used in conjunction "
+"with a day such as \\(Lqnext Monday\\(Rq.  When used with units of weeks, "
+"months, years, etc the result will be one more than expected.  For example, "
+"\\(Lqnext week\\(Rq will result in a time exactly two weeks from now, which "
+"is probably not what was intended.  This will be addressed in a future "
+"version of B<sudoreplay>."
+msgstr ""
+"注意していただきたいが、相対的な日時指定は、\n"
+"必ずしも期待通りに動作するとはかぎらない。\n"
+"たとえば、\"next\" 修飾子は、\"next Monday\" などのように、\n"
+"曜日と一緒に使うようになっている。\n"
+"week, month, year などの単位と組み合わせて使った場合は、結果が期待よりも \n"
+"1 多いものになってしまうのだ。たとえば、\"next week\" は、\n"
+"今からちょうど 2 週間後の日時を指すことになってしまい、\n"
+"意図したところとはたぶん違うだろう。この問題については、\n"
+"B<sudoreplay> の将来のバージョンで対処するつもりだ。"
+
+#. type: SS
+#: sudoreplay.man:329
+#, no-wrap
+msgid "Debugging sudoreplay"
+msgstr "sudoreplay のデバッグ"
+
+#. type: Plain text
+#: sudoreplay.man:337
+msgid ""
+"B<sudoreplay> versions 1.8.4 and higher support a flexible debugging "
+"framework that is configured via Debug lines in the sudo.conf(5)  file."
+msgstr ""
+"バージョン 1.8.4 以上の B<sudoreplay> は、\n"
+"柔軟なデバッグ用の枠組みをサポートしており、\n"
+"sudo.conf(5) ファイルの Debug 行で設定するようになっている。"
+
+#. type: Plain text
+#: sudoreplay.man:341
+msgid ""
+"For more information on configuring sudo.conf(5), please refer to its manual."
+msgstr ""
+"sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、\n"
+"sudo.conf(5) のマニュアルをご覧になっていただきたい。"
+
+#. type: SH
+#: sudoreplay.man:341
+#, no-wrap
+msgid "FILES"
+msgstr "ファイル"
+
+#. type: TP
+#: sudoreplay.man:342
+#, no-wrap
+msgid "I</etc/sudo.conf>"
+msgstr "I</etc/sudo.conf>"
+
+#. type: Plain text
+#: sudoreplay.man:345
+msgid "Debugging framework configuration"
+msgstr "デバッグ用枠組みの設定"
+
+#. type: TP
+#: sudoreplay.man:345
+#, no-wrap
+msgid "I</var/log/sudo-io>"
+msgstr "I</var/log/sudo-io>"
+
+#. type: Plain text
+#: sudoreplay.man:348
+msgid "The default I/O log directory."
+msgstr "入出力ログを格納するデフォルトのディレクトリ"
+
+#. type: TP
+#: sudoreplay.man:348
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/log>"
+msgstr "I</var/log/sudo-io/00/00/01/log>"
+
+#. type: Plain text
+#: sudoreplay.man:351
+msgid "Example session log info."
+msgstr "セッションログについての情報 (一例)"
+
+#. type: TP
+#: sudoreplay.man:351
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/stdin>"
+msgstr "I</var/log/sudo-io/00/00/01/stdin>"
+
+#. type: Plain text
+#: sudoreplay.man:354
+msgid "Example session standard input log."
+msgstr "セッションの標準入力のログ (一例)"
+
+#. type: TP
+#: sudoreplay.man:354
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/stdout>"
+msgstr "I</var/log/sudo-io/00/00/01/stdout>"
+
+#. type: Plain text
+#: sudoreplay.man:357
+msgid "Example session standard output log."
+msgstr "セッションの標準出力のログ (一例)"
+
+#. type: TP
+#: sudoreplay.man:357
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/stderr>"
+msgstr "I</var/log/sudo-io/00/00/01/stderr>"
+
+#. type: Plain text
+#: sudoreplay.man:360
+msgid "Example session standard error log."
+msgstr "セッションの標準エラーのログ (一例)"
+
+#. type: TP
+#: sudoreplay.man:360
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/ttyin>"
+msgstr "I</var/log/sudo-io/00/00/01/ttyin>"
+
+#. type: Plain text
+#: sudoreplay.man:363
+msgid "Example session tty input file."
+msgstr "セッションの tty 入力のログ (一例)"
+
+#. type: TP
+#: sudoreplay.man:363
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/ttyout>"
+msgstr "I</var/log/sudo-io/00/00/01/ttyout>"
+
+#. type: Plain text
+#: sudoreplay.man:366
+msgid "Example session tty output file."
+msgstr "セッションの tty 出力のログ (一例)"
+
+#. type: TP
+#: sudoreplay.man:366
+#, no-wrap
+msgid "I</var/log/sudo-io/00/00/01/timing>"
+msgstr "I</var/log/sudo-io/00/00/01/timing>"
+
+#. type: Plain text
+#: sudoreplay.man:369
+msgid "Example session timing file."
+msgstr "セッションのタイミングを記録したファイル (一例)"
+
+#. type: Plain text
+#: sudoreplay.man:378
+msgid ""
+"Note that the I<stdin>, I<stdout> and I<stderr> files will be empty unless "
+"B<sudo> was used as part of a pipeline for a particular command."
+msgstr ""
+"B<sudo> があるコマンドのパイプラインの一部として使用されたときを除いて、\n"
+"I<stdin>, I<stdout>, I<stderr> ファイルは空になることに注意していただきたい。"
+
+#. type: SH
+#: sudoreplay.man:378
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "用例"
+
+#. type: Plain text
+#: sudoreplay.man:381
+msgid "List sessions run by user I<millert>:"
+msgstr "ユーザ I<millert> が実行したセッションを列挙する。"
+
+#. type: Plain text
+#: sudoreplay.man:385
+#, no-wrap
+msgid "# sudoreplay -l user millert\n"
+msgstr "# sudoreplay -l user millert\n"
+
+#. type: Plain text
+#: sudoreplay.man:391
+msgid ""
+"List sessions run by user I<bob> with a command containing the string vi:"
+msgstr ""
+"ユーザ I<bob> が実行したセッションのうち、\n"
+"コマンドに vi という文字列が含まれるものを列挙する。 "
+
+#. type: Plain text
+#: sudoreplay.man:395
+#, no-wrap
+msgid "# sudoreplay -l user bob command vi\n"
+msgstr "# sudoreplay -l user bob command vi\n"
+
+#. type: Plain text
+#: sudoreplay.man:401
+msgid "List sessions run by user I<jeff> that match a regular expression:"
+msgstr ""
+"ユーザ I<jeff> が実行したセッションのうち、\n"
+"コマンドが下記の正規表現にマッチするものを列挙する。"
+
+#. type: Plain text
+#: sudoreplay.man:405
+#, no-wrap
+msgid "# sudoreplay -l user jeff command '/bin/[a-z]*sh'\n"
+msgstr "# sudoreplay -l user jeff command '/bin/[a-z]*sh'\n"
+
+#. type: Plain text
+#: sudoreplay.man:409
+msgid "List sessions run by jeff or bob on the console:"
+msgstr "I<jeff> か I<bob> がコンソールで実行したセッションを列挙する。"
+
+#. type: Plain text
+#: sudoreplay.man:413
+#, no-wrap
+msgid "# sudoreplay -l ( user jeff or user bob ) tty console\n"
+msgstr "# sudoreplay -l \\e( user jeff or user bob \\e) tty console\n"
+
+#. type: SH
+#: sudoreplay.man:415
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "関連項目"
+
+#. type: Plain text
+#: sudoreplay.man:419
+msgid "script(1), sudo.conf(5), sudo(8)"
+msgstr "script(1), sudo.conf(5), sudo(8)"
+
+#. type: SH
+#: sudoreplay.man:419
+#, no-wrap
+msgid "AUTHORS"
+msgstr "作者"
+
+#. type: Plain text
+#: sudoreplay.man:423
+msgid ""
+"Many people have worked on B<sudo> over the years; this version consists of "
+"code written primarily by:"
+msgstr ""
+"多数の人々が長年に渡って B<sudo> の開発に携わってきた。\n"
+"当バージョンは主として次の者が書いたコードからできている。"
+
+#. type: Plain text
+#: sudoreplay.man:426
+msgid "Todd C. Miller"
+msgstr "Todd C. Miller"
+
+#. type: Plain text
+#: sudoreplay.man:433
+msgid ""
+"See the CONTRIBUTORS file in the B<sudo> distribution (https://www.sudo.ws/"
+"contributors.html) for an exhaustive list of people who have contributed to "
+"B<sudo>."
+msgstr ""
+"B<sudo> の開発に貢献してくださった方々の詳細なリストについては、\n"
+"配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。\n"
+"(https://www.sudo.ws/contributors.html)"
+
+#. type: SH
+#: sudoreplay.man:433
+#, no-wrap
+msgid "BUGS"
+msgstr "バグ"
+
+#. type: Plain text
+#: sudoreplay.man:437
+msgid ""
+"If you feel you have found a bug in B<sudoreplay>, please submit a bug "
+"report at https://bugzilla.sudo.ws/"
+msgstr ""
+"B<sudoreplay> にバグを発見したと思ったら、https://bugzilla.sudo.ws/ \n"
+"にアクセスして、バグレポートを提出していただきたい。"
+
+#. type: SH
+#: sudoreplay.man:437
+#, no-wrap
+msgid "SUPPORT"
+msgstr "サポート"
+
+#. type: Plain text
+#: sudoreplay.man:441
+msgid ""
+"Limited free support is available via the sudo-users mailing list, see "
+"https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the "
+"archives."
+msgstr ""
+"ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。\n"
+"購読やアーカイブの検索には、下記 URL を御覧になるとよい。\n"
+"https://www.sudo.ws/mailman/listinfo/sudo-users"
+
+#. type: SH
+#: sudoreplay.man:441
+#, no-wrap
+msgid "DISCLAIMER"
+msgstr "免責"
+
+#. type: Plain text
+#: sudoreplay.man:450
+msgid ""
+"B<sudoreplay> is provided \\(LqAS IS\\(Rq and any express or implied "
+"warranties, including, but not limited to, the implied warranties of "
+"merchantability and fitness for a particular purpose are disclaimed.  See "
+"the LICENSE file distributed with B<sudo> or https://www.sudo.ws/license."
+"html for complete details."
+msgstr ""
+"B<sudoreplay> は「現状のまま」提供される。 \n"
+"明示的な、あるいは黙示的ないかなる保証も、\n"
+"商品性や特定目的への適合性についての黙示的な保証を含め、\n"
+"またそれのみに止まらず、これを否認する。詳細な全文については、\n"
+"B<sudo> と一緒に配布されている LICENSE ファイルや、\n"
+"下記 Web ページをご覧いただきたい。\n"
+"https://www.sudo.ws/license.html"
diff --git a/manual/sudo/po4a/visudo.8/add_ja/add0.txt b/manual/sudo/po4a/visudo.8/add_ja/add0.txt
new file mode 100644 (file)
index 0000000..0e99515
--- /dev/null
@@ -0,0 +1,18 @@
+PO4A-HEADER: mode=before;position=\.TH
+.\" 
+.\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
+.\"   and 2009 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated Sat Oct  7 14:39:18 JST 2000
+.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
+.\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
+.\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
+.\"
diff --git a/manual/sudo/po4a/visudo.8/visudo.ja.po b/manual/sudo/po4a/visudo.8/visudo.ja.po
new file mode 100644 (file)
index 0000000..479557f
--- /dev/null
@@ -0,0 +1,710 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2016-09-11 21:49+0900\n"
+"PO-Revision-Date: 2016-09-10 10:13+0900\n"
+"Last-Translator: Chonan Yoichi <cyoichi@maple.ocn.ne.jp>\n"
+"Language-Team: Linux JM project <linuxjm-discuss@lists.sourceforge.jp>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: visudo.man:24
+#, no-wrap
+msgid "VISUDO"
+msgstr "VISUDO"
+
+#. type: TH
+#: visudo.man:24
+#, no-wrap
+msgid "November 20, 2015"
+msgstr "November 20, 2015"
+
+#. type: TH
+#: visudo.man:24
+#, no-wrap
+msgid "Sudo 1.8.17"
+msgstr "Sudo 1.8.17"
+
+#. type: TH
+#: visudo.man:24
+#, no-wrap
+msgid "System Manager's Manual"
+msgstr "System Manager's Manual"
+
+#. type: SH
+#: visudo.man:27
+#, no-wrap
+msgid "NAME"
+msgstr "名前"
+
+#. type: Plain text
+#: visudo.man:30
+msgid "B<visudo> - edit the sudoers file"
+msgstr "B<visudo> - sudoers ファイルを編集する"
+
+#. type: SH
+#: visudo.man:30
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "書式"
+
+#. type: Plain text
+#: visudo.man:36
+msgid "B<visudo> [B<-chqsV>] [B<-f>\\ I<sudoers>] [B<-x>\\ I<output_file>]"
+msgstr "B<visudo> [B<-chqsV>] [B<-f>\\ I<sudoers>] [B<-x>\\ I<output_file>]"
+
+#. type: SH
+#: visudo.man:36
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "説明"
+
+#. type: Plain text
+#: visudo.man:50
+msgid ""
+"B<visudo> edits the I<sudoers> file in a safe fashion, analogous to "
+"vipw(8).  B<visudo> locks the I<sudoers> file against multiple simultaneous "
+"edits, provides basic sanity checks, and checks for parse errors.  If the "
+"I<sudoers> file is currently being edited you will receive a message to try "
+"again later."
+msgstr ""
+"B<visudo> は vipw(8) によく似た安全なやり方で I<sudoers> ファイルを編集す"
+"る。\n"
+"B<visudo> は I<sudoers> ファイルをロックして、\n"
+"重複した編集が同時に行われないようにするとともに、\n"
+"整合性をざっと調べ、文法エラーのチェックを行う。\n"
+"I<sudoers> ファイルが現在編集中だった場合は、\n"
+"「try again later」というメッセージを端末に表示する。"
+
+#. type: Plain text
+#: visudo.man:87
+msgid ""
+"There is a hard-coded list of one or more editors that B<visudo> will use "
+"set at compile-time that may be overridden via the I<editor> I<sudoers> "
+"Default variable.  This list defaults to vi.  Normally, B<visudo> does not "
+"honor the VISUAL or EDITOR environment variables unless they contain an "
+"editor in the aforementioned editors list.  However, if B<visudo> is "
+"configured with the --with-env-editor option or the I<env_editor> Default "
+"variable is set in I<sudoers>, B<visudo> will use any the editor defines by "
+"VISUAL or EDITOR.  Note that this can be a security hole since it allows the "
+"user to execute any program they wish simply by setting VISUAL or EDITOR."
+msgstr ""
+"B<visudo> が使用するエディタについては、\n"
+"コンパイル時に設定された一つ以上のエディタからなるリストがプログラムに埋め込"
+"まれているが、\n"
+"I<sudoers> ファイルの Defaults 行で I<editor> オプションを使えば、\n"
+"それを変更することができる。このリストは、デフォルトでは vi になっている。\n"
+"通常 B<visudo> は、環境変数 VISUAL や EDITOR \n"
+"の値が上述のエディタ・リストに含まれるエディタでないかぎり、\n"
+"そうした環境変数を使用しない。とは言え、\n"
+"B<visudo> が --with-env-editor オプションを付けて configure されている場合"
+"や、\n"
+"I<sudoeres> ファイルの Defaults 行で I<env_editor> オプションがセットされてい"
+"る場合は、\n"
+"B<visudo> は VISUAL や EDITOR によって指定されたどんなエディタでも使用するこ"
+"とになる。\n"
+"これがセキュリティホールになりかねないことに注意していただきたい。\n"
+"単に VISUAL や EDITOR を設定するだけで、\n"
+"ユーザが任意のプログラムを実行できるようになってしまうからだ。"
+
+#. type: Plain text
+#: visudo.man:124
+msgid ""
+"B<visudo> parses the I<sudoers> file after the edit and will not save the "
+"changes if there is a syntax error.  Upon finding an error, B<visudo> will "
+"print a message stating the line number(s)  where the error occurred and the "
+"user will receive the \\(LqWhat now?\\(Rq prompt.  At this point the user "
+"may enter \\(oqe\\(cq to re-edit the I<sudoers> file, \\(oqx\\(cq to exit "
+"without saving the changes, or \\(oqQ\\(cq to quit and save changes.  The "
+"\\(oqQ\\(cq option should be used with extreme care because if B<visudo> "
+"believes there to be a parse error, so will B<sudo> and no one will be able "
+"to run B<sudo> again until the error is fixed.  If \\(oqe\\(cq is typed to "
+"edit the I<sudoers> file after a parse error has been detected, the cursor "
+"will be placed on the line where the error occurred (if the editor supports "
+"this feature)."
+msgstr ""
+"B<visudo> は編集が終わると、I<sudoers> ファイルの文法解析を行い、\n"
+"文法エラーがあれば、変更を保存しない。B<visudo> はエラーを発見すると、\n"
+"エラーが起きた行番号を知らせるメッセージを表示し、\n"
+"\"What now?\" というプロンプトを出す。このとき、'e' を押せば、\n"
+"I<sudoers> ファイルを再編集できる。'x' を押せば、\n"
+"変更を保存せずに終了し、'Q' を押せば、変更を保存して終了する。\n"
+"'Q' の選択は、くれぐれも慎重になさっていただきたい。なぜなら、\n"
+"B<visudo> が文法エラーがあると考えるのなら、B<sudo> も同様に考えるはずであ"
+"り、\n"
+"エラーが訂正されるまで、もう誰にも B<sudo> を実行できなくなってしまうから"
+"だ。\n"
+"文法エラーが発見されたとき、'e' を押して I<sudoers> \n"
+"ファイルを編集しようとすると、カーソルがファイルのエラーが起きた行に飛ぶ \n"
+"(エディタにその機能があればだが)。"
+
+#. type: Plain text
+#: visudo.man:126
+msgid "The options are as follows:"
+msgstr "オプションとして以下のものが使用できる。"
+
+#. type: TP
+#: visudo.man:126
+#, no-wrap
+msgid "B<-c>, B<--check>"
+msgstr "B<-c>, B<--check>"
+
+#. type: Plain text
+#: visudo.man:146
+msgid ""
+"Enable I<check-only> mode.  The existing I<sudoers> file will be checked for "
+"syntax errors, owner and mode.  A message will be printed to the standard "
+"output describing the status of I<sudoers> unless the B<-q> option was "
+"specified.  If the check completes successfully, B<visudo> will exit with a "
+"value of 0.  If an error is encountered, B<visudo> will exit with a value of "
+"1."
+msgstr ""
+"I<check-only> モードを有効にする。\n"
+"現在の I<sudoers> ファイルの文法エラー、所有者、アクセス権をチェックする。\n"
+"B<-q> オプションが指定されていない場合は、メッセージを標準出力に表示して、\n"
+"I<sudoers> の状態を報告する。チェックが成功裡に終わった場合、\n"
+"B<visudo> は返り値 0 で終了する。エラーに出会った場合の返り値は 1 である。"
+
+#. type: TP
+#: visudo.man:146
+#, no-wrap
+msgid "B<-f> I<sudoers>, B<--file>=I<sudoers>"
+msgstr "B<-f> I<sudoers>, B<--file>=I<sudoers>"
+
+#. type: Plain text
+#: visudo.man:172
+msgid ""
+"Specify an alternate I<sudoers> file location.  With this option, B<visudo> "
+"will edit (or check) the I<sudoers> file of your choice, instead of the "
+"default, I</etc/sudoers>.  The lock file used is the specified I<sudoers> "
+"file with \\(Lq.tmp\\(Rq appended to it.  In I<check-only> mode only, the "
+"argument to B<-f> may be \\(oq-\\(cq, indicating that I<sudoers> will be "
+"read from the standard input."
+msgstr ""
+"デフォルト以外の I<sudoers> ファイルの位置を指定する。\n"
+"このオプションを付けると、B<visudo> はデフォルトの I</etc/sudoers> ではな"
+"く、\n"
+"ユーザが選んだ I<sudoers> ファイルを編集 (あるいは、チェック) することにな"
+"る。\n"
+"ロックファイルとしては、指定された I<sudoers> ファイルの名前の末尾に \n"
+"\".tmp\" を付けたものが使われる。なお、I<check-only> モードの場合だけは、\n"
+"B<-f> の引数に '-' を指定することができる。\n"
+"これは、標準入力から I<sudoers> を読み込むということである。"
+
+#. type: TP
+#: visudo.man:172
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: visudo.man:175
+msgid "Display a short help message to the standard output and exit."
+msgstr "標準出力に簡単なヘルプメッセージを表示して終了する。"
+
+#. type: TP
+#: visudo.man:175
+#, no-wrap
+msgid "B<-q>, B<--quiet>"
+msgstr "B<-q>, B<--quiet>"
+
+#. type: Plain text
+#: visudo.man:185
+msgid ""
+"Enable I<quiet> mode.  In this mode details about syntax errors are not "
+"printed.  This option is only useful when combined with the B<-c> option."
+msgstr ""
+"I<quiet> モードを有効にする。このモードでは、文法エラーの詳細は表示されな"
+"い。\n"
+"このオプションが役に立つのは、B<-c> オプションと組み合わせたときだけである。"
+
+#. type: TP
+#: visudo.man:185
+#, no-wrap
+msgid "B<-s>, B<--strict>"
+msgstr "B<-s>, B<--strict>"
+
+#. type: Plain text
+#: visudo.man:200
+msgid ""
+"Enable I<strict> checking of the I<sudoers> file.  If an alias is used "
+"before it is defined, B<visudo> will consider this a parse error.  Note that "
+"it is not possible to differentiate between an alias and a host name or user "
+"name that consists solely of uppercase letters, digits, and the underscore "
+"(\\(oq_\\(cq)  character."
+msgstr ""
+"I<sudoers> ファイルのI<厳密> (strict) チェックを有効にする。\n"
+"エイリアスを定義する前に使用すると、\n"
+"B<visudo> がそれを文法エラーと見なすようになる。\n"
+"ホスト名やユーザ名がアルファベットの大文字、数字、アンダースコア ('_') \n"
+"だけから構成されている場合には、\n"
+"そうしたものとエイリアスとの区別が付かないことに注意していただきたい。"
+
+#. type: TP
+#: visudo.man:200
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr "B<-V>, B<--version>"
+
+#. type: Plain text
+#: visudo.man:207
+msgid "Print the B<visudo> and I<sudoers> grammar versions and exit."
+msgstr ""
+"B<visudo> のバージョンと I<sudoers> の文法バージョンを表示して終了する。"
+
+#. type: TP
+#: visudo.man:207
+#, no-wrap
+msgid "B<-x> I<output_file>, B<--export>=I<output_file>"
+msgstr "B<-x> I<output_file>, B<--export>=I<output_file>"
+
+#. type: Plain text
+#: visudo.man:236
+msgid ""
+"Export a I<sudoers> in JSON format and write it to I<output_file>.  If "
+"I<output_file> is \\(oq-\\(cq, the exported I<sudoers> policy will be "
+"written to the standard output.  By default, I</etc/sudoers> (and any files "
+"it includes) will be exported.  The B<-f> option can be used to specify a "
+"different I<sudoers> file to export.  The exported format is intended to be "
+"easier for third-party applications to parse than the traditional I<sudoers> "
+"format.  The various values have explicit types which removes much of the "
+"ambiguity of the I<sudoers> format."
+msgstr ""
+"I<sudoers> を JSON フォーマットに変換 (export) して、\n"
+"I<output_file> に書き出す。I<output_file> が '-' の場合は、\n"
+"変換された I<sudoers> ポリシーが標準出力に書き出されることになる。\n"
+"デフォルトでは、I</etc/sudoers> \n"
+"(及び、それにインクルードされているすべてのファイル) が変換の対象になる。\n"
+"B<-f> を使用すれば、それ以外の I<sudoers> \n"
+"ファイルを変換対象として指定することができる。\n"
+"フォーマットを変換するのは、サードパーティのアプリケーションにとって、\n"
+"従来の I<sudoers> のフォーマットよりも解析しやすくするためである。\n"
+"様々な値は明示的なタイプを持ち、そうすることで従来の I<sudoers> \n"
+"フォーマットの持つ曖昧さの多くを排除している。"
+
+#. type: SS
+#: visudo.man:236
+#, no-wrap
+msgid "Debugging and sudoers plugin arguments"
+msgstr "デバッグと sudoers プラグインへの引き数"
+
+#. type: Plain text
+#: visudo.man:244
+msgid ""
+"B<visudo> versions 1.8.4 and higher support a flexible debugging framework "
+"that is configured via Debug lines in the sudo.conf(5)  file."
+msgstr ""
+"バージョン 1.8.4 以上の B<visudo> は、\n"
+"柔軟なデバッグ用の枠組みをサポートしており、\n"
+"sudo.conf(5) ファイルの Debug 行で設定するようになっている。"
+
+#. type: Plain text
+#: visudo.man:259
+msgid ""
+"Starting with B<sudo> 1.8.12, B<visudo> will also parse the arguments to the "
+"I<sudoers> plugin to override the default I<sudoers> path name, UID, GID and "
+"file mode.  These arguments, if present, should be listed after the path to "
+"the plugin (i.e.\\& after I<sudoers.so>).  Multiple arguments may be "
+"specified, separated by white space.  For example:"
+msgstr ""
+"B<sudo> 1.8.12 以降の B<visudo> は、\n"
+"(訳注: I</etc/sudo.conf> で指定された) \n"
+"I<sudoers> プラグインに対する引き数も理解する。\n"
+"そうした引き数は、I<sudoers> ファイルのパス名、UID、GID、\n"
+"ファイルのモードを、デフォルトのものから変更しているのである。\n"
+"そうした引き数が存在する場合は、プラグインのパスの後ろに \n"
+"(すなわち、I<sudoers.so> の後ろに) 列挙することになっている。\n"
+"複数の引き数があるときは、ホワイトスペースで区切って指定すればよい。\n"
+"一例を挙げる。"
+
+#. type: Plain text
+#: visudo.man:263
+#, no-wrap
+msgid "Plugin sudoers_policy sudoers.so sudoers_mode=0400\n"
+msgstr "Plugin sudoers_policy sudoers.so sudoers_mode=0400\n"
+
+#. type: Plain text
+#: visudo.man:267
+msgid "The following arguments are supported:"
+msgstr "以下の引き数が使用できる。"
+
+#. type: TP
+#: visudo.man:267
+#, no-wrap
+msgid "sudoers_file=pathname"
+msgstr "sudoers_file=pathname"
+
+#. type: Plain text
+#: visudo.man:274
+msgid ""
+"The I<sudoers_file> argument can be used to override the default path to the "
+"I<sudoers> file."
+msgstr ""
+"I<sudoers_file> 引き数を使用すると、\n"
+"I<sudoers> ファイルのパスをデフォルトのものから変更することができる。"
+
+#. type: TP
+#: visudo.man:274
+#, no-wrap
+msgid "sudoers_uid=uid"
+msgstr "sudoers_uid=uid"
+
+#. type: Plain text
+#: visudo.man:280
+msgid ""
+"The I<sudoers_uid> argument can be used to override the default owner of the "
+"sudoers file.  It should be specified as a numeric user ID."
+msgstr ""
+"I<sudoers_uid> 引き数を使用すると、\n"
+"I<sudoers> ファイルの所有者をデフォルトのものから変更することができる。\n"
+"指定には、ユーザ ID 番号を使うべきである。"
+
+#. type: TP
+#: visudo.man:280
+#, no-wrap
+msgid "sudoers_gid=gid"
+msgstr "sudoers_gid=gid"
+
+#. type: Plain text
+#: visudo.man:286
+msgid ""
+"The I<sudoers_gid> argument can be used to override the default group of the "
+"sudoers file.  It must be specified as a numeric group ID (not a group name)."
+msgstr ""
+"I<sudoers_gid> 引き数を使用すると、\n"
+"I<sudoers> ファイルのグループをデフォルトのものから変更することができる。\n"
+"指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。"
+
+#. type: TP
+#: visudo.man:286
+#, no-wrap
+msgid "sudoers_mode=mode"
+msgstr "sudoers_mode=mode"
+
+#. type: Plain text
+#: visudo.man:292
+msgid ""
+"The I<sudoers_mode> argument can be used to override the default file mode "
+"for the sudoers file.  It should be specified as an octal value."
+msgstr ""
+"I<sudoers_mode> 引き数を使用すると、\n"
+"I<sudoers> ファイルのファイル・モードをデフォルトのものから変更することができ"
+"る。\n"
+"指定には、8 進数の値を使うべきである。"
+
+#. type: Plain text
+#: visudo.man:296
+msgid ""
+"For more information on configuring sudo.conf(5), please refer to its manual."
+msgstr ""
+"sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、\n"
+"sudo.conf(5) のマニュアルをご覧になっていただきたい。"
+
+#. type: SH
+#: visudo.man:296
+#, no-wrap
+msgid "ENVIRONMENT"
+msgstr "環境変数"
+
+#. type: Plain text
+#: visudo.man:304
+msgid ""
+"The following environment variables may be consulted depending on the value "
+"of the I<editor> and I<env_editor> I<sudoers> settings:"
+msgstr ""
+"以下の環境変数が参照されるかどうかは、I<sudoers> における \n"
+"I<editor> や I<env_editor> の値次第である。"
+
+#. type: TP
+#: visudo.man:304
+#, no-wrap
+msgid "VISUAL"
+msgstr "VISUAL"
+
+#. type: Plain text
+#: visudo.man:309
+msgid "Invoked by B<visudo> as the editor to use"
+msgstr "B<visudo> が起動するエディタ"
+
+#. type: TP
+#: visudo.man:309
+#, no-wrap
+msgid "EDITOR"
+msgstr "EDITOR"
+
+#. type: Plain text
+#: visudo.man:316
+msgid "Used by B<visudo> if VISUAL is not set"
+msgstr "VISUAL が設定されていないとき B<visudo> が使用するエディタ"
+
+#. type: SH
+#: visudo.man:316
+#, no-wrap
+msgid "FILES"
+msgstr "ファイル"
+
+#. type: TP
+#: visudo.man:317
+#, no-wrap
+msgid "I</etc/sudo.conf>"
+msgstr "I</etc/sudo.conf>"
+
+#. type: Plain text
+#: visudo.man:320
+msgid "Sudo front end configuration"
+msgstr "sudo のフロントエンドの設定"
+
+#. type: TP
+#: visudo.man:320
+#, no-wrap
+msgid "I</etc/sudoers>"
+msgstr "I</etc/sudoers>"
+
+#. type: Plain text
+#: visudo.man:323
+msgid "List of who can run what"
+msgstr "誰が何を実行できるかのリスト"
+
+#. type: TP
+#: visudo.man:323
+#, no-wrap
+msgid "I</etc/sudoers.tmp>"
+msgstr "I</etc/sudoers.tmp>"
+
+#. type: Plain text
+#: visudo.man:326
+msgid "Lock file for visudo"
+msgstr "visudo が使うロックファイル"
+
+#. type: SH
+#: visudo.man:326
+#, no-wrap
+msgid "DIAGNOSTICS"
+msgstr "エラー (警告) メッセージ"
+
+#. type: TP
+#: visudo.man:327
+#, no-wrap
+msgid "sudoers file busy, try again later."
+msgstr "sudoers file busy, try again later."
+
+#. type: Plain text
+#: visudo.man:332
+msgid "Someone else is currently editing the I<sudoers> file."
+msgstr "現在、ほかの誰かが I<sudoers> ファイルを編集中である。"
+
+#. type: TP
+#: visudo.man:332
+#, no-wrap
+msgid "/etc/sudoers.tmp: Permission denied"
+msgstr "/etc/sudoers.tmp: Permission denied"
+
+#. type: Plain text
+#: visudo.man:337
+msgid "You didn't run B<visudo> as root."
+msgstr "B<visudo> を root として実行しなかった。"
+
+#. type: TP
+#: visudo.man:337
+#, no-wrap
+msgid "Can't find you in the passwd database"
+msgstr "Can't find you in the passwd database"
+
+#. type: Plain text
+#: visudo.man:340
+msgid "Your user ID does not appear in the system passwd file."
+msgstr "あなたのユーザ ID はシステムの passwd ファイルに存在しない。"
+
+#. type: TP
+#: visudo.man:340
+#, no-wrap
+msgid "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined"
+msgstr "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined"
+
+#. type: Plain text
+#: visudo.man:354
+msgid ""
+"Either you are trying to use an undeclared {User,Runas,Host,Cmnd}_Alias or "
+"you have a user or host name listed that consists solely of uppercase "
+"letters, digits, and the underscore (\\(oq_\\(cq)  character.  In the latter "
+"case, you can ignore the warnings (B<sudo> will not complain)  \\&.  In B<-"
+"s> (strict) mode these are errors, not warnings."
+msgstr ""
+"User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) \n"
+"を、定義しないまま使用しようとしている。\n"
+"あるいは、記載したユーザ名かホスト名の中に、アルファベットの大文字、\n"
+"数字、アンダースコア ('_') のみからなるものがある。後者の場合は、\n"
+"この warning を無視して構わない (B<sudo> は文句を言わないだろう)。\n"
+"B<-s> (strict) モードでは、\n"
+"warning ではなく、error になる。"
+
+#. type: TP
+#: visudo.man:354
+#, no-wrap
+msgid "Warning: unused {User,Runas,Host,Cmnd}_Alias"
+msgstr "Warning: unused {User,Runas,Host,Cmnd}_Alias"
+
+#. type: Plain text
+#: visudo.man:359
+msgid ""
+"The specified {User,Runas,Host,Cmnd}_Alias was defined but never used.  You "
+"may wish to comment out or remove the unused alias."
+msgstr ""
+"指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、\n"
+"定義されているが、一度も使用されていない。そうした使用しないエイリアスは、\n"
+"コメントアウトするなり、消去するなりしてもよい。"
+
+#. type: TP
+#: visudo.man:359
+#, no-wrap
+msgid "Warning: cycle in {User,Runas,Host,Cmnd}_Alias"
+msgstr "Warning: cycle in {User,Runas,Host,Cmnd}_Alias"
+
+#. type: Plain text
+#: visudo.man:369
+msgid ""
+"The specified {User,Runas,Host,Cmnd}_Alias includes a reference to itself, "
+"either directly or through an alias it includes.  This is only a warning by "
+"default as B<sudo> will ignore cycles when parsing the I<sudoers> file."
+msgstr ""
+"指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、\n"
+"直接自分自身を参照しているか、\n"
+"構成要素のエイリアスを通して自分自身を参照している。\n"
+"B<sudo> は I<sudoers> ファイルを解析するとき、\n"
+"循環を無視するので、デフォルトでは単なる警告になっている。"
+
+#. type: TP
+#: visudo.man:369
+#, no-wrap
+msgid "visudo: /etc/sudoers: input and output files must be different"
+msgstr "visudo: /etc/sudoers: input and output files must be different"
+
+#. type: Plain text
+#: visudo.man:378
+msgid ""
+"The B<-x> flag was used and the specified I<output_file> has the same path "
+"name as the I<sudoers> file to export."
+msgstr ""
+"B<-x> オプションを使用する際に引数として指定した\n"
+"I<output_file> ファイルのパス名が、\n"
+"変換対象である I<sudoers> ファイルのパス名と同じである。"
+
+#. type: SH
+#: visudo.man:378
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "関連項目"
+
+#. type: Plain text
+#: visudo.man:384
+msgid "vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)"
+msgstr "vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)"
+
+#. type: SH
+#: visudo.man:384
+#, no-wrap
+msgid "AUTHORS"
+msgstr "作者"
+
+#. type: Plain text
+#: visudo.man:388
+msgid ""
+"Many people have worked on B<sudo> over the years; this version consists of "
+"code written primarily by:"
+msgstr ""
+"多数の人々が長年に渡って B<sudo> の開発に取り組んできた。\n"
+"このバージョンは、主として次の者が書いたコードからなっている。"
+
+#. type: Plain text
+#: visudo.man:391
+msgid "Todd C. Miller"
+msgstr "Todd C. Miller"
+
+#. type: Plain text
+#: visudo.man:398
+msgid ""
+"See the CONTRIBUTORS file in the B<sudo> distribution (https://www.sudo.ws/"
+"contributors.html) for an exhaustive list of people who have contributed to "
+"B<sudo>."
+msgstr ""
+"B<sudo> の開発に貢献してくださった方々の詳細なリストについては、\n"
+"配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい\n"
+"(https://www.sudo.ws/contributors.html)。"
+
+#. type: SH
+#: visudo.man:398
+#, no-wrap
+msgid "CAVEATS"
+msgstr "警告"
+
+#. type: Plain text
+#: visudo.man:403
+msgid ""
+"There is no easy way to prevent a user from gaining a root shell if the "
+"editor used by B<visudo> allows shell escapes."
+msgstr ""
+"B<visudo> が使用するエディタでシェル・エスケープが可能なかぎり、\n"
+"ユーザがルート・シェルを獲得するのを防止する簡単な方法はない。"
+
+#. type: SH
+#: visudo.man:403
+#, no-wrap
+msgid "BUGS"
+msgstr "バグ"
+
+#. type: Plain text
+#: visudo.man:407
+msgid ""
+"If you feel you have found a bug in B<visudo>, please submit a bug report at "
+"https://bugzilla.sudo.ws/"
+msgstr ""
+"B<visudo> にバグを発見したと思ったら、https://bugzilla.sudo.ws/ \n"
+"にアクセスして、バグレポートを提出していただきたい。"
+
+#. type: SH
+#: visudo.man:407
+#, no-wrap
+msgid "SUPPORT"
+msgstr "サポート"
+
+#. type: Plain text
+#: visudo.man:411
+msgid ""
+"Limited free support is available via the sudo-users mailing list, see "
+"https://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or search the "
+"archives."
+msgstr ""
+"ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。\n"
+"購読やアーカイブの検索には、下記 URL を御覧になるとよい。\n"
+"https://www.sudo.ws/mailman/listinfo/sudo-users"
+
+#. type: SH
+#: visudo.man:411
+#, no-wrap
+msgid "DISCLAIMER"
+msgstr "免責"
+
+#. type: Plain text
+#: visudo.man:420
+msgid ""
+"B<visudo> is provided \\(LqAS IS\\(Rq and any express or implied warranties, "
+"including, but not limited to, the implied warranties of merchantability and "
+"fitness for a particular purpose are disclaimed.  See the LICENSE file "
+"distributed with B<sudo> or https://www.sudo.ws/license.html for complete "
+"details."
+msgstr ""
+"B<visudo> は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証"
+"も、\n"
+"商品性や特定目的への適合性についての黙示的な保証を含め、\n"
+"またそれのみに止まらず、これを否認する。詳細な全文については、\n"
+"B<sudo> と一緒に配布されている LICENSE ファイルや、\n"
+"下記 Web ページをご覧いただきたい。\n"
+"https://www.sudo.ws/license.html"
diff --git a/manual/sudo/release/man5/sudo.conf.5 b/manual/sudo/release/man5/sudo.conf.5
new file mode 100644 (file)
index 0000000..9fb50ad
--- /dev/null
@@ -0,0 +1,534 @@
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo.conf.mdoc.in
+.\"
+.\" Copyright (c) 2010-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
+.\" Japanese Version Copyright (c) 2016 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\"
+.TH SUDO.CONF 5 "June 15, 2016" "Sudo 1.8.17" "File Formats Manual"
+.nh
+.if  n .ad l
+.SH 名前
+\fBsudo.conf\fP \- sudo フロントエンドの設定
+.SH 説明
+\fBsudo.conf\fP ファイルは、\fBsudo\fP フロントエンドの設定に使用される。
+セキュリティポリシー・プラグイン、入出力ロギング・プラグイン、
+デバッグ・フラグの指定をはじめ、
+プラグインが何かにはかかわりののない (プログラムやライブラリの) パス名や、
+\fBsudo\fP フロントエンドのその他の設定も、ここで指定することができる。
+.IP "[\fB訳注\fP]:" 8
+sudoers ファイルが、誰が何を実行できるかなどの 
+\fBsudoers\fP セキュリティポリシーの設定に使用されるのに対して、
+sudo.conf ファイルは、
+\fBsudo\fP コマンドが使用するセキュリティポリシー・プラグインを特定したり、
+どんなデバッグ情報を記録するかを指定したりするなど、\fBsudo\fP フロントエンド、
+すなわち \fBsudo\fP コマンドそのものの動作の設定に使用される。
+.PP
+\fBsudo.conf\fP では、次の命令 (directive) が使用できる。各命令については、
+以下で詳しく説明する。
+.TP  10n
+Plugin
+セキュリティポリシー・プラグインや入出力ロギング・プラグインを指定する
+.TP  10n
+Path
+プラグインが何かにはかかわりのない (プログラムやライブラリの) パス
+.TP  10n
+Set
+\fIdisable_coredump\fP や \fIgroup_source\fP のようなフロントエンドの設定
+.TP  10n
+Debug
+\fBsudo\fP, \fBsudoreplay\fP, \fBvisudo\fP、及び \fBsudoers\fP
+プラグインのデバッグに使用するデバッグ・フラグ
+.PP
+パウンド記号 ('#') は、コメントであることを示すために使用される。
+コメントを示す記号とそれに続くテキストは、行末に至るまで無視される。
+.PP
+長い行は、行末にバックスラッシュ ('\e') を置くことで、継続することができる。
+行頭にあるホワイト・スペースは、行の継続を示す記号が使われている場合でも、
+行頭から取り除かれることに注意していただきたい。
+.PP
+コメント行以外でも、Plugin, Path, Debug, Set で始まっていない行は、無視される。
+エラーや警告メッセージを出すこともない。
+.PP
+\fBsudo.conf\fP ファイルの解析は、常に "C" ロケールで行われる。
+.SS プラグインの設定
+\fBsudo\fP はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサポートしている。
+従って、サードパーティは、\fBsudo\fP のフロントエンドとシームレスに協働するポリシー・プラグインや、
+入出力ロギング・プラグインを独自に開発して、配布することができる。
+プラグインは、\fBsudo.conf\fP の記述に基づいて、動的にロードされる。
+.PP
+Plugin 行は、キーワード Plugin に始まり、\fIsymbol_name\fP と \fIpath\fP が続く。
+\fIpath\fP は、プラグインを含む動的共有オブジェクトへのパスである。
+\fIsymbol_name\fP は、プラグインに含まれる policy_plugin 構造体や
+io_plugin 構造体のシンボル名である。\fIpath\fP は絶対パスでも相対パスでもよい。
+相対パスの場合は、Path 命令の \fIplugin_dir\fP で指定したディレクトリを基点とする相対パスであり、
+デフォルトの基点は \fI/usr/local/libexec/sudo\fP である。すなわち、
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+.RE
+.fi
+.PP
+は、次のものと同じだということだ。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so
+.RE
+.fi
+.PP
+プラグインが動的な共有オブジェクトとしてインストールされているのではなく、
+\fBsudo\fP のバイナリに静的に組み込まれている場合は、
+\fIpath\fP にディレクトリまで指定してはいけない。
+ファイルシステム中に実際に存在するわけではないからだ。
+すなわち、こんなふうに指定する。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+.RE
+.fi
+.PP
+\fBsudo\fP 1.8.5 以降では、\fIpath\fP の後ろにパラメータを付けると、それは、
+プラグインの \fIopen\fP 関数に引き数として渡されるようになっている。たとえば、
+コンパイル時に指定した sudoers ファイルのデフォルトのモードを変更するには、
+次のようにする。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0440
+.RE
+.fi
+.PP
+使用できる引き数のリストについては、sudoers(5) のマニュアルをご覧いただきたい。
+.PP
+一つの動的な共有オブジェクトが、
+それぞれ違ったシンボル名を持つ複数のプラグインを含んでいても構わない。
+共有オブジェクト・ファイルは、uid 0 の所有でなければならず、
+また、所有者のみ書き込み可能でなければならない。
+同時に複数のポリシーがあると、曖昧さが生じるので、
+ポリシー・プラグインは一つしか指定できない。
+この制限は 入出力プラグインには当てはまらない。
+.PP
+\fBsudo.conf\fP ファイルが存在しない場合や、存在しても Plugin 行を含まない場合は、
+デフォルトのセキュリティポリシーとして \fBsudoers\fP プラグインが使用されることになる。
+入出力ロギングにも (ポリシーによって有効になっていれば)、
+\fBsudoers\fP プラグインが使用される。これは次の記述と同じことである。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+.RE
+.fi
+.PP
+\fBsudo\fP プラグインの仕組みについてもっと詳しい情報が必要なら、
+sudo_plugin(5) のマニュアルをご覧になっていただきたい。
+.SS パスの設定
+Path 行は、キーワード Path に始まり、設定するパスの名称とその値が続く。
+たとえば、次のようにだ。
+.nf
+.sp
+.RS 6n
+Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+Path askpass /usr/X11R6/bin/ssh\-askpass
+.RE
+.fi
+.PP
+パス名が (訳注: パスの名称ではなく、パスの値が) 指定されていない場合は、
+その設定に依存する機能を無効化することになる。
+パス設定の無効化をサポートしているのは、バージョン 1.8.16 以上の \fBsudo\fP だけである。
+.PP
+以下に挙げるような、
+プラグインが何かにはかかわりのない (プログラムやライブラリの) パスを
+\fI/etc/sudo.conf\fP で設定することができる。
+.TP  10n
+askpass
+端末が利用できないときに、ユーザのパスワードを読み込むのに使用するヘルパー・プログラムの絶対パス。
+たとえば、\fBsudo\fP がグラフィカルな (つまり、テキストベースではない)
+アプリケーションから実行される場合がこれに当たる。
+\fIaskpass\fP で指定されたプログラムは、自分に渡された引き数をプロンプトとして表示し、
+ユーザのパスワードを標準出力に書き出すべきである。\fIaskpass\fP の値は、
+環境変数 SUDO_ASKPASS によって上書きすることができる。
+.TP  10n
+noexec
+ライブラリ関数 \fBexecl\fP(), \fBexecle\fP(), \fBexeclp\fP(), \fBexect\fP(), \fBexecv\fP(),
+\fBexecve\fP(), \fBexecvP\fP(), \fBexecvp\fP(), \fBexecvpe\fP(), \fBfexecve\fP(),
+\fBpopen\fP(), \fBposix_spawn\fP(), \fBposix_spawnp\fP(), \fBsystem\fP() のダミー版
+(単にエラーを返すだけの関数) が入っている共有ライブラリの絶対パス。
+これは LD_PRELOAD やそれに相当するものをサポートするシステムで
+\fInoexec\fP 機能を実現するために使用される。デフォルトの値は
+\fI/usr/local/libexec/sudo/sudo_noexec.so\fP である。
+.TP  10n
+plugin_dir
+絶対パスで指定されていないプラグインを捜すときに使用されるデフォルトのディレクトリ。
+デフォルトの値は \fI/usr/local/libexec/sudo\fP である
+.TP  10n
+sesh
+\fBsesh\fP バイナリの絶対パス。この設定は、\fBsudo\fP が SELinux
+サポートを有効にしてビルドされたときにのみ、使用される。
+デフォルトの値は \fI/usr/local/libexec/sudo/sesh\fP である。
+.SS その他の設定
+\fBsudo.conf\fP ファイルでは、以下に挙げるフロントエンドの設定も行うことができる。
+.TP  10n
+disable_coredump
+デフォルトでは、セキュリティ上問題になるかもしれない情報を漏洩しないように、
+\fBsudo\fP 自体のコアダンプは無効になっている。
+\fBsudo\fP そのもののクラッシュをデバッグするためにコアダンプを有効に戻したいならば、
+次のように、\fBsudo.conf\fP で "disable_coredump" を false にすればよい。
+.nf
+.sp
+.RS 16n
+Set disable_coredump false
+.RE
+.fi
+.RS 10n
+.sp
+最近のオペレーティング・システムでは、どのシステムでも、
+\fBsudo\fP のような setuid プロセスのコアダンプについて各種の制限を設けているので、
+このオプションを有効にしても、セキュリティが弱体化することはない。
+\fBsudo\fP のコアファイルを実際に得るためには、
+たぶん setuid プロセスに対するコアダンプを有効にする必要があるだろう。
+BSD や Linux のシステムでは、それは sysctl コマンドで行われる。
+Solaris では、coreadm コマンドがコアダンプの動作設定に使用される。
+.sp
+この設定は、バージョン 1.8.4 以降の \fBsudo\fP でしか使用できない。
+.RE
+.TP  10n
+group_source
+\fBsudo\fP は、起動したユーザが所属するグループのリストをポリシー・プラグインと
+入出力プラグインに引き渡す。ほとんどのシステムでは、
+一人のユーザが同時に所属することのできるグループの数に上限がある (NFS
+との互換性のために、たいていは 16)。システムに getconf(1)
+ユーティリティ・コマンドが存在するなら、
+.RS 16n
+getconf NGROUPS_MAX
+.RE
+.RS 10n
+を実行すれば、グループの最大数がわかる。
+.sp
+しかしながら、ユーザが上限を越える数のグループのメンバーになることも可能である \-\-
+上限を越えた分は、そのユーザについてカーネルが返すグループのリストに含まれないだけのことだ。
+バージョン 1.8.7 以降の \fBsudo\fP では、
+ユーザについてカーネルが返すグループのリストが所属グループの最大数に達しているときは、
+\fBsudo\fP はグループ・データベースを直接調べて、グループのリストを決定するようになっている。
+そうすることによって、ユーザが所属グループの最大数よりも多くのグループのメンバーであるときも、
+セキュリティポリシーがグループ名によるマッチングを行うことができるようにしているのである。
+.sp
+\fIgroup_source\fP の設定によって、管理者がこのデフォルトの動作を変更することができる。
+\fIgroup_source\fP に対して使用できる値は以下のものである。
+.TP  10n
+static
+カーネルが返す static なグループ・リストを使用する。
+グループ・リストをこの方法で取得するのは迅速だが、上で述べた上限を課されることになる。
+この方法が "static (静的)" だというのは、ユーザがログインした後で行った、
+グループ・データベースに対する変更を反映しないからである。
+これは、\fBsudo\fP 1.8.7 以前のデフォルトの動作だった。
+.TP  10n
+dynamic
+常にグループ・データベースに問い合わせる。この方法が "dynamic (動的)"
+だというのは、ユーザがログインした後でグループ・データベースに行った変更が、
+グループのリストに反映するからである。システムによっては、
+グループ・データベースにユーザが所属するすべてのグループを問い合わせると、
+非常に時間がかかることがある。
+ネットワーク・ベースのグループ・データベースに問い合わせる場合などがそうだ。
+もっとも、たいていのオペレーティング・システムは、
+そうした問い合わせを効率的に行う方法を用意している。現在のところ、
+\fBsudo\fP は、AIX, BSD, HP\-UX, Linux, Solaris
+で効率的なグループの問い合わせをサポートしている。
+.TP  10n
+adaptive
+カーネルが返す static なグループのリストが、所属グループの最大数に達しているときにのみ、
+グループ・データベースに問い合わせる。これが \fBsudo\fP 1.8.7 以降のデフォルトの動作である。
+.PP
+たとえば、\fBsudo\fP が、ユーザについてカーネルが返す static
+なグループのリストのみを使うようにしたかったら、以下のように指定する。
+.nf
+.sp
+.RS 16n
+Set group_source static
+.RE
+.fi
+.sp
+この設定は、バージョン 1.8.7 以降の \fBsudo\fP でしか使用できない。
+.RE
+.TP  10n
+max_groups
+グループ・データベースから取得するユーザの所属グループの最大数。
+1 未満の値は無視されることになる。この設定が使用されるのは、
+グループ・データベースに直接問い合わせるときだけである。
+グループのリストを入れることになっている配列が十分な大きさを持っていない場合にも、
+それを検出できないシステムが存在する。
+この設定は、そうしたシステムで使用することを目的にしている。
+デフォルトでは、\fBsudo\fP はシステムが規定しているグループの最大数の (上記参照)
+4 倍の配列を割り当て、グループ・データベースへの問い合わせが失敗した場合は、
+その数をさらに倍にして再実行することになっている。しかしながら、
+システムの中には、配列に納まる数のグループを返すだけで、
+スペースが不足していてもエラーを知らせないものがあるのだ。
+.sp
+この設定は、バージョン 1.8.7 以降の \fBsudo\fP でしか使用できない。
+.TP  10n
+probe_interfaces
+デフォルトでは、\fBsudo\fP はシステムのネットワーク・インターフェースを調べて、
+有効になっている各インターフェースの IP アドレスをポリシー・プラグインに伝える。
+そのため、プラグインは、DNS に問い合わせるまでもなく、
+ルールを適用するかどうかを IP アドレスに基づいて決めることができるわけだ。
+Linux のシステムで多数のバーチャル・インターフェースを使用している場合は、
+この作業に無視できない時間がかかるかもしれない。
+IP アドレスに基づいたルールのマッチングが必要ないならば、
+ネットワーク・インターフェースの検査を次のようにして無効にすることができる。
+.nf
+.sp
+.RS 16n
+Set probe_interfaces false
+.RE
+.fi
+.RS 10n
+.sp
+この設定は、バージョン 1.8.10 以降の \fBsudo\fP でしか使用できない。
+.RE
+.SS デバッグ・フラグ
+バージョン 1.8.4 以上の \fBsudo\fP は、デバッグのための柔軟な枠組みに対応しており、
+問題が生じたときに、\fBsudo\fP の内部で何が起きているかを突き止めるために、
+それを利用することができる。
+.PP
+デバッグ行の構成は、Debug というキーワードに始まり、
+デバッグ対象 (\fBsudo\fP, \fBvisudo\fP, \fBsudoreplay\fP, \fBsudoers\fP)
+のプログラム名、またはプラグイン名と、デバッグファイル名がそれに続き、
+最後にコンマで区切ったデバッグ・フラグのリストが来るという形になっている。
+デバッグ・フラグのシンタクスは、\fBsudo\fP と \fBsudoers\fP プラグインでは、
+\fIsubsystem\fP@\fIpriority\fP という書式を用いるが、コンマ ('\&,')
+を含まないかぎり、別の書式を使用するプラグインがあっても構わない。
+.PP
+一例を挙げよう。
+.nf
+.sp
+.RS 6n
+Debug sudo /var/log/sudo_debug all@warn,plugin@info
+.RE
+.fi
+.PP
+上記のように指定すると、\fIwarn\fP レベル以上のすべてのデバッグ情報に加えて、
+プラグイン・サブシステムについては、\fIinfo\fP レベル以上の情報もログに記録することになる。
+.PP
+\fBsudo\fP 1.8.12 以来、一つのプログラムについて複数の
+Debug 行が指定できるようになっている。
+\fBsudo\fP のそれ以前のバージョンでは、1 プログラムにつき
+1 行の Debug 行しかサポートしていなかった。\fBsudo\fP 1.8.12 からは、
+プラグイン独自の Debug 行もサポートされるようになり、そうした行のマッチングは、
+ロードされているプラグインのベースネーム (たとえば、sudoers.so)、
+またはプラグインの絶対パス名によって行われる (訳注: 言い換えれば、
+プラグイン独自の Debug 行では、プログラム名/プラグイン名の位置に
+Plugin 行における \fIpath\fP の部分を指定するということだろう)。以前のバージョンでは、
+\fBsudoers\fP プラグインは、\fBsudo\fP フロントエンドと同じ
+Debug 行を共有しており、別の設定をすることができなかった。
+.PP
+次の priority (重大度) が使用できる。深刻なものから挙げると、
+\fIcrit\fP, \fIerr\fP, \fIwarn\fP, \fInotice\fP, \fIdiag\fP, \fIinfo\fP, \fItrace\fP, \fIdebug\fP
+である。
+ある priority を指定すると、それよりも深刻なすべての priority も指定したことになる。
+たとえば、\fInotice\fP という priority を指定すれば、
+\fInotice\fP レベル以上のデバッグ情報がログに記録されるわけである。
+.PP
+\fItrace\fP と \fIdebug\fP の priority では、ファンクション・コールのトレースも行われ、
+関数に入ったときと関数から戻ったときのログも記録される。たとえば、
+次のトレースは、src/sudo.c にある get_user_groups() 関数に対するものである。
+.nf
+.sp
+.RS 6n
+sudo[123] \-> get_user_groups @ src/sudo.c:385
+sudo[123] <\- get_user_groups @ src/sudo.c:429 := groups=10,0,5
+.RE
+.fi
+.PP
+関数に入ったときは、右矢印 '\->' で示され、プログラム名、プロセス ID、
+関数名、ソースファイルと行番号が記録される。
+関数から戻ったときは、左矢印 '<\-' で示され、同じ情報に加えて、
+返り値が記録される。上記の場合、返り値は文字列である。
+.PP
+\fBsudo\fP フロントエンドでは、以下のサブシステムが使用できる。
+.TP  12n
+\fIall\fP
+すべてのサブシステムにマッチする
+.TP  12n
+\fIargs\fP
+コマンドライン引き数の処理
+.TP  12n
+\fIconv\fP
+ユーザとのやりとり
+.TP  12n
+\fIedit\fP
+sudoedit
+.TP  12n
+\fIevent\fP
+event サブシステム
+.TP  12n
+\fIexec\fP
+コマンドの実行
+.TP  12n
+\fImain\fP
+\fBsudo\fP のメイン関数
+.TP  12n
+\fInetif\fP
+ネットワーク・インターフェースの取扱い
+.TP  12n
+\fIpcomm\fP
+プラグインとのやりとり
+.TP  12n
+\fIplugin\fP
+プラグインの設定
+.TP  12n
+\fIpty\fP
+擬似 tty 関連コード
+.TP  12n
+\fIselinux\fP
+SELInux 特有の取扱い
+.TP  12n
+\fIutil\fP
+ユーティリティ関数群
+.TP  12n
+\fIutmp\fP
+utmp の取扱い
+.PP
+sudoers(5) プラグインがサポートしているサブシステムには、これ以外のものもある。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+\fBsudo\fP フロントエンドの設定ファイル
+.SH 用例
+.nf
+.RS 0n
+#
+# Default /etc/sudo.conf file
+#
+# Format:
+#   Plugin plugin_name plugin_path plugin_options ...
+#   Path askpass /path/to/askpass
+#   Path noexec /path/to/sudo_noexec.so
+#   Debug sudo /var/log/sudo_debug all@warn
+#   Set disable_coredump true
+#
+# plugin_path が絶対パスでない場合は、/usr/local/libexec/sudo からの
+#   相対パスである。
+# plugin_name は、プラグイン中の、プラグインのインターフェース構造を
+#   含むグローバル・シンボルと同じものである。
+# plugin_options を指定するかしないかは、任意である。
+#
+# Plugin 行が存在しない場合、デフォルトの sudoers プラグインが
+# 使用される。
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+
+#
+# Sudo askpass:
+#
+# askpass ヘルパー・プログラムを指定すると、sudo の "\-A" オプションで
+# 使用できるように、グラフィカルなパスワード・プロンプトを用意する
+# ことができる。sudo は、自前の askpass プログラムを配布していないが、
+# たとえば、OpenSSH の askpass を使用することが可能だ。
+#
+# OpenSSH askpass を使用する。
+#Path askpass /usr/X11R6/bin/ssh\-askpass
+#
+# Gnome の OpenSSH askpass を使用する。
+#Path askpass /usr/libexec/openssh/gnome\-ssh\-askpass
+
+#
+# Sudo noexec:
+#
+# ライブラリ関数 execv(), execve(), fexecve() のダミー版 (単にエラー
+# を返すだけの関数) が入っている共有ライブラリのパス。この指定は、
+# <LD_PRELOAD> やそれに相当するものをサポートしているシステムで
+# "noexec" 機能を実現するために使用される。たいていの場合、
+# コンパイル時に組み込まれた値で十分であり、変更するのは、
+# sudo_noexec.so ファイルをリネームしたり、移動したりしたときのみに
+# するべきである。
+#
+#Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+
+#
+# Core dumps:
+#
+# sudo はデフォルトでは、自己を実行中のコアダンプを抑止している
+# (指定されたコマンドを実行するときに、コアダンプを有効にし直す
+# のだ)。sudo 自体の問題をデバッグするために、コアダンプを有効に
+# 戻したいならば、"disable_coredump" を false にすればよい。
+#
+#Set disable_coredump false
+
+#
+# User groups:
+#
+# sudo は、ユーザが属するグループのリストをポリシー・プラグインに
+# 引き渡す。ユーザの所属グループが、所属グループの最大数 (たいていは
+# 16) に達している場合は、sudo は、そのユーザが所属するグループを
+# すべて取得するため、直接グループ・データベースに問い合わせを行う。
+#
+# システムによっては、この動作は負担がかかることがあるので、設定に
+# よって変更できるようになっている。"group_source" で設定できる
+# 値には、三つのものがある。
+#   static   \- ユーザが属するグループのリストにカーネルが返したものを
+#              使用する。
+#   dynamic  \- グループのリストを知るために、グループ・データベースに
+#              問い合わせる。
+#   adaptive \- ユーザの所属グループが、所属グループの最大数より少ない
+#              ときは、カーネルの返すリストを使う。さもなければ、
+#              グループ・データベースに問い合わせる。
+#
+#Set group_source static
+.RE
+.fi
+.SH 関連項目
+sudoers(5), sudo(8), sudo_plugin(5)
+.SH 履歴
+sudo の簡単な履歴については、\fBsudo\fP の配布に含まれている
+HISTORY ファイルをご覧いただきたい。
+(https://www.sudo.ws/history.html)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://www.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
+商品性や特定目的への適合性についての黙示的な保証を含め、
+またそれのみに止まらず、これを否認する。詳細な全文については、
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index ae0bc2e..0e76ac4 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoers.mdoc.in
+.\"
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\" 
 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
 .\"   and 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated Sat Oct  7 14:39:18 JST 2000
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002 by Yuichi SATO
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\" Modified Tue Nov 24 20:00:00 JST 2009 by Yoichi Chonan
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.nr SL 0
-.nr BA 0
-.nr LC 0
-.\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDOERS 5"
-.TH SUDOERS 5 "February  5, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDOERS 5 "January 20, 2016" "Sudo 1.8.17" "File Formats Manual"
 .nh
-.SH "名前"
-sudoers \- デフォルトの sudo 用セキュリティ・ポリシー・モジュール
-.SH "説明"
-.IX Header "DESCRIPTION"
-\&\fIsudoers\fR ポリシー・モジュールは、デフォルトの \fBsudo\fR
-用ポリシー・プラグインであり、このモジュールによってユーザがどんな
-\&\fBsudo\fR 権限を持っているかの判定が行われる。ポリシーの運用は
-\&\fI/etc/sudoers\fR ファイルによって行われるが、
-\&\s-1LDAP\s0 を使用することも可能である。ポリシーを設定するときの書式は、
+.if  n .ad l
+.SH 名前
+\fBsudoers\fP \- デフォルトの sudo 用セキュリティポリシー・プラグイン
+.SH 説明
+\fBsudoers\fP ポリシー・プラグインは、デフォルトの \fBsudo\fP 用ポリシー・プラグインであり、
+このポリシー・プラグインによってユーザがどんな \fBsudo\fP 権限を持つかの制御が行われる。
+ポリシーの運用は \fI/etc/sudoers\fP ファイルによって行われるが、
+LDAP を使用することも可能である。ポリシーを設定するときの書式は、
 「SUDOERS ファイルの書式」セクションで詳しく説明している。
-\&\fIsudoers\fR ポリシーの情報を \s-1LDAP\s0 に格納することについては、
-\&\fIsudoers.ldap\fR\|(5) をご覧になるとよい。
-.SS "認証とロギング"
-.IX Subsection "Authentication and Logging"
-\&\fIsudoers\fR セキュリティ・ポリシーでは、ユーザはたいていの場合、
-\&\fBsudo\fR を使用できるようになる前に、本人であることを証明する必要がある。ただし、
-\&\fBsudo\fR を実行するユーザが root だったり、変身対象ユーザが
-\&\fBsudo\fR を実行するユーザと同一であったり、
-ポリシーによってそのユーザやコマンドに対する認証が免除されている場合は、
-パスワードは要求されない。\fIsu\fR\|(1) とは違って、
-\&\fIsudoers\fR  ポリシーによる認証でチェックされるのは、
-\&\fBsudo\fR を実行するユーザの認証情報 (訳注: 通常はパスワード)
-であって、変身対象ユーザの (あるいは、root の) 認証情報ではない。
-この動作は、後述する \fIrootpw\fR, \fItargetpw\fR, \fIrunaspw\fR
-フラグによって変更することができる。
-.PP
-ポリシーに登録されていないユーザが \fBsudo\fR
-を使ってコマンドを実行しようとすると、しかるべき権威者にメールが送付される。
-そうしたメールの宛先は、
-後述する「デフォルト設定」の \fImailto\fR によって設定できるが、
-デフォルトでは \f(CW\*(C`root\*(C'\fR になっている。
-.PP
-\&\fBsudo\fR を使用する権限のないユーザが、\fB\-l\fR や \fB\-v\fR
-オプションを付けて \fBsudo\fR の実行を試みても、
-メールは送付されないことに注意してほしい。これによって、
-自分が \fBsudo\fR を使用できるかどうか、
-ユーザが自分で判断できるようになっているのである。
-.PP
-\&\fBsudo\fR が root によって実行されたとき、環境変数
-\&\f(CW\*(C`SUDO_USER\*(C'\fR が設定されていると、
-\&\fIsudoers\fR ポリシーは実際のユーザが誰かを判定するのに、
-その値を使用する。ユーザとしては、この動作を利用することで、
-すでに root シェルが起動されている場合でも、
-自分が \fBsudo\fR を介して実行したコマンドのログを取ることができる。
-また、この動作のおかげで、
-\&\fBsudo\fR で実行したスクリプトやプログラムから呼び出される場合でさえ、
-\&\fB\-e\fR オプションが役に立つものになっている。とは言え、そうした場合でも、
-\&\fIsudoers\fR の参照はやはり root に対してなされるのであって、
-\&\f(CW\*(C`SUDO_USER\*(C'\fR が指定しているユーザに対してではないことに気をつけてほしい。
-.PP
-\&\fIsudoers\fR は認証情報の一時保存 (credential caching) のために
-タイムスタンプ・ファイルを使用する。ユーザの認証が済むと、
-タイムスタンプが更新され、ユーザはしばらくの間 (\fItimeout\fR
-オプションによって変更されていなければ、\f(CW\*(C`5\*(C'\fR 分間)
-パスワードなしで \fBsudo\fR を使うことができる。デフォルトでは、
-\&\fIsudoers\fR は tty ごとのタイムスタンプを使用する。すなわち、
-ユーザの各ログイン・セッションごとに別のタイムスタンプが存在するわけだ。
-\&\fItty_tickets\fR オプションを無効にすれば、
-あるユーザのすべてのセッションに対して、
-単一のタイムスタンプの使用を強制することができる。
+\fBsudoers\fP ポリシーの情報を LDAP に格納することについては、
+sudoers.ldap(5) をご覧いただきたい。
+.SS "sudoers ポリシー・プラグインを使うための sudo.conf の設定"
+\fBsudo\fP は sudo.conf(5) ファイルを参照して、
+どのポリシー・プラグインと入出力ロギング・プラグインをロードするかを決める。
+sudo.conf(5) ファイルが存在しない場合や、存在しても Plugin 行を含まない場合は、
+\fBsudoers\fP プラグインがポリシーの決定や 入出力ロギングに使用されることになる。
+\fBsudoers\fP プラグインを使用するように明示的に設定するには、
+sudo.conf(5) に次のよう書き込めばよい。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+.RE
+.fi
 .PP
-\&\fIsudoers\fR は \fBsudo\fR の実行が成功したときも失敗したときも、
-その事実を (エラー内容とともに)  \fIsyslog\fR\|(3) や 独自のログファイル、
-あるいはその両方に記録することができる。\fIsudoers\fR はデフォルトでは、
-\&\fIsyslog\fR\|(3) 経由でログを記録することになっているが、
-この動作はデフォルト設定の \fIsyslog\fR と \fIlogfile\fR
-を使って変更することが可能だ。
-.PP
-\&\fIsudoers\fR はコマンドの入出力ストリームのロギングもサポートしている。
-入出力ロギングは、デフォルトでは ON になっていないが、デフォルト設定の
-\&\fIlog_input\fR や \fIlog_output\fR フラグを使って有効にすることができる。
-コマンド・タグの \f(CW\*(C`LOG_INPUT\*(C'\fR や \f(CW\*(C`LOG_OUTPUT\*(C'\fR
-を使って有効にすることも可能だ。
-.SS "コマンド環境"
-.IX Subsection "Command Environment"
-環境変数はプログラムの動作に影響を与えることがあるので、\fIsudoers\fR は、
+\fBsudo\fP 1.8.5 以来、\fBsudoers\fP プラグインに対する任意の引き数を
+sudo.conf(5) で指定することが可能になっている。
+そうした引き数が存在する場合は、プラグインのパスの後ろに続けることになる
+(すなわち、\fIsudoers.so\fP の後ろだ)。
+引き数がいくつもあるときは、ホワイトスペースで区切って指定すればよい。
+一例を挙げる。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0400
+.RE
+.fi
+.PP
+以下のプラグインに対する引き数が使用できる。
+.TP  10n
+ldap_conf=pathname
+\fIldap_conf\fP 引き数を使用すると、
+\fIldap_conf\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+ldap_secret=pathname
+\fIldap_secret\fP 引き数を使用すると、
+\fIldap_secret\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+sudoers_file=pathname
+\fIsudoers_file\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+sudoers_uid=uid
+\fIsudoers_uid\fP 引き数を使用すると、
+sudoers ファイルの所有者をデフォルトのものから変更することができる。
+指定には、ユーザ ID 番号を使うべきである。
+.TP  10n
+sudoers_gid=gid
+\fIsudoers_gid\fP 引き数を使用すると、
+sudoers ファイルのグループをデフォルトのものから変更することができる。
+指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。
+.TP  10n
+sudoers_mode=mode
+\fIsudoers_mode\fP 引き数を使用すると、
+sudoers ファイルのファイル・モードをデフォルトのものから変更することができる。
+指定には、8 進数の値を使うべきである。
+.PP
+sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
+sudo.conf(5) のマニュアルをご覧になっていただきたい。
+.SS ユーザの認証
+\fBsudoers\fP セキュリティポリシーでは、ユーザはたいていの場合、
+本人であることを証明してからでなければ。\fBsudo\fP を使用できない。ただし、
+\fBsudo\fP の実行者が root だったり、変身対象ユーザが \fBsudo\fP の実行者と同一であったり、
+ポリシーがその実行者やコマンドに対して認証を免除している場合は、パスワードが要求されることはない。
+su(1) とは違って、\fBsudoers\fP ポリシーが認証に当たってチェックするのは、
+\fBsudo\fP を実行するユーザの認証情報 (訳注: 通常はパスワード) であって、
+変身対象ユーザの (あるいは、root の) 認証情報ではない。この動作は、後述する
+\fIrootpw\fP, \fItargetpw\fP, \fIrunaspw\fP フラグによって変更することができる。
+.PP
+ポリシーに登録されていないユーザが \fBsudo\fP を使って、コマンドを実行しようとすると、
+しかるべき権威者にメールが送付される。そうしたメールの宛先は、
+後述する「デフォルト設定」の \fImailto\fP 行によって設定できるが、
+デフォルトでは root になっている。
+.PP
+\fBsudo\fP を使用する権限のないユーザが、\fB\-l\fP や \fB\-v\fP オプションを付けて
+\fBsudo\fP の実行を試みても、認証に失敗し、しかも \fImail_always\fP または
+\fImail_badpass\fP フラグが有効になっている場合を除いて、
+メールは送付されないことに注意していただきたい。
+そうした動作になっていることで、ユーザとしては、
+自分が \fBsudo\fP を使用できるかどうか、自分で判断できるわけである。
+\fBsudo\fP 実行の試みは (成功、失敗にかかわらず)、すべてログに記録される。
+メールが送られるかどうかには関係がない。
+.PP
+\fBsudo\fP が root によって実行されたとき、環境変数 SUDO_USER が設定されていると、
+\fBsudoers\fP ポリシーは、実際のユーザが誰かを判断するのに、その値を使用することになる。
+ユーザとしては、この動作を利用することで、すでにルートシェルを起動している場合でも、
+自分が \fBsudo\fP を介して実行したコマンドのログを取ることができる。
+また、この動作のおかげで、\fBsudo\fP で実行するスクリプトやプログラムから呼び出される場合でさえ、
+\fB\-e\fP オプションが役に立つものになっている。ただし、そうした場合でも、
+\fIsudoers\fP ファイルの参照はやはり root に対してなされるのであって、
+SUDO_USER が指定しているユーザに対してではないことに注意していただきたい。
+.PP
+\fBsudoers\fP は、認証情報の一時保存 (credential caching) にユーザごとのタイムスタンプ・ファイルを使用する。
+ユーザの認証が済むと、記録が書き込まれるが、それには、認証に使用された uid、
+端末セッション ID、タイムスタンプ (利用できるならば、単調増加時計 (monotonic clock)
+を使用する) が含まれている。ユーザは、その後しばらくの間 (\fItimestamp_timeout\fP
+オプションによって変更されていなければ、5 分間)、パスワードなしで \fBsudo\fP を使うことができる。
+\fBsudoers\fP はデフォルトでは、各 tty ごとに別の記録を使用する。
+そこで、認証は、ユーザのログイン・セッションごとに独立して行われることになる。
+\fItty_tickets\fP オプションを無効にすれば、あるユーザのすべてのセッションに対して、
+単一のタイムスタンプの使用を強制することができる。
+.SS ロギング
+\fBsudoers\fP は \fBsudo\fP の実行が成功したときも失敗したときも、
+その旨を (エラーの内容とともに) syslog(3) や独自のファイル、
+あるいはその両方に記録することができる。\fBsudoers\fP はデフォルトでは、
+syslog(3) 経由でログを記録することになっているが、この動作はデフォルト設定の
+\fIsyslog\fP と \fIlogfile\fP を使って変更することができる。
+ログファイルの書式については、「ログの書式」セクションの説明をご覧いただきたい。
+.PP
+また \fBsudoers\fP は、擬似 tty でコマンドを実行して、
+すべての入力や出力をログに記録することもできる。
+標準入力、標準出力、標準エラーを、それが端末と結びついていない場合でも、
+ログに記録することができるのだ。入出力ロギングは、デフォルトでは ON になっていないが、
+\fIlog_input\fP や \fIlog_output\fP オプションを使って有効にすることができる。
+コマンド・タグの LOG_INPUT や LOG_OUTPUT を使用して有効にすることも可能だ。
+入出力ログファイルがどんなふうに格納されるかについては、
+「入出力ログファイル」セクションに詳細な説明がある。
+.SS コマンド環境
+環境変数はプログラムの動作に影響を与えることがあるので、\fBsudoers\fP は、
 実行されるコマンドがユーザの環境からどんな変数を引き継ぐかについて、
-制御する手段を用意している。すなわち、\fIsudoers\fR は二つの異なった方法で、
+制御する手段を用意している。すなわち、\fBsudoers\fP は二つの異なった方法で、
 環境変数を処理することができる。
 .PP
-デフォルトでは \fIenv_reset\fR オプションが有効になっている。
-この場合、コマンドは最小限の環境で実行されることになるが、その環境には、
-\&\f(CW\*(C`TERM\*(C'\fR, \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR,
-\&\f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR, \f(CW\*(C`LOGNAME\*(C'\fR,
-\&\f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR、
-及び \f(CW\*(C`SUDO_*\*(C'\fR という変数、
-それに、呼び出し側のプロセスから来た変数で、\fIenv_check\fR や
-\&\fIenv_keep\fR オプションによって許可されたものが含まれている。
-これは、言わば、環境変数のホワイトリストである。
-.PP
-これに対して、\fIenv_reset\fR オプションが無効になっている場合は、
-\&\fIenv_check\fR や \fIenv_delete\fR オプションによって明示的に拒否されていないかぎり、
-いかなる環境変数も呼び出し側のプロセスから継承される。この場合、
-\&\fIenv_check\fR や \fIenv_delete\fR はブラックリストのように振舞うわけだ。
-危険性のある環境変数のすべてをブラックリストに載せることは不可能なので、
-\&\fIenv_reset\fR を有効にしておくデフォルトの動作を採用することをお勧めする。
-.PP
-どんな場合でも、値が \f(CW\*(C`()\*(C'\fR で始まる変数は除去されるが、
-それは \fBbash\fR の関数として解釈される恐れがあるからである。
-\&\fBsudo\fR が許可、または拒否する環境変数のリストは、
-\&\f(CW\*(C`sudo \-V\*(C'\fR を root の資格で実行したときの出力中に表示される。
+デフォルトでは \fIenv_reset\fP オプションが有効になっている。
+この場合、コマンドは新しい、最小の環境で実行されることになる。
+ATX (及び PAM を使用していない Linux システム) では、\fI/etc/environment\fP
+ファイルの内容で環境が初期化される。新しい環境には、TERM, PATH,
+HOME, MAIL, SHELL, LOGNAME, USER, USERNAME, 及び SUDO_* という変数、
+それに、呼び出し側のプロセスから来た変数で、\fIenv_check\fP や \fIenv_keep\fP
+オプションによって許可されたものが含まれている。これは、言わば、
+環境変数のホワイトリストである。値が () で始まる環境変数は、
+変数名と値の両方が \fIenv_keep\fP や \fIenv_check\fP の指定にマッチしないかぎり、
+除去されるが、それは、\fBbash\fP シェルの古いバージョンでは関数と解釈されることになるからである。
+1.8.11 より前のバージョンでは、そうした変数は無条件で除去されていた。
+.PP
+これに対して、\fIenv_reset\fP オプションが無効になっている場合は、
+\fIenv_check\fP や \fIenv_delete\fP オプションによって明示的に拒否されていないかぎり、
+いかなる環境変数も呼び出し側のプロセスから継承される。
+この場合、\fIenv_check\fP や \fIenv_delete\fP は、ブラックリストのように振る舞うわけだ。
+値が () で始まる環境変数は、ブラックリストの一つにマッチしない場合でも、
+必ず除去される。危険性のある環境変数のすべてをブラックリストに載せることは不可能なので、
+\fIenv_reset\fP を有効にしておくデフォルトの動作を採用することをお勧めする。
+.PP
+デフォルトでは、環境変数のマッチは変数名によって行われる。
+しかしながら、マッチに使われるパターンに等号 ('=') が含まれる場合は、
+変数名と値の両方がマッチしなければならない。たとえば、旧式の
+(shellshock 問題以前の export 方法による)
+\fBbash\fP のシェル関数にマッチさせるならば、次のように指定すればよいだろう。
+.nf
+.sp
+.RS 4n
+env_keep += "my_func=()*"
+.RE
+.fi
+.PP
+旧式の \fBbash\fP のシェル関数は、デフォルトでは保存されないので、
+"=()*" という後続部分がなかったら、こうした環境変数はマッチしないことになる。
+.IP "[\fB訳注\fP]:" 8
+shellshock 以前の bash では、たとえば "my_func='() { ls \-F; }'"
+といったシェル変数を export することで、
+my_func という関数をサブシェルに渡すことができた。
+shellshock 以後の bash では、この方法による関数の継承はできなくなり、
+値が "() { ls \-F; }" である my_func という変数が、
+渡されるだけになっている。だから、
+sudoers ファイルの Defaults 行に上のように書いても、
+shellshock 以後の bash を使っているかぎり、
+my_func という環境変数が保存されるだけで、関数が渡されるわけではない。
+.PP
+\fBsudo\fP が許可、または拒否する環境変数すべてのリストは、"sudo \-V" を
+root の資格で実行したときの出力中に含まれている。このリストは、
+\fBsudo\fP が実行されるオペレーティングシステムによって異なることに気をつけていただきたい。
+.PP
+PAM をサポートしているシステムで、\fBpam_env\fP モジュールが
+\fBsudo\fP に対して有効になっていると、
+PAM の管理する環境にある変数が、環境にマージされることになるだろう。
+ただし、PAM 環境にある変数がユーザの環境にすでに存在している場合に、
+その値が上書きされることになるのは、
+その変数が \fBsudoers\fP によって保存されていないときだけである。
+すなわち、\fIenv_reset\fP が有効になっているときは、
+\fIenv_keep\fP のリストによって \fBsudo\fP を実行するユーザの環境から保存された変数が、
+PAM 環境にある変数より優先される。また、
+\fIenv_reset\fP が無効になっているときは、
+\fBsudo\fP を実行するユーザの環境にある変数が、
+\fIenv_delete\fP のリストのパターンにマッチしていないかぎり、
+PAM 環境にある変数よりも優先されるのである。
 .PP
 たいていのオペレーティングシステムのダイナミック・リンカは、
-ダイナミック・リンキングを制御する働きがある環境変数を、\fBsudo\fR もその一つである
-setuid プログラムの環境から除去するようになっていることに注意してほしい。
-オペレーティングシステムによって名前は様々だが、
-\&\f(CW\*(C`_RLD*\*(C'\fR, \f(CW\*(C`DYLD_*\*(C'\fR, \f(CW\*(C`LD_*\*(C'\fR, 
-\&\f(CW\*(C`LDR_*\*(C'\fR, \f(CW\*(C`LIBPATH\*(C'\fR,
-\&\f(CW\*(C`SHLIB_PATH\*(C'\fR などが、この範疇に含まれるだろう。
-こうした変数は、\fBsudo\fR の実行が始まるよりも前に、環境から除去されるので、
-\&\fBsudo\fR がそうした変数を保持することは不可能である。
-.PP
-特例として、\fBsudo\fR に \fB\-i\fR オプション (initial login)
-が指定されている場合は、\fIsudoers\fR は \fIenv_reset\fR
-の有効・無効にかかわらず、環境を初期化する。
-環境変数 \fI\s-1DISPLAY\s0\fR, \fI\s-1PATH\s0\fR,
-\&\fI\s-1TERM\s0\fR は変更されないが、\fI\s-1HOME\s0\fR, \fI\s-1MAIL\s0\fR,
-\&\fI\s-1SHELL\s0\fR, \fI\s-1USER\s0\fR, \fI\s-1LOGNAME\s0\fR は、
-変身対象ユーザのそれにセットされるのである。Linux や \s-1AIX\s0 システムでは、
-\&\fI/etc/environment\fR の内容も取り込まれる。
+ダイナミック・リンキングを制御する働きがある環境変数を、
+\fBsudo\fP もその一つである setuid 実行ファイルの環境から除去するようになっていることに注意していただきたい。
+オペレーティングシステムによって名前は様々だが、_RLD*, DYLD_*, LD_*,
+LDR_*, LIBPATH, SHLIB_PATH などが、この範疇に含まれるだろう。
+そうした変数は、\fBsudo\fP の実行が始まるよりも前に、環境から除去されるので、
+\fBsudo\fP がそうした変数を保存することは不可能である。
+.PP
+特例として、\fBsudo\fP に \fB\-i\fP (initial login) オプションが指定されている場合は、
+\fBsudoers\fP は \fIenv_reset\fP の有効・無効にかかわらず、環境を初期化する。
+環境変数 DISPLAY, PATH, TERM は変更されないが、HOME, MAIL, SHELL, USER, LOGNAME
+は、変身対象ユーザのそれにセットされる。ATX (及び PAM を使用していない
+Linux システム) では、\fI/etc/environment\fP の内容も取り込まれる。
 それ以外の環境変数はすべて捨てられる。
 .PP
-最後に。\fIenv_file\fR が設定されている場合は、
-そのファイルに記載されたいかなる変数も、そこで指定されている値にセットされることになる。
+最後に、\fIenv_file\fP オプションが設定されている場合は、
+そのファイルに記載されたいかなる変数も、
+すでに存在している環境変数と衝突しないかぎり、
+そこで指定されている値にセットされることになる。
 .SH "SUDOERS ファイルの書式"
-.IX Header "SUDOERS FILE FORMAT"
-\&\fIsudoers\fR ファイルは二種類のエントリから構成されている。
-(要するに変数である) エイリアスと (誰が何を実行できるかを指定している)
-ユーザ設定だ。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1"
-訳者としては、「エイリアス、デフォルト設定、ユーザ設定の三種類の
-エントリから構成されている」と言った方が実態に合っているのではないかと思う。
+\fIsudoers\fP ファイルは二種類のエントリから構成されている。
+(要するに変数である) エイリアスと (誰が何を実行できるかを指定している) ユーザ設定だ。
+(訳注: 訳者としては、「エイリアス、デフォルト設定、ユーザ設定の三種類のエントリから構成されている」と言った方が、
+現在の実態に合っているのではないかと思う。)
 .PP
 一人のユーザに複数のエントリがマッチするときは、順番に適用される。
 複数の指定がマッチしている箇所については、最後にマッチしたものが使用される
 (それが一番明示的なマッチだとはかぎらないが)。
 .PP
-以下では \fIsudoers\fR の文法を拡張 Backus-Naur 記法 (\s-1EBNF\s0)
-を用いて記述する。\s-1EBNF\s0 がどんなものか御存じないからといって、
-あきらめないでいただきたい。わりと簡単なものだし、
-以下に出てくる定義には詳しい説明を付けておきますから。
-.SS "\s-1EBNF\s0 の基礎の基礎"
-.IX Subsection "Quick guide to EBNF"
-\&\s-1EBNF\s0 は言語の文法を記述する簡潔で厳密な方法である。
-\&\s-1EBNF\s0 の個々の定義は生成規則からできている。たとえば、
+以下では \fIsudoers\fP ファイルの文法を拡張 Backus\-Naur 記法 (EBNF) を用いて記述する。
+EBNF を御存じないからといって、あきらめないでいただきたい。
+わりと簡単なものだし、以下に出てくる定義には詳しい説明をつけておきますから。
+.SS "EBNF の基礎の基礎"
+EBNF は言語の文法を記述する簡潔で厳密な方法である。
+EBNF の個々の定義は生成規則からできている。たとえば、
 .PP
-.Vb 1
-\& シンボル ::= 定義 | 別の定義 1 | 別の定義 2 ...
-.Ve
+シンボル ::= 定義 | 別の定義 1 | 別の定義 2 ...
 .PP
 個々の生成規則は、ほかの生成規則を参照し、そのようにして言語の文法を作り上げている。
-また \s-1EBNF\s0 には以下の演算子が含まれるが、
-正規表現で御存じの読者も多いだろう。
+また EBNF には以下の演算子が含まれるが、正規表現で御存じの読者も多いだろう。
 だが、いわゆる「ワイルドカード」文字と混同しないでいただきたい。
 あれは別の意味を持っている。
-.ie n .IP "\*(C`?\*(C'" 4
-.el .IP "\f(CW\*(C`?\*(C'\fR" 4
-.IX Item "?"
+.TP  6n
+\&?
 直前のシンボル (または、シンボルのグループ) が、あってもなくてもよいことを意味する。
 すなわちそのシンボルは、1 回現れてもよいし、1 回も現れないでもよい。
-.ie n .IP "\*(C`*\*(C'" 4
-.el .IP "\f(CW\*(C`*\*(C'\fR" 4
-.IX Item "*"
+.TP  6n
+*
 直前のシンボル (または、シンボルのグループ) が 0 回以上現れる。
-.ie n .IP "\*(C`+\*(C'" 4
-.el .IP "\f(CW\*(C`+\*(C'\fR" 4
-.IX Item "+"
+.TP  6n
++
 直前のシンボル (または、シンボルのグループ) が 1 回以上現れる。
 .PP
 丸カッコを使うと、複数のシンボルをグループにまとめることができる。
-なお混乱を避けるため、以下の定義で (シンボル名ではなく)
\96\87å­\97ã\81©ã\81\8aã\82\8aã\81®æ\96\87å­\97å\88\97ã\82\84è¨\98å\8f·ã\82\92示ã\81\99å ´å\90\88ã\81¯ã\80\81ã\81\9dã\82\8cã\82\92ã\82·ã\83³ã\82°ã\83«ã\82¯ã\82©ã\83¼ã\83\88 ('')
-で囲むことにする。
-.SS "エイリアス"
-.IX Subsection "Aliases"
-エイリアスには四種類ある。\f(CW\*(C`User_Alias\*(C'\fR,
-\&\f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR,
-\&\f(CW\*(C`Cmnd_Alias\*(C'\fR である。
-.PP
-.Vb 4
-\& Alias ::= \*(AqUser_Alias\*(Aq  User_Alias (\*(Aq:\*(Aq User_Alias)* |
-\&           \*(AqRunas_Alias\*(Aq Runas_Alias (\*(Aq:\*(Aq Runas_Alias)* |
-\&           \*(AqHost_Alias\*(Aq  Host_Alias (\*(Aq:\*(Aq Host_Alias)* |
-\&           \*(AqCmnd_Alias\*(Aq  Cmnd_Alias (\*(Aq:\*(Aq Cmnd_Alias)*
-\&
-\& User_Alias ::= NAME \*(Aq=\*(Aq User_List
-\&
-\& Runas_Alias ::= NAME \*(Aq=\*(Aq Runas_List
-\&
-\& Host_Alias ::= NAME \*(Aq=\*(Aq Host_List
-\&
-\& Cmnd_Alias ::= NAME \*(Aq=\*(Aq Cmnd_List
-\&
-\& NAME ::= [A\-Z]([A\-Z][0\-9]_)*
-.Ve
+なお、混乱を避けるため、以下の定義では、それが (シンボル名ではなく)
\96\87å­\97ã\81©ã\81\8aã\82\8aã\81®æ\96\87å­\97å\88\97ã\82\84è¨\98å\8f·ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\82\92示ã\81\99å ´å\90\88ã\81«ã\81¯ã\80\81ã\82·ã\83³ã\82°ã\83«ã\82¯ã\82©ã\83¼ã\83\88
+(' ') で囲むことにする。
+.SS エイリアス
+エイリアスには四種類ある。User_Alias, Runas_Alias, Host_Alias,
+Cmnd_Alias である。
+.nf
+.sp
+.RS 0n
+Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |
+          'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
+          'Host_Alias'  Host_Alias (':' Host_Alias)* |
+          'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*
+
+User_Alias ::= NAME '=' User_List
+
+Runas_Alias ::= NAME '=' Runas_List
+
+Host_Alias ::= NAME '=' Host_List
+
+Cmnd_Alias ::= NAME '=' Cmnd_List
+
+NAME ::= [A\-Z]([A\-Z][0\-9]_)*
+.RE
+.fi
 .PP
 個々のエイリアスの定義は、次の形をとる。
+.nf
+.sp
+.RS 0n
+Alias_Type NAME = item1, item2, ...
+.RE
+.fi
 .PP
-.Vb 1
-\& Alias_Type NAME = item1, item2, ...
-.Ve
-.PP
-上記において、\fIAlias_Type\fR は \f(CW\*(C`User_Alias\*(C'\fR,
-\&\f(CW\*(C`Runas_Alias\*(C'\fR, \f(CW\*(C`Host_Alias\*(C'\fR,
-\&\f(CW\*(C`Cmnd_Alias\*(C'\fR のうちの一つである。
-\&\f(CW\*(C`NAME\*(C'\fR はアルファベットの大文字、数字、
+上記において \fIAlias_Type\fP は、User_Alias, Runas_Alias, Host_Alias,
+Cmnd_Alias のうちの一つである。NAME は、アルファベットの大文字、数字、
 アンダースコア ('_') からなる文字列であるが、
-\&\fB先頭の文字は大文字\fRでなければならない。同じタイプのエイリアス定義を、
-コロンで (':') つないで、
-一行に複数書くこともできる。たとえば、
-.PP
-.Vb 1
-\& Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
-.Ve
-.PP
-以下では、エイリアスの有効な要素となるものを定義する。
-.PP
-.Vb 2
-\& User_List ::= User |
-\&               User \*(Aq,\*(Aq User_List
-\&
-\& User ::= \*(Aq!\*(Aq* user name |
-\&          \*(Aq!\*(Aq* #uid |
-\&          \*(Aq!\*(Aq* %group |
-\&          \*(Aq!\*(Aq* %#gid |
-\&          \*(Aq!\*(Aq* +netgroup |
-\&          \*(Aq!\*(Aq* %:nonunix_group |
-\&          \*(Aq!\*(Aq* %:#nonunix_gid |
-\&          \*(Aq!\*(Aq* User_Alias
-.Ve
-.PP
-\&\f(CW\*(C`User_List\*(C'\fR を構成するのは、一個以上の次のものである。
-ユーザ名、ユーザ ID (接頭辞 '#' が付く)、システムグループ名やその ID
-(それぞれ、接頭辞 '%' と '%#' が付く)、ネットグループ名 (接頭辞 '+' が付く)、
-非 Unix グループ名やその ID (それぞれ、接頭辞 '%:' と '%:#' が付く)、
-それに \f(CW\*(C`User_Alias\*(C'\fR。
-リストの各項目の前には一個以上の '!' 演算子を付けてもよい。 
-奇数個の '!' はその項目の値を否定する。偶数個の場合は互い相殺されるだけだ。
+先頭の文字はアルファベットの大文字でなければならない。
+同じタイプのエイリアス定義を、コロンで (':') つないで、一行に複数書くこともできる。
+たとえば、
+.nf
+.sp
+.RS 0n
+Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
+.RE
+.fi
 .PP
-ユーザ名、\f(CW\*(C`uid\*(C'\fR、グループ名、\f(CW\*(C`gid\*(C'\fR、
-ネットグループ名、非 Unix グループ名、非 Unix グループ の
-\&\f(CW\*(C`gid\*(C'\fR は、ダブルクォートで囲めば、
-特殊文字をエスケープしないですむ。
-ダブルクォートで囲まずに特殊文字を使いたいなら、
-エスケープした 16 進数を指定してやればよい。たとえば、
-スペースなら \ex20 という具合だ。ダブルクォートを使用する場合は、
-接頭辞があれば、それをダブルクォートの内側に入れなければならない。
-.PP
-非 Unix グループやその \f(CW\*(C`gid\*(C'\fR の書式が、
-実際にどんなものになるかは、利用するグループ・プロバイダ・プラグイン
-(group provider plugin) 次第である (後述する \fIgroup_plugin\fR
-オプションの説明も見てほしい)。たとえば、
-\&\s-1QAS\s0 (\s-1Quest Authentication Services\s0) の \s-1AD\s0 プラグインは、
+既存のエイリアスを再定義するのは、文法エラーである。
+異なるタイプのエイリアスに対して同じ名前を使用することはできるが、
+お薦めできることではない。
+.PP
+エイリアスの有効な要素となるものの定義は、以下のようになる。
+.nf
+.sp
+.RS 0n
+User_List ::= User |
+              User ',' User_List
+
+User ::= '!'* user name |
+         '!'* #uid |
+         '!'* %group |
+         '!'* %#gid |
+         '!'* +netgroup |
+         '!'* %:nonunix_group |
+         '!'* %:#nonunix_gid |
+         '!'* User_Alias
+.RE
+.fi
+.PP
+User_List を構成するのは、一個以上の次のものである。
+ユーザ名、ユーザID (接頭辞 '#' が付く)、
+システムグループ名やその ID (それぞれ、接頭辞 '%' と '%#' が付く)、
+ネットグループ名 (接頭辞 '+' が付く)、
+non\-Unix グループ名やその ID (それぞれ、接頭辞 '%:' と '%:#' が付く)、
+それに User_Alias。
+リストの各項目の前には一個以上の '!' 演算子を付けてもよい。
+奇数個の '!' はその項目の値を否定する。偶数個の場合は互い相殺されるだけだ。
+なお、ユーザのネットグループについては、
+ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行われる。
+ホストの要素はマッチングに使用されない。
+.PP
+ユーザ名、uid、グループ名、gid、ネットグループ名、non\-Unix グループ名、
+non\-Unix グループ の gid は、ダブルクォートで囲めば、特殊文字をエスープしないですむ。
+ダブルクォートで囲まずに特殊文字を使いたいなら、エスケープした 16 進数を指定してやればよい。
+たとえば、スペースなら \ex20 という具合だ。
+ダブルクォートを使用する場合は、接頭辞があれば、それをダブルクォートの内側に入れなければならない。
+.PP
+non\-Unix グループやその gid を指定するときのの書式が、
+実際にどんなものになるかは、
+利用するグループ・プロバイダー・プラグイン (group provider plugin) 次第である。
+たとえば、QAS (Quest Authentication Services) の AD プラグインは、
 以下の書式をサポートしている。
-.IP "\(bu" 4
-同じドメインのグループ: \*(L"Group Name\*(R"
-.IP "\(bu" 4
-任意のドメインのグループ: \*(L"Group Name@FULLY.QUALIFIED.DOMAIN\*(R"
-.IP "\(bu" 4
-グループ \s-1SID:\s0 \*(L"S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567\*(R"
-.PP
-グループ名を囲む引用符は任意であることに注意してほしい。
-文字列を引用符で囲まない場合は、スペースや特殊文字をエスケープするために、
-バックスラッシュ (\e) を使わなければならない。
+.TP  6n
+\fB\(bu\fP
+同じドメインのグループ: "%:Group Name"
+.TP  6n
+\fB\(bu\fP
+任意のドメインのグループ: "%:Group Name@FULLY.QUALIFIED.DOMAIN"
+.TP  6n
+\fB\(bu\fP
+グループ SID: "%:S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567"
+.PP
+詳細については、
+「グループ・プロバイダー・プラグイン」セクションをご覧いただきたい。
+.PP
+グループ名を囲む引用符は任意であることに注意していただきたい。
+文字列を引用符で囲まない場合は、バックスラッシュ ('\e') を使って、
+スペースや特殊文字をエスケープしなければならない。
 エスケープする必要がある文字のリストについては、
-「ほかの特殊文字と予約語」のセクションをご覧になってほしい。
-.PP
-.Vb 2
-\& Runas_List ::= Runas_Member |
-\&                Runas_Member \*(Aq,\*(Aq Runas_List
-\&
-\& Runas_Member ::= \*(Aq!\*(Aq* user name |
-\&                  \*(Aq!\*(Aq* #uid |
-\&                  \*(Aq!\*(Aq* %group |
-\&                  \*(Aq!\*(Aq* %#gid |
-\&                  \*(Aq!\*(Aq* %:nonunix_group |
-\&                  \*(Aq!\*(Aq* %:#nonunix_gid |
-\&                  \*(Aq!\*(Aq* +netgroup |
-\&                  \*(Aq!\*(Aq* Runas_Alias
-.Ve
-.PP
-\&\f(CW\*(C`Runas_List\*(C'\fR は \f(CW\*(C`User_List\*(C'\fR に似ている。
-違うのは、\f(CW\*(C`User_Alias\*(C'\fR ではなく、
-\&\f(CW\*(C`Runas_Alias\*(C'\fR が使えることだ。
-ユーザ名やグループ名のマッチは文字列として行われることに気を付けてほしい。
-言い換えると、二つのユーザ名 (あるいはグループ名) は、かりに同じ uid (gid)
-を持っていても、別個のものと見なされるのである。
-だから、もし同じ uid を持ったすべてのユーザ名にマッチさせたかったら 
-(たとえば、root と toor がそうだとしよう)、ユーザ名の代わりに
-uid を使えばよい (この例なら、#0 である)。
-.PP
-.Vb 2
-\& Host_List ::= Host |
-\&               Host \*(Aq,\*(Aq Host_List
-\&
-\& Host ::= \*(Aq!\*(Aq* host name |
-\&          \*(Aq!\*(Aq* ip_addr |
-\&          \*(Aq!\*(Aq* network(/netmask)? |
-\&          \*(Aq!\*(Aq* +netgroup |
-\&          \*(Aq!\*(Aq* Host_Alias
-.Ve
-.PP
-\&\f(CW\*(C`Host_List\*(C'\fR は一個以上の、ホスト名、\s-1IP\s0 アドレス、
-ネットワークアドレス、ネットグループ名 (接頭辞 '+' が付く)、
-および他のエイリアスからなる。ここでもまた、'!' 演算子を付けて、
-項目の値を否定することができる。
-ネットワークアドレスにネットマスクを指定しなかった場合は、
-\&\fBsudo\fR がローカルホストのネットワークインターフェースを一つ一つ参照し、
+「ほかの特殊文字と予約語」のセクションを参照していただきたい。
+.nf
+.sp
+.RS 0n
+Runas_List ::= Runas_Member |
+               Runas_Member ',' Runas_List
+
+Runas_Member ::= '!'* user name |
+                 '!'* #uid |
+                 '!'* %group |
+                 '!'* %#gid |
+                 '!'* %:nonunix_group |
+                 '!'* %:#nonunix_gid |
+                 '!'* +netgroup |
+                 '!'* Runas_Alias
+.RE
+.fi
+.PP
+Runas_List は User_List に似ている。違うのは、User_Alias ではなく、
+Runas_Alias が使えることだ。ユーザ名やグループ名のマッチは、
+文字列として行われることに気を付けていただきたい。
+言い換えると、二つのユーザ名 (あるいは、グループ名) は、
+仮に同じ uid (gid) を持っていても、別個のものと見なされるのである。
+だから、もし同じ uid を持ったすべてのユーザ名にマッチさせたかったら
+(たとえば、root と toor がそうだとしよう)、ユーザ名の代わりに uid を使えばよい
+(この例なら、#0 である)。
+.nf
+.sp
+.RS 0n
+Host_List ::= Host |
+              Host ',' Host_List
+
+Host ::= '!'* host name |
+         '!'* ip_addr |
+         '!'* network(/netmask)? |
+         '!'* +netgroup |
+         '!'* Host_Alias
+.RE
+.fi
+.PP
+Host_List を構成するのは、一個以上の次のものである。
+ホスト名、IP アドレス、ネットワークアドレス、
+ネットグループ名 (接頭辞 '+' が付く)、および他のエイリアス。
+ここでもまた、項目の値は、'!' 演算子によって否定することができる。なお、
+ホストのネットグループについては、ネットグループの成員中のホスト
+(完全修飾名とそうでないもののどちらでも) とドメインの要素のみを使って、
+マッチングが行われる。ユーザの要素はマッチングに使用されない。
+ネットワークアドレスをネットマスクなしで指定した場合は、
+\fBsudo\fP はローカルホストのネットワークインターフェースを一つ一つ参照し、
 指定されたネットワークアドレスと同じアドレスを持つインターフェースがあれば、
 そのネットマスクを使用することになる。ネットマスクの指定は、
-標準の \s-1IP\s0 アドレス表記 (たとえば 255.255.255.0 とか 
-ffff:ffff:ffff:ffff:: とか) でもよく、\&\s-1CIDR\s0 表記 (ビット数、
-たとえば 24 とか 64 とか) でもよい。
+標準の IP アドレス表記 (たとえば 255.255.255.0 や ffff:ffff:ffff:ffff::) でもよく、
+CIDR 表記 (ビット数、たとえば 24 や 64) でもよい。
 ホスト名の一部にシェル風のワイルドカードを使用することができるが
-(下記の「ワイルドカード」セクションを参照)、使用マシンの
-\&\f(CW\*(C`hostname\*(C'\fR コマンドが完全修飾ドメイン名 (FQDN) を返さない場合、
-ワイルドカードを利用するには \fIfqdn\fR オプションを使う必要がある。
-なお、\fBsudo\fR がチェックするのは、
+(下記の「ワイルドカード」セクションを参照)、
+ご使用のマシンの hostname コマンドが完全修飾ドメイン名 (FQDN) を返さない場合、
+ワイルドカードを利用するには \fIfqdn\fP オプションを使う必要がある。
+なお、\fBsudo\fP がチェックするのは、
 実在のネットワークインターフェースだけだということに留意してほしい。
-すなわち、\s-1IP\s0 アドレス 127.0.0.1 (localhost)
-がマッチすることは、絶対にないのである。
-また、\*(L"localhost\*(R" というホスト名がマッチするのは、
+すなわち、IP アドレス 127.0.0.1 (localhost) がマッチすることは、絶対にないのである。
+また、"localhost" というホスト名がマッチするのは、
 それが実際のホスト名であるときだけであり、
 それは通常、ネットワークにつながっていないシステムの場合にしか当てはまらない。
+.nf
+.sp
+.RS 0n
+digest ::= [A\-Fa\-f0\-9]+ |
+          [[A\-Za\-z0\-9\+/=]+
+
+Digest_Spec ::= "sha224" ':' digest |
+               "sha256" ':' digest |
+               "sha384" ':' digest |
+               "sha512" ':' digest
+
+Cmnd_List ::= Cmnd |
+              Cmnd ',' Cmnd_List
+
+command name ::= file name |
+                 file name args |
+                 file name '""'
+
+Cmnd ::= Digest_Spec? '!'* command name |
+         '!'* directory |
+         '!'* "sudoedit" |
+         '!'* Cmnd_Alias
+.RE
+.fi
 .PP
-.Vb 2
-\& Cmnd_List ::= Cmnd |
-\&               Cmnd \*(Aq,\*(Aq Cmnd_List
-\&
-\& commandname ::= file name |
-\&                 file name args |
-\&                 file name \*(Aq""\*(Aq
-\&
-\& Cmnd ::= \*(Aq!\*(Aq* commandname |
-\&          \*(Aq!\*(Aq* directory |
-\&          \*(Aq!\*(Aq* "sudoedit" |
-\&          \*(Aq!\*(Aq* Cmnd_Alias
-.Ve
-.PP
-\&\f(CW\*(C`Cmnd_List\*(C'\fR は一個以上の、コマンド名、ディレクトリ、
+Cmnd_List は一個以上の、コマンド名、ディレクトリ、
 他のエイリアスからなるリストである。コマンド名は絶対パスのファイル名であり、
-シェル風のワイルドカードを含んでいても構わない
-(下記の「ワイルドカード」セクションを参照)。単にファイル名だけ指定した場合、
+シェル風のワイルドカードを含んでいても構わない(下記の「ワイルドカード」セクションを参照)。
+単にファイル名だけ指定した場合、
 ユーザはお望みのどんな引き数でも付けてそのコマンドを実行することができる。
 とは言え、コマンドライン引き数を (ワイルドカードを含めて)
-指定しても構わないし、また、引き数に \f(CW""\fR を指定して、そのコマンドは
-\&\fBコマンドライン引き数なし\fRの実行のみが可能だと指示することもできる。
+指定しても構わないし、また、引き数に "\&" を指定して、そのコマンドは、
+コマンドライン引き数を付けずに実行することしかできないと指示することもできる。
 ディレクトリは '/' で終わる絶対パス名である。
-\&\f(CW\*(C`Cmnd_List\*(C'\fR にディレクトリを指定すると、
+Cmnd_List にディレクトリを指定すると、
 ユーザーはそのディレクトリ内の任意のファイルを実行できるようになる
 (だが、そのサブディレクトリにあるファイルは実行できない)。
 .PP
-\&\f(CW\*(C`Cmnd\*(C'\fR がコマンドライン引き数を伴っている場合は、
-\&\f(CW\*(C`Cmnd\*(C'\fR 中の引き数は、
-ユーザがコマンドラインに打ち込む引き数と正確に一致しなければならない
+Cmnd がコマンドライン引き数を伴っている場合は、 Cmnd 中の引き数は、
+ユーザがコマンドラインで打ち込む引き数と正確に一致しなければならない
 (Cmnd 中の引き数にワイルドカードがあるならば、
 それがコマンドラインの引き数とマッチしなければならない)。
 以下に挙げる文字をコマンド引き数の中で用いるときは、
-\&'\e' によってエスケープしなければならないことに注意してほしい。
-\&',', ':', '=', '\e' がそれである。
-\&\f(CW"sudoedit"\fR という特別なコマンド名は、ユーザが \fBsudo\fR を
-\&\fB-e\fR オプション付きで (あるいは、\fBsudoedit\fR というコマンド名で)
-実行することを許可するために使用される。この場合、
-コマンドライン引き数を取ることができるのは、普通のコマンドとまったく同様である。
+\&'\e' によってエスケープしなければならないことに注意していただきたい。
+\&',\&', ':\&', '=\&', '\e' がそれである。
+Cmnd に "sudoedit" という \fBsudo\fP の組み込みコマンドを指定すると、
+ユーザに \fBsudo\fP を \fB\-e\fP オプション付きで
+(あるいは、\fBsudoedit\fP というコマンド名で) 実行することを許可することになる。
+この場合、コマンドライン引き数も指定することができるのは、
+普通のコマンドとまったく同様だ。
+"sudoedit" は、\fBsudo\fP そのものに組み込まれたコマンドなので、\fIsudoers\fP
+ファイルではパスを前に付けずに指定しなければならないことに注意していただきたい。
+.PP
+コマンド名の前に Digest_Spec が付いている場合、コマンドのマッチに成功するのは、
+指定された SHA\-2 ダイジェストを使って照合できたときだけである。
+ダイジェストのフォーマットとしては、
+sha224, sha256, sha384, sha512 をサポートしている。
+文字列は、16 進数形式でも base64 形式でも指定できる (base64 の方が短くて済む)。
+SHA\-2 ダイジェストを 16 進数形式で生成できるユーティリティはいくつかある。
+openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum
+といったものがそうだ。
+.PP
+たとえば、openssl を使うなら、
+.nf
+.sp
+.RS 0n
+$ openssl dgst \-sha224 /bin/ls
+SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25
+.RE
+.fi
+.PP
+openssl を使って、base64 の出力を生成することもできる。
+.nf
+.sp
+.RS 0n
+$ openssl dgst \-binary \-sha224 /bin/ls | openssl base64
+EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==
+.RE
+.fi
+.PP
+注意: もしユーザがコマンドそのものに対して (直接であれ、\fBsudo\fP コマンドを通してであれ)
+書き込み権限を持っているならば、そのユーザは、ダイジェストチェックが済み、
+コマンドが実行されるまでの間に、コマンドを別のものに置き換えることができるかもしれない。
+同様の競合状態が、fexecve(2) システムコールを持っていないシステムでは、
+コマンドが存在するディレクトリがユーザによって書き込み可能であるときに起こりえる。
+.PP
+コマンド・ダイジェストをサポートしているのは、バージョン 1.8.7 以上だけである。
 .SS "デフォルト設定 (Defaults)"
-.IX Subsection "Defaults"
-かなりの設定オプションが、一行以上の \f(CW\*(C`Default_Entry\*(C'\fR
-行を使うことで実行時にデフォルトの値から変更可能だ。その効果の及ぶ範囲は、
-任意のホストのすべてのユーザにすることもできるし、
+かなりの設定オプションが、
+一行以上の Default_Entry 行を指定することで実行時にデフォルトの値から変更可能だ。
+その効果の及ぶ範囲は、あらゆるホストのすべてのユーザにすることもできるし、
 ある特定のホストのすべてのユーザ、ある特定のユーザ、ある特定のコマンド、
 ある特定のユーザとして実行するコマンドなどに限定することもできる。
-気を付けてほしいのは、コマンドに限定した
-Defaults 行にコマンドライン引き数まで書くことができないことだ。
-引き数を指定する必要がある場合は、\f(CW\*(C`Cmnd_Alias\*(C'\fR を定義して、
-代わりにそれを参照すればよい。
-.PP
-.Vb 5
-\& Default_Type ::= \*(AqDefaults\*(Aq |
-\&                  \*(AqDefaults\*(Aq \*(Aq@\*(Aq Host_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq:\*(Aq User_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq!\*(Aq Cmnd_List |
-\&                  \*(AqDefaults\*(Aq \*(Aq>\*(Aq Runas_List
-\&
-\& Default_Entry ::= Default_Type Parameter_List
-\&
-\& Parameter_List ::= Parameter |
-\&                    Parameter \*(Aq,\*(Aq Parameter_List
-\&
-\& Parameter ::= Parameter \*(Aq=\*(Aq Value |
-\&               Parameter \*(Aq+=\*(Aq Value |
-\&               Parameter \*(Aq\-=\*(Aq Value |
-\&               \*(Aq!\*(Aq* Parameter
-.Ve
-.PP
-パラメータは\fBフラグ\fR、\fB整数値\fR、\fB文字列\fR、
-\&\fBリスト\fRのどれでもよい。フラグは要するにブーリアン (真偽値) であり、
-\&'!' 演算子で off にできる。整数値、文字列、リストのパラメータにも、
-真偽値として使用して、それを無効にできるものがいくつか存在する。
-パラメータの値が複数の単語を含むときは、値をダブルクオート
-(\f(CW\*(C`"\*(C'\fR) で囲むとよい。特殊文字はバックスラッシュ
-(\f(CW\*(C`\e\*(C'\fR) でエスケープすることができる。
-.PP
-リストには代入演算子が \f(CW\*(C`\=\*(C'\fR のほかにもう二つある。
-\&\f(CW\*(C`+=\*(C'\fR と \f(CW\*(C`\-=\*(C'\fR である。こうした演算子は、
-それぞれ、リストに付け加えたり、リストから削除したりするのに使用する。
-\&\f(CW\*(C`\-=\*(C'\fR 演算子を使って、
-リストに存在しない要素を消去しようとしても、エラーにはならない。
-.PP
-Defaults 行の解析は、次の順序で行われる。最初に汎用、Host、
-User の Defaults が解析され、それから Runas の Defaults、最後にコマンドの
-Defaults の順番になる。
+気を付けてほしいのは、コマンドに限定した Defaults 行にコマンドライン引き数まで書くことができないことだ。
+引き数を指定する必要がある場合は、Cmnd_Alias を定義して、代わりにそれを参照すればよい。
+.nf
+.sp
+.RS 0n
+Default_Type ::= 'Defaults' |
+                 'Defaults' '@' Host_List |
+                 'Defaults' ':' User_List |
+                 'Defaults' '!' Cmnd_List |
+                 'Defaults' '>' Runas_List
+
+Default_Entry ::= Default_Type Parameter_List
+
+Parameter_List ::= Parameter |
+                   Parameter ',' Parameter_List
+
+Parameter ::= Parameter '=' Value |
+              Parameter '+=' Value |
+              Parameter '\-=' Value |
+              '!'* Parameter
+.RE
+.fi
+.PP
+パラメータは\fBフラグ\fP、\fB整数値\fP、\fB文字列\fP、\fBリスト\fPのどれであってもよい。
+フラグは要するにブーリアン (真偽値) であり、'\&!' 演算子で off にできる。
+整数値、文字列、リストのパラメータにも、真偽値として使用して、
+それを無効にできるものがいくつか存在する。
+パラメータの値が複数の単語を含むときは、
+値をダブルクオート (\&"") で囲むとよい。
+特殊文字はバックスラッシュ ('\e') でエスケープすることができる。
+.PP
+リストには代入演算子が = のほかにもう二つある。+= と \-= である。
+こうした演算子は、それぞれ、リストに付け加えたり、リストから削除したりするのに使用する。
+\-= 演算子を使って、リストに存在しない要素を消去しようとしても、エラーにはならない。
+.PP
+Defaults 行の解析は、次の順序で行われる。まず、汎用、Host、User の Defaults
+が解析され、それから Runas の Defaults、最後にコマンドの Defaults の順番になる。
 .PP
 Defaults 行で使用できるパラメータのリストについては、
 「SUDOERS のオプション」を御覧いただきたい。
 .SS "ユーザ設定 (User Specification)"
-.IX Subsection "User Specification"
-.Vb 2
-\& User_Spec ::= User_List Host_List \*(Aq=\*(Aq Cmnd_Spec_List \e
-\&               (\*(Aq:\*(Aq Host_List \*(Aq=\*(Aq Cmnd_Spec_List)*
-\&
-\& Cmnd_Spec_List ::= Cmnd_Spec |
-\&                    Cmnd_Spec \*(Aq,\*(Aq Cmnd_Spec_List
-\&
-.ie \n(SL \& Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
-.el \& Cmnd_Spec ::= Runas_Spec? Tag_Spec* Cmnd
-\&
-\& Runas_Spec ::= \*(Aq(\*(Aq Runas_List? (\*(Aq:\*(Aq Runas_List)? \*(Aq)\*(Aq
-\&
-.if \n(SL \{\
-\& SELinux_Spec ::= (\*(AqROLE=role\*(Aq | \*(AqTYPE=type\*(Aq)
-\&
-\}
-\& Tag_Spec ::= (\*(AqNOPASSWD:\*(Aq | \*(AqPASSWD:\*(Aq | \*(AqNOEXEC:\*(Aq | \*(AqEXEC:\*(Aq |
-\&               \*(AqSETENV:\*(Aq | \*(AqNOSETENV:\*(Aq | \*(AqLOG_INPUT:\*(Aq | \*(AqNOLOG_INPUT:\*(Aq |
-\&               \*(AqLOG_OUTPUT:\*(Aq | \*(AqNOLOG_OUTPUT:\*(Aq)
-.Ve
-.PP
-\&\fBユーザ設定\fRは、あるユーザが、指定されたホストで (どのユーザに変身して)
-どのコマンドを実行できるかを決定する。デフォルトでは、コマンドは \fBroot\fR
+.nf
+.RS 0n
+User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \e
+              (':' Host_List '=' Cmnd_Spec_List)*
+
+Cmnd_Spec_List ::= Cmnd_Spec |
+                   Cmnd_Spec ',' Cmnd_Spec_List
+
+Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
+
+Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
+
+SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
+
+Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
+              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
+              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
+              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')
+.RE
+.fi
+.PP
+\fBユーザ設定\fPは、あるユーザが、指定されたホストで (どのユーザに変身して)
+どのコマンドを実行できるかを決定する。デフォルトでは、コマンドは \fBroot\fP
 に変身して実行されるが、これはコマンドごとに変更することができる。
 .PP
-ユーザ設定の基本構造は、
-.PP
-.Vb 2
-\&      who     where     = (as_whom)      what 
-\&     [誰が どのホストで = (誰に変身して) 何を]
-.Ve
-.PP
-である。構成部分に分けて説明しよう。
-.SS "Runas_Spec (どのユーザやグループに変身できるか)"
-.IX Subsection "Runas_Spec"
-\&\f(CW\*(C`Runas_Spec\*(C'\fR は変身の対象となるユーザやグループを規定している。
-完全な形の \f(CW\*(C`Runas_Spec\*(C'\fR は、(上で定義しているように)
-コロン (':') で区切られ、
-カッコで囲まれた、二つの \f(CW\*(C`Runas_List\*(C'\fR からなっている。
-一つ目の \f(CW\*(C`Runas_List\*(C'\fR は、\fBsudo\fR で
-\&\fB\-u\fR オプションを使ったときに変身できるユーザを指している。
-二番目の方が規定しているのは、\fBsudo\fR の \fB\-g\fR
-オプションによって指定できるグループのリストだ。
-両方の \f(CW\*(C`Runas_List\*(C'\fR が指定されている場合は、
-それぞれの \f(CW\*(C`Runas_List\*(C'\fR
+ユーザ設定の基本構造は、"who where = (as_whom) what" である
+("誰が どのホストで = (誰に変身して) 何を")。構成部分に分けて説明しよう。
+.SS Runas_Spec
+Runas_Spec は変身の対象となるユーザやグループを規定している。
+完全な形の Runas_Spec は、(上で定義しているように) コロン (':\&') で区切られ、
+カッコで囲まれた、二つの Runas_List からなっている。一つ目の Runas_List は、
+\fBsudo\fP で \fB\-u\fP オプションを使ったときに変身できるユーザを指している。
+二番目の方が規定しているのは、\fBsudo\fP の \fB\-g\fP オプションによって指定できるグループのリストだ。
+両方の Runas_List が指定されている場合は、それぞれの Runas_List
 にリストされているユーザとグループの任意の組み合わせで、
-コマンドを実行することができる。
-一つ目の \f(CW\*(C`Runas_List\*(C'\fR だけが指定されているときは、
+コマンドを実行することができる。一つ目の Runas_List だけが指定されている場合は、
 リスト中のいかなるユーザにでも変身してコマンドを実行できるが、
-\&\fB\-g\fR オプションを指定することはできない。
-一つ目の \f(CW\*(C`Runas_List\*(C'\fR が空で、二番目だけ指定されている場合は、
-\&\fBsudo\fR を実行するユーザの資格で、グループを
-\&\f(CW\*(C`Runas_List\*(C'\fR にリストされている任意のグループに設定して、
-コマンドを実行することができる。
-\&\f(CW\*(C`Runas_Spec\*(C'\fR がまったく指定されていないときは、
-\&\fBroot\fR としてコマンドを実行できるが、グループを指定することはできない。
-.PP
-\&\f(CW\*(C`Runas_Spec\*(C'\fR は、
-それに続くコマンドに対してデフォルトを定める。それはどういうことかと言うと、
-次のようなエントリがあったとしよう。
-.PP
-.Vb 1
-\& dgb    boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
-.Ve
-.PP
-ユーザ \fBdgb\fR は \fI/bin/ls\fR, \fI/bin/kill\fR,
-\&\fI/usr/bin/lprm\fR を実行することができる。ただし、\fBoperator\fR 
-として実行できるだけだ。たとえば、次のようにである。
-.PP
-.Vb 1
-\& $ sudo \-u operator /bin/ls
-.Ve
-.PP
-エントリの後ろの方の \f(CW\*(C`Runas_Spec\*(C'\fR を変更することも可能だ。
-上のエントリをこんなふうに書き変えたとしよう。
+\fB\-g\fP オプションを指定することはできない。一つ目の Runas_List が空で、
+二番目だけ指定されている場合は、\fBsudo\fP を実行するユーザの資格で、
+グループを Runas_List にリストされている任意のグループに設定して、
+コマンドを実行することができる。Runas_Lists が両方とも空の場合は、
+\fBsudo\fP を実行するユーザの資格でしかコマンドを実行できない。
+Runas_Spec がまったく指定されていない場合は、\fBroot\fP としてコマンドを実行できるが、
+グループを指定することはできない。
+.PP
+Runas_Spec は、それに続くコマンドに対してデフォルトを定める。
+それはどういうことかと言うと、次のようなエントリがあったとしよう。
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
+.RE
+.fi
 .PP
-.Vb 1
-\& dgb    boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
-.Ve
+ユーザ \fBdgb\fP は \fI/bin/ls\fP, \fI/bin/kill\fP, \fI/usr/bin/lprm\fP を実行することができる。
+ただし、\fBoperator\fP として実行できるだけだ。たとえば、次のようにである。
+.nf
+.sp
+.RS 0n
+$ sudo \-u operator /bin/ls
+.RE
+.fi
 .PP
-すると、ユーザ \fBdgb\fR は、\fI/bin/ls\fR こそ \fBoperator\fR としてだが、
-\&\fI/bin/kill\fR や \fI/usr/bin/lprm\fR は
-\&\fBroot\fR の資格で実行できるようになる。
+エントリの後ろの方の Runas_Spec を変更することも可能だ。
+上のエントリをこんなふうに書き変えたとしよう。
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
+.RE
+.fi
 .PP
-\&\fBdgb\fR が \f(CW\*(C`/bin/ls\*(C'\fR を実行するとき、
-変身対象ユーザとグループのどちらでも \fBoperator\fR にできるように、
-この記述を拡張することもできる。
+すると、ユーザ \fBdgb\fP は、\fI/bin/ls\fP こそ \fBoperator\fP としてだが、
+\fI/bin/kill\fP や \fI/usr/bin/lprm\fP は \fBroot\fP の資格で実行できるようになる。
 .PP
-.Vb 2
-\& dgb    boulder = (operator : operator) /bin/ls, (root) /bin/kill, \e
-\&        /usr/bin/lprm
-.Ve
+\fBdgb\fP が /bin/ls を実行するとき、変身対象ユーザとグループのどちらでも
+\fBoperator\fP になれるように、この記述を拡張することもできる。
+.nf
+.sp
+.RS 0n
+dgb    boulder = (operator : operator) /bin/ls, (root) /bin/kill,\e
+       /usr/bin/lprm
+.RE
+.fi
 .PP
-注意してほしいが、\f(CW\*(C`Runas_Spec\*(C'\fR のグループの部分は、
+注意してほしいが、Runas_Spec のグループの部分は、
 コマンドをそのグループとして実行することをユーザに許可しているのであって、
-そうすることをユーザに強制しているのではない。コマンドラインで
-グループを指定しない場合は、コマンドは、パスワード・データベースにある
-変身対象ユーザのエントリに登録されているグループとして
-実行されることになるのだ。以下のコマンドはすべて、上記の sudoers
-エントリによって許可されることになるだろう。
-.PP
-.Vb 3
-\& $ sudo \-u operator /bin/ls
-\& $ sudo \-u operator \-g operator /bin/ls
-\& $ sudo \-g operator /bin/ls
-.Ve
-.PP
-次の例では、ユーザ \fBtcm\fR が
-モデムのデバイスファイルにアクセスするコマンドを
-dialer グループとして実行できるようにしている。
-.PP
-.Vb 2
-\& tcm    boulder = (:dialer) /usr/bin/tip, /usr/bin/cu, \e
-\&        /usr/local/bin/minicom
-.Ve
+そうすることをユーザに強制しているのではない。
+コマンドラインでグループを指定しない場合は、コマンドは、
+パスワード・データベースにある変身対象ユーザのエントリに登録されているグループとして実行されることになるのだ。
+以下のコマンドはすべて、上記の sudoers エントリによって許可されることになるだろう。
+.nf
+.sp
+.RS 0n
+$ sudo \-u operator /bin/ls
+$ sudo \-u operator \-g operator /bin/ls
+$ sudo \-g operator /bin/ls
+.RE
+.fi
 .PP
-この例では、グループしか指定できないことに注意してほしい。コマンドは
-ユーザ \fBtcm\fR の資格のまま実行されるのである。たとえば、次のように。
+次の例では、ユーザ \fBtcm\fP がモデムのデバイスファイルにアクセスするコマンドを
+dialer グループとして実行できるようにしている。
+.nf
+.sp
+.RS 0n
+tcm    boulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\e
+       /usr/local/bin/minicom
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-g dialer /usr/bin/cu
-.Ve
+この例では、グループしか指定できないことに注意してほしい。コマンドは、
+ユーザ \fBtcm\fP の資格のまま実行されるのである。たとえば、次のように。
+.nf
+.sp
+.RS 0n
+$ sudo \-g dialer /usr/bin/cu
+.RE
+.fi
 .PP
-\&\f(CW\*(C`Runas_Spec\*(C'\fR には複数のユーザやグループが存在してもよい。
-その場合、ユーザは \fB\-u\fR や \fB\-g\fR オプションを使って、
+Runas_Spec には複数のユーザやグループが存在してもよい。
+その場合、ユーザは \fB\-u\fP や \fB\-g\fP オプションを使って、
 ユーザとグループのどんな組み合わせでも選択することができる。
+.nf
+.sp
+.RS 0n
+alan   ALL = (root, bin : operator, system) ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& alan   ALL = (root, bin : operator, system) ALL
-.Ve
-.PP
-この例では、ユーザ \fBalan\fR は root と bin ユーザのどちらに変身して、
-任意のコマンドを実行することもできる。また、グループを
+この例では、ユーザ \fBalan\fP は root と bin のどちらのユーザにでも変身して、
+任意のコマンドを実行することができる。また、グループを
 operator や system に設定することも自由である。
-.if \n(SL \{\
-.SS "SELinux_Spec"
-.IX Subsection "SELinux_Spec"
-SELinux をサポートするシステムでは、\fIsudoers\fR のエントリで
+.SS SELinux_Spec
+SELinux をサポートするシステムでは、\fIsudoers\fP ファイルのエントリで
 SELinux の role や type をコマンドに関連付けることも可能である。
-コマンドについて指定した role や type は、\fIsudoers\fR 中で
-role や type にデフォルトの値が設定されていても、それよりも優先される。
-もっとも、role や type をコマンドラインで指定すれば、
-そちらが \fIsudoers\fR 中の値よりさらに優先されることになる。
-\}
-.SS "Tag_Spec"
-.IX Subsection "Tag_Spec"
-コマンドは 0 個以上のタグを伴うことができる。使用できるタグの値は 10 個あり、 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR, \f(CW\*(C`PASSWD\*(C'\fR,
-\&\f(CW\*(C`NOEXEC\*(C'\fR, \f(CW\*(C`EXEC\*(C'\fR,
-\&\f(CW\*(C`SETENV\*(C'\fR, \f(CW\*(C`NOSETENV\*(C'\fR,
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR, \f(CW\*(C`NOLOG_INPUT\*(C'\fR,
-\&\f(CW\*(C`LOG_OUTPUT\*(C'\fR, \f(CW\*(C`NOLOG_OUTPUT\*(C'\fR
-が、それである。ある \f(CW\*(C`Cmnd\*(C'\fR にタグをセットすると、
-\&\f(CW\*(C`Cmnd_Spec_List\*(C'\fR 中のそれ以後の 
-\&\f(CW\*(C`Cmnd\*(C'\fR は、反対の意味を持つタグによって変更されないかぎり、
-そのタグを継承することになる (すなわち、\f(CW\*(C`PASSWD\*(C'\fR は 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR を上書きし、\f(CW\*(C`NOEXEC\*(C'\fR は 
-\&\f(CW\*(C`EXEC\*(C'\fR を上書きする)。
-.PP
-\fI\s-1NOPASSWD\s0 と \s-1PASSWD\s0\fR
-.IX Subsection "NOPASSWD and PASSWD"
-.PP
-デフォルトでは、\fBsudo\fR はコマンドを実行する前に、
-ユーザが本人であることを証明するように求める。この振舞いは 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグによって変更することができる。
-\&\f(CW\*(C`Runas_Spec\*(C'\fR と同様、\f(CW\*(C`NOPASSWD\*(C'\fR タグも 
-\&\f(CW\*(C`Cmnd_Spec_List\*(C'\fR 中のそれに続くコマンドに対して
-デフォルトを定める。
-\&\f(CW\*(C`PASSWD\*(C'\fR の働きは反対であり、
-振舞いを元に戻したいときに使える。たとえば、
-.PP
-.Vb 1
-\& ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
-.Ve
-.PP
-とすれば、ユーザ \fBray\fR はマシン rushmore 上で認証をしないでも 
-\&\fBroot\fR として \fI/bin/kill\fR, \fI/bin/ls\fR,
-\&\fI/usr/bin/lprm\fR を実行できるようになる。もし \fBray\fR
-がパスワードなしで実行できるコマンドを \fI/bin/kill\fR だけに絞りたいのなら、
-エントリはこうなるだろう。
-.PP
-.Vb 1
-\& ray    rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
-.Ve
-.PP
-ただし、ユーザが \fIexempt_group\fR オプションで指定されているグループに属する場合は、
-\&\f(CW\*(C`PASSWD\*(C'\fR タグが効果を持たないことに注意してほしい。
-.PP
-デフォルトでは、現在使用中のホストに関するユーザのエントリのうちに 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが指定されているものが一つでもあれば、
-そのユーザはパスワードなしで \f(CW\*(C`sudo \-l\*(C'\fR を実行できる。
-なお、ユーザがパスワードなしで \f(CW\*(C`sudo \-v\*(C'\fR を実行できるのは、
+role や type を特定のコマンドについて指定すると、
+\fIsudoers\fP 中でデフォルトとして設定されている role や type があっても、
+それよりも優先される。もっとも、role や type をコマンドラインで指定すれば、
+そちらが \fIsudoers\fP 中の値よりさらに優先されることになる。
+.SS Tag_Spec
+コマンドは 0 個以上のタグを伴うことができる。使用できるタグの値は 14 個あり、
+EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT,
+NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD, SETENV, NOSETENV が、それである。
+ある Cmnd にタグをセットすると、
+Cmnd_Spec_List 中のそれ以後の Cmnd は、
+反対の意味を持つタグによって変更されないかぎり、そのタグを継承することになる
+(すなわち、PASSWD は NOPASSWD を無効にし、NOEXEC は EXEC を無効にする)。
+.TP  2n
+\fIEXEC\fP と \fINOEXEC\fP
+.sp
+\fBsudo\fP が \fInoexec\fP サポートつきでコンパイルされ、
+使用しているオペレーティングシステムがそれに対応している場合、NOEXEC タグを利用すれば、
+動的にリンクされた実行ファイルが、そこからさらにコマンドを実行するのを防ぐことができる。
+.sp
+次の例では、ユーザ \fBaaron\fP は \fI/usr/bin/more\fP と
+\fI/usr/bin/vi\fP を実行できるが、シェル・エスケープは利用できない。
+.nf
+.sp
+.RS 2n
+aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
+.RE
+.fi
+.RS 2n
+.sp
+NOEXEC がどんなふうに働くのか、お使いのシステムで利用できるかどうか、
+などについてさらに詳しく知りたかったら、
+後述の「シェル・エスケープの防止」セクションを御覧になるとよい。
+.RE
+.TP  2n
+\fIFOLLOW\fP と \fINOFOLLOW\fP
+バージョン 1.8.15 以来、\fBsudoedit\fP は、
+\fIsudoedit_follow\fP オプションが有効になっていないかぎり、
+ファイルがシンボリックリンクならば、それを開かないようになっている。
+\fIFOLLOW\fP と \fINOFOLLOW\fP タグは、\fIsudoedit_follow\fP の値を上書きするので、
+これを使用すれば、シンボリックリンクの編集をコマンドごとに許可したり、
+禁止したりすることができる。
+この二つのタグが効果があるのは、\fIsudoedit\fP コマンドに対してのみであり、
+他のどんなコマンドに対しても無視される。
+.TP  2n
+\fILOG_INPUT\fP と \fINOLOG_INPUT\fP
+.sp
+この二つのタグは \fIlog_input\fP オプションの値をコマンドごとに変更する。
+詳しい情報については、後述する「SUDOERS のオプション」セクションの
+\fIlog_input\fP の説明をご覧になっていただきたい。
+.TP  2n
+\fILOG_OUTPUT\fP と \fINOLOG_OUTPUT\fP
+.sp
+この二つのタグは \fIlog_output\fP オプションの値をコマンドごとに変更する。
+詳しい情報については、後述する「SUDOERS のオプション」セクションの
+\fIlog_output\fP の説明をご覧になっていただきたい。
+.TP  2n
+\fIMAIL\fP と \fINOMAIL\fP
+.sp
+この二つのタグを使えば、
+\fImail_all_cmnds\fP オプションの値をコマンドごとに上書きすることによって、
+ユーザがコマンドを実行したときにメールを送付するかどうかについて、
+きめ細かな制御を行うことができる。
+\fBsudo\fP が \fB\-l\fP や \fB\-v\fP オプションを付けて実行されたときには、効果がない。
+\fINOMAIL\fP は、\fImail_always\fP や \fImail_no_perms\fP オプションも上書きする。
+詳細については、後述の「SUDOERS のオプション」セクションにある
+\fImail_all_cmnds\fP, \fImail_always\fP, \fImail_no_perms\fP の説明をご覧いただきたい。
+.TP  2n
+\fIPASSWD\fP と \fINOPASSWD\fP
+.sp
+デフォルトでは、\fBsudo\fP はコマンドを実行する前に、ユーザが本人であることを証明するように求める。
+この振舞いは NOPASSWD タグによって変更することができる。Runas_Spec と同様、
+NOPASSWD タグも Cmnd_Spec_List 中のそれに続くコマンドに対してデフォルトを定める。
+PASSWD の働きは反対であり、振舞いを元に戻したいときに使える。たとえば、
+.nf
+.sp
+.RS 2n
+ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
+.RE
+.fi
+.RS 2n
+.sp
+とすれば、ユーザ \fBray\fP はマシン rushmore 上で認証をしないでも
+\fBroot\fP として \fI/bin/kill\fP, \fI/bin/ls\fP, \fI/usr/bin/lprm\fP
+を実行できるようになる。もし \fBray\fP がパスワードなしで実行できるコマンドを
+\fI/bin/kill\fP だけに絞りたいのなら、エントリはこうなるだろう。
+.nf
+.sp
+.RS 2n
+ray    rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
+.RE
+.fi
+.sp
+ただし、ユーザが \fIexempt_group\fP オプションで指定されているグループに属する場合は、
+PASSWD タグが効果を持たないことに注意してほしい。
+.sp
+デフォルトでは、現在使用中のホストに関するユーザのエントリのうちに
+NOPASSWD タグが指定されているものが一つでもあれば、
+そのユーザはパスワードなしで "sudo \-l" を実行できる。
+なお、ユーザがパスワードなしで "sudo \-v" を実行できるのは、
 現在使用中のホストに関するそのユーザのエントリのすべてで
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが生きているときのみである。この動作は、
-\&\fIverifypw\fR や \fIlistpw\fR オプションによって変更できる。
-.PP
-\fI\s-1NOEXEC\s0 と \s-1EXEC\s0\fR
-.IX Subsection "NOEXEC and EXEC"
-.PP
-\&\fBsudo\fR が \fInoexec\fR サポートつきでコンパイルされ、
-使用しているオペレーティングシステムがそれに対応している場合、
-\&\f(CW\*(C`NOEXEC\*(C'\fR タグを利用すれば、動的にリンクされた実行ファイルが
-そこからさらにコマンドを実行するのを防ぐことができる。
+NOPASSWD タグが生きているときのみである。この動作は、\fIverifypw\fP や \fIlistpw\fP
+オプションによって変更できる。
+.RE
+.TP  2n
+\fISETENV\fP と \fINOSETENV\fP
+.sp
+上記のタグは \fIsetenv\fP オプションの値をコマンドごとに変更する。
+あるコマンドに対して SETENV を設定すると、
+ユーザがコマンドラインから \fB\-E\fP オプションを使用して、
+\fIenv_reset\fP オプションを無効にできるようになることに注意してほしい。
+それだけではない。コマンドラインから設定する環境変数が \fIenv_check\fP,
+\fIenv_delete\fP, \fIenv_keep\fP による規制を受けないようにもなる。
+それ故、こうした形で環境変数を設定することを許可するのは、
+信用できるユーザだけに限るべきである。なお、マッチするコマンドが
+\fBALL\fP だった場合は、暗黙のうちに SETENVタグがそのコマンドに付けられるが、
+このデフォルトの動作は UNSETENV タグを使えば打ち消すことができる。
+.SS ワイルドカード
+\fIsudoers\fP ファイルでは、ホスト名、コマンドのパス名、
+コマンドライン引き数にシェル形式のワイルドカード (メタ文字とか
+glob キャラクタとも言う) が使用できる。ワイルドカードのマッチングは、
+IEEE Std 1003.1 ("POSIX.1") で規定されている glob(3) や fnmatch(3)
+関数を用いて行われる。
+.TP  10n
+*
+0 個以上の任意の文字 (ホワイトスペースも含む) にマッチする。
+.TP  10n
+\&?
+任意の 1 文字 (ホワイトスペースも含む) にマッチする。
+.TP  10n
+[...]
+指定された範囲の任意の 1 文字にマッチする。
+.TP  10n
+[!...]
+指定された範囲\fI以外\fPの任意の 1 文字にマッチする。
+.TP  10n
+\ex
+\&'x' がどんな文字であっても、'x' そのものとして評価する。
+この表記法は '*', '\&?', '[\&', ']\&'
+といった特殊文字をエスケープするために使用される。
 .PP
-次の例では、ユーザ \fBaaron\fR は \fI/usr/bin/more\fR と 
-\&\fI/usr/bin/vi\fR を実行できるが、シェル・エスケープは利用できない。
+\fB上記のものは正規表現ではないことに注意していただきたい。\fP
+正規表現とは違って、範囲内の文字一つ以上にマッチさせる方法は存在しない。
 .PP
-.Vb 1
-\& aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-.Ve
+使用しているシステムの glob(3) や fnmatch(3) 関数が文字クラスに対応しているなら、
+文字クラスが使用できる。ただし、':\&' 文字は、
+\fIsudoers\fP で特別な意味を持っているので、エスケープしなければならない。
+一例を上げる。
+.nf
+.sp
+.RS 4n
+/bin/ls [[\e:\&alpha\e:\&]]*
+.RE
+.fi
 .PP
-\&\f(CW\*(C`NOEXEC\*(C'\fR がどんなふうに働くのか、お使いのシステムで利用できるかどうか、
-などについてさらに詳しく知りたかったら、
-「シェル・エスケープを防止する」のセクションを御覧になるとよい。
+\fIsudoers\fP 中で上のように書けば、アルファベットの文字で始まるどんなファイル名にもマッチするだろう。
 .PP
-\fI\s-1SETENV\s0 と \s-1NOSETENV\s0\fR
-.IX Subsection "SETENV and NOSETENV"
+コマンドのファイル名の部分で使われたワイルドカードはフォワードスラッシュ
+('/') に\fIマッチしない\fPことに注意していただきたい。そこで、次のようなパスは、
+.nf
+.sp
+.RS 4n
+/usr/bin/*
+.RE
+.fi
 .PP
-上記のタグは \fIsetenv\fR オプションの値をコマンドごとに変更する。
-あるコマンドに対して \f(CW\*(C`SETENV\*(C'\fR を設定すると、
-ユーザがコマンドラインから \fB\-E\fR オプションを使用して、
-\fIenv_reset\fR オプションを無効にできるようになることに注意してほしい。
-それだけではない。コマンドラインから設定する環境変数が \fIenv_check\fR,
-\&\fIenv_delete\fR, \fIenv_keep\fR による規制を受けないようにもなる。
-それ故、こうした形で環境変数を設定することを許可するのは、
-信用できるユーザだけに限るべきである。なお、マッチするコマンドが
-\&\fB\s-1ALL\s0\fR だった場合は、暗黙のうちに \f(CW\*(C`SETENV\*(C'\fR
-タグがそのコマンドに付けられるが、このデフォルトの動作は
-\&\f(CW\*(C`UNSETENV\*(C'\fR タグを使えば打ち消すことができる。
+\fI/usr/bin/who\fP にマッチするが、\fI/usr/bin/X11/xterm\fP にはマッチしない。
 .PP
-\fI\s-1LOG_INPUT\s0 と \s-1NOLOG_INPUT\s0\fR
-.IX Subsection "LOG_INPUT and NOLOG_INPUT"
+だが、コマンドライン引き数の部分のマッチングでは、
+ワイルドカードはスラッシュに\fIしっかりマッチする\fP。
+コマンドライン引き数には、任意の文字列を含むことが認められており、
+パス名しか許されていないわけではないからだ。
 .PP
-この二つのタグは \fIlog_input\fR オプションの値をコマンドごとに変更する。
-詳しい情報については、後述する「SUDOERS のオプション」セクションの
-\&\fIlog_input\fR の説明をご覧になっていただきたい。
+\fIsudoers\fP \fB中でコマンドライン引き数にワイルドカードを使用するときは、\fP
+\fB注意しなければならない。\fP
+.br
+コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行う。
+そのため、'\&?' や '*' といったワイルドカード文字が、
+ユーザが指定したコマンドライン引き数と、
+単語の境界をまたいでマッチしてしまうことになるのだ。
+これは想定外のことかもしれない。たとえば、\fIsudoers\fP に次のような行があると、
+.nf
+.sp
+.RS 4n
+%operator ALL = /bin/cat /var/log/messages*
+.RE
+.fi
 .PP
-\fI\s-1LOG_OUTPUT\s0 と \s-1NOLOG_OUTPUT\s0\fR
-.IX Subsection "LOG_OUTPUT and NOLOG_OUTPUT"
+以下のコマンドが実行できることになるが、
+.nf
+.sp
+.RS 4n
+$ sudo cat /var/log/messages.1
+.RE
+.fi
 .PP
-この二つのタグは \fIlog_output\fR オプションの値をコマンドごとに変更する。
-詳しい情報については、後述する「SUDOERS のオプション」セクションの
-\&\fIlog_output\fR の説明をご覧になっていただきたい。
-.SS "ワイルドカード"
-.IX Subsection "Wildcards"
-\&\fIsudoers\fR ファイルでは、ホスト名、コマンドラインのパス名、
-コマンドラインの引き数にシェル形式のワイルドカード (メタ文字とか
-glob キャラクタとも言う) が使用できる。ワイルドカードのマッチングは
-\&\fB\s-1POSIX\s0\fR の \fIglob\fR\|(3) と \fIfnmatch\fR\|(3)
-ルーティンを用いて行われる。
-\&\fB以下のものは正規表現ではない\fRことに注意してほしい。
-.ie n .IP "\*(C`*\*(C'" 8
-.el .IP "\f(CW\*(C`*\*(C'\fR" 8
-.IX Item "*"
-ゼロ個以上の任意の文字にマッチする。
-.ie n .IP "\*(C`?\*(C'" 8
-.el .IP "\f(CW\*(C`?\*(C'\fR" 8
-.IX Item "?"
-任意の一文字にマッチする。
-.ie n .IP "\*(C`[...]\*(C'" 8
-.el .IP "\f(CW\*(C`[...]\*(C'\fR" 8
-.IX Item "[...]"
-指定された範囲の任意の一文字にマッチする。
-.ie n .IP "\*(C`[!...]\*(C'" 8
-.el .IP "\f(CW\*(C`[!...]\*(C'\fR" 8
-.IX Item "[!...]"
-指定された範囲\fB以外\fRの任意の一文字にマッチする。
-.ie n .IP "\*(C`\ex\*(C'" 8
-.el .IP "\f(CW\*(C`\ex\*(C'\fR" 8
-.IX Item "x"
-\&\*(L"x\*(R" がどんな文字であっても、\*(L"x\*(R" そのものとして評価する。
-この表記法は \*(L"*\*(R", \*(L"?\*(R", \*(L"[\*(R", \*(L"}\*(R"
-といった特殊文字をエスケープするために使用される。
+また、以下のコマンドの実行も可能になってしまう。
+.nf
+.sp
+.RS 4n
+$ sudo cat /var/log/messages /etc/shadow
+.RE
+.fi
 .PP
-使用システムの \fIglob\fR\|(3) や \fIfnmatch\fR\|(3) 関数が
-\&\s-1POSIX\s0 の文字クラスに対応しているなら、文字クラスも使用できる。
-ただし、\f(CW\*(Aq:\*(Aq\fR 文字は、
-\&\fIsudoers\fR で特別な意味を持っているので、エスケープしなければならない。
-一例を上げると、
-.PP
-.Vb 1
-\&    /bin/ls [[\e:alpha\e:]]*
-.Ve
-.PP
-上記は、文字で始まるどんなファイル名にもマッチするだろう。
-.PP
-コマンドのパス名に使われたワイルドカードはフォワードスラッシュ ('/') 
-に\fBマッチしない\fRことに注意してほしい。
-だが、コマンドライン引き数とのマッチングでは、
-ワイルドカードはスラッシュと\fBしっかりマッチする\fR。そこで、
-.PP
-.Vb 1
-\&    /usr/bin/*
-.Ve
-.PP
-というコマンドパスは、\fI/usr/bin/who\fR とマッチするが、
-\&\fI/usr/bin/X11/xterm\fR とはマッチしないことになる。
-.SS "ワイルドカード・ルールの例外"
-.IX Subsection "Exceptions to wildcard rules"
-上記ルールには次の例外がある。
-.ie n .IP """""" 8
-.el .IP "\f(CW``''\fR" 8
-.IX Item """"""
-\&\fIsudoers\fR ファイルのエントリにおいて、空文字列 \f(CW""\fR
+後者は、おそらく意図に反しているだろう。たいていの場合、
+コマンドラインの処理は、\fIsudoers\fP ファイルの中ではなく、
+スクリプト言語中で行った方が間違いがない。
+.SS ワイルドカード・ルールの例外
+上記ルールには以下の例外がある。
+.TP  10n
+\&""
+\fIsudoers\fP ファイルのエントリにおいて、空文字列 \&""
 が唯一のコマンドライン引き数だった場合は、
-そのコマンドは引数を\fB付けずに\fR実行しなければならないことを意味する。
+そのコマンドは引き数を\fI付けずに\fP実行しなければならないことを意味している。
+.TP  10n
+sudoedit
+組み込みコマンド \fIsudoedit\fP にコマンドラインで渡す引き数は、
+常にパス名であるはずだ。そこで、ワイルドカードはフォワードスラッシュ
+('/') にマッチしないようになっている
+(訳注: \fIsudoers\fP 中で \fIsudoedit\fP に対して引き数を指定する場合、
+それは一般のコマンドライン引き数と同じ扱いではなく、パス名扱いになるということ)。
 .SS "sudoers に他のファイルをインクルードする"
-.IX Subsection "Including other files from within sudoers"
-\&\f(CW\*(C`#include\*(C'\fR 命令や \f(CW\*(C`#includedir\*(C'\fR
-命令を使えば、現在解析中の \fIsudoers\fR ファイルに、外部にあるほかの
-\&\fIsudoers\fR ファイルをインクルードすることができる。
-.PP
-この方法を使えば、たとえば、
-サイト全体で使用する \fIsudoers\fR ファイルのほかに、
-マシンごとのローカルな \fIsudoers\fR ファイルを持つことができる。
-ここでは、サイト全体の \fIsudoers\fR を \fI/etc/sudoers\fR とし、
-マシンごとの方は \fI/etc/sudoers.local\fR とすることにしよう。
-\&\fI/etc/sudoers\fR に \fI/etc/sudoers.local\fR をインクルードするには、
-\&\fI/etc/sudoers\fR 中に次の行を書き込む。
-.Sp
-.RS 4
-\&\f(CW\*(C`#include /etc/sudoers.local\*(C'\fR
-.RE
-.PP
-\&\fBsudo\fR は解析中この行に出会うと、カレントファイル
-(\fI/etc/sudoers\fR だ) の処理を一時中止し、処理の対象を
-\&\fI/etc/sudoers.local\fR に切り替える。そして、
-\&\fI/etc/sudoers.local\fR の末尾まで達したら、\fI/etc/sudoers\fR
-の残りを処理するのだ。
-インクルードされたファイルがさらに他のファイルをインクルードしてもよい。
-インクルートのネストには 128 ファイルまでというハード・リミットがあって、
+#include 命令や #includedir 命令を使えば、現在解析中の \fIsudoers\fP ファイルに、
+外部にあるほかの \fIsudoers\fP ファイルをインクルードすることができる。
+.PP
+この方法を使えば、たとえば、サイト全体で使用する \fIsudoers\fP ファイルのほかに、
+マシンごとのローカルな \fIsudoers\fP ファイルを持つことができる。
+ここでは、サイト全体の \fIsudoers\fP ファイルを \fI/etc/sudoers\fP とし、
+マシンごとの方は \fI/etc/sudoers.local\fP とすることにしよう。
+\fI/etc/sudoers\fP に \fI/etc/sudoers.local\fP をインクルードするには、
+\fI/etc/sudoers\fP 中に次の行を書き込めばよい。
+.nf
+.sp
+.RS 4n
+#include /etc/sudoers.local
+.RE
+.fi
+.PP
+\fBsudo\fP は解析中この行に出会うと、カレントファイル (\fI/etc/sudoers\fP だ)
+の処理を一時中止して、処理の対象を \fI/etc/sudoers.local\fP に切り替える。
+そして、\fI/etc/sudoers.local\fP の末尾まで達したら、\fI/etc/sudoers\fP の残りを処理するのである。
+インクルードされるファイルが、さらに他のファイルをインクルードしていてもよい。
+インクルートのネストには、128 ファイルまでというハード・リミットがあって、
 インクルードファイルのループが起きないようになっている。
 .PP
 インクルードファイルのパスが絶対パスでない場合は (すなわち、パスが
-\&\fI/\fR で始まっていない場合は)、インクルードする側の sudoers
+\&'/' で始まっていない場合は)、インクルードする側の sudoers
 ファイルと同じディレクトリに、インクルードされるファイルも存在しなければならない。
-たとえば、
-\&\fI/etc/sudoers\fR に次のような行があったら、
-.Sp
-.RS 4
-\&\f(CW\*(C`#include sudoers.local\*(C'\fR
+たとえば、\fI/etc/sudoers\fP に次のような行があったら、
+.nf
+.sp
+.RS 4n
+#include sudoers.local
 .RE
+.fi
 .PP
-インクルードされるファイルは、\fI/etc/sudoers.local\fR である。
-(訳注: インクルードファイルのディレクトリ部分を省略できるのは、
-sudo-1.8.4 以上である。sudo-1.8.3 以前では、絶対パスで指定しなければならない。) 
+インクルードされるファイルは、\fI/etc/sudoers.local\fP である。
 .PP
-なお、ファイル名には \f(CW%h\fR エスケープが使える。
\81\93ã\82\8cã\81¯ã\83\9bã\82¹ã\83\88å\90\8dã\81®ç\9f­ç¸®å½¢ã\82\92示ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
-たとえば、マシンのホスト名が \*(L"xerxes\*(R" のとき、
-.Sp
-.RS 4
-\&\f(CW\*(C`#include /etc/sudoers.%h\*(C'\fR
+なお、ファイル名には %h エスケープが使える。これはホスト名の短縮形を示している。
\81\9fã\81¨ã\81\88ã\81°ã\80\81ã\83\9eã\82·ã\83³ã\81®ã\83\9bã\82¹ã\83\88å\90\8dã\81\8c "xerxes" ã\81®ã\81¨ã\81\8dã\80\81
+.nf
+.sp
+.RS 4n
+#include /etc/sudoers.%h
 .RE
+.fi
 .PP
-と書けば、\fBsudo\fR はファイル \fI/etc/sudoers.xerxes\fR
+と書けば、\fBsudo\fP はファイル \fI/etc/sudoers.xerxes\fP
 をインクルードすることになる。
 .PP
-\&\f(CW\*(C`#includedir\*(C'\fR 命令を使えば、
-\&\fIsudo.d\fR ディレクトリを作っておいて、
-システムのパッケージ管理者がパッケージをインストールする際に
-\&\fIsudoers\fR のルールを記したファイルをそこに入れてやる、
-といったことが可能になる。たとえば、
-次のように書くと、
-.Sp
-.RS 4
-\&\f(CW\*(C`#includedir /etc/sudoers.d\*(C'\fR
+#includedir 命令を使えば、\fIsudoers.d\fP ディレクトリを作っておいて、
+システムのパッケージ管理者がパッケージをインストールする際に \fIsudoers\fP
+のルールを記したファイルをそこに入れてやる、といったことが可能になる。
+たとえば、次のように書くと、
+.nf
+.sp
+.RS 4n
+#includedir /etc/sudoers.d
 .RE
+.fi
 .PP
-\&\fBsudo\fR は \fI/etc/sudoers.d\fR にあるファイルを一つづつ読み込む。
-ただし、末尾が \f(CW\*(C`~\*(C'\fR だったり、
-\&\f(CW\*(C`.\*(C'\fR 文字を含んでいたりするファイル名はスキップするが、
+\fBsudo\fP は \fI/etc/sudoers.d\fP にあるファイルを一つづつ読み込む。
+ただし、末尾が '~' だったり、'.\&' 文字を含んでいたりするファイル名はスキップするが、
 これは、パッケージマネージャやエディタが作った、
 テンポラリファイルやバックアップファイルを読み込むような問題を起こさないためである。
-ファイルは辞書順にソートされて、解析される。
-すなわち、\fI/etc/sudoers.d/01_first\fR は \fI/etc/sudoers.d/10_second\fR
-より前に解析されるということだ。ソートは辞書順であって、数値の順ではないので、
-\&\fI/etc/sudoers.d/1_whoops\fR というファイルがあっても、
-\&\fI/etc/sudoers.d/10_second\fR
-\&\fBより後で\fRロードされることに注意してほしい。
+ファイルは辞書順にソートされて、解析される。すなわち、\fI/etc/sudoers.d/01_first\fP は
+\fI/etc/sudoers.d/10_second\fP より前に解析されるということだ。
+ソートは辞書順であって、数値の順ではないので、
+\fI/etc/sudoers.d/1_whoops\fP というファイルがあっても、
+\fI/etc/sudoers.d/10_second\fP \fIより後で\fPロードされることに注意していただきたい。
 ファイル名の先頭を 0 で埋めて数字の桁を揃えれば、
 こうした問題を回避することができる。
 .PP
-気を付けてほしいが、
-\&\f(CW\*(C`#include\*(C'\fR でインクルードされたファイルとは違って
-(訳注: \fBvisudo\fR は \fI/etc/sudoers\fR を編集するとき、
-\&\f(CW\*(C`#include\*(C'\fR で指定したファイルがあれば、続けてそれも編集する)、
-\&\fBvisudo\fR が \f(CW\*(C`#includedir\*(C'\fR
-で指定したディレクトリのファイルまで編集するのは、
+気をつけていただきたいが、#include でインクルードされたファイルとは違って
+(訳注: \fBvisudo\fP は \fI/etc/sudoers\fP を編集するとき、#include
+で指定したファイルがあれば、続けてそれも編集する)、
+\fBvisudo\fP が #includedir で指定したディレクトリのファイルまで編集するのは、
 シンタクスエラーを含むものがあるときだけである。
-とは言え、\fBvisudo\fR を \f(CW\*(C`\-f\*(C'\fR オプション付きで実行して、
-ディレクトリ中のファイルを直接編集することは可能だ。
-.SS "ほかの特殊文字と予約語"
-.IX Subsection "Other special characters and reserved words"
+とは言え、\fBvisudo\fP を \fB\-f\fP オプション付きで実行して、
+ディレクトリ中のファイルを直接編集することは可能だが、その場合は、
+他のファイルで定義されているエイリアスが再定義されていても、
+それを見つけて指摘してくれることはない。
+.SS ほかの特殊文字と予約語
 パウンド記号 ('#') はコメントを示すのに使用される
 (例外は、#include 命令の一部であるときや、ユーザ名に関連して現れ、
 その後に一個以上の数字が続くときであり、後者の場合は uid と見なされる)。
 コメント記号とそれに続くテキストは、行末にいたるまで無視される。
 .PP
-予約語 \fB\s-1ALL\s0\fR は組込みのエイリアスであり、何に対してでもマッチする。
-\&\fB\s-1ALL\s0\fR は、\f(CW\*(C`Cmnd_Alias\*(C'\fR,
-\&\f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR,
-\&\f(CW\*(C`Host_Alias\*(C'\fR を代わりに使えるところなら、
-どこでも使用できる。\fB\s-1ALL\s0\fR
-という名前のエイリアスを自分で定義しようとしてはいけない。
+予約語 \fBALL\fP は組込みのエイリアスであり、何に対してでもマッチする。
+\fBALL\fP は、Cmnd_Alias, User_Alias, Runas_Alias, Host_Alias
+を代わりに使えるところなら、どこでも使用できる。
+\fBALL\fP という名前のエイリアスを自分で定義しようとしてはいけない。
 組込みのエイリアスの方が、自分で作ったエイリアスより優先して使われるからだ。
-\&\fB\s-1ALL\s0\fR の使用には危険が伴うことがあるのを忘れないでいただきたい。
-なぜなら、\fB\s-1ALL\s0\fR をコマンドに関して使うと、
-ユーザにシステム上の\fBどんな\fRコマンドでも実行することを許してしまうからである。
-.PP
-エクスクラメーションマーク ('!') は、エイリアスでも 
-\&\f(CW\*(C`Cmnd\*(C'\fR の前でも論理 \fInot\fR 演算子として使用できる。
-これによってある値を除外することが可能だ。しかしながら、
-組込みエイリアス \f(CW\*(C`ALL\*(C'\fR と \f(CW\*(C`!\*(C'\fR
-を組み合わせて、「二三のコマンド以外のすべての」コマンドの実行を
-あるユーザに許可しようとしても、
-思いどおりの動きになることはめったにないことに気を付けてほしい
+\fBALL\fP の使用には危険が伴うことがあるのを忘れないでいただきたい。
+なぜなら、\fBALL\fP をコマンドに関して使うと、
+ユーザにシステム上の\fIどんな\fPコマンドでも実行することを許してしまうからである。
+.PP
+エクスクラメーションマーク ('\&!') は、リストやエイリアス中はもちろん、
+Cmnd の前でも論理 \fInot\fP 演算子として使用することができる。
+これによってある値を除外することが可能になるわけだ。
+ただし、'\&!' 演算子が効果を持つためには、
+そこから除外する対象が存在しなければならない。
+たとえば、root 以外のすべてのユーザにマッチさせたい場合は、
+次の表現を使用する。
+.nf
+.sp
+.RS 4n
+ALL,!root
+.RE
+.fi
+.PP
+次のように \fBALL\fP の記述を省くと、
+.nf
+.sp
+.RS 4n
+!root
+.RE
+.fi
+.PP
+確かに root を明示的に否定することにはなるが、
+他のどんなユーザともマッチすることがない。
+この点が、正真の「否定」演算子とは違っている。
+.PP
+とは言え、組込みエイリアス \fBALL\fP と '\&!' を組み合わせて、
+「二三のコマンド以外のすべての」コマンドの実行をあるユーザに許可しようとしても、
+意図どおりの動きになることはめったにないことに気をつけていただきたい
 (下記の「セキュリティに関する注意点」を参照)。
 .PP
-長い行は、行末にバックスラッシュ ('\e') を置けば、継続することができる。
+長い行は、行末にバックスラッシュ '\e' を置けば、継続することができる。
 .PP
-リストにおける要素間やユーザ設定における構文用特殊文字 
-('=', ':', '(', ')') の前後に空白文字 (whitespace)を入れることは、
-任意である。
+リストにおける要素間やユーザ設定における構文用特殊文字 ('=\&', ':\&',
+\&'(\&', ')\&') の前後に空白 (white space) を入れることは、任意である。
 .PP
 次の文字を単語 (ユーザ名とかホスト名とか) の一部として使うときは、
 バックスラッシュ ('\e') でエスケープしなければならない。
-\&'!', '=', ':', ',', '(', ')', '\e' がそれである。
+\&'\&!', '=\&', ':\&', ',\&', '(\&', ')\&', '\e' がそれである。
 .SH "SUDOERS のオプション"
-.IX Header "SUDOERS OPTIONS"
-すでに説明したように、\fBsudo\fR の動作は 
-\&\f(CW\*(C`Default_Entry\*(C'\fR 行によって変更することができる。
+すでに説明したように、\fBsudo\fP の動作は Default_Entry 行によって変更することができる。
 Defaults に与えることのできるパラメータについて、
 サポートされているもののすべてを、タイプ別にまとめて以下に列挙する。
 .PP
-\&\fBフラグ (真偽値)\fR:
-.IP "always_set_home" 16
-.IX Item "always_set_home"
-これを有効にすると、\fBsudo\fR は環境変数 \f(CW\*(C`HOME\*(C'\fR
-を変身対象ユーザの (\fB\-u\fR オプションが使用されないかぎり、root である)
-ホームディレクトリに設定する。事実上、暗黙のうちに
-\&\fBsudo\fR に \fB\-H\fR オプションが常に指定されることになるわけだ。
-気をつけてほしいのは、\fIenv_reset\fR オプションが有効になっている場合、
-\&\f(CW\*(C`HOME\*(C'\fR の値は (訳注: 変身対象ユーザのホームディレクトリに)
-すでに設定済みだということだ。だから、
-\&\fIalways_set_home\fR の指定に効果があるのは、
-\&\fIenv_reset\fR を無効に設定している場合か、
-\&\fIenv_keep\fR のリストに \f(CW\*(C`HOME\*(C'\fR が存在する場合のみである。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "authenticate" 16
-.IX Item "authenticate"
+\fBブーリアン・フラグ\fP (真偽値)
+.TP  18n
+always_query_group_plugin
+\fIgroup_plugin\fP の設定がなされている場合に、
+%group の形式のグループを解決するのに、
+同名のシステム・グループが同時に存在しないかぎり、
+指定された \fIgroup_plugin\fP を使用する。
+\fIalways_query_group_plugin\fP が設定されていない通常の状態では、
+%:group の形式のグループのみが \fIgroup_plugin\fP に渡されるのである。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+always_set_home
+これを有効にすると、\fBsudo\fP は環境変数 HOME を変身対象ユーザの
+(\fB\-u\fP オプションが使用されていないかぎり、root の)
+ホームディレクトリに設定することになる。事実上、
+暗黙のうちに \fBsudo\fP に \fB\-H\fP オプションが常に指定されることになるわけだ。
+気をつけていただきたいが、デフォルトでは、
+\fIenv_reset\fP オプションが有効になっている場合は、
+HOME の値は、変身対象ユーザのホームディレクトリに設定されることになる。
+だから、\fIalways_set_home\fP
+の指定に効果があるのは、\fIenv_reset\fP を無効に設定している場合か、
+\fIenv_keep\fP のリストに HOME が存在する場合だけである。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+authenticate
 これをセットすると、ユーザはコマンドの実行を許可される前に、パスワードで
 (あるいは、ほかの認証方法で) 自分が本人であることを証明しなければならなくなる。
-このデフォルト値は
-\&\f(CW\*(C`PASSWD\*(C'\fR や \f(CW\*(C`NOPASSWD\*(C'\fR タグで変更できる。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "closefrom_override" 16
-.IX Item "closefrom_override"
-これをセットすると、ユーザが \fBsudo\fR の \fB\-C\fR
-オプションを使用できるようになる。\fB\-C\fR オプションというのは、
-\&\fBsudo\fR が開いているファイルを閉じていくとき、
-どのファイル・ディスクリプタから閉じていくかという、
-デフォルトの始点を変更するものだ。このフラグはデフォルトでは \fIoff\fR である。
-.IP "compress_io" 16
-.IX Item "compress_io"
-これをセットすると、
-\&\fBsudo\fR がコマンドの入出力のログを取るように設定されている場合に、
-入出力のログを \fBzlib\fR を使って、圧縮することになる。
-\&\fBsudo\fR が \fBzlib\fR をサポートするようにコンパイルされている場合、
-このフラグはデフォルトで \fIon\fR である。
-.IP "env_editor" 16
-.IX Item "env_editor"
+このデフォルト値は PASSWD や NOPASSWD タグで変更できる。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+closefrom_override
+これをセットすると、ユーザが \fBsudo\fP の \fB\-C\fP
+オプションを使用できるようになる。\fB\-C\fP オプションというのは、
+\fBsudo\fP が開いているファイル・ディスクリプタを閉じていくとき、
+どのディスクリプタから閉じていくかという、デフォルトの始点を変更するものだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+compress_io
 これをセットすると、
-\&\fBvisudo\fR はデフォルトのエディタ・リストを利用する前に、
-環境変数 \s-1EDITOR\s0 や \s-1VISUAL\s0 の値を使用するようになる。
-これがセキュリティホールになりかねないことに注意してほしい。
+\fBsudo\fP がコマンドの入出力のログを取るように設定されている場合に、
+入出力のログを \fBzlib\fP を使って、圧縮することになる。
+\fBsudo\fP が \fBzlib\fP をサポートするようにコンパイルされている場合、
+このフラグのデフォルトは \fIon\fP である。
+.TP  18n
+exec_background
+デフォルトでは、\fBsudo\fP 自体がフォアグラウンドで実行されているかぎり、
+コマンドは \fBsudo\fP によってフォアグラウンド・プロセスとして実行される。それに対して、
+\fIexec_background\fP フラグが有効になっている場合は、
+コマンドが (入出力ロギングや \fIuse_pty\fP フラグのために) pty で実行されていると、
+そのコマンドはバックグラウンド・プロセスとして実行されることになる。
+このとき、そのコマンドが制御ターミナルから読み込みを行おうとすると
+(あるいは、ターミナルの設定を変更しようとすると)、
+コマンドは SIGTTIN シグナル (ターミナル設定の場合は SIGTTOU シグナル)
+によってサスペンドされる。そうしたことが起きても、
+\fBsudo\fP がフォアグラウンド・プロセスならば、
+そのコマンドは制御ターミナルの使用を許可され、
+ユーザが何の操作をしないでも、フォアグラウンドで実行が再開される。
+コマンドの実行をバックグラウンドで始めることの利点は、
+そうすれば、コマンドが明示的に要求しないかぎり、
+\fBsudo\fP はターミナルから読み込みを行う必要がないということである。
+そうしない場合は、コマンドが入力を要求しているか否かに関わりなく、
+いかなる入力もコマンドに渡さなければならないのだ
+(カーネルがターミナルのバッファリングをしているので、
+コマンドが本当にその入力を必要としているかどうかを、
+判断することはできないのである)。
+この動作は、従来の \fIsudo\fP の動作とは異なっている。
+また、コマンドが pty で実行されていないときの動作とも異なっている。
+.sp
+この動作がシームレスに行われるためには、オペレーティングシステムが、
+システムコールの自動的な再スタートをサポートしていなければならない。
+残念なことに、すべてのオペレーティングシステムが、
+デフォルトでそれを行ってくれるわけではなく、
+それを行ってくれるオペレーティングシステムにも、バグがあることがある。たとえば、
+Mac OS X は、\fBtcgetattr\fP() や \fBtcsetattr\fP() システムコールの再スタートに失敗する
+(これは Mac OS X のバグである)。それだけではなく、この動作は、
+コマンドが SIGTTIN や SIGTTOU シグナルで停止することを当てにしているので、
+そうしたシグナルは捕獲し、別のシグナル (たいていは SIGSTOP)
+で自分を停止させるプログラムは、自動的にフォアグラウンド化できない。
+linux の su(1) コマンドの動作が、系統によっては、そんなふうになっている。
+このフラグはデフォルトでは \fIoff\fP である。
+.sp
+この設定は、バージョン 1.8.7 以上でのみサポートされている。
+また、入出力ロギングが有効になっている場合や、
+\fIuse_pty\fP フラグが有効になっている場合以外、この設定には効果がない。
+.TP  18n
+env_editor
+これをセットすると、\fBvisudo\fP はデフォルトのエディタ・リストを利用する前に、
+環境変数 EDITOR や VISUAL の値を使用するようになる。
+それがセキュリティホールになりかねないことに注意していただきたい。
 ユーザが root として任意のコマンドを、
 ログに記録されることなく実行できるようになるからだ。
-こうした環境変数を利用するときの、
-\&\fIenv_editor\fR を有効にするよりも安全な方法は、
-\&\fIsudoers\fR ファイルの \f(CW\*(C`editor\*(C'\fR オプションに
-コロンで区切ったエディタのリストを書いておくことだ。そうすれば、
-\&\fBvisudo\fR が \s-1EDITOR\s0 や \s-1VISUAL\s0 を使うのは、それが
-\&\f(CW\*(C`editor\*(C'\fR オプションに指定した値とマッチしたときだけになる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "env_reset" 16
-.IX Item "env_reset"
-これをセットすると、\fBsudo\fR は最小限の環境でコマンドを実行することになる。
-その環境には、以下の変数が含まれる。すなわち、
-\&\f(CW\*(C`TERM\*(C'\fR, \f(CW\*(C`PATH\*(C'\fR, \f(CW\*(C`HOME\*(C'\fR,
-\&\f(CW\*(C`MAIL\*(C'\fR, \f(CW\*(C`SHELL\*(C'\fR, \f(CW\*(C`LOGNAME\*(C'\fR,
-\&\f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR、
-及び \f(CW\*(C`SUDO_*\*(C'\fR という変数。
-これに、\fBsudo\fR を起動するユーザの環境にある変数のうち、
-\&\f(CW\*(C`env_keep\*(C'\fR や \f(CW\*(C`env_check\*(C'\fR
-のリストにマッチするものが加わり、さらに、
-\&\fIenv_file\fR オプションによって指定されたファイルがあれば、
+こうした環境変数を利用するときの、\fIenv_editor\fP を有効にするよりも安全な方法は、
+\fIsudoers\fP ファイルの \fIeditor\fP オプションにコロンで区切ったエディタのリストを書いておくことだ。そうすれば、
+\fBvisudo\fP が EDITOR や VISUAL を使うのは、それが \fIeditor\fP
+オプションに指定した値とマッチしたときだけになる。
+\fIenv_reset\fP フラグが有効な場合に、\fBsudo\fP 経由で \fBvisudo\fP を起動したとき
+\fIenv_editor\fP フラグが効果を持つためには、
+環境変数 EDITOR や VISUAL が \fIenv_keep\fP のリストに存在していなければならない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+env_reset
+これをセットすると、\fBsudo\fP は最小限の環境でコマンドを実行することになる。
+その環境には、以下の変数が含まれている。TERM, PATH, HOME,
+MAIL, SHELL, LOGNAME, USER, USERNAME、及び SUDO_* という変数。
+それに、\fBsudo\fP を起動するユーザの環境にある変数のうち、
+\fIenv_keep\fP や \fIenv_check\fP のリストにマッチするものが加わり、
+さらに、\fIenv_file\fP オプションによって指定されたファイルがあれば、
 そのファイルに記載されたすべての変数が追加される。
-\&\f(CW\*(C`env_keep\*(C'\fR や \f(CW\*(C`env_check\*(C'\fR
-のリストにデフォルトでどんな変数が存在するかは、root ユーザが
-\&\fBsudo\fR に \fI\-V\fR オプションを付けて実行すれば、見ることができる。
-なお、\fIsecure_path\fR オプションが設定されているときは、
-その値が環境変数 \f(CW\*(C`PATH\*(C'\fR として使用される。
-このフラグはデフォルトで \fIon\fR である。
-.IP "fast_glob" 16
-.IX Item "fast_glob"
-通常 \fBsudo\fR はパス名のマッチングをするとき、\fIglob\fR\|(3)
-関数を使用して、シェル・スタイルのワイルドカード展開 (glob) を行う。
-しかし、\fIglob\fR\|(3) はファイルシステムにアクセスするので、
+\fIenv_keep\fP や \fIenv_check\fP のリストにどんな変数が存在するかについては、
+root ユーザとして \fBsudo\fP に \fB\-V\fP オプションを付けて実行すれば、
+\fIsudoers\fP 中でグローバルな Defaults パラメータによって変更された結果を、
+見ることができる。
+なお、\fIsecure_path\fP オプションが設定されているときは、
+その値が環境変数 PATH の値として使用される。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+fast_glob
+通常 \fBsudo\fP はパス名のマッチングをするとき、glob(3)関数を使用して、
+シェル・スタイルのワイルドカード展開 (glob) を行う。
+しかし、glob(3) はファイルシステムにアクセスするので、
 指定パターンによっては、作業を完了するまでに時間がかかることがある。
 必要な時にマウントするようになっている (つまりオートマウントの)
 ネットワーク・ファイル・システムを参照するときは、とりわけ時間がかかる。
-\&\fIfast_glob\fR オプションを指定すると、
-\&\fBsudo\fR が \fIfnmatch\fR\|(3) 関数を使うようになるが、
-こちらの関数はマッチングの際にファイルシステムにアクセスしない。
-\&\fIfast_glob\fR の欠点は、\fI./ls\fR や \fI../bin/ls\fR
-のような相対パスに対するマッチができないことである。
-そのため、ワイルドカードを含むパス名が、否定演算子 \f(CW\*(Aq!\*(Aq\fR
+\fIfast_glob\fP オプションを指定すると、\fBsudo\fP が fnmatch(3) 関数を使うようになるが、
+こちらの関数はマッチングを行う際にファイルシステムにアクセスしない。
+\fIfast_glob\fP の欠点は、\fI./ls\fP や \fI../bin/ls\fP
+のような相対パスに対するマッチができないことである。そのため、
+ワイルドカードを含むパス名が、否定演算子 '!\&'
 と一緒に使われている場合に、セキュリティ上の問題が生じるおそれがある。
-そうしたルールは簡単に迂回できるからだ。それ故、\fIsudoers\fR
-にワイルドカードを含むパス名を否定するルールが存在する場合は、
-このオプションを使ってはいけない。このフラグはデフォルトでは \fIoff\fR である。
-.IP "fqdn" 16
-.IX Item "fqdn"
-\&\fIsudoers\fR ファイルで完全修飾ホスト名を使用したかったら、
-このフラグをセットするとよい。すなわち、myhost ではなく、
-myhost.mydomain.edu を使いたい場合だ。そのときでも、そうしたければ、
-短縮形も使える (両方を混ぜて使うこともできる)。気を付けてほしいのは、
-\&\fIfqdn\fR を 有効にすると、
-\&\fBsudo\fR は \s-1DNS\s0 へ問い合わせをしなければならないので、
-\&\s-1DNS\s0 サービスが稼働していない場合、
-\&\fBsudo\fR が使えなくなるかもしれないということだ
-(たとえば、マシンがネットワークに接続していない場合)。
-もう一つ気を付けるべきことがある。
-\&\s-1DNS\s0 が知っているホストの正式名を使わなければならないということだ。
-言い換えれば、ホストのエイリアス (\f(CW\*(C`CNAME\*(C'\fR のエントリ)
-を使ってはいけない。パフォーマンスの問題もあるし、
-\&\s-1DNS\s0 からエイリアスをすべて取得する方法はないからでもある。
-マシンのホスト名が (\f(CW\*(C`hostname\*(C'\fR コマンドで返ってくるものが)
-すでに完全修飾名になっているならば、\fIfqdn\fR をセットする必要はないだろう。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "ignore_dot" 16
-.IX Item "ignore_dot"
-これをセットすると、環境変数 \f(CW\*(C`PATH\*(C'\fR 中に '.' や ''
-(カレントディレクトリを意味する) があっても、\fBsudo\fR はそれを無視する。
-\&\f(CW\*(C`PATH\*(C'\fR そのものは変更されない。このフラグは
-デフォルトでは \fIoff\fR である。
-.IP "ignore_local_sudoers" 16
-.IX Item "ignore_local_sudoers"
-\&\s-1LDAP\s0 の方でこのフラグをセットすると、
-\&\fI/etc/sudoers\fR の解析がスキップされる。
+そうしたルールは簡単に迂回できるからだ。
+従って、\fIsudoers\fP ファイルに、ワイルドカードを含むパス名を否定するルールが存在する場合は、
+このオプションを使ってはいけない。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+fqdn
+ローカル・ホスト名 (hostname コマンドが返すもの) がドメイン名を含まないとき、
+\fIsudoers\fP ファイルで完全修飾ホスト名を使用したかったら、
+このフラッグをセットするとよい。すなわち、myhost ではなく、
+myhost.mydomain.edu を使いたい場合だ。そのときでも、
+そうしたければ、短縮形も使用できる (両方を混ぜて使うこともできる)。
+このオプションに効果があるのは、\fBgetaddrinfo\fP() や \fBgethostbyname\fP()
+関数が返すホストの「正規名 (canonical name)」が、
+完全修飾ドメイン名であるときだけである。
+システムがホスト名の解決に DNS を使用するように設定されているときは、普通そうなる。
+.sp
+システムが DNS よりも優先して \fI/etc/hosts\fP を使用するように設定されている場合、
+ホストの正規名は完全修飾名ではないかもしれない。
+ホスト名解決のために問い合わせる情報源の順番は、普通 \fI/etc/nsswitch.conf\fP,
+\fI/etc/netsvc.conf\fP, \fI/etc/host.conf\fP ファイルで指定されている。
+\fI/etc/resolv.conf\fP のこともある。\fI/etc/hosts\fP ファイルでは、
+エントリの最初のホスト名が正規名と見なされる。後に続く名前はエイリアスであり、
+\fBsudoers\fP によって使用されることはない。たとえば、hosts ファイルに
+"xyzzy" というマシンについて下記の行があるとき、
+完全修飾ドメイン名がホストの正規名であり、短い方の名前はエイリアスである。
+.sp
+.RS 24n
+192.168.1.1    xyzzy.sudo.ws xyzzy
+.RE
+.RS 18n
+.sp
+hosts ファイルにおけるマシンのエントリの書式が不適切だと、
+hosts ファイルへの問い合わせが DNS より前に行われる場合、\fIfqdn\fP
+オプションを指定しても、効果がない。
+.sp
+気を付けてほしいのは、ホスト名の解決に DNS を使用する場合、
+\fIfqdn\fP 有効にすると、\fBsudoers\fP は DNS に問い合わせをしなければならないので、
+DNS が稼働していないと (たとえば、マシンがネットワークから切り離されていると)、
+\fBsudo\fP が使えなくなるということである。
+もう一つ気を付けるべきことがある。hosts ファイルを使用する場合と同じことだが、
+DNS が知っているホストの正規名を使わなければならない。
+言い換えれば、ホストのエイリアス (CNAME のエントリ) を使ってはいけない。
+パフォーマンスの問題もあるし、DNS からエイリアスをすべて取得する方法はないからでもある。
+.sp
+このフラグはデフォルトでは \fIoff\fP である。
+.RE
+.TP  18n
+ignore_dot
+これをセットすると、環境変数 PATH 中に "." や ""
+(どちらもカレントディレクトリを意味する) があっても、
+\fBsudo\fP はそれを無視する。PATH そのものは変更されない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+ignore_local_sudoers
+LDAP の方でこのフラグをセットすると、\fI/etc/sudoers\fP の解析がスキップされることになる。
 このフラグは、ローカルにある sudoers ファイルの使用を禁じて、
-\&\s-1LDAP\s0 のみを使うようにしたい企業のためにある。
-たちの悪いオペレータが \fI/etc/sudoers\fR に手を加えて、
+LDAP のみを使うようにしたい諸企業のためにある。
+たちの悪いオペレータが \fI/etc/sudoers\fP に手を加えて、
 自分の権限を増やそうとしても、そうした悪だくみは阻止されるわけだ。
 このオプションが設定されているときは、
-\&\fI/etc/sudoers\fR ファイルは存在する必要すらない。このオプションは、
-\&\s-1LDAP\s0 中に、マッチする特定のエントリが存在しなかったときに、
-いかに振舞うべきかを \fBsudo\fR に指示するものだから、
-これを指定する sudoOption は、
-\&\f(CW\*(C`cn=defaults\*(C'\fR のセクションになければ意味がない。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "insults" 16
-.IX Item "insults"
+\fI/etc/sudoers\fP ファイルは存在する必要すらない。このオプションは、
+LDAP 中に、マッチする特定のエントリが存在しなかったときに、
+いかに振舞うべきかを \fBsudo\fP に指示するものだから、
+これを指定する sudoOption は、cn=defaults のセクションになければ意味がない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+insults
 これをセットすると、不正なパスワードが入力されたとき、
-\&\fBsudo\fR がユーザに悪態をつく。このフラグはデフォルトでは \fIoff\fR
-である。
-.IP "log_host" 16
-.IX Item "log_host"
-これをセットすると、ホスト名が (syslog 経由ではない) \fBsudo\fR の
-ログファイルに記録されることになる。このフラグはデフォルトでは \fIoff\fR
-である。
-.IP "log_input" 16
-.IX Item "log_input"
-これをセットすると、\fBsudo\fR は \fI擬似 tty\fR でコマンドを実行し、
+\fBsudo\fP がユーザに悪態をつく。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_host
+これをセットすると、ホスト名が (syslog 経由ではない) \fBsudo\fP のログファイルに記録されることになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_input
+これをセットすると、\fBsudo\fP は、擬似 tty でコマンドを実行し、
 ユーザの入力をすべてログに取ることになる。入出力がリダイレクトされているとか、
 コマンドがパイプラインの一部だとかいう理由で、標準入力がユーザの tty
-に結びつけられていない場合も、その入力がキャプチャーされて、
-独立したログファイルに書き込まれることに変わりはない。
-.Sp
-入力は、\fIiolog_dir\fR オプションで指定したディレクトリに
-(デフォルトでは \fI/var/log/sudo-io\fR)、一意なセッション \s-1ID\s0
-を使って記録される。このセッション \s-1ID\s0 は \fBsudo\fR
-の通常のログのエントリに、\fITSID=\fR に続く値として書き込まれているものだ。
-\&\fIiolog_file\fR オプションを使えば、
-セッション \s-1ID\s0 の形式を変更することができる。
-.Sp
-ユーザの入力には、パスワードのような (たとえ、
-画面にエコーされることはないにしても) 秘密情報が含まれていることがある。
-そういった情報も、暗号化されずに、
-ログファイルに記録されることに注意してほしい。
-たいていの場合、\fIlog_output\fR を使って、
-コマンドの出力をログに記録するだけで十分用が足りる。
-.IP "log_output" 16
-.IX Item "log_output"
-これをセットすると、\fBsudo\fR は \fI擬似 tty\fR でコマンドを実行し、
+に結びつけられていない場合でも、その入力はやはりキャプチャーされ、
+独立したログファイルに書き込まれる。
+より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよい。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_output
+これをセットすると、\fBsudo\fP は、\fI擬似 tty\fP でコマンドを実行し、
 スクリーンに送られたすべての出力をログに取ることになる。
-\&\fIscript\fR\|(1) コマンドと似たことをやるわけだ。
-入出力がリダイレクトされているとか、
-コマンドがパイプラインの一部だとかいう理由で、標準出力や標準エラーがユーザの
-tty に結びつけられていない場合も、その出力がキャプチャーされて、
-それぞれ独立したログファイルに書き込まれることに変わりはない。
-.Sp
-出力は、\fIiolog_dir\fR オプションで指定したディレクトリに
-(デフォルトでは \fI/var/log/sudo-io\fR)、一意なセッション \s-1ID\s0
-を使って記録される。このセッション \s-1ID\s0 は \fBsudo\fR
-の通常のログのエントリに 、\fITSID=\fR に続く値として書き込まれているものだ。
-\&\fIiolog_file\fR オプションを使えば、
-セッション \s-1ID\s0 の形式を変更することができる。
-.Sp
-出力のログは \fIsudoreplay\fR\|(8) コマンドを使って、見ることができる。
-また、このコマンドは、利用できるログをリストしたり、
-検索したりするのにも使用できる。
-.IP "log_year" 16
-.IX Item "log_year"
-これをセットすると、四桁の年が (syslog 経由ではない) \fBsudo\fR
-のログファイルに記入されることになる。このフラグはデフォルトでは \fIoff\fR 
-である。
-.IP "long_otp_prompt" 16
-.IX Item "long_otp_prompt"
-\&\fBS/Key\fR や \fB\s-1OPIE\s0\fR のような One Time Password
-(\s-1OTP\s0) スキームを採用しているときにこれを有効にすると、
+script(1) コマンドと似たことをやるわけだ。
+より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよい。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+log_year
+これをセットすると、四桁の年が (syslog 経由ではない) \fBsudo\fP のログファイルに記入されることになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+long_otp_prompt
+\fBS/Key\fP や \fBOPIE\fP のような One Time Password (OTP) スキームを採用しているときにこれを有効にすると、
 チャレンジをローカルウィンドウにカット・アンド・ペーストしやすいように、
 二行のプロンプトが使用される。デフォルトのプロンプトほど見栄えはよくないが、
-こちらの方が便利だと思う人もいる。デフォルトではこのフラグは \fIoff\fR である。
-.IP "mail_always" 16
-.IX Item "mail_always"
-ユーザが \fBsudo\fR を実行するたびに、\fImailto\fR ユーザにメールを送る。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "mail_badpass" 16
-.IX Item "mail_badpass"
-\&\fBsudo\fR を実行するユーザが正しいパスワードを入力しないと、
-\&\fImailto\fR ユーザにメールを送る。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-.IP "mail_no_host" 16
-.IX Item "mail_no_host"
-これをセットすると、\fBsudo\fR を起動したユーザが \fIsudoers\fR
-ファイルに記載されているものの、
-使用中のホストでコマンドの実行を許可されていない場合、
-\&\fImailto\fR ユーザにメールを送付する。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-.IP "mail_no_perms" 16
-.IX Item "mail_no_perms"
-これをセットすると、\fBsudo\fR を起動したユーザが
-\&\fBsudo\fR の使用を許可されているが、
-実行しようとしているコマンドが \fIsudoers\fR ファイルの
-そのユーザのエントリに登録されていないか、明示的に禁止されている場合、
-\&\fImailto\fR ユーザにメールを送付する。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-.IP "mail_no_user" 16
-.IX Item "mail_no_user"
-これをセットすると、\fBsudo\fR を起動したユーザが \fIsudoers\fR
-ファイルに記載されていない場合、\fImailto\fR ユーザにメールを送付する。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "noexec" 16
-.IX Item "noexec"
-これをセットすると、\fBsudo\fR を通して実行されるすべてのコマンドが、
-\&\f(CW\*(C`EXEC\*(C'\fR タグで無効にされないかぎり、あたかも 
-\&\f(CW\*(C`NOEXEC\*(C'\fR タグが設定されているかのごとく振舞うようになる。
-前述の「\fI\s-1NOEXEC\s0 と \s-1EXEC\s0\fR」の説明、
-および、このマニュアルの終わりの方にある「シェル・エスケープを防止する」
-というセクションを参照してほしい。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "path_info" 16
-.IX Item "path_info"
-通常 \fBsudo\fR は、環境変数 \f(CW\*(C`PATH\*(C'\fR
-中にコマンドが見付からないと、ユーザにそのことを知らせる。これを利用すれば、
-一般ユーザにアクセス権のない実行ファイルのありかについて
-情報を収集できるという理由から、
+こちらの方が便利だと思う人もいる。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_all_cmnds
+ユーザが \fBsudo\fP 経由でコマンドの実行を試みるたびに
+(\fBsudoedit\fP の実行も含む)、\fImailto\fP ユーザにメールを送付する。
+ただし、ユーザが \fBsudo\fP に \fB\-l\fP や \fB\-v\fP オプションを付けて実行したときは、
+認証エラーがあり、しかも \fImail_badpass\fP フラグがセットされていないかぎり、
+メールを送付することはない。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_always
+ユーザが \fBsudo\fP を実行するたびに、\fImailto\fP ユーザにメールを送る。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_badpass
+\fBsudo\fP を実行するユーザが正しいパスワードを入力しなかったら、
+\fImailto\fP ユーザにメールを送付する。ユーザが実行しようとしているコマンドが
+\fBsudoers\fP によって許可されていない場合に、\fImail_all_cmnds\fP,
+\fImail_always\fP, \fImail_no_host\fP, \fImail_no_perms\fP, \fImail_no_user\fP
+フラグのどれかがセットされていると、このフラグは効果を持たないことになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+mail_no_host
+これをセットすると、\fBsudo\fP を起動したユーザが \fIsudoers\fP
+ファイルに記載されてはいるものの、
+使用中のホストでコマンドの実行を許可されていない場合に、
+\fImailto\fP ユーザにメールを送付する。このフラグはデフォルトでは
+\fIoff\fP である。
+.TP  18n
+mail_no_perms
+これをセットすると、\fBsudo\fP を起動したユーザが
+\fBsudo\fP の使用を許可されているが、
+実行しようとしているコマンドが \fIsudoers\fP ファイルの
+そのユーザのエントリに登録されていないか、明示的に禁止されている場合に、
+\fImailto\fP ユーザにメールを送付する。このフラグはデフォルトでは
+\fIoff\fP である。
+.TP  18n
+mail_no_user
+これをセットすると、\fBsudo\fP を起動したユーザが \fIsudoers\fP
+ファイルに記載されていない場合に、\fImailto\fP ユーザにメールを送付する。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+netgroup_tuple
+これをセットすると、
+ネットグループの検索がネットグループのタプル全部を使って行われることになる
+(すなわち、ホスト名、ユーザ名、ドメインの三つが、それぞれ設定されているならば、
+使用される)。従来の \fBsudo\fP では、
+User_List で使用されるネットグループについては、
+ユーザ名とドメインだけを照合し、Host_List で使用されるネットグループについては、
+ホスト名とドメインだけを照合していた。このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+noexec
+これをセットすると、\fBsudo\fP を通して実行されるすべてのコマンドが、
+EXEC タグで無効にされないかぎり、
+あたかも NOEXEC タグが設定されているかのごとく振舞うようになる。
+前述の「\fIEXEC\fP と \fINOEXEC\fP」の説明、および、
+このマニュアルの終わりの方にある「シェル・エスケープの防止」というセクションを参照していただきたい。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+pam_session
+認証に PAM を使用するシステムでは、\fBsudo\fP は新しい PAM セッションを作成し、
+その中でコマンドを実行する。PAM の実装が古い場合や、
+PAM セッションの開始が utmp や wtmp ファイルを変更するオペレーティングシステムでは、
+\fIpam_session\fP を無効にする必要があるかもしれない。
+ただし、PAM セッションのサポートを無効にすると、
+実行されるコマンドに対するリソースの上限が更新されないかもしれない。
+なお、\fIpam_session\fP, \fIpam_setcred\fP, \fIuse_pty\fP が無効になっていて、
+しかも 入出力ロギングが設定されていない場合は、
+\fBsudo\fP はコマンドを子プロセスとしてではなく、
+直接実行する。このフラグはデフォルトでは \fIon\fP である。
+.sp
+この設定は、バージョン 1.8.7 以上でのみサポートされている。
+.TP  18n
+pam_setcred
+認証に PAM を使用するシステムでは、\fBsudo\fP はデフォルトでは、
+使用している認証システムがサポートしているなら、変身対象ユーザの認証情報
+(credential) が有効であることを確認しようとする。認証情報の例を一つ挙げれば、
+Kerberos のチケットがそれである。\fIpam_session\fP, \fIpam_setcred\fP,
+\fIuse_pty\fP が無効になっていて、しかも 入出力ロギングが設定されていない場合は、
+\fBsudo\fP はコマンドを子プロセスとしてではなく、直接実行する。
+このフラグはデフォルトでは \fIon\fP である。
+.sp
+この設定は、バージョン 1.8.8 以上でのみサポートされている。
+.TP  18n
+passprompt_override
+通常、\fIpassprompt\fP オプションによって指定されたパスワードプロンプトが使用されるのは、
+PAM のようなシステムが用意しているパスワードプロンプトが、
+"Password:" という文字列にマッチしているときだけである。
+\fIpassprompt_override\fP をセットすると、\fIpassprompt\fP が無条件で使われることになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+path_info
+通常 \fBsudo\fP は、環境変数 PATH 中にコマンドが見付からないと、
+ユーザにその旨を知らせる。これを利用すれば、
+一般ユーザにアクセス権のない実行ファイルのありかについて情報を収集できるという理由から、
 この動作を無効にしたいサイトもあるかもしれない。
-その場合の欠点は、実行ファイルが単にユーザの \f(CW\*(C`PATH\*(C'\fR
-中になかっただけの場合でも、実行の許可がないと \fBsudo\fR
-がユーザに告げることになって、実情がわかりにくいかもしれないことである。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "passprompt_override" 16
-.IX Item "passprompt_override"
-通常、\fIpassprompt\fR
-オプションによって指定されたパスワードプロンプトが使用されるのは、
-\&\s-1PAM\s0 のようなシステムが用意しているパスワードプロンプトが、
-\&\*(L"Password:\*(R" という文字列にマッチしているときだけである。
-\&\fIpassprompt_override\fR をセットすると、
-\&\fIpassprompt\fR が無条件で使われることになる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "preserve_groups" 16
-.IX Item "preserve_groups"
-デフォルトでは、\fBsudo\fR は所属グループの初期値として、
+その場合の欠点は、実行ファイルが単にユーザの PATH 中になかっただけの場合でも、
+実行の許可がないと \fBsudo\fP がユーザに告げることになって、
+実情がわかりにくいかもしれないことである。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+preserve_groups
+デフォルトでは、\fBsudo\fP は所属グループの初期値として、
 変身対象ユーザが所属しているグループのリストを設定する。
-\&\fIpreserve_groups\fR をセットすると、
-\&\fBsudo\fR を実行するユーザの所属グループのリストが、
-変更されずにそのまま維持される。とは言え、実グループ ID や実効グループ ID
-変身対象ユーザのそれに設定されることに変わりはない。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "pwfeedback" 16
-.IX Item "pwfeedback"
-ほかのたいていの Unix プログラムと同様、
-\&\fBsudo\fR はパスワードを読み込むとき、デフォルトでは、ユーザが Return
+\fIpreserve_groups\fP をセットすると、
+\fBsudo\fP を実行するユーザの所属グループのリストが、
+変更されずにそのまま維持される。とは言え、実グループ ID や実効グループ ID が、
+変身対象ユーザのそれに設定されることに変わりはない。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+pwfeedback
\81»ã\81\8bã\81®ã\81\9fã\81\84ã\81¦ã\81\84ã\81® Unix ã\81®ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¨å\90\8cæ§\98ã\80\81
+\fBsudo\fP はパスワードを読み込むとき、デフォルトでは、ユーザが Return
 (または Enter) キーを押すまで、エコーを off にする。
 この動作にとまどうユーザが存在する。
-彼らには \fBsudo\fR が急に反応しなくなったように見えるのだ。
-\&\fIpwfeedback\fR をセットすると、ユーザがキーを押すたびに、
-\&\fBsudo\fR が目に見える反応を返すようになる。
\81\93ã\82\8cã\81«ã\81¯ã\80\81ã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ä¸\8aã\81®å\95\8fé¡\8cã\81\8cã\81\82ã\82\8bã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ã\81¦ã\81»ã\81\97ã\81\84ã\80\82å\81´ã\81§è¦\8bã\81¦ã\81\84ã\82\8b人ã\81\8cã\80\81
-打ち込まれたパスワードの文字数を特定できてしまうかもしれないのだ。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "requiretty" 16
-.IX Item "requiretty"
-これをセットすると、\fBsudo\fR が実行されるのは、ユーザが実際の tty
-にログインしたときだけになる。すなわち、\fBsudo\fR を実行できるのは、
-ログイン・セッションからだけであって、
-\&\fIcron\fR\|(8) や cgi-bin スクリプトといった、
\81»ã\81\8bã\81®æ\96¹æ³\95ã\82\92ä»\8bã\81\97ã\81¦å®\9fè¡\8cã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81ªã\81\84ã\81¨ã\81\84ã\81\86ã\81\93ã\81¨ã\81 ã\80\82ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\80\81
-デフォルトでは \fIoff\fR である。
-.IP "root_sudo" 16
-.IX Item "root_sudo"
\81\93ã\82\8cã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\81¨ã\80\81root ã\82\82 \fBsudo\fR ã\82\92å®\9fè¡\8cã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ã\81ªã\82\8bã\80\82
\81\93ã\81®ã\83\95ã\83©ã\82°ã\82\92ç\84¡å\8a¹ã\81«ã\81\99ã\82\8bã\81¨ã\80\81ã\83¦ã\83¼ã\82¶ã\81\8cã\81\9fã\81¨ã\81\88ã\81° \f(CW"sudo sudo /bin/sh"\fR
\81¨ã\81\84ã\81£ã\81\9fã\82\88ã\81\86ã\81« \fBsudo\fR ã\82³ã\83\9eã\83³ã\83\89ã\82\92\fBé\80£é\8e\96ç\9a\84ã\81«\fR使ã\81£ã\81¦ã\80\81
\83«ã\83¼ã\83\88ã\82·ã\82§ã\83«ã\82\92ç\8d²å¾\97ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\8fã\81ªã\82\8bã\80\82ã\81¨ã\81\93ã\82\8dã\81§
-\&\fIroot_sudo\fR が off だと、root が \fBsudoedit\fR
-まで実行できなくなることに注意してほしい。
-\&\fIroot_sudo\fR を無効にしても、セキュリティが実際に向上するわけではない。
\81\93ã\81®ã\83\95ã\83©ã\82°ã\81\8cå­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\82\8bã\81®ã\81¯ã\80\81ã\82\82ã\81£ã\81±ã\82\89æ­´å\8f²ç\9a\84ã\81ªç\90\86ç\94±ã\81\8bã\82\89ã\81ªã\81®ã\81 
-このフラグはデフォルトでは \fIon\fR である。
-.IP "rootpw" 16
-.IX Item "rootpw"
\81\93ã\82\8cã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\81¨ã\80\81\fBsudo\fR ã\81¯ã\83\97ã\83­ã\83³ã\83\97ã\83\88ã\81§、起動したユーザのパスワードではなく、
+彼らには \fBsudo\fP が急に反応しなくなったように見えるのだ。
+\fIpwfeedback\fP をセットすると、ユーザがキーを押すたびに、
+\fBsudo\fP が目に見える反応を返すようになる。
\81\93ã\82\8cã\81«ã\81¯ã\80\81ã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ä¸\8aã\81®å\95\8fé¡\8cã\81\8cã\81\82ã\82\8bã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ã\81¦ã\81\84ã\81\9fã\81 ã\81\8dã\81\9fã\81\84ã\80\82
+側で見ている人が、打ち込まれたパスワードの文字数を特定できてしまうかもしれないのだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+requiretty
+これをセットすると、\fBsudo\fP が実行されるのは、ユーザが実際の tty
+にログインしたときだけになる。すなわち、\fBsudo\fP を実行できるのは、
+ログイン・セッションからだけであって、cron(8) や cgi\-bin スクリプトといった、
+ほかの方法を介して実行することはできないということだ。
\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\80\81ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ \fIoff\fP ã\81§ã\81\82ã\82\8bã\80\82
+.TP  18n
+root_sudo
+これをセットすると、root も \fBsudo\fP を実行できるようになる。
\81\93ã\81®ã\83\95ã\83©ã\82°ã\82\92ç\84¡å\8a¹ã\81«ã\81\99ã\82\8bã\81¨ã\80\81ã\83¦ã\83¼ã\82¶ã\81\8cã\81\9fã\81¨ã\81\88ã\81° "sudo sudo /bin/sh"
\81¨ã\81\84ã\81£ã\81\9fã\82\88ã\81\86ã\81« \fBsudo\fP ã\82³ã\83\9eã\83³ã\83\89ã\82\92ã\80\8cé\80£é\8e\96ç\9a\84ã\81«ã\80\8d使ã\81£ã\81¦ã\80\81
\83«ã\83¼ã\83\88ã\82·ã\82§ã\83«ã\82\92ç\8d²å¾\97ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\8fã\81ªã\82\8bã\80\82
\81¨ã\81\93ã\82\8dã\81§ã\80\81\fIroot_sudo\fP ã\81\8c off ã\81 ã\81¨
+root が \fBsudoedit\fP まで実行できなくなることに注意していただきたい。
+\fIroot_sudo\fP を無効にしても、セキュリティが実際に向上するわけではない。
+このフラグが存在しているのは、
\82\82ã\81£ã\81±ã\82\89æ­´å\8f²ç\9a\84ã\81ªç\90\86ç\94±ã\81\8bã\82\89ã\81ªã\81®ã\81 ã\80\82ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ \fIon\fP ã\81§ã\81\82ã\82\8b
+.TP  18n
+rootpw
+これをセットすると、\fBsudo\fP は、コマンドを実行したり、
\83\95ã\82¡ã\82¤ã\83«ã\82\92ç·¨é\9b\86ã\81\97ã\81\9fã\82\8aã\81\99ã\82\8bã\81¨ã\81\8d、起動したユーザのパスワードではなく、
 root のパスワードを要求するようになる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "runaspw" 16
-.IX Item "runaspw"
-これをセットすると、\fBsudo\fR はプロンプトで、起動したユーザのパスワードではなく、
-\&\fIsudoers\fR ファイルの
-\&\fIrunas_default\fR オプションで指定しているユーザーの
-(デフォルトでは \f(CW\*(C`root\*(C'\fR である) パスワードを要求する。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "set_home" 16
-.IX Item "set_home"
-これが有効なときに \fBsudo\fR を \fB\-s\fR オプション付きで起動すると、
-環境変数 \f(CW\*(C`HOME\*(C'\fR が変身対象ユーザの 
-(\fB\-u\fR オプションが使用されないかぎり、それは root である)
-ホームディレクトリに設定される。すなわち、 \fB\-s\fR オプションが
-\&\fB\-H\fR オプションを事実上兼ねることになるわけだ。
-気をつけてほしいのは、\fIenv_reset\fR が有効な場合、\f(CW\*(C`HOME\*(C'\fR
-はすでに (訳注: 変身対象ユーザのホームディレクトリに) 設定済みだということだ。
-だから、\fIset_home\fR の効果があるのは、
-\&\fIenv_reset\fR が無効に設定されているか、 \fIenv_keep\fR のリストに
-\&\f(CW\*(C`HOME\*(C'\fR が存在する場合のみである。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "set_logname" 16
-.IX Item "set_logname"
-通常 \fBsudo\fR は環境変数 \f(CW\*(C`LOGNAME\*(C'\fR,
-\&\f(CW\*(C`USER\*(C'\fR, \f(CW\*(C`USERNAME\*(C'\fR
-を変身対象ユーザの名前 (\fB-u\fR オプションが指定されていない場合、
-普通は root) にセットする。しかし、プログラムによっては (たとえば、
-\&\s-1RCS\s0 リビジョンコントロールシステムがその一つだが)
-ユーザが実際には誰であるかを判定するのに \f(CW\*(C`LOGNAME\*(C'\fR
-を使用していることがあり、そのために、この振舞いを変更したい場合もある。
-set_logname オプションに '!' を付けて否定することで、それができる。
-なお \fIenv_reset\fR オプションを無効にしていない場合、
-\&\fIenv_keep\fR リストの項目が \fIset_logname\fR
-による値を上書きすることになるので、注意してほしい。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "set_utmp" 16
-.IX Item "set_utmp"
-これが有効になっていると、\fBsudo\fR は擬似 tty を割り当てるときに、
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+runaspw
+これをセットすると、\fBsudo\fP は、コマンドを実行したり、
+ファイルを編集したりするとき、起動したユーザのパスワードではなく、
+\fIsudoers\fP ファイルの \fIrunas_default\fP オプションで指定しているユーザーの
+(デフォルトでは root である) パスワードを要求するようになる。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+set_home
+これが有効なときに \fBsudo\fP を \fB\-s\fP オプション付きで起動すると、
+環境変数 HOME が変身対象ユーザの (\fB\-u\fP オプションが使用されないかぎり、
+それは root である) ホームディレクトリに設定される。すなわち、
+\fB\-s\fP オプションが \fB\-H\fP オプションを事実上兼ねることになるわけだ。
+気をつけてほしいのは、\fIenv_reset\fP が有効な場合、HOME はすでに
+(訳注: 変身対象ユーザのホームディレクトリに) 設定済みだということだ。
+だから、\fIset_home\fP の効果があるのは、\fIenv_reset\fP が無効に設定されているか、
+\fIenv_keep\fP のリストに HOME が存在する場合だけである。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+set_logname
+通常 \fBsudo\fP は環境変数 LOGNAME, USER, USERNAME を変身対象ユーザの名前
+(\fB\-u\fP オプションが指定されていない場合、普通は root) にセットする。
+しかし、プログラムによっては
+(たとえば、RCS リビジョンコントロールシステムがその一つだが)
+ユーザが実際には誰であるかを判定するのに LOGNAME を使用していることがあり、
+そのため、この振舞いを変更したい場合もある。
+set_logname オプションに '!\&' を付けて否定することで、それができる。
+なお \fIenv_reset\fP オプションを無効にしていない場合に、
+\fIenv_keep\fP のリストに LOGNAME, USER, USERNAME などが入っていると、
+\fIset_logname\fP は効果を持たないので、注意していただきたい。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+set_utmp
+これが有効になっていると、\fBsudo\fP は擬似 tty を割り当てるときに、
 utmp (または utmpx) ファイルにエントリを作成する。
-\&\fBsudo\fR によって擬似 tty の割り当てが行われるのは、
-\&\fIlog_input\fR, \fIlog_output\fR, \fIuse_pty\fR
-といったフラグが有効になっているときである。
+\fBsudo\fP によって擬似 tty の割り当てが行われるのは、\fIlog_input\fP,
+\fIlog_output\fP, \fIuse_pty\fP といったフラグが有効になっているときである。
 デフォルトでは、新しいエントリは、そのユーザの utmp エントリが存在すれば、
 そのコピーであり、tty, time, type, pid フィールドが更新される。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "setenv" 16
-.IX Item "setenv"
-これをセットすると、ユーザがコマンドラインで \fB\-E\fR オプションを指定して、
-\&\fIenv_reset\fR オプションを無効にできるようになる。
-さらに、コマンドラインから設定する環境変数が 
-\&\fIenv_check\fR, \fIenv_delete\fR, \fIenv_keep\fR による制限を受けなくなる。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+setenv
+これをセットすると、ユーザがコマンドラインで \fB\-E\fP オプションを指定して、
+\fIenv_reset\fP オプションを無効にできるようになる。
+さらに、コマンドラインから設定する環境変数が
+\fIenv_check\fP, \fIenv_delete\fP, \fIenv_keep\fP による制限を受けなくなる。
 それ故、そのようなやり方で変数を設定することを許可するのは、
-信用できるユーザのみに限るべきだ。このフラグはデフォルトでは \fIoff\fR である。
-.IP "shell_noargs" 16
-.IX Item "shell_noargs"
-これがセットされているとき、\fBsudo\fR を引き数なしで起動すると、
-\&\fBsudo\fR は \fB\-s\fR オプションが指定されたかのように振舞う。
+信用できるユーザのみに限るべきだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+shell_noargs
+これがセットされているとき、\fBsudo\fP を引き数なしで起動すると、
+\fBsudo\fP は \fB\-s\fP オプションが指定されたかのように振舞う。
 すなわち、root ユーザとしてシェルを実行するわけだ (シェルは、環境変数
-\f(CW\*(C`SHELL\*(C'\fR がセットされていれば、それによって決まるし
-セットされていなければ、\fBsudo\fR を起動したユーザの
+SHELL がセットされていれば、それによって決まり
+セットされていなければ、\fBsudo\fP を起動したユーザの
 /etc/passwd エントリに登録されたものになる)。このフラグはデフォルトでは
-\&\fIoff\fR である。
-.IP "stay_setuid" 16
-.IX Item "stay_setuid"
-通常 \fBsudo\fR がコマンドを実行するとき、実 UID と実効 UID
\81¯å¤\89身対象ã\83¦ã\83¼ã\82¶ (ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ root) ã\81®ã\82\82ã\81®ã\81«ã\82»ã\83\83ã\83\88ã\81\95ã\82\8cる。
-このオプションは、その振舞いを変更して、\fBsudo\fR を起動したユーザの
-\&\s-1UID\s0 が、そのまま実 \s-1UID\s0 として残るようにする。言い換えると、
-\&\fBsudo\fR が setuid ラッパーとして動作するようになるわけだ
+\fIoff\fP である。
+.TP  18n
+stay_setuid
+通常 \fBsudo\fP は、コマンドを実行するとき、実 UID と実効 UID
\82\92å¤\89身対象ã\83¦ã\83¼ã\82¶ (ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ root) ã\81®ã\82\82ã\81®ã\81«ã\82»ã\83\83ã\83\88ã\81\99る。
+このオプションは、その振舞いを変更して、\fBsudo\fP を起動したユーザの
+UID が、そのまま実 UID として残るようにするのだ。言い換えると、
+このオプションは \fBsudo\fP を setuid ラッパーとして動作するようにするわけである
 プログラムを setuid で動かすと、危険をもたらしかねないという理由から、
 ある種の機能を使えないようにしているシステムでは、
-このオプションが役に立つかもしれない。このオプションは、\fIsetreuid()\fR
-関数や \fIsetresuid()\fR 関数を持っているシステムでのみ有効である。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "targetpw" 16
-.IX Item "targetpw"
-これをセットすると、\fBsudo\fR はプロンプトで、
-起動したユーザのパスワードではなく、
-\&\fB\-u\fR オプションで指定されたユーザ (デフォルトでは root)
-のパスワードを要求することになる。それに加えて、
-タイムスタンプ・ファイルの名前に変身対象ユーザの名前が含まれるようになる。
-このフラグを設定をすると、\fB\-u\fR オプションの引き数として、
+このオプションが役に立つかもしれない。このオプションは、システムコールの
+setreuid() や setresuid() をサポートしているシステムでのみ有効である。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+sudoedit_checkdir
+.br
+これをセットすると、
+\fBsudoedit\fP は、編集対象ファイルのパス中にあるディレクトリ部分のすべてについて、
+\fBsudoedit\fP を実行するユーザとって書き込み可能かどうかを、チェックすることになる。
+ユーザに書き込み可能なディレクトリに存在するいかなるシンボリックリンクも、
+たどられることがなく、また、ユーザに書き込み可能なディレクトリにあるファイルの編集は、
+拒否されることになる。
+ただし、こうした制限は、\fBsudoedit\fP を実行するユーザが root の場合には、行われない。
+システムによっては、編集対象ファイルのパス中にあるディレクトリ部分のすべてが、
+変身対象ユーザにとって読み込み可能でないかぎり、
+\fBsudoedit\fP でファイルを編集できないものもある。
+このフラグはデフォルトでは \fIon\fP である。
+.sp
+この設定が最初に導入されたのは、バージョン 1.8.15 だったが、
+当初のものには競合状態を引き起こす欠陥があった。
+編集対象ファイルのパスの途中に書き込み可能なディレクトリがあり、
+そこにシンボリックリンクが存在する場合のチェックは、バージョン 1.8.16 で追加された。
+.TP  18n
+sudoedit_follow
+\fBsudoedit\fP はデフォルトでは、ファイルをオープンするときにシンボリックリンクをたどらない。
+\fIsudoedit_follow\fP オプションを有効にすると、
+\fBsudoedit\fP がシンボリックリンクをオープンできるようになる。
+そうした動作は \fIFOLLOW\fP や \fINOFOLLOW\fP タグを使えば、
+コマンドごとに変更することができる。このフラグはデフォルトでは \fIoff\fP である。
+.sp
+この設定は、バージョン 1.8.15 以上でのみサポートされている。
+.TP  18n
+targetpw
+これをセットすると、\fBsudo\fP は、コマンドを実行したり、
+ファイルを編集したりするとき、起動したユーザのパスワードではなく、
+\fB\-u\fP オプションで指定されたユーザ (デフォルトでは root)
+のパスワードを要求するようになる。
+このフラグを設定をすると、\fB\-u\fP オプションの引き数として、
 passwd データベースに登録されていない uid が使えなくなることに注意してほしい。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "tty_tickets" 16
-.IX Item "tty_tickets"
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+tty_tickets
 これをセットすると、ユーザは tty ごとに認証をしなければならなくなる。
-このフラグが有効な場合、
-\&\fBsudo\fR はユーザのタイムスタンプ・ディレクトリにある、
-ユーザがログインしている tty
-に対応する名前のファイルをタイムスタンプに使用する。
-それに対して、このフラグが無効な場合は、
-ユーザのタイムスタンプ・ディレクトリそのもののタイムスタンプが使用されるのである。
-このフラグはデフォルトでは \fIon\fR である。
-.IP "umask_override" 16
-.IX Item "umask_override"
-これをセットすると、\fBsudo\fR は umask を \fIsudoers\fR の
+このフラグが有効な場合、\fBsudo\fP は、各 tty に対して、
+タイムスタンプ・ファイル中の、それぞれ別個に記録される情報を使用することになる。
+それに対して、このフラグが無効な場合は、すべてのログイン・セッションに対して、
+単一の記録が使用されるのである。このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+umask_override
+これをセットすると、\fBsudo\fP は umask を \fIsudoers\fP の
 umask オプションで指定されたとおりの値に、変更を加えることなく設定する。
 このことによって、ユーザ自身の umask 値よりもっと緩やかな umask 値を
-\&\fIsudoers\fR で指定することが可能になる。
-\&\fBsudo\fR の昔の動作と同じになるわけだ。
-\&\fIumask_override\fR をセットしない場合、
-現在の \fBsudo\fR は umask を、ユーザの umask 値と \fIsudoers\fR で指定した
+\fIsudoers\fP ファイルで指定することが可能になる。\fBsudo\fP の昔の動作と同じになるわけだ。
+\fIumask_override\fP をセットしない場合、
+現在の \fBsudo\fP は umask を、ユーザの umask 値と \fIsudoers\fP で指定した
 umask 値とのビット和に設定することになっている。
-このフラグはデフォルトでは \fIoff\fR である。
-.if \n(LC \{\
-.IP "use_loginclass" 16
-.IX Item "use_loginclass"
-これをセットすると、\fBsudo\fR は、
-変身対象ユーザのログインクラスが存在するならば、
-それに対して指定されたデフォルトの値を使うことになる。
\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\80\81\fBsudo\fR ã\82\92 \-\-with\-logincap ã\82ªã\83\97ã\82·ã\83§ã\83³ã\82\92ä»\98ã\81\91ã\81¦ 
-configure したときのみ利用することができる。このフラグはデフォルトでは 
-\&\fIoff\fR である。
-\}
-.IP "use_pty" 16
-.IX Item "use_pty"
-これをセットすると、\fBsudo\fR は入出力のロギングが行われていないときでも、
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+use_netgroups
+これをセットすると、ユーザやホストを指定する場所でネットグループ
+(接頭辞 '+' が付く) が使えるようになる。LDAP を使用する sudoers では、
+ネットグループをサポートすると、\fI/etc/ldap.conf\fP ファイルで
+\fBNETGROUP_BASE\fP 設定オプションを指定していない場合に、
\82µã\83¼ã\83\90å\81´ã\81§è² è\8d·ã\81®é«\98ã\81\84é\83¨å\88\86æ\96\87å­\97å\88\97 (substring) ã\81®ã\83\9eã\83\83ã\83\81ã\83³ã\82°ã\82\92è¡\8cã\81\86å¿\85è¦\81ã\81\8cç\94\9fã\81\98ã\82\8bã\80\82
+そこで、ネットグループを使用する必要がない場合は、
+このオプションを \fIoff\fP にすれば、LDAP サーバの負荷を減らすことができる。
+このフラグはデフォルトでは \fIon\fP である。
+.TP  18n
+use_pty
+これをセットすると、\fBsudo\fP は入出力のロギングが行われていないときでも、
 擬似 tty でコマンドを実行することになる。
-\&\fBsudo\fR によって実行された悪意のあるプログラムが、
+\fBsudo\fP によって実行された悪意のあるプログラムが、
 バックグラウンド・プロセスをフォークし、
 そのプロセスが、メインプログラムの実行が終了した後でも、
 ユーザのターミナルデバイスを握って離さないといったことが考えられる。
 このオプションを使えば、そういったことが不可能になる。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "utmp_runas" 16
-.IX Item "utmp_runas"
-これをセットすると、\fBsudo\fR は utmp (または utmpx) ファイルを更新するとき、
-変身対象ユーザの名前を記録するようになる。\fBsudo\fR はデフォルトでは、
-\&\fBsudo\fR を実行したユーザの名前を記録するのだ。
-このフラグはデフォルトでは \fIoff\fR である。
-.IP "visiblepw" 16
-.IX Item "visiblepw"
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+utmp_runas
+これをセットすると、\fBsudo\fP は utmp (または utmpx) ファイルを更新するとき、
+変身対象ユーザの名前を記録するようになる。\fBsudo\fP はデフォルトでは、
+\fBsudo\fP を実行したユーザの名前を記録するのだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.TP  18n
+visiblepw
 デフォルトでは、ユーザがパスワードを入力しなければならないときに、
 使用しているターミナルでエコーの抑制ができなかったら、
-\&\fBsudo\fR は実行を拒否するようになっている。
\81\93ã\82\8cã\81«å¯¾ã\81\97ã\80\81\fIvisiblepw\fR フラグが設定されていると、
+\fBsudo\fP は実行を拒否するようになっている。
\81\9dã\82\8cã\81«å¯¾ã\81\97ã\80\81\fIvisiblepw\fP フラグが設定されていると、
 パスワードがスクリーンに表示されてしまう場合でも、
-\&\fBsudo\fR はプロンプトを出して、パスワードを求める。この動作によって、
-\&\fIrsh\fR\|(1) は tty を割り当てないにもかかわらず、
-\&\f(CW"rsh somehost sudo ls"\fR といった操作の実行が可能になるわけだ。
-このフラグはデフォルトでは \fIoff\fR である。
-.PP
-\&\fB整数\fR:
-.IP "closefrom" 16
-.IX Item "closefrom"
-\&\fBsudo\fR はコマンドを実行する前に、標準入力、標準出力、標準エラー
-(すなわち、ファイルディスクリプタ 0\-2 である) を除いて、
+\fBsudo\fP はプロンプトを出して、パスワードを求めるようになる。
+ssh(1) はデフォルトでは、コマンドを実行する際に tty を割り当てないので、
+\fBsudo\fP はエコーの抑制ができないが、その場合でも、この設定によって、
+"ssh somehost sudo ls" といった操作の実行が可能になるわけだ。
+このフラグはデフォルトでは \fIoff\fP である。
+.PP
+\fB整数\fP:
+.TP  18n
+closefrom
+\fBsudo\fP はコマンドを実行する前に、標準入力、標準出力、標準エラー
+(すなわち、ファイルディスクリプタ 0\-2 ) を除いて、
 開いているすべてのファイル・ディスクリプタをクローズする。
-\&\fIclosefrom\fR オプションを使用すると、
+\fIclosefrom\fP オプションを使用すると、
 0\-2 以外のどのファイル・ディスクリプタから閉じて行くかを指定することができる。
-デフォルトは \f(CW3\fR である。
-.IP "passwd_tries" 16
-.IX Item "passwd_tries"
-\&\fBsudo\fR が「失敗」をログに記録して終了する前に、
-ユーザがパスワードを入力できる回数。デフォルトは \f(CW\*(C`3\*(C'\fR。
-.PP
-\&\fB真偽値としても使用できる整数\fR:
-.IP "loglinelen" 16
-.IX Item "loglinelen"
-\&\fBsudo\fR 用ログファイルの一行あたりの文字数。
-この値は、ログファイルを見やすくするために改行する位置を決めるのに使用される。
+デフォルトは 3 である。
+.TP  18n
+maxseq
+入出力ログファイルで
+"%{seq}" エスケープシーケンスに置き換えられる連続番号の最大値
+(詳細については、後述の \fIiolog_dir\fP オプションの説明を参照すること)。
+"%{seq}" に置き換えられる値は 36 進数だが、\fImaxseq\fP そのものは
+10 進数で指定するべきである。2176782336 (38 進数の連続番号では、
+"ZZZZZZ" に相当する) より大きい値は 、暗黙のうちに
+2176782336 に縮小される。デフォルトの値は 2176782336 である。
+.sp
+使用している連続番号が \fImaxseq\fP の値に達したら、最初の値の 0 に戻る。
+それ以後は、\fBsudoers\fP は存在している入出力ログファイルをサイズ 0 に短縮して、
+そのパス名を再利用することになる。
+.sp
+この設定は、バージョン 1.8.7 以上でのみサポートされている。
+.TP  18n
+passwd_tries
+\fBsudo\fP が「失敗」をログに記録して終了する前に、
+ユーザがパスワードを入力できる回数。デフォルトは 3 回。
+.PP
+\fB真偽値としても使用できる整数\fP:
+.TP  18n
+loglinelen
+\fBsudo\fP 独自のログファイルの一行あたりの文字数。この値は、
+ログファイルを見やすくするために改行する位置を決めるのに使用される。
 この値は、syslog 経由のログファイルには影響せず、
\9b´æ\8e¥ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\83­ã\82°ã\82\92æ\9b¸ã\81\8då\87ºã\81\99ã\81¨ã\81\8dã\81®ã\81¿å\8a¹æ\9e\9cã\81\8cã\81\82ã\82\8bã\80\82ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81¯
-\&\f(CW\*(C`80\*(C'\fR である (改行をしないようにするには、値を 0 にするか
-頭に '!' を付けて、このオプションを否定する)。
-.IP "passwd_timeout" 16
-.IX Item "passwd_timeout"
-\&\fBsudo\fR のパスワードプロンプトが時間切れになるまでの分単位の時間。
-\&\f(CW0\fR を指定すると、時間切れなしになる。
\88\86ã\82\88ã\82\8aã\82\82ã\82\82ã\81£ã\81¨ç´°ã\81\8bã\81\84æ\99\82é\96\93ã\82\92æ\8c\87å®\9aã\81\97ã\81\9fã\81\84ã\81¨ã\81\8dã\81¯ã\80\81(\f(CW2.5\fR ã\81®ã\82\88ã\81\86ã\81«)
-小数点以下を付けることもできる。デフォルトは \f(CW\*(C`5\*(C'\fR である
-.IP "timestamp_timeout" 16
-.IX Item "timestamp_timeout"
-\&\fBsudo\fR がパスワードを再び要求するようになるまでの時間を
-分単位で指定する。分よりももっと細かい時間を指定したいときは、
-(\f(CW2.5\fR のように) 小数点以下を付けることもできる。
-デフォルトでは \f(CW\*(C`5\*(C'\fR である。
-これを \f(CW0\fR にセットすると、毎回パスワードを要求するようになる。
-\&\f(CW0\fR より小さい値にセットした場合は、
\83¦ã\83¼ã\82¶ã\81®ã\82¿ã\82¤ã\83 ã\82¹ã\82¿ã\83³ã\83\97ã\81\8cæ\9c\9fé\99\90å\88\87ã\82\8cã\81«ã\81ªã\82\8bã\81\93ã\81¨ã\81\8cない。
-ユーザが \f(CW\*(C`sudo \-v\*(C'\fR と \f(CW\*(C`sudo \-k\*(C'\fR
\82\92å®\9fè¡\8cã\81\99ã\82\8bã\81\93ã\81¨ã\81«ã\82\88ã\81£ã\81¦ã\80\81ã\82¿ã\82¤ã\83 ã\82¹ã\82¿ã\83³ã\83\97ã\82\92è\87ªå\88\86ã\81§ä½\9cã\81£ã\81\9fã\82\8a
-消したりできるようにしたかったら、この手を使えばよい。
-.IP "umask" 16
-.IX Item "umask"
\8b¬è\87ªã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\83­ã\82°ã\82\92è¨\98é\8c²ã\81\99ã\82\8bã\81¨ã\81\8dã\81®ã\81¿å\8a¹æ\9e\9cã\81\8cã\81\82ã\82\8bã\80\82ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81¯ 80 ã\81§ã\81\82ã\82\8b
+(改行をしないようにするには、値を 0 にするか、頭に '!\&' を付けて
+このオプションを否定する)。
+.TP  18n
+passwd_timeout
+\fBsudo\fP のパスワードプロンプトが時間切れになるまでの分単位の時間。
+0 を指定すると、時間切れなしになる。
\88\86ã\82\88ã\82\8aã\82\82ã\82\82ã\81£ã\81¨ç´°ã\81\8bã\81\84æ\99\82é\96\93ã\82\92æ\8c\87å®\9aã\81\97ã\81\9fã\81\8bã\81£ã\81\9fã\82\89ã\80\812.5 ã\81®ã\82\88ã\81\86ã\81«ã\80\81
+小数点以下を付けることもできる。デフォルトは 5 分
+.TP  18n
+timestamp_timeout
+.br
+\fBsudo\fP がパスワードを再び要求するようになるまでの時間を分単位で指定する。
+分よりももっと細かい時間を指定したかったら、2.5 のように、
+小数点以下を付けることもできる。デフォルトは 5 分である。
+これを 0 にセットすると、毎回パスワードを要求するようになる。
+0 よりも小さい値にセットすると、ユーザのタイムスタンプは、
\82·ã\82¹ã\83\86ã\83 ã\81\8cã\83ªã\83\96ã\83¼ã\83\88ã\81\95ã\82\8cã\82\8bã\81¾ã\81§æ\9c\9fé\99\90å\88\87ã\82\8cã\81«ã\81ªã\82\89ない。
+ユーザが "sudo \-v" と "sudo \-k" を実行することによって、
\82¿ã\82¤ã\83 ã\82¹ã\82¿ã\83³ã\83\97ã\82\92è\87ªå\88\86ã\81§ä½\9cã\81£ã\81\9fã\82\8aã\80\81æ¶\88ã\81\97ã\81\9fã\82\8aã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ã\81\97ã\81\9fã\81\8bã\81£ã\81\9fã\82\89
+この手を使えばよい。
+.TP  18n
+umask
 コマンドを実行するときに使用する umask 値。
-ユーザの umask 値をそのまま使いたかったら、'!' を頭に付けて、
+ユーザの umask 値をそのまま使いたかったら、'!\&' を頭に付けて、
 このオプションを否定するか、0777 にセットすればよい。
 このオプションの値が 0777 以外の場合、実際に使用される umask 値は、
-ユーザの umask 値と \fIumask\fR オプションの値とのビット和であり、
-後者のデフォルトは \f(CW\*(C`0022\*(C'\fR である。
-このことによって、\fBsudo\fR がコマンドを実行するときの umask 値が、
+ユーザの umask 値と \fIumask\fP オプションの値とのビット和であり、
+後者のデフォルトは 0022 である。
+このことによって、\fBsudo\fP がコマンドを実行するときの umask 値が、
 ユーザの umask 値より低くならないようになっているわけだ。
-\&\s-1PAM\s0 を使用しているシステムでは、 \s-1PAM\s0 のデフォルト設定で
-umask 値を指定することができるが、その場合は、それが \fIsudoers\fR
\81§æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\82\92ä¸\8aæ\9b¸ã\81\8dã\81\99ã\82\8bã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ã\81¦ã\81»ã\81\97い。
+PAM を使用しているシステムでは、
+PAM のデフォルト設定で umask 値を指定することができるが、
\81\9dã\81®å ´å\90\88ã\81¯ã\80\81ã\81\9dã\82\8cã\81\8c \fIsudoers\fP ã\81§æ\8c\87å®\9aã\81\99ã\82\8bå\80¤ã\81«å\84ªå\85\88ã\81\99ã\82\8bã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ã\81¦ã\81\84ã\81\9fã\81 ã\81\8dã\81\9fい。
 .PP
-\&\fB文字列\fR:
-.IP "badpass_message" 16
-.IX Item "badpass_message"
+\fB文字列\fP:
+.TP  18n
+badpass_message
 ユーザが不正なパスワードを入力したときに表示するメッセージ。
-\&\fIinsults\fR フラグが有効になっていないかぎり、
-デフォルトは「\f(CW\*(C`Sorry, try again.\*(C'\fR」である。
-.IP "editor" 16
-.IX Item "editor"
-\&\fBvisudo\fR で使用できるエディタをコロン (':') で区切ったリスト。
-\&\fBvisudo\fR は、可能ならば、
-ユーザの \s-1EDITOR\s0 環境変数と一致したエディタを選択する。
-それができないときは、このリストにあるエディタで、
-実際に存在し、かつ実行可能な最初のエディタを使用する。デフォルトは
-\&\f(CW"/usr/bin/vi"\fR である。
-.IP "iolog_dir" 16
-.IX Item "iolog_dir"
+\fIinsults\fP フラグが有効になっていないかぎり、
+デフォルトは「Sorry, try again.」である。
+.TP  18n
+editor
+\fBvisudo\fP で使用できるエディタをコロン (':\&') で区切ったリスト。\fBvisudo\fP は、
+可能ならば、ユーザの EDITOR 環境変数や
+VISUAL 環境変数とマッチしたリスト中のエディタを選択する。
+それができないときは、このリストにあるエディタで、実際に存在し、
+かつ実行可能な最初のエディタを使用する。
+環境変数 EDITOR や VISUAL は、\fIenv_reset\fP オプションが有効な場合、
+デフォルトでは保存されないことに注意していただきたい。
+デフォルトは \fIvi\fP である。
+.TP  18n
+iolog_dir
 このオプションの値をトップレベル・ディレクトリにして、
-入出力ログを格納するディレクトリのパス名が構成される。
-この値が使用されるのは、\fIlog_input\fR や
-\&\fIlog_output\fR オプションが有効になっているときや、
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR や \f(CW\*(C`LOG_OUTPUT\*(C'\fR
-タグがコマンドに付いているときだけである。このディレクトリ以下に、
-(セッション ID が連番ならば) セッションの連番が格納されることになるわけだ。
-デフォルトは \f(CW"/var/log/sudo-io"\fR である。
-.Sp
-以下のパーセント (`\f(CW\*(C`%\*(C'\fR') エスケープシーケンスが使用できる。
-.RS 16
-.ie n .IP "\*(C`%{seq}\*(C'" 4
-.el .IP "\f(CW\*(C`%{seq}\*(C'\fR" 4
-.IX Item "%{seq}"
-単純に増加する 36 進数の連続番号に展開される。たとえば、0100A5 といった番号であり、
-二桁づつ使って新しいディレクトリを作っていく。この場合なら、
-\&\fI01/00/A5\fR といった具合だ。
-.ie n .IP "\*(C`%{user}\*(C'" 4
-.el .IP "\f(CW\*(C`%{user}\*(C'\fR" 4
-.IX Item "%{user}"
-\&\fBsudo\fR を実行するユーザーのログイン名に展開される。
-.ie n .IP "\*(C`%{group}\*(C'" 4
-.el .IP "\f(CW\*(C`%{group}\*(C'\fR" 4
-.IX Item "%{group}"
-\&\fBsudo\fR を実行するユーザーの実グループ \s-1ID\s0 の名前に展開される。
-.ie n .IP "\*(C`%{runas_user}\*(C'" 4
-.el .IP "\f(CW\*(C`%{runas_user}\*(C'\fR" 4
-.IX Item "%{runas_user}"
+入出力ログを置くディレクトリのパス名が構成される。この値が使用されるのは、
+\fIlog_input\fP や \fIlog_output\fP オプションが有効になっているときや、
+LOG_INPUT や LOG_OUTPUT タグがコマンドに付いているときだけである。
+このディレクトリ以下に、セッション ID が連番ならば、
+セッションの連番が (訳注: 以下の "%{seq}" の説明にあるような形で) 
+格納されることになるわけだ。デフォルトは \fI/var/log/sudo\-io\fP である。
+.sp
+以下のパーセント ('%') エスケープシーケンスが使用できる。
+.PP
+.RS 18n
+.PD 0
+.TP  6n
+%{seq}
+単調に増加する 36 進数の連続番号に展開される。たとえば、0100A5
+といった番号であり、二桁づつ使って新しいディレクトリを作っていく。
+この場合なら、\fI01/00/A5\fP といった具合だ。
+.PD
+.TP  6n
+%{user}
+\fBsudo\fP を実行するユーザーのログイン名に展開される。
+.TP  6n
+%{group}
+\fBsudo\fP を実行するユーザーの実グループ ID の名前に展開される。
+.TP  6n
+%{runas_user}
 変身対象ユーザのログイン名に展開される (たとえば root)。
-.ie n .IP "\*(C`%{runas_group}\*(C'" 4
-.el .IP "\f(CW\*(C`%{runas_group}\*(C'\fR" 4
-.IX Item "%{runas_group}"
+.TP  6n
+%{runas_group}
 変身対象ユーザのグループ名に展開される (たとえば wheel)。
-.ie n .IP "\*(C`%{hostname}\*(C'" 4
-.el .IP "\f(CW\*(C`%{hostname}\*(C'\fR" 4
-.IX Item "%{hostname}"
+.TP  6n
+%{hostname}
 ドメイン名なしのローカル・ホスト名に展開される。
-.ie n .IP "\*(C`%{command}\*(C'" 4
-.el .IP "\f(CW\*(C`%{command}\*(C'\fR" 4
-.IX Item "%{command}"
+.TP  6n
+%{command}
 実行されるコマンドのベースネームに展開される。
-.RE
-.RS 16
-.Sp
-このほか、システムの \fIstrftime()\fR
-関数がサポートしているエスケープシーケンスは、
+.PP
+このほか、システムの strftime(3) 関数がサポートしているエスケープシーケンスは、
 いかなるものでも展開の対象になる。
-.Sp
-\&`\f(CW\*(C`%\*(C'\fR' 文字そのものを使いたかったら、文字列
-\&`\f(CW\*(C`%%\*(C'\fR' を使用すればよい。
-.RE
-.IP "iolog_file" 16
-.IX Item "iolog_file"
-\&\fIiolog_dir\fR を基点とする相対パス名であり、\fIlog_input\fR や
-\&\fIlog_output\fR オプションが有効になっていたり、
-\&\f(CW\*(C`LOG_INPUT\*(C'\fR や \f(CW\*(C`LOG_OUTPUT\*(C'\fR
+.sp
+\&'%' 文字そのものを使いたかったら、文字列 '%%' を使用すればよい。
+.RE
+.TP  18n
+iolog_file
+\fIiolog_dir\fP を基点とする相対パス名であり、\fIlog_input\fP や
+\fIlog_output\fP オプションが有効になっていたり、LOG_INPUT や LOG_OUTPUT
 タグがコマンドに付いている場合に、入出力ログがこの中に格納される。
-\&\fIiolog_file\fR の値がディレクトリ構成をなしていることがあるのに注意すること。
-デフォルトは \f(CW"%{seq}"\fR である。
-.Sp
-使用できるパーセント (`\f(CW\*(C`%\*(C'\fR') エスケープシーケンスのリストについては、
-上記の \fIiolog_dir\fR オプションを参照してほしい。
-.Sp
-エスケープシーケンスの展開とは別に、パス名が六個以上の \f(CW\*(C`X\*(C'\fR
-で終わっている場合、\f(CW\*(C`X\*(C'\fR の部分が、
-他と重複しない英数字の組み合わせに置き換えられる。
-\&\fImktemp()\fR 関数の場合と同様である。
-.IP "mailsub" 16
-.IX Item "mailsub"
-\&\fImailto\fR ユーザに送付するメールの件名。エスケープ文字 \f(CW%h\fR 
-はマシンのホスト名に展開される。デフォルトは「\f(CW\*(C`*** SECURITY
-information for %h ***\*(C'\fR」である。
-.IP "noexec_file" 16
-.IX Item "noexec_file"
-このオプションはもうサポートされていない。現在では、
-noexec ファイルのパスは \fI/etc/sudo.conf\fR ファイルで設定するべきである。
-(訳注: sudo-1.8.3 では、まだこのオプションが有効かもしれない。
-しかし、そこでも \fI/etc/sudo.conf\fR を使用することが推奨されている。)
-.IP "passprompt" 16
-.IX Item "passprompt"
+\fIiolog_file\fP の値が複数のディレクトリ構成要素を含んでいることがあるのに注意していただきたい。
+デフォルトは "%{seq}" である。
+.sp
+使用できるパーセント ('%') エスケープシーケンスのリストについては、
+上記の \fIiolog_dir\fP オプションを参照。
+.sp
+エスケープシーケンスの展開とは別に、パス名が六個以上の X で終わっている場合は、
+X の部分が、他と重複しない英数字の組み合わせに置き換えられる。
+mktemp(3) 関数の場合と同様である。
+.sp
+\fIiolog_dir\fP と \fIiolog_file\fP を結合して作られるパスがすでに存在している場合は、
+\fIiolog_file\fP が 6 個以上の X で終わっていないかぎり、
+既存の入出力ログファイルは、サイズ 0 に短縮された上で、上書きされることになる。
+.TP  18n
+lecture_status_dir
+\fBsudo\fP はこのディレクトリに、
+ユーザが訓戒を受けたかどうかを示すファイルを、ユーザごとに入れておく。
+ユーザが訓戒を受けると、サイズ 0 のファイルがこのディレクトリに作成され、
+\fBsudo\fP はそのユーザに再び訓戒を行わなくなる。このディレクトリは、
+システムのブート時に\fI消去すべきではない\fP。
+デフォルトは \fI/var/lib/sudo/lectured\fP である。
+.TP  18n
+mailsub
+\fImailto\fP ユーザに送付するメールの件名。
+エスケープ文字 %h はマシンのホスト名に展開される。
+デフォルトは「*** SECURITY information for %h ***」である。
+.TP  18n
+noexec_file
+\fBsudo\fP バージョン 1.8.1 以来、このオプションはサポートされていない。
+現在では、noexec ファイルのパスは sudo.conf(5) ファイルで設定するべきである。
+.TP  18n
+pam_login_service
+.br
+PAM を認証に使用しているシステムでは、このオプションの値が、
+\fBsudo\fP コマンドに \fB\-i\fP オプションが指定されたとき使用されるサービス名になる。
+デフォルトの値は、
+"sudo" である。\fIpam_service\fP の説明もご覧いただきたい。
+.sp
+この設定は、バージョン 1.8.8 以上でのみサポートされている。
+.TP  18n
+pam_service
+PAM を使用しているシステムでは、このオプションで指定するサービス名が、
+適用される PAM ポリシーを指定することになる。サービス名は \fIpam.conf\fP
+ファイル中のエントリ名や、\fI/etc/pam.d\fP にあるファイル名に対応している。
+デフォルトの値は "sudo" である。
+.sp
+この設定は、バージョン 1.8.8 以上でのみサポートされている。
+.TP  18n
+passprompt
 パスワードを要求するときに使用するデフォルトのプロンプト。
-\&\fB-p\fR オプションや環境変数 \f(CW\*(C`SUDO_PROMPT\*(C'\fR
-によって変更することができる。以下のパーセント (`\f(CW\*(C`%\*(C'\fR')
-エスケープシーケンスが使用できる。
-.RS 16
-.ie n .IP "%H" 4
-.el .IP "\f(CW%H\fR" 4
-.IX Item "%H"
-ドメイン名付きのローカルホスト名に展開 (マシンのホスト名が完全修飾名か、
-\&\fIfqdn\fR オプションがセットされている場合のみ)
-.ie n .IP "%h" 4
-.el .IP "\f(CW%h\fR" 4
-.IX Item "%h"
-ドメイン名なしのローカルホスト名に展開
-.ie n .IP "%p" 4
-.el .IP "\f(CW%p\fR" 4
-.IX Item "%p"
-パスワードを要求されているユーザ名に展開 (\fIsudoers\fR ファイルの 
-\&\fIrootpw\fR, \fItargetpw\fR, \fIrunaspw\fR フラグを尊重する)
-.ie n .IP "%U" 4
-.el .IP "\f(CW%U\fR" 4
-.IX Item "%U"
-変身対象ユーザの (デフォルトでは root) ログイン名に展開
-.ie n .IP "%u" 4
-.el .IP "\f(CW%u\fR" 4
-.IX Item "%u"
-\&\fBsudo\fR を起動するユーザのログイン名に展開
-.ie n .IP "\*(C`%%\*(C'" 4
-.el .IP "\f(CW\*(C`%%\*(C'\fR" 4
-.IX Item "%%"
-連続した二個の \f(CW\*(C`%\*(C'\fR は、一個の \f(CW\*(C`%\*(C'\fR
-文字そのものを意味する
-.RE
-.RS 16
-.Sp
-デフォルトの値は「\f(CW\*(C`Password:\*(C'\fR」である。
-.RE
-.if \n(SL \{\
-.IP "role" 16
-.IX Item "role"
-コマンドを実行するために
+\fB\-p\fP オプションや環境変数 SUDO_PROMPT によって変更することができる。
+以下のパーセント ('%') エスケープシーケンスが使用できる。
+.PP
+.RS 18n
+.PD 0
+.TP  6n
+%H
+ドメイン名付きのローカルホスト名に展開される (マシンのホスト名が完全修飾名か、
+\fIfqdn\fP オプションがセットされている場合のみ)。
+.PD
+.TP  6n
+%h
+ドメイン名なしのローカル・ホスト名に展開される。
+.TP  6n
+%p
+パスワードを要求されているユーザ名に展開 (\fIsudoers\fP ファイルの
+\fIrootpw\fP, \fItargetpw\fP, \fIrunaspw\fP フラグを尊重する)。
+.TP  6n
+\&%U
+変身対象ユーザの (デフォルトでは root) ログイン名に展開。
+.TP  6n
+%u
+\fBsudo\fP を実行するユーザーのログイン名に展開される。
+.TP  6n
+%%
+連続した二個の % は、一個の % 文字そのものを意味する。
+.PP
+デフォルトの値は「Password:」である。
+.RE
+.TP  18n
+role
+コマンドの実行に当たって
 SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、
 デフォルトのロール。デフォルトのロールは、
-\&\fIsudoers\fR ファイルや、コマンドラインオプションを使って、
+\fIsudoers\fP ファイルや、コマンドラインオプションを使って、
 コマンドごとに変更することができる。このオプションが利用できるのは、
-\&\fBsudo\fR が SELinux サポートつきで作成されたときだけである。
-\}
-.IP "runas_default" 16
-.IX Item "runas_default"
-コマンドラインで \fB-u\fR オプションが指定されていないときの、
-デフォルトの変身対象ユーザ。デフォルトでは \f(CW\*(C`root\*(C'\fR
-になっている。
-.IP "syslog_badpri" 16
-.IX Item "syslog_badpri"
+\fBsudo\fP が SELinux サポートつきでビルドされたときだけである。
+.TP  18n
+runas_default
+コマンドラインで \fB\-u\fP オプションが指定されていないときの、
+デフォルトの変身対象ユーザ。デフォルトでは root になっている。
+.TP  18n
+syslog_badpri
 ユーザが認証に失敗したときに使用する syslog の重大度 (priority)。
-デフォルトでは \f(CW\*(C`alert\*(C'\fR になっている。
-.Sp
-syslog の重大度には、次のものが指定できる。\fBalert\fR, \fBcrit\fR,
-\&\fBdebug\fR, \fBemerg\fR, \fBerr\fR, \fBinfo\fR, \fBnotice\fR,
-\&\fBwarning\fR。
-.IP "syslog_goodpri" 16
-.IX Item "syslog_goodpri"
+デフォルトでは alert になっている。
+.sp
+syslog の重大度には、次のものが指定できる。\fBemerg\fP, \fBalert\fP,
+\fBcrit\fP, \fBerr\fP, \fBwarning\fP, \fBnotice\fP, \fBinfo\fP, \fBdebug\fP。
+.TP  18n
+syslog_goodpri
 ユーザが認証に成功したときに使用する syslog の重大度 (priority)。
-デフォルトでは \f(CW\*(C`notice\*(C'\fR になっている。
-.Sp
+デフォルトでは notice になっている。
+.sp
 どんな syslog の重大度が指定できるかについては、
-syslog_badpri を参照。
-.IP "sudoers_locale" 16
-.IX Item "sudoers_locale"
+\fIsyslog_badpri\fP を参照。
+.TP  18n
+sudoers_locale
 sudoers ファイルを解析したり、コマンドのログを記録したり、
-email を送付したりするときに使用するロケール。ロケールの変更は、
-sudoers の解釈に影響があるかもしれないので、気をつけてほしい。
-デフォルトでは \f(CW"C"\fR になっている。
-.IP "timestampdir" 16
-.IX Item "timestampdir"
-\&\fBsudo\fR がタイムスタンプ・ファイルを置くディレクトリ。
\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81¯ \fI/var/lib/sudo\fR である。
-.IP "timestampowner" 16
-.IX Item "timestampowner"
-タイムスタンプ・ディレクトリとそこに置かれるタイムスタンプの所有者。
\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81¯ \f(CW\*(C`root\*(C'\fR ã\81§ã\81\82ã\82\8bã\80\82
-.if \n(SL \{\
-.IP "type" 16
-.IX Item "type"
-コマンドを実行するために SELinux の新しいセキュリティ・コンテキストを
-構成するとき、使用するデフォルトのタイプ。デフォルトのタイプは、
-\&\fIsudoers\fR ファイルや、コマンドラインオプションを使って、コマンド
-ごとに変更することができる。このオプションが利用できるのは、\fBsudo\fR 
\81\8c SELinux ã\82µã\83\9dã\83¼ã\83\88ã\81¤ã\81\8dã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\81\9fã\81¨ã\81\8dã\81 ã\81\91ã\81§ã\81\82ã\82\8bã\80\82
-\}
-.PP
-\&\fB真偽値としても使用できる文字列\fR:
-.IP "env_file" 12
-.IX Item "env_file"
-\&\fIenv_file\fR オプションでファイルの絶対パスを指定すると、
-実行するプログラムの環境として設定する変数を、そのファイルに格納しておくことができる。
-このファイルのエントリは \f(CW\*(C`VARIABLE=value\*(C'\fR
-か \f(CW\*(C`export VARIABLE=value\*(C'\fR の形でなければならない
-変数の値をシングルクォートやダブルクォートで囲んでもよい。
\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81«å\90«ã\81¾ã\82\8cã\82\8bå¤\89æ\95°ã\81¯ã\80\81\fIenv_keep\fR ã\82\84 \fIenv_check\fR ã\81®ã\82\88ã\81\86ã\81ª
-\&\fBsudo\fR のほかの環境設定の影響を受ける。
-.IP "exempt_group" 12
-.IX Item "exempt_group"
-このグループのユーザはパスワードの入力や \fIsecure_path\fR による
-\&\s-1PATH\s0 の限定を免除されている。
-指定するグループ名に接頭辞の \f(CW\*(C`%\*(C'\fR を付けてはいけない。
+email を送付したりするときに使用するロケール。
+ロケールの変更は、sudoers の解釈に影響があるかもしれないので、
+気をつけていただきたい。デフォルトでは "C" になっている。
+.TP  18n
+timestampdir
+\fBsudo\fP がタイムスタンプ・ファイルを置くディレクトリ。
\81\93ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81\8cã\83ªã\83\96ã\83¼ã\83\88ã\81\99ã\82\8bã\81¨ã\81\8dã\80\81ã\82¯ã\83ªã\82¢ã\81\95ã\82\8cã\82\8bã\81¹ã\81\8dである。
+デフォルトは \fI/var/run/sudo/ts\fP になっている。
+.TP  18n
+timestampowner
\83¦ã\83¼ã\82¶ã\81\8cè¨\93æ\88\92ã\82\92å\8f\97ã\81\91ã\81\9fã\81\8bã\81©ã\81\86ã\81\8bã\82\92示ã\81\99ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\85¥ã\82\8cã\81¦ã\81\8aã\81\8fã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\82\84ã\80\81
+タイムスタンプ・ディレクトリ、
+及びそうしたディレクトリに置かれるすべてのファイルの所有者。
+デフォルトは root である。
+.TP  18n
+type
+コマンドの実行に当たって
+SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、
\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81®ã\82¿ã\82¤ã\83\97ã\80\82ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81®ã\82¿ã\82¤ã\83\97ã\81¯ã\80\81
+\fIsudoers\fP ファイルや、コマンドラインオプションを使って、
+コマンドごとに変更することができる。このオプションが利用できるのは、
+\fBsudo\fP が SELinux サポートつきでビルドされたときだけである。
+.PP
+\fB真偽値としても使用できる文字列\fP:
+.TP  14n
+env_file
+\fIenv_file\fP オプションでは、
+実行するプログラムの環境に設定する変数を記載したファイルの絶対パスを指定する
+このファイルに記載する項目は、"VARIABLE=value" か "export VARIABLE=value"
\81®å½¢ã\81§ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82å¤\89æ\95°ã\81®å\80¤ã\82\92ã\82·ã\83³ã\82°ã\83«ã\82¯ã\82©ã\83¼ã\83\88ã\82\84ã\83\80ã\83\96ã\83«ã\82¯ã\82©ã\83¼ã\83\88ã\81§å\9b²ã\82\93ã\81§ã\82\82ã\82\88ã\81\84ã\80\82
+このファイルに含まれる変数は、\fIenv_keep\fP や \fIenv_check\fP のような
+\fBsudo\fP のほかの環境設定の影響を受ける。
+.TP  14n
+exempt_group
+このグループのユーザはパスワードの入力や \fIsecure_path\fP などによる
+PATH の限定を免除される。指定するグループ名に接頭辞の % を付けてはいけない。
 このオプションはデフォルトではセットされていない。
-.IP "group_plugin" 12
-.IX Item "group_plugin"
-このオプションの値となる文字列には、\fIsudoers\fR
-が使用するグループ・プラグインと、必要ならその引き数を指定する。
-このオプションを使えば、前述した (訳注: 「エイリアス」セクション参照)
-非 Unix グループの書式を使えるようにすることも可能だ。
+.TP  14n
+group_plugin
+このオプションの値となる文字列には、
+\fBsudoers\fP が使用するグループ・プラグインと、必要ならその引き数を指定する。
 値となる文字列は、プラグインのパスに続けて、その設定に必要な引き数があれば、
 それを付け加えたものだが、パスは絶対パスか、
-\&\fI/usr/local/libexec\fR を基点とする相対パスにするべきである。
-指定した引き数は (もし存在するなら) プラグインの初期化関数に渡される。
-引き数が存在する場合は、
-文字列をダブルクォート (\f(CW\*(C`"\*(C'\fR) で囲まなければならない。 
-.Sp
-たとえば、\fI/etc/sudo\-group\fR という
-Unix グループの書式で書いたグループファイルがあるとしよう。
-次のようにすれば、sample group plugin を使用することができる。
-.Sp
-.Vb 1
-\&    Defaults group_plugin="sample_group.so /etc/sudo\-group"
-.Ve
-.Sp
-詳細に付いては、\fIsudo_plugin\fR\|(5) をご覧いただきたい。
-.IP "lecture" 12
-.IX Item "lecture"
-\&\fBsudo\fR はパスワードプロンプトに添えて簡単な訓戒を表示することができる。
-このオプションはその訓戒をいつ表示するかを決定する。
-以下の値が可能である。
-.RS 12
-.IP "always" 8
-.IX Item "always"
+\fI/usr/local/libexec/sudo\fP を基点とする相対パスにするべきである。
+引き数が存在するなら、それはプラグインの初期化関数に渡される。
+引き数が存在する場合は、文字列全体をダブルクォート (\&"") で囲まなければならない。
+.sp
+詳細については、
+「グループ・プロバイダー・プラグイン」セクションををご覧いただきたい。
+.TP  14n
+lecture
+\fBsudo\fP はパスワードプロンプトに添えて簡単な訓戒を表示することができる。
+このオプションはその訓戒をいつ表示するかを決定する。以下の値が可能である。
+.PP
+.RS 14n
+.PD 0
+.TP  8n
+always
 いつでも必ず訓戒を表示する。
-.IP "never" 8
-.IX Item "never"
+.PD
+.TP  8n
+never
 訓戒をまったく表示しない。
-.IP "once" 8
-.IX Item "once"
-ユーザがはじめて \fBsudo\fR を実行したときだけ表示する。
-.RE
-.RS 12
-.Sp
-値を指定しないと、\fIonce\fR を指定したことになる。頭に '!' を付けて、
-このオプションを否定すると、値に \fInever\fR が使用される。
-デフォルトの値は \fIonce\fR である。
-.RE
-.IP "lecture_file" 12
-.IX Item "lecture_file"
-標準の訓戒の代わりに使用する \fBsudo\fR の訓戒を書き込んだファイルがあるなら、
-\&\fIlecture_file\fR でそのパスを指定する。\fBsudo\fR はデフォルトでは、
-プログラムに埋め込まれた訓戒を使用する。
-.IP "listpw" 12
-.IX Item "listpw"
-このオプションは、\fBsudo\fB を\fB\ -l\fR オプション付きで実行したとき、
+.TP  8n
+once
+ユーザがはじめて \fBsudo\fP を実行したときだけ表示する。
+.PP
+値を指定しないと、\fIonce\fP を指定したことになる。頭に '!' を付けて、
+このオプションを否定すると、値に \fInever\fP が使用される。
+デフォルトの値は \fIonce\fP である。
+.RE
+.TP  14n
+lecture_file
+標準の訓戒とは別の \fBsudo\fP の訓戒を書き込んだファイルのパス。
+指名したファイルが存在すれば、\fBsudo\fP は標準の訓戒の代わりに、それを使用する。
+デフォルトでは、プログラムに埋め込まれた訓戒が使用される。
+.TP  14n
+listpw
+このオプションは、\fBsudo\fP を \fB\-l\fP オプション付きで実行したとき、
 ユーザがパスワードを要求されるのは、どんな場合かを決定する。
 以下の値が可能である。
-.RS 12
-.IP "all" 8
-.IX Item "all"
+.PP
+.RS 14n
+.PD 0
+.TP  10n
+all
+パスワードを入力しないですむためには、
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
+NOPASSWD タグが設定されていなければならない。
+.PD
+.TP  10n
+always
+ユーザは \fB\-l\fP オプションを使用する際に、必ずパスワードを入力しなければならない。
+.TP  10n
+any
 パスワードを入力しないですむためには、
-\&\fIsudoers\fR ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "always" 8
-.IX Item "always"
-ユーザは \fB\-l\fR オプションを使用する際に
-必ずパスワードを入力しなければならない。
-.IP "any" 8
-.IX Item "any"
-パスワードを入力しないですむためには、\fIsudoers\fR ファイルの
-使用中のホストに対する当該ユーザのエントリの少なくとも一つに 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "never" 8
-.IX Item "never"
-ユーザは \fB\-l\fR オプションを使用する際に
-パスワードを入力する必要がまったくない。
-.RE
-.RS 12
-.Sp
-値を指定しないと、値は \fIany\fR だと見なされる。'!' を頭に付けて、
-このオプションを否定すると、値に \fInever\fR が使われることになる。
-デフォルトは \fIany\fR である。
-.RE
-.IP "logfile" 12
-.IX Item "logfile"
-\&\fBsudo\fR 独自のログファイルのパス (syslog 経由のログファイルではない)。
-パスを指定すると、独自ファイルへのロギングが on になり、 '!' を頭に付けて、
-このオプションを否定すると、off になる。デフォルトでは、\fBsudo\fR は 
-syslog 経由でログを取る。
-.IP "mailerflags" 12
-.IX Item "mailerflags"
-メーラを起動するときに使用するフラグ。デフォルトは \fB\-t\fR になっている。
-.IP "mailerpath" 12
-.IX Item "mailerpath"
-警告メールの送信に使うメール・プログラムのパス。デフォルトは configure 
-したときに見つかった sendmail のパス。
-.IP "mailfrom" 12
-.IX Item "mailfrom"
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一つに
+NOPASSWD タグが設定されていなければならない。
+.TP  10n
+never
+ユーザは \fB\-l\fP オプションを使用する際に、パスワードを入力する必要がまったくない。
+.PP
+値を指定しないと、値は \fIany\fP だと見なされる。'!' を頭に付けて、
+このオプションを否定すると、値に \fInever\fP が使われることになる。
+デフォルトは \fIany\fP である。
+.RE
+.TP  14n
+logfile
+\fBsudo\fP 独自のログファイルのパス (syslog 経由のログファイルではない)。
+パスを指定すると、独自ファイルへのロギングが on になり、
+\&'!' を頭に付けて、このオプションを否定すると、off になる。
+デフォルトでは、\fBsudo\fP は syslog 経由でログを取る。
+.TP  14n
+mailerflags
+メーラを起動するときに使用するフラグ。デフォルトは \fB\-t\fP になっている。
+.TP  14n
+mailerpath
+警告メールの送信に使用するメール・プログラムのパス。
+デフォルトは configure したときに見つかった sendmail のパス。
+.TP  14n
+mailfrom
 警告メールやエラー・メールを送るとき、差出人として使用するアドレス。
-\&\fBsudo\fR が \f(CW\*(C`@\*(C'\fR 記号を解釈しないように、
-アドレスはダブルクォート (\f(CW\*(C`"\*(C'\fR) で囲むべきである。デフォルトは、
-\&\fBsudo\fR を実行するユーザの名前。
-.IP "mailto" 12
-.IX Item "mailto"
-警告メールやエラー・メールを送付する宛先のアドレス。\fBsudo\fR が 
-\&\f(CW\*(C`@\*(C'\fR 記号を解釈しないように、
-アドレスはダブルクォート (\f(CW\*(C`"\*(C'\fR) で囲むべきである。
+\fBsudo\fP が @ 記号を解釈しないように、
+アドレスはダブルクォート (\&"") で囲むべきである。
+デフォルトは、\fBsudo\fP を実行しているユーザの名前。
+.TP  14n
+mailto
+警告メールやエラー・メールを送付する宛先のアドレス。
+\fBsudo\fP が @ 記号を解釈しないように、
+アドレスはダブルクォート (\&"") で囲むべきである。
 デフォルトは root になっている。
-.IP "secure_path" 12
-.IX Item "secure_path"
-\&\fBsudo\fR から実行されるあらゆるコマンドが使用するパス。
-\&\fBsudo\fR を実行するユーザが、無難な環境変数 \f(CW\*(C`PATH\*(C'\fR
\82\92使ã\81£ã\81¦ã\81\84ã\82\8bã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cæ\8c\81ã\81¦ã\81ªã\81\84ã\81ªã\82\89ã\80\81ã\81\93ã\81®ã\82ªã\83\97ã\82·ã\83§ã\83³ã\82\92使ç\94¨ã\81\99ã\82\8bã\81¨ã\82\88ã\81\84ã\81 ã\82\8dã\81\86ã\80\82
\82\82ã\81\86ä¸\80ã\81¤ã\81®ä½¿ç\94¨æ³\95ã\81¯ã\80\81ã\80\8croot ã\81®ã\83\91ã\82¹ã\80\8dã\81¨ã\80\8cä¸\80è\88¬ã\83¦ã\83¼ã\82¶ã\81®ã\83\91ã\82¹ã\80\8dã\82\92å\88¥ã\81®ã\82\82ã\81®ã\81«ã\81\97ã\81¦ã\81\8aã\81\8dã\81\9fã\81\84å ´å\90\88ã\81 ã\80\82
-ユーザが \fIexempt_group\fR オプションで指定したグループに属していると、
-そのユーザは \fIsecure_path\fR の影響を受けない。
+.TP  14n
+secure_path
+\fBsudo\fP から実行されるあらゆるコマンドが使用するパス。
+\fBsudo\fP を実行するユーザが、無難な PATH 環境変数 を使っているかどうか確信が持てないなら、
\81\93ã\81®ã\82ªã\83\97ã\82·ã\83§ã\83³ã\82\92使ç\94¨ã\81\99ã\82\8bã\81¨ã\82\88ã\81\84ã\81 ã\82\8dã\81\86ã\80\82ã\82\82ã\81\86ä¸\80ã\81¤ã\81®ä½¿ç\94¨æ³\95ã\81¯ã\80\81
+「root のパス」と「一般ユーザのパス」を別のものにしておきたい場合だ。
+ユーザが \fIexempt_group\fP オプションで指定したグループに属していると、
+そのユーザは \fIsecure_path\fP の影響を受けない。
 このオプションは、デフォルトではセットされていない。
-.IP "syslog" 12
-.IX Item "syslog"
+.TP  14n
+syslog
 syslog を使ってログを取っている場合の syslog のファシリティ
-(syslog 経由でログを取らないなら、'!' を頭に付けて、このオプションを否定する)。
\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ \f(CW\*(C`authpriv\*(C'\fR になっている。
-.Sp
+(syslog 経由でログを取らないなら、'!' を頭に付けて、
\81\93ã\81®ã\82ªã\83\97ã\82·ã\83§ã\83³ã\82\92å\90¦å®\9aã\81\99ã\82\8b\80\82ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ authpriv になっている。
+.sp
 syslog のファシリティには、次のものが指定できる。
-\&\fBauthpriv\fR (\s-1OS\s0 が対応している場合), \fBauth\fR, \fBdaemon\fR,
-\&\fBuser\fR, \fBlocal0\fR, \fBlocal1\fR, \fBlocal2\fR, \fBlocal3\fR,
-\&\fBlocal4\fR, \fBlocal5\fR, \fBlocal6\fR, \fBlocal7\fR
-.IP "verifypw" 12
-.IX Item "verifypw"
-このオプションは、\fBsudo\fR を \fB\-v\fR オプション付きで実行したとき、
+\fBauthpriv\fP (使用 OS が対応している場合), \fBauth\fP, \fBdaemon\fP, \fBuser\fP,
+\fBlocal0\fP, \fBlocal1\fP, \fBlocal2\fP, \fBlocal3\fP, \fBlocal4\fP, \fBlocal5\fP,
+\fBlocal6\fP, \fBlocal7\fP
+.TP  14n
+verifypw
+このオプションは、\fBsudo\fP を \fB\-v\fP オプション付きで実行したとき、
 ユーザがパスワードを要求されるのは、どんな場合かを決定する。
-次のような値が可能である。
-.RS 12
-.IP "all" 8
-.IX Item "all"
+以下の値が可能である。
+.PP
+.RS 14n
+.PD 0
+.TP  8n
+all
 パスワードを入力しないですむためには、
-\&\fIsudoers\fR ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "always" 8
-.IX Item "always"
-ユーザは \fB\-v\fR オプションを使用する際に
-必ずパスワードを入力しなければならない。
-.IP "any" 8
-.IX Item "any"
-パスワードを入力しないですむためには、\fIsudoers\fR ファイルの
-使用中のホストに対する当該ユーザのエントリの少なくとも一つに 
-\f(CW\*(C`NOPASSWD\*(C'\fR タグが設定されていなければならない。
-.IP "never" 8
-.IX Item "never"
-ユーザは \fB\-v\fR オプションを使用する際に
-パスワードを入力する必要がまったくない。
-.RE
-.RS 12
-.Sp
-値を指定しないと、値は \fIall\fR だと見なされる。'!' を頭に付けて、
-このオプションを否定すると、値に \fInever\fR が使われることになる。
-デフォルトは \fIall\fR である。
-.RE
-.PP
-\&\fB真偽値としても使用できるリスト\fR:
-.IP "env_check" 16
-.IX Item "env_check"
-変数の値に \f(CW\*(C`%\*(C'\fR や \f(CW\*(C`/\*(C'\fR が含まれる場合に、
-ユーザの環境から取り除かれる環境変数。
-この機能は、出来のよくないプログラムに見られる
-printf 形式のフォーマットの脆弱性に対処するために利用できる。
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
+NOPASSWD タグが設定されていなければならない。
+.PD
+.TP  8n
+always
+ユーザは \fB\-v\fP オプションを使用する際に、必ずパスワードを入力しなければならない。
+.TP  8n
+any
+パスワードを入力しないですむためには、
+\fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一つに
+NOPASSWD タグが設定されていなければならない。
+.TP  8n
+never
+ユーザは \fB\-v\fP オプションを使用する際に、パスワードを入力する必要がまったくない。
+.PP
+値を指定しないと、値は \fIall\fP だと見なされる。'!' を頭に付けて、
+このオプションを否定すると、値に \fInever\fP が使われることになる。
+デフォルトは \fIall\fP である。
+.RE
+.PP
+\fB真偽値としても使用できるリスト\fP:
+.TP  18n
+env_check
+「安全」だと見なされない場合に、ユーザの環境から取り除かれる環境変数。
+TZ 以外のすべての環境変数について、「安全」というのは、変数の値に
+\&'%' や '/' という文字を一つも含まないことである。この動作を利用すれば、
+出来のよくないプログラムに見られる
+printf 形式のフォーマットの脆弱性に対処することが可能になる。
+TZ 変数については、以下のどれかが真ならば、安全ではないと見なされる。
+.PP
+.RS 18n
+.PD 0
+.TP  4n
+\fB\(bu\fP
+変数の値が絶対パス名であり (コロン (':\&') が先頭に付いていることもある)、
+それが \fIzoneinfo\fP ディレクトリの位置にマッチしない。
+.PD
+.TP  4n
+\fB\(bu\fP
+変数の値に \fI..\fP というパスの要素が存在する。
+.TP  4n
+\fB\(bu\fP
+変数の値にホワイトスペースや表示不能文字が存在する。
+.TP  4n
+\fB\(bu\fP
+変数の値が PATH_MAX の値より長い。
+.PP
 このオプションの引き数は、ダブルクォートで囲まれ、
 スペースで区切られたリストでもよく、
-ダブルクォートなしの単一の値でもよい。リストは、\f(CW\*(C`=\*(C'\fR,
-\&\f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, \f(CW\*(C`!\*(C'\fR
+ダブルクォートなしの単一の値でもよい。リストは、=, +=, \-=, \&!
 演算子を使って、それぞれ置き換えたり、追加したり、削除したり、
-無効にしたりすることができる。
-\&\fIenv_check\fR で指定された変数は、
-\&\fIenv_reset\fR オプショの有効・無効にかかわらず、
-上記のチェックにパスすれば、環境に保存されることになる。
-チェックされる環境変数のデフォルトのリストは、root ユーザが \fBsudo\fR に
-\&\fI\-V\fR オプションを付けて実行したときに表示される。
-.IP "env_delete" 16
-.IX Item "env_delete"
-\&\fIenv_reset\fR オプションが無効になっているときに、
+無効にしたりすることができる。\fIenv_check\fP で指定された変数は、
+\fIenv_reset\fP オプショの有効・無効にかかわらず、上記のチェックにパスすれば、
+環境に保存されることになる。チェックされる環境変数のグローバルなリストは、
+root ユーザが \fBsudo\fP に \fB\-V\fP オプションを付けて実行したときに表示される。
+.RE
+.TP  18n
+env_delete
+\fIenv_reset\fP オプションが無効になっているときに、
 ユーザの環境から取り除かれる環境変数。このオプションの引き数は、
 ダブルクォートで囲まれ、スペースで区切られたリストでもよく、
 ダブルクォートなしの単一の値でもよい。
-リストは、\f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR,
-\&\f(CW\*(C`!\*(C'\fR 演算子を使って、それぞれ置き換えたり、追加したり、
+リストは、=, +=, \-=, \&! 演算子を使って、それぞれ置き換えたり、追加したり、
 削除したり、無効にしたりすることができる。
\8f\96ã\82\8aé\99¤ã\81\8bã\82\8cã\82\8bç\92°å¢\83å¤\89æ\95°ã\81®ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81®ã\83ªã\82¹ã\83\88ã\81¯ã\80\81root ã\83¦ã\83¼ã\82¶ã\81\8c \fBsudo\fR に
-\&\fI\-V\fR オプションを付けて実行したときに表示される。
-留意すべきは、オペレーティングシステムには
-危険をもたらしかねない変数をいかなる setuid プロセス (\fBsudo\fR もその一つ)
\81®ç\92°å¢\83ã\81\8bã\82\89ã\82\82å\8f\96ã\82\8aé\99¤ã\81\8fã\81\93ã\81¨ã\81«ã\81\97ã\81¦ã\81\84ã\82\8bã\82\82ã\81®ã\81\8cå¤\9aã\81\84ã\81¨ã\81\84ã\81\86ã\81\93ã\81¨ã\81§ã\81\82ã\82\8b
-.IP "env_keep" 16
-.IX Item "env_keep"
-\&\fIenv_reset\fR オプションが有効になっているときでも、
\8f\96ã\82\8aé\99¤ã\81\8bã\82\8cã\82\8bç\92°å¢\83å¤\89æ\95°ã\81®ã\82°ã\83­ã\83¼ã\83\90ã\83«ã\81ªã\83ªã\82¹ã\83\88ã\81¯ã\80\81root ã\83¦ã\83¼ã\82¶ã\81\8c \fBsudo\fP に
+\fB\-V\fP オプションを付けて実行したときに表示される。
+なお、オペレーティングシステムには、危険をもたらしかねない変数を
+いかなる setuid プロセス (\fBsudo\fP もその一つ)
\81®ç\92°å¢\83ã\81\8bã\82\89ã\82\82å\8f\96ã\82\8aé\99¤ã\81\8fã\81\93ã\81¨ã\81«ã\81\97ã\81¦ã\81\84ã\82\8bã\82\82ã\81®ã\81\8cå¤\9aã\81\84ã\81\93ã\81¨ã\81«ç\95\99æ\84\8fã\81\97ã\81¦ã\81»ã\81\97ã\81\84
+.TP  18n
+env_keep
+\fIenv_reset\fP オプションが有効になっているときでも、
 ユーザの環境にそのまま保存される環境変数。このオプションによって、
-\&\fBsudo\fR から生み出されるプロセスが受け取る環境を、
+\fBsudo\fP から生み出されるプロセスが受け取る環境を、
 きめ細かく制御することが可能になる。このオプションの引き数は、
 ダブルクォートで囲まれ、スペースで区切られたリストでもよく、
-ダブルクォートなしの単一の値でもよい。リストは、
-\&\f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR,
-\&\f(CW\*(C`!\*(C'\fR 演算子を使って、それぞれ置き換えたり、
-追加したり、削除したり、無効にしたりすることができる。
-保存される変数のデフォルトのリストは、root ユーザが \fBsudo\fR に
-\&\fI\-V\fR オプションを付けて実行したときに表示される。
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudoers\fR" 24
-.el .IP "\fI/etc/sudoers\fR" 24
-.IX Item "/etc/sudoers"
+ダブルクォートなしの単一の値でもよい。
+リストは、=, +=, \-=, \&! 演算子を使って、
+それぞれ置き換えたり、追加したり、削除したり、無効にしたりすることができる。
+保存される変数のグローバルなリストは、root ユーザが \fBsudo\fP に
+\fB\-V\fP オプションを付けて実行したときに表示される。
+.SH グループ・プロバイダー・プラグイン
+\fBsudoers\fP プラグインは、non\-Unix グループの検索を可能にするために、
+補助的なプラグインに対するインターフェースを備えており、それによって、
+標準的な Unix グループ・データベース以外のグループ情報源に対する問い合わせができるようになっている。
+先に述べたような、non\-Unix グループを指定する書式の使用を可能にしたかったら、
+この仕組みが使用できる。
+.PP
+グループ・プロバイダー・プラグインは、デフォルト設定の \fIgroup_plugin\fP
+によって指定する。\fIgroup_plugin\fP に対する引き数は、プラグインのパスに続けて、
+その設定に必要なオプションがあれば、それを付け加えたものだが、
+パスは絶対パスか、\fI/usr/local/libexec/sudo\fP
+を基点とする相対パスにするべきである。そうしたオプションは (指定されていれば)
+プラグインの初期化関数に渡されることになる。オプションがある場合は、
+文字列全体をダブルクォート (\&"") で囲まなければならない。
+.PP
+以下のグループ・プロバイダー・プラグインがデフォルトでインストールされている。
+.TP  10n
+group_file
+\fIgroup_file\fP プラグインは、\fI/etc/group\fP の代わりに、
+\fI/etc/group\fP と同じ書式を使用する別のグループファイルを使えるようにする。
+プラグインに対するオプションとして、グループファイルのパスを指定するべきである。
+たとえば、使用するグループファイルが \fI/etc/sudo\-group\fP ならば、
+次のように書くことになる。
+.nf
+.sp
+.RS 10n
+Defaults group_plugin="group_file.so /etc/sudo\-group"
+.RE
+.fi
+.TP  10n
+system_group
+\fIsystem_group\fP プラグインは、標準 C ライブラリの関数 \fBgetgrnam\fP() と
+\fBgetgrid\fP() によるグループ検索をサポートしている。このプラグインは、
+ユーザがそのユーザの補助グループのリストに存在しないグループに所属しているといった場合にも使用できる。
+このプラグインはオプションを取らないので、書式は次のようになる。
+.nf
+.sp
+.RS 10n
+Defaults group_plugin=system_group.so
+.RE
+.fi
+.PP
+グループ・プロバイダー・プラグインの API については、sudo_plugin(5)
+に詳細な説明がある。
+.SH ログの書式
+\fBsudoers\fP は、何が起きたかを記録するのに、suslog(3) を使用することもできるし、
+単独のログ・ファイルを使用することもできる。
+どちらの場合も、ログの書式はほとんど同じである。
+.SS 実行を許可されたコマンドに関するログ記載事項
+sudo が実行したコマンドは、次の書式を使って記録される
+(読みやすいように、ここでは複数行に分けている)。
+.nf
+.sp
+.RS 4n
+date hostname progname: username : TTY=ttyname ; PWD=cwd ; \e
+    USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \e
+    ENV=env_vars COMMAND=command
+.RE
+.fi
+.PP
+各フィールドは以下のようになっている。
+.TP  14n
+date
+コマンドが実行された日時。たいていは、"MMM, DD, HH:MM:SS" の形式である。
+syslog(3) 経由でロギングしている場合に、
+日時が実際にどんな形式になるかを決めるのは、syslog デーモンである。
+\fBsudo\fP 独自のファイルにロギングしているとき、
+\fIlog_year\fP オプションが有効だと、日時に年度も含まれることになる。
+.TP  14n
+hostname
+\fBsudo\fP が実行されたホストの名前。このフィールドは、
+syslog(3) 経由でロギングしているときにのみ存在する。
+.TP  14n
+progname
+プログラム名。普通は、\fIsudo\fP か \fIsudoedit\fP。このフィールドは、
+syslog(3) 経由でロギングしているときのみ存在する。
+.TP  14n
+username
+\fBsudo\fP を実行したユーザのログイン名。
+.TP  14n
+ttyname
+\fBsudo\fP が実行された端末の短縮名
+(たとえば、"console", "tty01", "pts/0" など)。端末が存在しなかった場合は、
+"unknown" になる。
+.TP  14n
+cwd
+\fBsudo\fP が実行されたカレント・ワーキング・ディレクトリ。
+.TP  14n
+runasuser
+変身対象ユーザ。
+.TP  14n
+runasgroup
+変身対象グループがコマンドラインで指定されていれば、そのグループ。
+.TP  14n
+logid
+入出力ログの識別名。コマンドの出力を再生するときに使用できる。
+このフィールドは、\fIlog_input\fP や \fIlog_output\fP
+オプションが有効なときにのみ存在する。
+.TP  14n
+env_vars
+環境変数がコマンドラインで指定された場合、そのリスト。
+.TP  14n
+command
+実行された実際のコマンド。
+.PP
+メッセージは \fIsudoers_locale\fP で指定されたロケールを使って記録される。
+デフォルトは "C" である。
+.SS 実行を拒否されたコマンドに関するログ記載事項
+ユーザがコマンドの実行を認められなかった場合、
+拒否された理由が、ユーザ名の後に記録されることになる。
+理由として挙げられるものには、次のようなものがある。
+.TP  3n
+user NOT in sudoers
+そのユーザに関する記載が \fIsudoers\fP ファイルに存在しない。
+.TP  3n
+user NOT authorized on host
+そのユーザに関する記載が \fIsudoers\fP ファイルに存在するが、
+このホストではコマンドの実行を許可されていない。
+.TP  3n
+command not allowed
+このホストに対するそのユーザの記載が \fIsudoers\fP ファイルに存在するが、
+指定されたコマンドの実行を許可されていない。
+.TP  3n
+3 incorrect password attempts
+ユーザがパスワードの入力に 3 回失敗した。実際に書き込まれる試行回数は、
+失敗した回数と \fIpasswd_tries\fP オプションの値によって様々である。
+.TP  3n
+a password is required
+\fBsudo\fP に \fB\-n\fP オプションを指定したが、パスワードが必要だった。
+.TP  3n
+sorry, you are not allowed to set the following environment variables
+ユーザがコマンドラインで環境変数を指定したが、
+それは \fIsudoers\fP によって許可されていない。
+.SS エラーに関するログ記載事項
+エラーが起きると、\fBsudoers\fP はメッセージをログに記録し、たいていの場合は、
+管理者に email で報告する。起きるかもしれないエラーには次のものがある。
+.TP  3n
+parse error in /etc/sudoers near line N
+\fBsudoers\fP が上記ファイルの解析中にエラーに出会った。
+エラーのタイプによっては、実際のエラーは、記載された行番号より 1 行上、
+あるいは、1 行下にあることもある。
+.TP  3n
+problem with defaults entries
+\fIsudoers\fP ファイル中に意味不明なデフォルト設定 (Defaults setting) が、
+一つ以上ある。このエラーがあっても、\fBsudo\fP が実行できなくなることはないが、
+\fBvisudo\fP を使って \fIsudoers\fP ファイルをチェックするべきである。
+.TP  3n
+timestamp owner (username): \&No such user
+\fItimestampowner\fP オプションで指定されたタイムスタンプ・ディレクトリの所有者が、
+パスワード・データベースに存在しなかった。
+.TP  3n
+unable to open/read /etc/sudoers
+\fIsudoers\fP ファイルを読み込もうとしたが、オープンできなかった。
+そうしたことは、\fIsudoers\fP ファイルがリモート・ファイルシステムに存在して、
+そこではユーザ ID 0 を別の値にマップしている場合に起きることがある
+(訳注: たとえば、NFS で root_squash が有効な場合)。
+通常 \fBsudoers\fP は、この問題を回避するために、グループのパーミッションを使って
+\fIsudoers\fP ファイルをオープンしようとする。
+\fI/etc/sudoers\fP の所有権を変更するなり、
+sudo.conf(5) ファイルの \fBsudoers\fP Plugin 行の末尾に "sudoers_uid=N"
+('N' は、\fIsudoers\fP ファイルの所有者のユーザ ID)
+といった引き数を追加するなりを、考慮すべきである。
+.TP  3n
+unable to stat /etc/sudoers
+\fI/etc/sudoers\fP ファイルが見つからない。
+.TP  3n
+/etc/sudoers is not a regular file
+\fI/etc/sudoers\fP は存在するが、通常ファイルでもシンボリック・リンクでもない。
+.TP  3n
+/etc/sudoers is owned by uid N, should be 0
+\fIsudoers\fP ファイルの所有者が適切ではない。
+\fIsudoers\fP ファイルの所有者を変更したい場合には、sudo.conf(5) ファイルの
+\fBsudoers\fP Plugin 行に "sudoers_uid=N" ('N' は、
+\fIsudoers\fP ファイルの所有者のユーザ ID) を付け加えていただきたい。
+.TP  3n
+/etc/sudoers is world writable
+\fIsudoers\fP ファイルのパーミッションがすべてのユーザに書き込みを許している。
+\fIsudoers\fP ファイルは、誰にでも書き込み可であってはならず、
+デフォルトのファイルモードは 0440 である (所有者とグループのみ読むことができ、
+書き込み権限は誰にもない)。デフォルトのモードは、sudo.conf(5) ファイルの
+\fBsudoers\fP Plugin 行に "sudoers_mode"
+オプションを指定することで変更することができる。
+.TP  3n
+/etc/sudoers is owned by gid N, should be 1
+\fIsudoers\fP ファイルの所有グループが適切ではない。
+\fIsudoers\fP ファイルの所有グループを変更したい場合には、
+sudo.conf(5) ファイルの \fBsudoers\fP Plugin 行に "sudoers_gid=N"
+('N' は、\fIsudoers\fP ファイルの所有グループ ID) を付け加えていただきたい。
+.TP  3n
+unable to open /var/run/sudo/ts/username
+\fBsudoers\fP がユーザのタイムスタンプ・ファイルを読み込んだり、
+作成したりすることができなかった。そうしたことは、
+\fItimestampowner\fP が root 以外のユーザに設定されていて、
+しかも \fI/var/run/sudo\fP のモードが、
+グループやその他のユーザに対して検索不可になっている場合に起きることがある。
+\fI/var/run/sudo\fP のデフォルトのモードは、0711 である。
+.TP  3n
+unable to write to /var/run/sudo/ts/username
+\fBsudoers\fP がユーザのタイムスタンプ・ファイルに書き込むことができなかった。
+.TP  3n
+/var/run/sudo/ts is owned by uid X, should be Y
+タイムスタンプ・ディレクトリの所有者が \fItimestampowner\fP 以外のユーザである。
+そうしたことは、\fItimestampowner\fP の値を変更した時に起きることがある。
+\fBsudoers\fP は、ディレクトリの所有者が訂正されるまで、
+タイムスタンプ・ディレクトリを無視することになる。
+.TP  3n
+/var/run/sudo/ts is group writable
+タイムスタンプ・ディレクトリがグループによって書き込み可能になっている。
+書き込みが可能なのは、\fItimestampowner\fP のみにするべきだ。
+タイムスタンプ・ディレクトリのデフォルトのモードは、700 である。
+\fBsudoers\fP は、ディレクトリのモードが訂正されるまで、
+タイムスタンプ・ディレクトリを無視することになる。
+.SS "syslog 経由でロギングするときの注意点"
+デフォルトでは、\fBsudoers\fP は syslog(3) 経由でメッセージをログに記録する。
+その場合、\fIdate\fP, \fIhostname\fP, \fIprogname\fP フィールドをログに付加するのは、
+syslog デーモンであって、\fBsudoers\fP ではない。
+従って、そうしたフィールドは、システムが違えば書式も違うかもしれない。
+.PP
+ほとんどのシステムで、syslog(3) は、かなり小さなログ・バッファしか持っていない。
+そこで、コマンドライン引き数の後ろの方が切り捨てられたりしないように、
+\fBsudoers\fP は、(date, hostname, 及び "sudo" という文字列を別にして)
+ログ・メッセージが 960 字以上になると、それを分割するようになっている。
+メッセージが分割される場合、後続部分では、
+ユーザ名の後ろに "(command continued)" という文字列が続き、
+その後にコマンドライン引き数の残りが続くことになる。
+.SS ファイルにロギングするときの注意点
+\fIlogfile\fP オプションを設定すると、\fBsudoers\fP は \fI/var/log/sudo\fP
+といったローカルなファイルにログを記録するようになる。ファイルにロギングする場合も、
+\fBsudoers\fP は syslog(3) とほとんど同じ書式を使用するが、
+いつくかの重要な違いがある。
+.TP  5n
+1.\&
+\fIprogname\fP と \fIhostname\fP フィールドは存在しない。
+.TP  5n
+2.\&
+\fIlog_year\fP オプションが有効な場合、日付には年度も含まれることになる。
+.TP  5n
+3.\&
+\fIloglinelen\fP (デフォルトでは 80) 文字よりも長い行は改行され、
+4 文字分のインデントを付けて次の行に続くことになる。
+そうすることで、記述情報が人間に読みやすくなるが、
+ログファイルに対して grep(1) を使用することは難しくなる。
+\fIloglinelen\fP オプションに 0 を指定すると
+(あるいは、頭に '\&!' をつけて、否定すると)、改行は行われなくなる。
+.SH 入出力ログファイル
+入出力ロギングを有効にすると、\fBsudo\fP は擬似 tty でコマンドを実行して、
+ユーザのすべての入力や出力のログを取ることになる。
+入出力は、\fIiolog_dir\fP オプションで指定したディレクトリに
+(デフォルトでは \fI/var/log/sudo\-io\fP)、
+一意なセッション ID を使って記録される。
+このセッション ID は、(訳注: syslog 経由であれ、独自ファイルであれ)
+\fBsudo\fP に関するログの行に、"TSID=" に続く値として書き込まれているものだ。
+\fIiolog_file\fP オプションを使えば、
+セッション ID の形式を変更することができる。
+.PP
+各入出力ログは、独立したディレクトリに収納される。
+そうしたディレクトリには、次のようなファイルが入っている。
+.TP  10n
+\fIlog\fP
+次のような情報を含むテキストファイル。コマンドが実行された日時、
+\fBsudo\fP を実行したユーザの名前、変身対象ユーザ名、変身対象グループ名 (ないこともある)、
+\fBsudo\fP が実行された端末、その端末の縦横のサイズ (何行何桁か)、
+コマンドがそこから実行されたカレントディレクトリ、
+それに、コマンドそのもののパス名 (引き数があれば、それも)
+.TP  10n
+\fItiming\fP
+入出力ログに記録される各事項間の時間間隔と各事項の入出力バイト数のログ
+(セッションの再生で使用される)
+.TP  10n
+\fIttyin\fP
+ユーザが使用している端末からの入力 (ユーザがタイプしたこと)。
+.TP  10n
+\fIstdin\fP
+パイプやファイルからの入力
+.TP  10n
+\fIttyout\fP
+擬似 tty の出力 (コマンドがスクリーンに書き出したこと)
+.TP  10n
+\fIstdout\fP
+パイプへ出力されたり、ファイルにリダイレクトされた標準出力
+.TP  10n
+\fIstderr\fP
+パイプへ出力されたり、ファイルへリダイレクトされた標準エラー
+.PP
+\fIlog\fP 以外のすべてのファイルは、\fIcompress_io\fP オプションが無効になっていないかぎり、
+gzip 形式で圧縮される。バッファリングを行うので、入出力のデータは、
+\fBsudo\fP コマンドが完了するまで、完全なものにはならない。
+入出力ログファイルの出力の部分は、sudoreplay(8) を使って再生することができる。
+また、sudoreplay(8) ユーティリティは、利用できるログをリスト表示したり、
+検索したりするのに使うこともできる。
+.PP
+ユーザの入力には、パスワードのような (たとえ、
+画面にエコーされることはないにしても) 秘密情報が含まれていることがある。
+そういった情報も、暗号化されずに、ログファイルに記録されることに注意していただきたい。
+たいていの場合、\fIlog_output\fP や LOG_OUTPUT を使って、
+コマンドの出力をログに記録するだけで十分用が足りる。
+.PP
+入出力ログは、セッションごとに独立したディレクトリに収納される。
+そのため、従来からあるログローテーション・ユーティリティを使用して、
+保存しておく入出力ログ数を制限することはできない。
+保存する入出力ログ数を制限する最も簡単な方法は、
+\fImaxseq\fP オプションで保存したいログの最大数を指定することである。
+入出力ログの連番が \fImaxseq\fP に達すると、連番は 0 にリセットされ、
+\fBsudoers\fP は既存の入出力ログファイルをサイズ 0 に短縮して、再利用することになる。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+sudo フロントエンドの設定
+.TP  26n
+\fI/etc/sudoers\fP
 誰が何を実行できるかのリスト
-.IP "\fI/etc/group\fR" 24
-.IX Item "/etc/group"
+.TP  26n
+\fI/etc/group\fP
 ローカルのグループファイル
-.IP "\fI/etc/netgroup\fR" 24
-.IX Item "/etc/netgroup"
+.TP  26n
+\fI/etc/netgroup\fP
 ネットワークグループのリスト
-.ie n .IP "\fI/var/log/sudo-io\fR" 24
-.el .IP "\fI/var/log/sudo-io\fR" 24
-.IX Item "/var/log/sudo-io"
+.TP  26n
+\fI/var/log/sudo\-io\fP
 入出力のログファイル (訳注: 厳密には、
 入出力のログを記録するファイル群をその下に格納するトップディレクトリ)
-.ie n .IP "\fI/var/lib/sudo\fR" 24
-.el .IP "\fI/var/lib/sudo\fR" 24
-.IX Item "/var/lib/sudo"
-\&\fIsudoers\fR セキュリティ・ポリシーが使用するタイムスタンプを格納するディレクトリ。
-.IP "\fI/etc/environment\fR" 24
-.IX Item "/etc/environment"
-Linux や \s-1AIX\s0 で \fB\-i\fR モードを使用するときの初期環境
-.SH "用例"
-.IX Header "EXAMPLES"
-以下は \fIsudoers\fR エントリの見本である。
+.TP  26n
+\fI/var/run/sudo/ts\fP
+\fBsudoers\fP セキュリティポリシーが使用するタイムスタンプを格納するディレクトリ
+.TP  26n
+\fI/var/lib/sudo/lectured\fP
+\fBsudoers\fP セキュリティポリシーが使用する訓戒状態ファイルを格納するディレクトリ
+.TP  26n
+\fI/etc/environment\fP
+Linux や AIX で \fB\-i\fP モードを使用するときの初期環境
+.SH 用例
+以下は \fIsudoers\fP ファイルの記載例である。
 正直なところ、いささか凝りすぎの部分もある。
 まず最初に継承を許可する環境変数をいくつか指定し、
-続いて \fIaliases\fR の定義をする。
-.PP
-.Vb 4
-\& # sudo 経由で X アプリケーションを実行するとき、HOME は
-\& # .Xauthority ファイルを探すために使用される。ほかのプログラムも
-\& # 設定ファイルを探すのに HOME を使用するので、この指定が
-\& # 権限の昇格を引き起こしかねないことに注意してほしい。
-\& Defaults env_keep += "DISPLAY HOME"
-\&
-\& # User alias の指定
-\& User_Alias     FULLTIMERS = millert, mikef, dowdy
-\& User_Alias     PARTTIMERS = bostley, jwfox, crawl
-\& User_Alias     WEBMASTERS = will, wendy, wim
-\&
-\& # Runas alias の指定
-\& Runas_Alias    OP = root, operator
-\& Runas_Alias    DB = oracle, sybase
-\& Runas_Alias    ADMINGRP = adm, oper
-\&
-\& # Host alias の指定
-\& Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\e
-\&                SGI = grolsch, dandelion, black :\e
-\&                ALPHA = widget, thalamus, foobar :\e
-\&                HPPA = boa, nag, python
-\& Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
-\& Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
-\& Host_Alias     SERVERS = master, mail, www, ns
-\& Host_Alias     CDROM = orion, perseus, hercules
-\&
-\& # Cmnd alias の指定
-\& Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
-\&                        /usr/sbin/restore, /usr/sbin/rrestore
-\& Cmnd_Alias     KILL = /usr/bin/kill
-\& Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
-\& Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
-\& Cmnd_Alias     HALT = /usr/sbin/halt
-\& Cmnd_Alias     REBOOT = /usr/sbin/reboot
-\& Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \e
-\&                         /usr/local/bin/tcsh, /usr/bin/rsh, \e
-\&                         /usr/local/bin/zsh
-\& Cmnd_Alias     SU = /usr/bin/su
-\& Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
-.Ve
+続いて \fIaliases\fP の定義をする。
+.nf
+.sp
+.RS 0n
+# sudo 経由で X アプリケーションを実行するとき、HOME は
+# .Xauthority ファイルを探すために使用される。ほかのプログラムも
+# 設定ファイルを探すのに HOME を使用するので、この指定が
+# 権限の昇格を引き起こしかねないことに注意してほしい。
+Defaults env_keep += "DISPLAY HOME"
+
+# User alias の指定
+User_Alias     FULLTIMERS = millert, mikef, dowdy
+User_Alias     PARTTIMERS = bostley, jwfox, crawl
+User_Alias     WEBMASTERS = will, wendy, wim
+
+# Runas alias の指定
+Runas_Alias    OP = root, operator
+Runas_Alias    DB = oracle, sybase
+Runas_Alias    ADMINGRP = adm, oper
+
+# Host alias の指定
+Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\e
+               SGI = grolsch, dandelion, black :\e
+               ALPHA = widget, thalamus, foobar :\e
+               HPPA = boa, nag, python
+Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
+Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
+Host_Alias     SERVERS = master, mail, www, ns
+Host_Alias     CDROM = orion, perseus, hercules
+
+# Cmnd alias の指定
+Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
+                       /usr/sbin/restore, /usr/sbin/rrestore,\e
+                       sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \e
+                       /home/operator/bin/start_backups
+Cmnd_Alias     KILL = /usr/bin/kill
+Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
+Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
+Cmnd_Alias     HALT = /usr/sbin/halt
+Cmnd_Alias     REBOOT = /usr/sbin/reboot
+Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\e
+                        /usr/local/bin/tcsh, /usr/bin/rsh,\e
+                        /usr/local/bin/zsh
+Cmnd_Alias     SU = /usr/bin/su
+Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
+.RE
+.fi
 .PP
 以下では、コンパイル時に埋め込まれたデフォルト値のいくつかを変更している。
-\&\fBsudo\fR には \fIsyslog\fR\|(3) 経由でログを記録し、
-ファシリティにはすべての場合に \fIauth\fR を使用させたい。
-フルタイムのスタッフには \fBsudo\fR の訓戒を出さないようにしたい。
-ユーザ \fBmillert\fR はパスワードを入力しないでよい。
+\fBsudo\fP には syslog(3) 経由でログを記録し、
+ファシリティにはすべての場合に \fIauth\fP を使用させたい。
+フルタイムのスタッフには \fBsudo\fP の訓戒を出さないようにしたい。
+ユーザ \fBmillert\fP はパスワードを入力しないでよい。
 コマンドを root として実行するときは、
-環境変数 \f(CW\*(C`LOGNAME\*(C'\fR, \f(CW\*(C`USER\*(C'\fR,
-\&\f(CW\*(C`USERNAME\*(C'\fR を変更したくない。さらに、
-\&\fI\s-1SERVERS\s0\fR という \f(CW\*(C`Host_Alias\*(C'\fR に属するマシンでは、
+環境変数 LOGNAME, USER, USERNAME を変更したくない。
+さらに、\fISERVERS\fP という Host_Alias に属するマシンでは、
 ローカルなログファイルを副本として作り、
 ログの記入事項は数年に渡って保存されるので、
 ログの各行に間違いなく年度が入るようにする。
-最後に \s-1PAGERS\s0 という \f(CW\*(C`Cmnd_Alias\*(C'\fR に属するコマンド
-(\fI/usr/bin/more\fR, \fI/usr/bin/pg\fR, \fI/usr/bin/less\fR) については、
-シェル・エスケープを無効にする。
-.PP
-.Vb 7
-\& # built-in defaults の変更
-\& Defaults               syslog=auth
-\& Defaults>root          !set_logname
-\& Defaults:FULLTIMERS    !lecture
-\& Defaults:millert       !authenticate
-\& Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
-\& Defaults!PAGERS        noexec
-.Ve
+最後に \fIPAGERS\fP という Cmnd_Alias に属するコマンド
+(\fI/usr/bin/more\fP, \fI/usr/bin/pg\fP, \fI/usr/bin/less\fP) については、
+シェル・エスケープを無効にする。なお、最後の設定は、
+許可するコマンドが ALL になっているユーザに対しては、
+効果的な抑制にはならないことに注意していただきたい。
+.nf
+.sp
+.RS 0n
+# built\-in defaults の変更
+Defaults               syslog=auth
+Defaults>root          !set_logname
+Defaults:FULLTIMERS    !lecture
+Defaults:millert       !authenticate
+Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
+Defaults!PAGERS                noexec
+.RE
+.fi
 .PP
 ユーザ設定が、誰が何を実行できるかを実際に決めている部分だ。
+.nf
+.sp
+.RS 0n
+root           ALL = (ALL) ALL
+%wheel         ALL = (ALL) ALL
+.RE
+.fi
 .PP
-.Vb 2
-\& root           ALL = (ALL) ALL
-\& %wheel         ALL = (ALL) ALL
-.Ve
-.PP
-\&\fBroot\fR と \fBwheel\fR グループのすべてのユーザには、
+\fBroot\fP と \fBwheel\fP グループに属するすべてのユーザには、
 どのホストでも任意のユーザとしていかなるコマンドでも実行することを認める。
+.nf
+.sp
+.RS 0n
+FULLTIMERS     ALL = NOPASSWD: ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& FULLTIMERS     ALL = NOPASSWD: ALL
-.Ve
-.PP
-フルタイムのシステム管理者 (\fBmillert\fR, \fBmikef\fR, \fBdowdy\fR) 
-は、どのホストでも任意のコマンドを認証なしで実行できる。
-.PP
-.Vb 1
-\& PARTTIMERS     ALL = ALL
-.Ve
-.PP
-パートタイムのシステム管理者 ((\fBbostley\fR, \fBjwfox\fR,
-\&\fBcrawl\fR) は、どのホストでも任意のコマンドを実行できるが、
-その際に認証をしなければならない (このエントリには 
-\&\f(CW\*(C`NOPASSWD\*(C'\fR タグが指定されていないので)。
+フルタイムのシステム管理者 (\fBmillert\fP, \fBmikef\fP, \fBdowdy\fP) は、
+どのホストでも任意のコマンドを認証なしで実行できる。
+.nf
+.sp
+.RS 0n
+PARTTIMERS     ALL = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& jack           CSNETS = ALL
-.Ve
+パートタイムのシステム管理者 (\fBbostley\fP, \fBjwfox\fP, \fBcrawl\fP) は、
+どのホストでも任意のコマンドを実行できるが、その際に認証をしなければならない
+(このエントリには NOPASSWD タグが指定されていないので)。
+.nf
+.sp
+.RS 0n
+jack           CSNETS = ALL
+.RE
+.fi
 .PP
-ユーザ \fBjack\fR は、\fI\s-1CSNETS\s0\fR
-というエイリアスに属するマシンで、任意のコマンドを実行できる
-(すなわち、ネットワークが \f(CW128.138.243.0\fR, \f(CW128.138.204.0\fR,
-\&\f(CW128.138.242.0\fR のマシンだ)。この内、\f(CW128.138.204.0\fR にのみ
-class C のネットワークであることを示す明示的な (\s-1CIDR\s0 表記の)
-netmask がある。\fI\s-1CSNETS\s0\fR のほかのネットワークについては、
+ユーザ \fBjack\fP は、\fICSNETS\fP というエイリアスに属するマシンで、
+任意のコマンドを実行できる (すなわち、ネットワークが 128.138.243.0,
+128.138.204.0, 128.138.242.0 のマシンだ)。この内、128.138.204.0 にのみ
+class C のネットワークであることを示す明示的な (CIDR 表記の)
+netmask がある。\fICSNETS\fP のほかのネットワークについては、
 ローカルマシンの netmask がマッチングの際に使われることになる。
+.nf
+.sp
+.RS 0n
+lisa           CUNETS = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& lisa           CUNETS = ALL
-.Ve
-.PP
-ユーザ \fBlisa\fR は、エイリアスが \fI\s-1CUNETS\s0\fR のいかなるホストでも、
-任意のコマンドを実行することができる (すなわち、
-\f(CW128.138.0.0\fR という class B ネットワークのマシンだ)。
-.PP
-.Vb 2
-\& operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
-\&                sudoedit /etc/printcap, /usr/oper/bin/
-.Ve
+ユーザ \fBlisa\fP は、エイリアスが \fICUNETS\fP のいかなるホストでも、
+任意のコマンドを実行することができる
+(すなわち、128.138.0.0 という class B ネットワークのマシンだ)。
+.nf
+.sp
+.RS 0n
+operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
+               sudoedit /etc/printcap, /usr/oper/bin/
+.RE
+.fi
 .PP
-ユーザ \fBoperator\fR は、
\94¨é\80\94ã\81\8cç°¡å\8d\98ã\81ªä¿\9då®\88管ç\90\86ã\81«限定されたコマンドを実行できる。この場合それは、
+ユーザ \fBoperator\fP は、
°¡å\8d\98ã\81ªä¿\9då®\88管ç\90\86ã\81«ç\94¨é\80\94ã\81\8c限定されたコマンドを実行できる。この場合それは、
 バックアップしたり、プロセスを kill したり、印刷システムを操作したり、
 システムをシャットダウンしたりするのに関係するコマンドと、
-\&\fI/usr/oper/bin/\fR ディレクトリにある任意のコマンドである。
-.PP
-.Vb 1
-\& joe            ALL = /usr/bin/su operator
-.Ve
-.PP
-ユーザ \fBjoe\fR は、\fIsu\fR\|(1) を使って operator になることしかできない。
-.PP
-.Vb 1
-\& %opers         ALL = (: ADMINGRP) /usr/sbin/
-.Ve
+\fI/usr/oper/bin/\fP ディレクトリにある任意のコマンドである。
+注意: \fIDUMPS\fP という Cmnd_Alias に属するコマンドのひとつ、すなわち
+\fI/home/operator/bin/start_backups\fP は、sha224 ダイジェスト付きである。
+そうしているのは、そのスクリプトが置かれているディレクトリが
+operator ユーザによって書き込み可能だからだ。スクリプトが変更された場合
+(その結果、ダイジェストが一致しないことになる)、
+\fBsudo\fP 経由でそのスクリプトを実行することはもはや不可能になる。
+.nf
+.sp
+.RS 0n
+joe            ALL = /usr/bin/su operator
+.RE
+.fi
 .PP
-\&\fBopers\fR グループのユーザは、\fI/usr/sbin/\fR にあるコマンドを、
-自分自身の資格で、
-\&\f(CW\*(C`Runas_Alias\*(C'\fR \fI\s-1ADMINGRP\s0\fR
-に属する任意のグループ (すなわち、\fBadm\fR か \fBoper\fR グループ)
-として実行できる。
+ユーザ \fBjoe\fP は、su(1) を使って operator になることしかできない。
+.nf
+.sp
+.RS 0n
+pete           HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
+
+%opers         ALL = (: ADMINGRP) /usr/sbin/
+.RE
+.fi
 .PP
-.Vb 1
-\& pete           HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
-.Ve
+\fBopers\fP グループのユーザは、\fI/usr/sbin/\fP にあるコマンドを、
+自分自身の資格で、Runas_Alias \fIADMINGRP\fP に属する任意のグループ
+(すなわち、\fBadm\fP か \fBoper\fP グループ) として実行できる。
 .PP
-ユーザ \fBpete\fR は、\fI\s-1HPPA\s0\fR に属するマシンで
+ユーザ \fBpete\fP は、\fIHPPA\fP に属するマシンで
 root 以外なら誰のパスワードでも変更することを許されている。
-上記の指定は、\fIpasswd\fR\|(1) がコマンドラインで複数のユーザ名を
-受け付けないことを前提としている点に注意してほしい。
-.PP
-.Vb 1
-\& bob            SPARC = (OP) ALL : SGI = (OP) ALL
-.Ve
+コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行うので、
+ワイルドカード '*' は、\fI複数の\fP単語とマッチすることになる。だから、
+この例は、passwd(1) がコマンドラインで複数のユーザ名を受け付けないことを前提としているのである。
+GNU のシステムでは、
+passwd(1) に対するオプションをユーザ引き数の後ろに置くことができるのに注意していただきたい。
+そのため、このルールは次のようなコマンドも許可してしまうことになる。
+.nf
+.sp
+.RS 4n
+passwd username \-\-expire
+.RE
+.fi
 .PP
-ユーザ \fBbob\fR は、\fI\s-1SPARC\s0\fR や \fI\s-1SGI\s0\fR に属するマシンで
-\&\f(CW\*(C`Runas_Alias\*(C'\fR \fI\s-1OP\s0\fR
-に登録されている任意のユーザとして (\fBroot\fR と \fBoperator\fR である)
-どんなコマンドでも実行できる。
+これは、望ましくないことかもしれない。
+.nf
+.sp
+.RS 0n
+bob            SPARC = (OP) ALL : SGI = (OP) ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& jim            +biglab = ALL
-.Ve
+ユーザ \fBbob\fP は、\fISPARC\fP や \fISGI\fP に属するマシンで
+Runas_Alias \fIOP\fPに登録されている任意のユーザとして
+(\fBroot\fP と \fBoperator\fP である) どんなコマンドでも実行できる。
+.nf
+.sp
+.RS 0n
+jim            +biglab = ALL
+.RE
+.fi
 .PP
-ユーザ \fBjim\fR は、\fIbiglab\fR ネットグループに属するマシンで、
+ユーザ \fBjim\fP は、\fIbiglab\fP ネットグループに属するマシンで、
 どんなコマンドでも実行できる。
-\&\fBsudo\fR は、\*(L"biglab\*(R" に '+' の接頭辞が付いているので、
+\fBsudo\fP は、"biglab" に '+' の接頭辞が付いているので、
 それをネットグループだと認識する。
+.nf
+.sp
+.RS 0n
++secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
+.RE
+.fi
 .PP
-.Vb 1
-\& +secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
-.Ve
-.PP
-\&\fBsecretaries\fR ネットグループのユーザは、ユーザの追加や削除はもちろん、
+\fBsecretaries\fP ネットグループのユーザは、ユーザの追加や削除はもちろん、
 プリンタの管理にも協力する必要がある。
 そこで、すべてのマシンでその種のコマンドの実行を認められている。
+.nf
+.sp
+.RS 0n
+fred           ALL = (DB) NOPASSWD: ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& fred           ALL = (DB) NOPASSWD: ALL
-.Ve
-.PP
-ユーザ \fBfred\fR は、\f(CW\*(C`Runas_Alias\*(C'\fR \fI\s-1DB\s0\fR
-の任意のユーザとして (\fBoracle\fR か \fBsybase\fR だ)
+ユーザ \fBfred\fP は、Runas_Alias \fIDB\fP の任意のユーザとして
+(\fBoracle\fP か \fBsybase\fP だ)
 パスワードを入力しないでもコマンドを実行することができる。
+.nf
+.sp
+.RS 0n
+john           ALPHA = /usr/bin/su [!\-]*, !/usr/bin/su *root*
+.RE
+.fi
 .PP
-.Vb 1
-\& john           ALPHA = /usr/bin/su [!\-]*, !/usr/bin/su *root*
-.Ve
-.PP
-ユーザ \fBjohn\fR は、\fI\s-1ALPHA\s0\fR に属するマシンで \fIsu\fR\|(1)
-を使って root 以外の誰にでもなることができるが、
+ユーザ \fBjohn\fP は、\fIALPHA\fP に属するマシンで su(1) を使って
+root 以外の誰にでもなることができるが、
 su にオプションを指定することは許されていない。
+.nf
+.sp
+.RS 0n
+jen            ALL, !SERVERS = ALL
+.RE
+.fi
 .PP
-.Vb 1
-\& jen            ALL, !SERVERS = ALL
-.Ve
-.PP
-ユーザ \fBjen\fR は、\f(CW\*(C`Host_Alias\*(C'\fR \fI\s-1SERVERS\s0\fR
-に属するマシン (master, mail, www, ns) を除くいかなるマシンでも、
-任意のコマンドを実行できる。
-.PP
-.Vb 1
-\& jill           SERVERS = /usr/bin/, !SU, !SHELLS
-.Ve
-.PP
-\&\fBjill\fR は、\f(CW\*(C`Host_Alias\*(C'\fR \fI\s-1SERVERS\s0\fR のいかなるマシンでも
-\&\fI/usr/bin/\fR ディレクトリにある任意のコマンドを実行できるが、
-\&\fI\s-1SU\s0\fR や \fI\s-1SHELLS\s0\fR という
-\&\f(CW\*(C`Cmnd_Aliases\*(C'\fR に属するコマンドは実行できない。
+ユーザ \fBjen\fP は、Host_Alias \fISERVERS\fP に属するマシン
+(master, mail, www, ns) を除くいかなるマシンでも、任意のコマンドを実行できる。
+.nf
+.sp
+.RS 0n
+jill           SERVERS = /usr/bin/, !SU, !SHELLS
+.RE
+.fi
 .PP
-.Vb 1
-\& steve          CSNETS = (operator) /usr/local/op_commands/
-.Ve
+\fBjill\fP は、Host_Alias \fISERVERS\fP のいかなるマシンでも
+\fI/usr/bin/\fP ディレクトリにある任意のコマンドを実行できるが、
+\fISU\fP や \fISHELLS\fP という Cmnd_Alias に属するコマンドは実行できない。
+ルールのこのくだりでは特に言っていないが、
+Cmnd_Alias \fIPAGER\fP のコマンドはすべて \fI/usr/bin\fP にあり、
+\fInoexec\fP オプションが設定されている。
+.nf
+.sp
+.RS 0n
+steve          CSNETS = (operator) /usr/local/op_commands/
+.RE
+.fi
 .PP
-ユーザ \fBsteve\fR は、ディレクトリ \fI/usr/local/op_commands/\fR
+ユーザ \fBsteve\fP は、ディレクトリ \fI/usr/local/op_commands/\fP
 にある任意のコマンドを実行できるが、
 operator というユーザとして実行できるだけだ。
+.nf
+.sp
+.RS 0n
+matt           valkyrie = KILL
+.RE
+.fi
 .PP
-.Vb 1
-\& matt           valkyrie = KILL
-.Ve
-.PP
-\&\fBmatt\fR も、自分用のワークステーション valkyrie で、ハングしたプロセスの
-kill ぐらいはできる必要がある。
-.PP
-.Vb 1
-\& WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www
-.Ve
-.PP
-ホスト www で \f(CW\*(C`User_Alias\*(C'\fR \fI\s-1WEBMASTERS\s0\fR
-に属するいかなるユーザも (will, wendy, wim だ)、ユーザ www
-(web ページの所有者) として任意のコマンドを実行することができる。
-単に \fIsu\fR\|(1) で www になってもよい。
+\fBmatt\fP も、自分用のワークステーション valkyrie で、
+ハングしたプロセスの kill ぐらいはできる必要がある。
+.nf
+.sp
+.RS 0n
+WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www
+.RE
+.fi
 .PP
-.Vb 2
-\& ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\e
-\&                /sbin/mount \-o nosuid\e,nodev /dev/cd0a /CDROM
-.Ve
+ホスト www で User_Alias \fIWEBMASTERS\fP に属するいかなるユーザも
+(will, wendy, wim だ)、ユーザ www (web ページの所有者)
+として任意のコマンドを実行することができる。
+単に su(1) でユーザ www になってもよい。
+.nf
+.sp
+.RS 0n
+ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\e
+               /sbin/mount \-o nosuid\e,nodev /dev/cd0a /CDROM
+.RE
+.fi
 .PP
-いかなるユーザも、\f(CW\*(C`Host_Alias\*(C'\fR が \s-1CDROM\s0 のマシンで
-(orion, perseus, hercules)、パスワードを入力することなく 
-CD-ROM をマウント、アンマウントできる。
+いかなるユーザも、Host_Alias が \fICDROM\fP のマシンで
+(orion, perseus, hercules)、パスワードを入力することなく
+CD\-ROM をマウント、アンマウントできる。
 上記のコマンドを打ち込むのはユーザにとっていささか面倒なので、
 シェルスクリプトとしてカプセル化してしまうのがよいだろう。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote2"
-当然と言えば当然だが、sudo は自ホストの /etc/sudoers しか読まないし、
-制御の及ぶ範囲も自ホストだけである。そこで、こういうことになる。
-AAA というホストに aaa というユーザがいるとしよう。
-ホスト AAA の /etc/sudoers に「ホスト BBB でユーザ aaa は
-sudo を介して /bin/ls を実行できる」という記述があったとしても、
-ユーザ aaa がホスト AAA から telnet や ssh でホスト BBB にログインし、
-BBB 上で sudo を使って ls を実行できるわけではない。それができるためには、
-ホスト BBB の /etc/sudoers に「BBB でユーザ aaa は sudo を介して
-/bin/ls を実行できる」という記述がなければならないのだ。
-ホスト BBB で実行する sudo は BBB の sudo であり、
-BBB の sudo は BBB の /etc/sudoers しか読まないのだから。
-.Sp
-それでは、何故、上記の「用例」で自ホスト以外の設定が行われているのか?
-そもそも、sudoers の書式で自ホスト以外のホストを指定できるのは、
-何故なのか? ホストに ALL を指定できるのは、何故なのか?
-それは、管理しているサイトのすべてのホストの設定を記した
-sudoers ファイルを一つ作って、それをすべてのホストにコピーして使う、
-そういった使い方を想定しているからだ。
+.IP "[\fB訳注\fP]:" 8
+注意していただきたいが、
+\fI/etc/sudoers\fP ファイルに「user1 ALL = (ALL) ALL」といった設定を書いても、
+user1 が \fBsudo\fP 経由であらゆるコマンドを実行できるようになるのは、
+自ホスト、すなわち、その \fI/etc/sudoers\fP が存在するホストだけであって、
+telnet や ssh で接続したホストで 
+\fBsudo\fP 経由でコマンドを実行できるとはかぎらない。
+他ホストの \fBsudo\fP は、自分のところにある \fI/etc/sudoers\fP 
+ファイルしか参照しないからである。
+.sp
+それでは、何故、上記の「用例」で自ホスト以外の設定が行われているのだろうか? 
+そもそも、\fIsudoers\fP の書式で自ホスト以外のホストを指定できるのは、
+何故なのか? ホストに \fBALL\fP を指定できるのは、何故なのか? 
+それは、管理しているサイトのすべてのホストの設定を記した 
+\fIsudoers\fP ファイルを一つ作って、それをすべてのホストにコピーして使う、
+そういった使い方を想定しているからだろう。昔の習慣の名残りかもしれない。
 もし、サイト中のすべてのホストの設定を一ヶ所にまとめて置き、
-それをすべてのホストに共有させたいのなら
-(すなわち、sudo の設定の集中管理がしたいのなら)、
-LDAP の採用を考えるべきである。
-.SH "セキュリティに関する注意点"
-.IX Header "SECURITY NOTES"
-一般的に言って、演算子 '!' を使用して \f(CW\*(C`ALL\*(C'\fR
-からコマンドの「引き算」をするのは、あまり有力な方法ではない。
+それをすべてのホストに共有させたいのなら 
+(すなわち、\fIsudoers\fP セキュリティポリシー設定の集中管理がしたいのなら)、
+\fBLDAP\fP の採用を考えるべきである。
+.SH セキュリティに関する注意点
+.SS "'!\&' 演算子の限界"
+一般的に言って、演算子 '!\&' を使用して \fBALL\fP
+からコマンドの「引き算」をするのは、あまり効果的な方法ではない。
 ユーザは実行したいコマンドを名前を変えてコピーし、
 それからそれを実行するといった簡単な方法で、裏をかくことができるからだ。
 たとえば、
+.nf
+.sp
+.RS 0n
+bill   ALL = ALL, !SU, !SHELLS
+.RE
+.fi
 .PP
-.Vb 1
-\&    bill        ALL = ALL, !SU, !SHELLS
-.Ve
-.PP
-という行は、\fI\s-1SU\s0\fR や \fI\s-1SHELLS\s0\fR
-に列記されているコマンドの \fBbill\fR による実行を、
-本当に阻止することにはならない。なぜなら、
-\&\fBbill\fR としては、そうしたコマンドを単に名前を変えてコピーすればよいし、
-エディタやほかのプログラムからシェル・エスケープを利用することもできるからだ。
+という行は、\fISU\fP や \fISHELLS\fP に列記されているコマンドの \fBbill\fP による実行を、
+本当に阻止することにはならない。なぜなら、\fBbill\fP としては、
+そうしたコマンドを単に名前を変えてコピーすればよいし、
+エディタなどのプログラムからシェル・エスケープを利用することもできるからだ。
 だから、この種の制限はやった方がまし程度に考えておくべきである
 (そして、しっかりした運用方針によって制限の実効力を上げるべきだ)。
 .PP
-さらに言うと、\fIfast_glob\fR オプションが使われている場合、
+一般に、もし ユーザに許可するコマンドに \fBALL\fP が入っているならば、
+ユーザが自分でプログラムを作って
+(あるいは、シェルを自分専用に別の名前でコピーして)、
+ルート・シェルを獲得するのを防ぐことはできない。
+ユーザ設定でどんな項目に '!\&'  を付けようとも防止不可能である。
+.SS "\fIfast_glob\fP の持つセキュリティ上の問題"
+\fIfast_glob\fP オプションが使われている場合、
 パス名に glob 文字 (ワイルドカードとも言う)
-が含まれるコマンドを間違いなく無効にすることは不可能である。
-その理由は、C ライブラリの
-\&\fIfnmatch\fR\|(3) 関数が相対パスを解決することができないからだ。
+が含まれるコマンドを確実に無効にすることは不可能である。その理由は、
+C ライブラリの fnmatch(3) 関数は、相対パスのパス名展開ができないからだ。
 このことは、権限を許可するルールにとっては、
 たいていの場合不便なだけにすぎないが、権限を減らしたり、
 取り消したりするルールにとっては、セキュリティ上の問題をもたらしかねない。
 .PP
-たとえば、\fIsudoers\fR に以下のエントリがあるとしよう。 
-.PP
-.Vb 2
-\& john   ALL = /usr/bin/passwd [a\-zA\-Z0\-9]*, /usr/bin/chsh [a\-zA\-Z0\-9]*,
-\&      /usr/bin/chfn [a\-zA\-Z0\-9]*, !/usr/bin/* root
-.Ve
+たとえば、\fIsudoers\fP ファイルに次のエントリがあったとしよう。
+.nf
+.sp
+.RS 0n
+john   ALL = /usr/bin/passwd [a\-zA\-Z0\-9]*, /usr/bin/chsh [a\-zA\-Z0\-9]*,\e
+              /usr/bin/chfn [a\-zA\-Z0\-9]*, !/usr/bin/* root
+.RE
+.fi
 .PP
-\&\fIfast_glob\fR が有効になっていると、\fBjohn\fR はこれでも
-\&\f(CW\*(C`/usr/bin/passwd root\*(C'\fR を実行できてしまう。
-\&\fI/usr/bin\fR にカレント・ディレクトリを移動して、
-\&\f(CW\*(C`./passwd root\*(C'\fR と打ち込めばよいのだ。 
-.SH "シェル・エスケープを防止する"
-.IX Header "PREVENTING SHELL ESCAPES"
-\&\fBsudo\fR があるプログラムを実行した場合、そのプログラムは、
+それでも、\fIfast_glob\fP が有効になっていれば、\fBjohn\fP は
+"/usr/bin/passwd root" を実行できてしまう。
+\fI/usr/bin\fP に移動して、"./passwd root" を実行すればよいのだ。
+.SS シェル・エスケープの防止
+\fBsudo\fP があるプログラムを実行した場合、そのプログラムは、
 ほかのプログラムの実行も含めて、何でも自由に好きなことができる。
 このことがセキュリティ上の問題になりかねないのは、
 プログラムがシェル・エスケープを許しているのは珍しいことではなく、
-そのために、ユーザが \fBsudo\fR
+そのために、ユーザが \fBsudo\fP
 のアクセス制御やロギングをすり抜けることが可能になるからだ。
 よく使うプログラムでシェル・エスケープを許しているものには、
-次のようなものがある。
-(当然ながら) シェル、エディタ、ページャ、メーラ、ターミナルなど
+(当然ながら) シェル、エディタ、
+ページャ、メーラ、ターミナルなどがある
 .PP
 この問題に対処するには、基本的に二つの方法がある。
-.IP "制限" 10
-.IX Item "restrict"
+.TP  10n
+制限
 ユーザに任意のコマンドの実行を許すようなコマンドに対して、
-ユーザがアクセスできないようにする。エディタの場合は、制限モードと称して、
+ユーザがアクセスできないようにする。
+エディタの場合は、制限モード (restricted mode) と称して、
 シェル・エスケープが使えないモードを持っているものも多い。
-とは言え、\fBsudo\fR 経由でエディタを使うのなら、
-\&\fBsudoedit\fR を使用する方がより優れた対策である。
+とは言え、\fBsudo\fP 経由でエディタを使うのなら、
+\fBsudoedit\fP を使用する方がより優れた対策である。
 シェル・エスケープを提供するプログラムはたくさんあるので、
 それを提供しないプログラムのみを使用するようにユーザを制限するのは、
 たいてい実現不可能である。
-.IP "noexec" 10
-.IX Item "noexec"
-共有ライブラリをサポートしている多くのシステムには、環境変数 (たいていは 
-\&\f(CW\*(C`LD_PRELOAD\*(C'\fR) で別の共有ライブラリを指定することによって、
-デフォルトのライブラリ関数を置き換える能力がある
-そういったシステムでは、\fBsudo\fR の \fInoexec\fR 機能を使えば、
-\&\fBsudo\fR から実行されるプログラムが、
+.TP  10n
+noexec
+共有ライブラリをサポートしているシステムには、
+環境変数 (たいていは LD_PRELOAD) で別の共有ライブラリを指定することによって、
+デフォルトのライブラリ関数を置き換えることができるものが多い
+そういったシステムでは、\fBsudo\fP の \fInoexec\fP 機能を使えば、
+\fBsudo\fP から実行されるプログラムが、
 何かほかのプログラムを実行するのを防ぐことができる。
 とは言え、これが当てはまるのは、
 動的にリンクされたネイティブなプログラムだけだということに留意してほしい。
 静的にリンクされたプログラムや、
 バイナリ・エミュレーションのもとで動くほかの OS のプログラムには効果がない。
-.Sp
-\&\fInoexec\fR 機能は SunOS, Solaris, *BSD, Linux, \s-1IRIX\s0, 
-Tru64 \s-1UNIX\s0, MacOS X, HP-UX 11.x、それに 5.3 以上の \s-1AIX\s0
-で使えることがわかっている。環境変数 \f(CW\*(C`LD_PRELOAD\*(C'\fR
-をサポートしているたいていのオペレーティングシステムが、
+.sp
+\fInoexec\fP 機能は SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX,
+MacOS X, HP\-UX 11.x、それに 5.3 以上の AIX で使えることがわかっている。
+環境変数 LD_PRELOAD をサポートしているたいていのオペレーティングシステムが、
 この機能に対応しているはずだ。
 使用しているオペレーティングシステムのマニュアルページを調べて、
 ダイナミック・リンカについて (通例 ld.so, ld.so.1, dyld, dld.sl, rld,
-loader といった名前になっている) \f(CW\*(C`LD_PRELOAD\*(C'\fR
+loader といった名前になっている) LD_PRELOAD
 がサポートされているかどうか確認していただきたい。
-.Sp
-Solaris 10 以上の場合、\fInoexec\fR は 環境変数 \f(CW\*(C`LD_PRELOAD\*(C'\fR
-ではなく、Solaris 特権を使用している。
-.Sp
-あるコマンドに対して \fInoexec\fR を有効にするには、
-上記「ユーザ設定」セクションで述べたように、
-\&\f(CW\*(C`NOEXEC\*(C'\fR タグを使用する。そのときの例を再掲しよう。
-.Sp
-.Vb 1
-\& aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
-.Ve
-.Sp
-この例では、ユーザ \fBaaron\fR 対して、\fInoexec\fR を有効にした上で、
-\&\fI/usr/bin/more\fR と \fI/usr/bin/vi\fR の実行を許可している。
-このようにすれば、この二つのコマンドから
-(シェルのような) ほかのコマンドを実行することができなくなるわけだ。
-使用しているシステムが \fInoexec\fR に対応する能力があるかどうか
-よくわからない場合でも、取りあえず試してみることなら、いつだってできる。
-\&\fInoexec\fR を有効にして、
+.sp
+あるコマンドに対して \fInoexec\fP を有効にするには、
+上述の「ユーザ設定」セクションで解説したように、NOEXEC タグを使用する。
+そのときの例を再掲しよう。
+.nf
+.sp
+.RS 10n
+aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
+.RE
+.fi
+.RS 10n
+.sp
+この例では、ユーザ \fBaaron\fP 対して、\fInoexec\fP を有効にした上で、
+\fI/usr/bin/more\fP と \fI/usr/bin/vi\fP の実行を許可している。
+このようにすれば、この二つのコマンドから (シェルのような)
+ほかのコマンドを実行することができなくなるわけだ。使用しているシステムが
+\fInoexec\fP に対応する能力があるかどうかよくわからない場合でも、
+取りあえず試してみることなら、いつだってできる。\fInoexec\fP を有効にして、
 シェル・エスケープが可能かどうか確かめてみればよいのだ。
+.RE
 .PP
 注意してほしいが、シェル・エスケープの禁止は万能薬ではない。
-ルートの権限で動いているプログラムには、ほかにも、危険性のあるさまざまな作業
-(ファイルの中身を変更するとか、上書きしてしまうとか) が可能であり、
+root の権限で動いているプログラムには、ほかにも、危険性のあるさまざまな作業
+(ファイルの属性を変更するとか、上書きしてしまうとか) が可能であり、
 思いがけずに権限を拡大してしまうこともありえるのだ。特にエディタについて言うと、
-ユーザには \fBsudoedit\fR を実行する許可を与えるのが、より安全な方法である。
-.SH "デバッグ・フラグ (sudo-1.8.4 の新機能)"
-.IX Header "DEBUG FLAGS"
-バージョン 1.8.4 以上の \fIsudoers\fR プラグインは、
-デバッグのための枠組みに対応しており、
-問題が発生したとき、プラグインの内部で何が起きているかを突き止めるために、
-それを利用することができる。
-その設定は、\fIsudo\fR\|(8) のマニュアルでも説明したように、
-\&\fI/etc/sudo.conf\fR ファイルで行うことが可能だ。
-.PP
-\&\fIsudoers\fR プラグインは、
-\&\fBsudo\fR そのものと同じデバッグ・フラグの書式を使用する。
-すなわち、\fIsubsystem\fR@\fIpriority\fR である。
-.PP
-\&\fIsudoers\fR が使用する priority (重大度) を深刻なものから挙げると、
-\fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR, \fIdiag\fR, \fIinfo\fR,
-\&\fItrace\fR, \fIdebug\fR である。ある priority を指定すると、
+ユーザには \fBsudoedit\fP を実行する許可を与えるのが、より安全な方法である
+(下記参照)。
+.SS 安全な編集作業
+\fBsudoers\fP プラグインでは \fBsudoedit\fP が使用できるようになっており、
+ユーザは好みのエディタを使って、安全にファイルを編集することができる。
+\fBsudoedit\fP は \fBsudo\fP の組み込みコマンドなので、
+\fIsudoers\fP ファイル中で指定するときは、
+頭にパスを付けてはいけない。ただし、コマンドライン引き数については、
+通常のコマンドと全く同じように指定することができる。
+\fBsudoedit\fP のコマンドライン引き数にワイルドカードを使用した場合は、
+\fBsudoedit\fP の引き数にはパス名が来るはずなので、
+ワイルドカードはフォワードスラッシュ ('/') にマッチしないようになっている。
+.PP
+\fBsudo\fP 経由で実行される他のコマンドとは違って、エディターは
+\fBsudo\fP を起動するユーザの資格で、環境を変更せずに実行される。
+詳しくは、sudo(8) のマニュアルの \fB\-e\fP オプションの説明をご覧になるとよい。
+.PP
+たとえば、ユーザ operator が "message of the day" ファイルを編集できるようにするには、\fIsudoers\fP
+で次のように指定する。
+.nf
+.sp
+.RS 6n
+operator       ALL = sudoedit /etc/motd
+.RE
+.fi
+.PP
+そして、ユーザ operator は、\fBsudoedit\fP を次のように実行する。
+.nf
+.sp
+.RS 6n
+$ sudoedit /etc/motd
+.RE
+.fi
+.PP
+エディタは、root ではなく、ユーザ operator の資格で、\fI/etc/motd\fP
+の作業用コピーに対して実行される。ファイルの編集が済むと、
+\fI/etc/motd\fP は作業用コピーの内容で更新されることになる。
+.PP
+ユーザが書き込み権限を持っているディレクトリに存在するファイルに対して、
+ファイル名を直接指定してであれ、ワイルドカードによって指定してであれ、
+\fBsudoedit\fP を使って編集する許可をそのユーザに与えてはいけない。
+もし、ユーザがディレクトリに対して書き込み権限を持っているならば、編集を許可されたファイルを、
+別のファイルに対するリンクで置き換えることができるわけで、そうすることによって、
+任意のどんなファイルでも編集できるようになってしまうからだ。
+そうした事態を防ぐために、バージョン 1.8.16 以降の \fBsudoedit\fP では、
+\fIsudoedit_checkdir\fP オプションが無効になっている場合や、
+\fBsudoedit\fP を実行するユーザが root である場合を除いて、
+ユーザが書き込み権限を持っているディレクトリに存在するいかなるシンボリックリンクも、
+たどらないようになっている。
+また、書き込み権限があるディレクトリに存在するファイルの編集を行うことも拒否する。
+さらに、バージョン 1.8.15 以降の \fBsudoedit\fP では、
+\fIsudoers\fP ファイルで \fIsudoedit_follow\fP オプションが有効になっているか、
+\fIsudoedit\fP コマンドの前に FOLLOW タグが指定してあるかのどちらかでないかぎり、
+シンボリックリンクをオープンしないようになっている。
+.SS タイムスタンプ・ファイルのチェック
+\fBsudoers\fP は、タイムスタンプ・ディレクトリ (デフォルトでは
+\fI/var/run/sudo/ts\fP) の所有者を調べて、所有者が root でなかったり、
+root 以外のユーザにも書き込み可能であったりすると、
+そのディレクトリの中身を無視する。古いバージョンの \fBsudo\fP は、
+タイムスタンプ・ファイルを \fI/tmp\fP に置いていたが、
+そうしたことは今では推奨できない。
+特権を持たないユーザが自分の作ったファイルの所有者を変更できるシステムでは、
+ユーザがタイムスタンプを自分で作成することが可能になるかもしれないからだ。
+.PP
+タイムスタンプ・ディレクトリは、
+リブートしたときにその中身を\fI消去されるべき\fPだが、
+すべてのシステムに \fI/var/run\fP ディレクトリが存在するとはかぎらない。
+問題が起きるのを避けるために、\fBsudoers\fP は、
+ブートタイムを参照できるシステムでは、
+マシンがブートした時刻よりも古い日時を持つタイムスタンプ・ファイルを無視する。
+.PP
+グラフィカルなデスクトップ環境を持っているシステムの中には、
+特権を持たないユーザにシステム・クロックの変更を許しているものがある。
+\fBsudoers\fP は、タイムスタンプが有効か否を確認するのに、
+システム・クロックを拠り所にしている。そこで、そうしたシステムでは、
+ユーザがクロックを後戻りさせることで、\fItimestamp_timeout\fP よりも長い時間
+\fBsudo\fP を実行することが可能になるかもしれない。そうした事態に対抗するため、
+\fBsudoers\fP は、システムがサポートしているならば、
+タイムスタンプに単調増加時計 (monotonic clock) を使用する
+(単調増加時計は後戻りすることがないからだ)。
+.PP
+\fBsudoers\fP はあまりにも未来に設定されたタイムスタンプを認めない。
+タイムスタンプが「現在時 + 2 * TIMEOUT」より新しい日時だった場合、
+そのタイムスタンプは無視され、\fBsudoers\fP はログに記録して、警告を発する。
+.PP
+タイムスタンプ・ファイルはファイルシステム中に作られるものだから、
+ユーザのログイン・セッションが終わっても残っている。
+そのため、ユーザがログインし、認証を行ってから
+\fBsudo\fP を使ってコマンドを実行し、一旦ログアウトして、再度ログインしたとき、
+認証なしで \fBsudo\fP を実行することが可能になってしまうかもしれない。
+タイムスタンプ・ファイルに記録されているタイムスタンプが 5 分以内のものであれば
+(あるいは、\fIsudoers\fP ファイルで設定されているタイムアウト時間以内のものであれば)、
+そういうことが可能かもしれないのだ。
+\fItty_tickets\fP オプションが有効な場合は、タイムスタンプの記録に、
+ユーザが認証するときに使った端末のデバイス番号が含まれる。それよって、
+tty ごとのきめ細かな管理が可能になるが、それでもタイムスタンプの記録が、
+ユーザのセッションが終わった後まで有効である可能性もある。また、
+タイムスタンプの記録には、最後に認証を行ったプロセスのセッション ID も含まれている。
+別の端末セッションのプロセスが、同じタイムスタンプの記録を使えないようにしているのだ。
+それはまた、ユーザがログアウトし、再度同じ端末にログインしたときに、
+パスワードを入力することなしに \fBsudo\fP を実行できる可能性を減少させる役にも立っている。
+.SH デバッギング
+バージョン 1.8.4 以上の \fBsudoers\fP プラグインは、
+デバッグのための柔軟な枠組みをサポートしており、問題が発生したときに、
+プラグインの内部で何が起きているかを突き止めるために、
+それを利用することができる。設定は sudo.conf(5) ファイルで行うことが可能だ。
+.PP
+\fBsudoers\fP プラグインは、
+フロントエンドである \fBsudo\fP と同じデバッグ・フラグの書式を使用する。
+すなわち、\fIsubsystem\fP@\fIpriority\fP である。
+.PP
+\fBsudoers\fP が使用する priority (重大度) を深刻なものから挙げると、
+\fIcrit\fP, \fIerr\fP, \fIwarn\fP, \fInotice\fP, \fIdiag\fP, \fIinfo\fP, \fItrace\fP,
+\fIdebug\fP である。ある priority を指定すると、
 それより深刻なすべての priority も併せて指定したことになる。
-たとえば、\fInotice\fR という priority を指定すれば、
-\&\fInotice\fR レベル以上のデバッグメッセージがログに記録されるわけである。
-.PP
-\&\fIsudoers\fR では以下のサブシステムが使用できる。
-.IP "\fIalias\fR" 10
-.IX Item "alias"
-\&\f(CW\*(C`User_Alias\*(C'\fR, \f(CW\*(C`Runas_Alias\*(C'\fR,
-\&\f(CW\*(C`Host_Alias\*(C'\fR, \f(CW\*(C`Cmnd_Alias\*(C'\fR の処理
-.IP "\fIall\fR" 10
-.IX Item "all"
-あらゆるサブシステムにマッチする
-.IP "\fIaudit\fR" 10
-.IX Item "audit"
-Solaris \s-1BSM\s0 (Basic Security Module) と Linux の監査コード
-.IP "\fIauth\fR" 10
-.IX Item "auth"
+たとえば、\fInotice\fP という priority を指定すれば、
+\fInotice\fP レベル以上のデバッグメッセージがログに記録される。
+.PP
+\fBsudoers\fP では以下のサブシステムが使用できる。
+.TP  10n
+\fIalias\fP
+User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias の処理
+.TP  10n
+\fIall\fP
+すべてのサブシステムにマッチする
+.TP  10n
+\fIaudit\fP
+Solaris BSM (Basic Security Module) と Linux の監査コード
+.TP  10n
+\fIauth\fP
 ユーザの認証
-.IP "\fIdefaults\fR" 10
-.IX Item "defaults"
-\&\fIsudoers\fR の \fIDefaults\fR 設定
-.IP "\fIenv\fR" 10
-.IX Item "env"
+.TP  10n
+\fIdefaults\fP
+\fIsudoers\fP ファイルの \fIDefaults\fP 設定
+.TP  10n
+\fIenv\fP
 環境の取扱い
-.IP "\fIldap\fR" 10
-.IX Item "ldap"
+.TP  10n
+\fIldap\fP
 LDAP を使用する sudoers
-.IP "\fIlogging\fR" 10
-.IX Item "logging"
+.TP  10n
+\fIlogging\fP
 ロギングのサポート
-.IP "\fImatch\fR" 10
-.IX Item "match"
-\&\fIsudoers\fR におけるユーザ、グループ、ホスト、
-ネットグループのマッチング
-.IP "\fInetif\fR" 10
-.IX Item "netif"
+.TP  10n
+\fImatch\fP
+\fIsudoers\fP ファイルにおけるユーザ、グループ、ホスト、ネットグループのマッチング
+.TP  10n
+\fInetif\fP
 ネットワークインターフェースの取扱い
-.IP "\fInss\fR" 10
-.IX Item "nss"
-\&\fIsudoers\fR におけるネームサービス・スイッチの取扱い
-.IP "\fIparser\fR" 10
-.IX Item "parser"
-\&\fIsudoers\fR ファイルの解析
-.IP "\fIperms\fR" 10
-.IX Item "perms"
+.TP  10n
+\fInss\fP
+\fBsudoers\fP におけるネームサービス・スイッチの取扱い
+.TP  10n
+\fIparser\fP
+\fIsudoers\fP ファイルの解析
+.TP  10n
+\fIperms\fP
 パーミッションの設定
-.IP "\fIplugin\fR" 10
-.IX Item "plugin"
-プラグインにとって \fImain\fR に相当する
-.IP "\fIpty\fR" 10
-.IX Item "pty"
-擬似 tty に関連したコード
-.IP "\fIrbtree\fR" 10
-.IX Item "rbtree"
+.TP  10n
+\fIplugin\fP
+プラグインにとって \fImain\fP に相当する
+.TP  10n
+\fIpty\fP
+擬似 tty 関連コード
+.TP  10n
+\fIrbtree\fP
 赤黒木 (redblack tree) の内部情報
-.IP "\fIutil\fR" 10
-.IX Item "util"
+.TP  10n
+\fIsssd\fP
+SSSD を使用する sudoers
+.TP  10n
+\fIutil\fP
 ユーティリティ関数群
-.SH "セキュリティに関する注意点"
-.IX Header "SECURITY NOTES"
-\&\fIsudoers\fR はタイムスタンプ・ディレクトリ (デフォルトでは
-\&\fI/var/lib/sudo\fR) の所有者を調べて、所有者が root でなかったり、
-root 以外のユーザにも書き込み可能だったりする場合には、
-そのディレクトリの内容を無視する。root 以外のユーザでも \fIchown\fR\|(2)
-を利用して、ファイルの所有者を変えられるシステムでは、
-タイムスタンプ・ディレクトリが (たとえば、\fI/tmp\fR といった)
-誰にでも書き込めるディレクトリにあると、一般ユーザが、\fBsudo\fR
-を実行する前にタイムスタンプ・ディレクトリを作成することが可能になる。もっとも、
-\&\fIsudoers\fR はタイムスタンプ・ディレクトリとその中身の、
-所有者とモードをチェックするので、起こりえる唯一の被害は、
-ファイルを「隠匿」する目的でそのディレクトリに入れておかれることぐらいだ。
-これはあまりありそうにないことである。
-なぜなら、タイムスタンプ・ディレクトリが root の所有になり、
-ほかのユーザによるアクセスが禁じられてしまうと、
-ファイルをそこに置いたユーザは、それを回収できなくなるからだ。
-.PP
-\&\fIsudoers\fR はあまりにも未来に設定されたタイムスタンプを認めない。
-タイムスタンプが「現在時 + 2 * \f(CW\*(C`TIMEOUT\*(C'\fR」
-より新しい日時だった場合、そのタイムスタンプは無視され、
-\&\fBsudo\fR がログに記録して、警告を発する。このようになっているのは、
-一般ユーザがファイルの所有者を変えられるシステムで、
-タイムスタンプ・ディレクトリが誰にでも書き込めるディレクトリにある場合に、
-ユーザがいい加減な日付を付けて勝手に自分のタイムスタンプを作れないようにするためである。
+.PD 0
 .PP
-ブートタイムを参照できるシステムでは、
-タイムスタンプがマシンがブートするよりも前の日時になっている場合、
-\&\fIsudoers\fR はそれを無視する。
-.PP
-タイムスタンプ・ファイルはファイルシステム中に作られるので、
-ユーザのログイン・セッションが終わっても、残っている。
-そのため、次のようなことが起こりえる。ユーザがログインし、
-認証してから \fBsudo\fR を使ってコマンドを実行して、ログアウトする。
-再びログインして、認証なしで \fBsudo\fR を実行する。
-タイムスタンプ・ファイルの内容更新日時 (modification time) が
-\&\f(CW\*(C`5\*(C'\fR 分以内であれば
-(あるいは、\fIsudoers\fR で設定されたタイムアウト時間以内であれば)、
-そういうことが可能になってしまうのだ。
-\&\fItty_tickets\fR オプションが有効になっている場合、
-タイムスタンプは tty ごとに別々に作られるが、
-それでも、ユーザセッションが終わった後まで生き残ってしまう。devpts
-ファイルシステムを使用している Linux や、devices ファイルシステムを持つ Solaris、
-それに、デバイスを作成するごとに、その inode 番号をひたすら増やしていく
-devfs ファイルシステムを利用しているシステム (たとえば、Mac \s-1OS\s0 X) では、
-tty ごとのタイムスタンプ・ファイルがいつ用済みになるかを判定することができるので、
-\&\fIsudoers\fR はそうしたタイムスタンプ・ファイルを無視することになる。
-だが、システムの管理者はこの機能を当てにしない方がよい。
-どのシステムでも利用できるとはかぎらないからだ。
-.PP
-もし ユーザに許可するコマンドが \f(CW\*(C`ALL\*(C'\fR になっているならば、
-ユーザが自分でプログラムを作って
-(あるいは、シェルを自分専用に別の名前でコピーして)、
-ルート・シェルを獲得するのを防ぐことはできない。
-ユーザ設定でどんな項目に '!'  を付けようとも防止不可能である。
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIrsh\fR\|(1), \fIsu\fR\|(1), \fIfnmatch\fR\|(3), \fIglob\fR\|(3), \fImktemp\fR\|(3), \fIstrftime\fR\|(3),
-\&\fIsudoers.ldap\fR\|(5), \fIsudo_plugin\fR\|(8), \fIsudo\fR\|(8), \fIvisudo\fR\|(8)
-.SH "警告"
-.IX Header "CAVEATS"
-\&\fIsudoers\fR ファイルの編集には、\fB必ず\fR \fBvisudo\fR
-コマンドを使うべきだ。
-そうすれば、\fBvisudo\fR がファイルをロックし、文法のチェックをやってくれる。
-\&\fIsudoers\fR ファイルに文法的な間違いがあると、\fBsudo\fR が動かないので、
-\&\fIsudoers\fR ファイルには文法エラーが絶対にあってはならないのだ。
+一例を挙げておく。
+.nf
+.sp
+.RS 0n
+Debug sudoers.so /var/log/sudo_debug match@info,nss@info
+.RE
+.fi
+.PD
+.PP
+より詳しい情報については、sudo.conf(5) マニュアルをご覧いただきたい。
+.SH 関連項目
+ssh(1), su(1), fnmatch(3), glob(3), mktemp(3), strftime(3), sudo.conf(5),
+sudoers.ldap(5), sudo(8), sudo_plugin(5), visudo(8)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
+.PP
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH 警告
+\fIsudoers\fP ファイルの編集には、\fB必ず\fP \fBvisudo\fP コマンドを使うべきである。
+そうすれば、\fBvisudo\fP がファイルをロックし、文法のチェックをやってくれる。
+\fIsudoers\fP ファイルに文法的な間違いがあると、\fBsudo\fP が動かなくなるので、
+\fIsudoers\fP ファイルには文法エラーが絶対にあってはならないのだ。
 .PP
 ネットグループを (ユーザについてではなく) マシンについて使用し、
-\&\fInetgroup\fR ファイルに完全修飾ホスト名を記載する場合は
+\fInetgroup\fP ファイルに完全修飾ホスト名を記載する場合は
 (たいていそうするものだが)、そのマシンのホスト名を
-\&\f(CW\*(C`hostname\*(C'\fR コマンドが出力する通りの完全修飾名で書くか、
-さもなければ、\fIsudoers\fR ファイルで
-\&\fIfqdn\fR オプションを使うかしなければならない。
-.SH "バグ"
-.IX Header "BUGS"
-\&\fBsudo\fR にバグを発見したと思ったら、下記のページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.SH "サポート"
-.IX Header "SUPPORT"
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には下記 URL を御覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.SH "免責"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+hostname コマンドが出力する通りの完全修飾名で書くか、さもなければ、
+\fIsudoers\fP ファイルで \fIfqdn\fP オプションを使うかしなければならない。
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL をご覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index 822345d..00351d5 100644 (file)
@@ -1,10 +1,12 @@
-.\" Copyright (c) 2003-2011
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoers.ldap.mdoc.in
+.\"
+.\" Copyright (c) 2003-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.con.ne.jp>
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDOERS.LDAP 5"
-.TH SUDOERS.LDAP 5 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDOERS.LDAP 5 "June 15, 2016" "Sudo 1.8.17" "File Formats Manual"
 .nh
-.SH "名前"
-sudoers.ldap \- LDAP を使った sudo の設定
-.SH "説明"
-.IX Header "DESCRIPTION"
-\&\fBsudo\fR は \fIsudoers\fR ファイルによって設定するのが標準だが、
-\&\s-1LDAP\s0 を通して設定することも可能だ。この方法は、
-大規模な分散環境で sudo の設定を同期させたい場合に、とりわけ便利かもしれない。
+.if  n .ad l
+.SH 名前
+\fBsudoers.ldap\fP \- LDAP を使用した sudoers ポリシーの設定
+.SH 説明
+\fBsudoers\fP セキュリティポリシーは \fIsudoers\fP ファイルによって設定するのが標準だが、
+LDAP を通して設定することもできる。この方法は、大規模な分散環境で
+sudoers セキュリティポリシーの設定を同期させたい場合に、
+とりわけ便利かもしれない。
 .PP
-sudo の設定に \s-1LDAP\s0 を使用すると、有利な点がいくつかある。
-.IP "\(bu" 4
-\&\fBsudo\fR はもはや sudo の設定をまるまる全部読み込む必要がない。
-\&\s-1LDAP\s0 を使用する場合は、\fBsudo\fR の実行ごとに、たった二、三回
-\&\s-1LDAP\s0 に問い合わせを行うだけですむ。
-そのため、\s-1LDAP\s0 環境は実行速度が非常に早く、たいへん使い勝手がよい。
-.IP "\(bu" 4
-sudo の設定にタイプミスがあっても、もうそのために \fBsudo\fR
-が終了してしまうことがない。\s-1LDAP\s0 のデータは、
-sudo 用のスキーマに従っていなければ、サーバーにロードできない。
-結果として、正しいシンタクスが保証されるわけだ。
+sudoers セキュリティポリシーの設定に LDAP を使用すると、有利な点がいくつかある。
+.TP  4n
+\fB\(bu\fP
+\fBsudo\fP はもはや sudoers セキュリティポリシーの設定をまるまる全部読み込む必要がない。
+LDAP を使用する場合は、\fBsudo\fP の実行ごとに、たった二、三回
+LDAP に問い合わせを行うだけですむ。
+そのため、LDAP 環境は実行速度が非常に早く、たいへん使い勝手がよい。
+.TP  4n
+\fB\(bu\fP
+sudoers セキュリティポリシーの設定にタイプミスがあっても、
+もうそのために \fBsudo\fP が終了してしまうことがない。
+LDAP のデータは、sudo 用のスキーマに従っていなければ、
+サーバーにロードできない。結果として、
+正しいシンタクスが保証されることになる。
 ユーザ名やホスト名をタイプミスすることなら相変わらずあるだろうが、
-そのために \fBsudo\fR が動かなくなることはない。
-.IP "\(bu" 4
+そのために \fBsudo\fP が動かなくなることはない。
+.TP  4n
+\fB\(bu\fP
 エントリごとにオプションを指定して、
 グローバルなデフォルト・オプションを上書きすることができる。
-\&\fI/etc/sudoers\fR はグローバルなデフォルト・オプションと、ユーザ、ホスト、
+\fI/etc/sudoers\fP はグローバルなデフォルト・オプションと、ユーザ、ホスト、
 コマンド、変身対象に結びついた限定されたオプションしかサポートしていない。
-また、\fI/etc/sudoers\fR の書式は複雑で、ユーザには理解しにくいかもしれない。
+また、\fI/etc/sudoers\fP の書式は複雑で、ユーザには理解しにくいかもしれない。
 オプションをエントリ内で直接指定する方が、ずっと自然である。
-.IP "\(bu" 4
-\&\fBvisudo\fR プログラムはもう必要がない。\fBvisudo\fR の役割は
-\&\fI/etc/sudoers\fR ファイルのロッキングとシンタクス・チェックである。
-\&\s-1LDAP\s0 のデータ更新はアトミック操作なので、
+.TP  4n
+\fB\(bu\fP
+\fBvisudo\fP プログラムはもう必要がない。\fBvisudo\fP の役割は、
+\fI/etc/sudoers\fP ファイルのロッキングとシンタクス・チェックである。
+LDAP のデータ更新はアトミック操作なので
 (訳注: それ故、データは更新されていないか、
 すでに更新されたかのどちらかであって、中間状態がないので)、
\83­ã\83\83ã\82­ã\83³ã\82°ã\81¯ã\82\82ã\81¯ã\82\84å¿\85è¦\81ã\81\8cない。シンタクスは、
-データが \s-1LDAP\s0 にインサートされるときチェックされるから、
\83­ã\83\83ã\82­ã\83³ã\82°ã\81¯ã\82\82ã\81¯ã\82\84å¿\85è¦\81ã\81§ã\81¯ない。シンタクスは、
+データが LDAP にインサートされるときチェックされるから、
 シンタクス・チェック用の特別なツールも不要になっている。
 .PP
-\&\s-1LDAP\s0 による設定と \fIsudoers\fR ファイルによる設定との、
-もう一つの大きな違いは、\s-1LDAP\s0 では
-\&\fBsudo\fR 専用のエイリアスがサポートされていないことである。
+LDAP による設定と \fIsudoers\fP ファイルによる設定との、もう一つの大きな違いは、
+LDAP では \fBsudo\fP 専用のエイリアスがサポートされていないことである。
 .PP
-たいていの場合、\fBsudo\fR 専用のエイリアスは実のところ必要がない。
+たいていの場合、\fBsudo\fP 専用のエイリアスは実のところ必要がない。
 User_Aliases や Runas_Aliases の代わりに、
-Unix のグループやユーザのネットグループが使用できる。
+Unix のグループ、non\-Unix グループ (\fIgroup_plugin\fP を介して)、
+ユーザのネットグループが使用できる。
 また、Host_Aliases の代わりには、ホストのネットグループが使える。
-\&\s-1LDAP\s0 には Unix のグループやネットグループも格納できるので、
-\&\fBsudo\fR 専用のエイリアスがどうしても必要というわけではないのだ。
+LDAP には グループやネットグループも格納できるので、
+\fBsudo\fP 専用のエイリアスがどうしても必要というわけではないのだ。
 .PP
-Cmnd_Aliases もまったく必要がない。一つの \f(CW\*(C`sudoRole\*(C'\fR
-エントリに複数のユーザを登録できるからだ。複数のユーザが参照する
-Cmnd_Alias を定義する代わりに、複数のコマンドを含む \f(CW\*(C`sudoRole\*(C'\fR
-エントリを一つ作成して、そこに複数のユーザを割り当てればよい。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1"
-原文の著者は、sudo 設定の単位となる \f(CW\*(C`objectClass\*(C'\fR 属性が
-\&\f(CW\*(C`sudoRole\*(C'\fR の LDAP エントリのうち、\fI/etc/sudoers\fR
-の各ユーザ設定に相当するものを「a sudoRole」と呼んでいる。
+Cmnd_Aliases もまったく必要がない。
+一つの sudoRole エントリに複数のユーザを登録できるからだ。
+複数のユーザが参照する Cmnd_Alias を定義する代わりに、
+複数のコマンドを含む sudoRole エントリを一つ作成して、
+そこに複数のユーザを割り当てればよい。
+.IP "[\fB訳注\fP]:" 8
+原文の著者は、sudoers セキュリティポリシーの設定の単位となる 
+objectClass 属性が sudoRole の LDAP エントリのうち、
+\fI/etc/sudoers\fP の各ユーザ設定に相当するものを「a sudoRole」と呼んでいる。
 「sudoRole エントリ」という訳語を当てた。
-.SS "\s-1LDAP\s0 の SUDOers コンテナ"
-.IX Subsection "SUDOers LDAP container"
-\&\s-1LDAP\s0 では、sudo の設定は
-\&\f(CW\*(C`ou=SUDOers\*(C'\fR コンテナの下に配置されている。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote2"
\82³ã\83³ã\83\86ã\83\8aã\81¨ã\81¯ã\80\81ã\83\87ã\83¼ã\82¿ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81§ã\81¯ã\81ªã\81\8f
-下位のエントリをまとめておくために存在する上位エントリを言う。たとえば、
-OpenLDAP 用の \f(CW\*(C`ou=SUDOers\*(C'\fR コンテナなら、こんなふうになる
-(sudo 同梱の README.LDAP から引用)。
-.PP
-.Vb 4
-\&          dn: ou=SUDOers,dc=example,dc=com
-\&          objectClass: top
-\&          objectClass: organizationalUnit
-\&          ou: SUDOers
-.Ve
+.SS "LDAP の SUDOers コンテナ"
+LDAP では、sudoers セキュリティポリシーの設定は
+ou=SUDOers コンテナの下に配置されている。
+.IP "[\fB訳注\fP]:" 8
+ここで言うコンテナ (容器、入れもの) とは、データを格納するためではなく、
+データを含む下位のエントリをまとめておくために存在する上位エントリのことである。
\81\9fã\81¨ã\81\88ã\81°ã\80\81OpenLDAP ç\94¨ã\81® ou=SUDOers ã\82³ã\83³ã\83\86ã\83\8aã\81ªã\82\89
+その設定ファイルの記述はこんなふうになる (sudo 同梱の README.LDAP から引用)。
+.nf
+.sp
+.RS 12n
+dn: ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: organizationalUnit
+ou: SUDOers
+.RE
+.fi
 .PP
-sudo はまず最初に SUDOers コンテナ配下に
-\&\f(CW\*(C`cn=defaults\*(C'\fR のエントリを捜す。
-見つかった場合は、複数回指定可能な
-\&\f(CW\*(C`sudoOption\*(C'\fR 属性が、\fI/etc/sudoers\fR のグローバルな
-\&\f(CW\*(C`Defaults\*(C'\fR 行と同じやり方で解析される。
-以下の例では、環境変数 \f(CW\*(C`SSH_AUTH_SOCK\*(C'\fR
-がすべてのユーザの環境に保存されることになる。
 .PP
-.Vb 6
-\&    dn: cn=defaults,ou=SUDOers,dc=example,dc=com
-\&    objectClass: top
-\&    objectClass: sudoRole
-\&    cn: defaults
-\&    description: Default sudoOption\*(Aqs go here
-\&    sudoOption: env_keep+=SSH_AUTH_SOCK
-.Ve
+sudo はまず最初に SUDOers コンテナ配下に cn=defaults のエントリを捜す。
+見つかった場合は、複数回指定可能な sudoOption 属性が、\fI/etc/sudoers\fP
+のグローバルな Defaults 行と同じやり方で解析される。以下の例では、
+環境変数 SSH_AUTH_SOCK がすべてのユーザの環境に保存されることになる。
+.nf
+.sp
+.RS 4n
+dn: cn=defaults,ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: sudoRole
+cn: defaults
+description: Default sudoOption's go here
+sudoOption: env_keep+=SSH_AUTH_SOCK
+.RE
+.fi
 .PP
-\&\s-1LDAP\s0 において \fI/etc/sudoers\fR の個々の「ユーザ設定」に相当するのは、
-\&\f(CW\*(C`sudoRole\*(C'\fR エントリである。それは以下の属性からなっている。
-.IP "\fBsudoUser\fR" 4
-.IX Item "sudoUser"
-次のうちのいづれか。ユーザ名、
-ユーザ \s-1ID\s0 (接頭辞 \f(CW\*(Aq#\*(Aq\fR が付く)、
-Unix グループ名 (接頭辞 \f(CW\*(Aq%\*(Aq\fR が付く)、
-Unix グループ \s-1ID\s0
-(接頭辞 \f(CW\*(Aq%#\*(Aq\fR が付く。これが使えるのは、sudo-1.8.4 から)、
-ユーザのネットグループ名 (接頭辞 \f(CW\*(Aq+\*(Aq\fR が付く)。
-.IP "\fBsudoHost\fR" 4
-.IX Item "sudoHost"
-次のうちのいづれか。ホスト名、\s-1IP\s0 アドレス、ネットワークアドレス、
-ホストのネットグループ名 (接頭辞 \f(CW\*(Aq+\*(Aq\fR が付く)。
-\&\f(CW\*(C`ALL\*(C'\fR という特別な値はいかなるホストにもマッチする。
-.IP "\fBsudoCommand\fR" 4
-.IX Item "sudoCommand"
-Unix のコマンド。コマンドライン引数を付けてもよく、glob 文字
-(ワイルドカードとも言う) を含んでいてもよい。\f(CW\*(C`ALL\*(C'\fR
-という特別な値は、いかなるコマンドにもマッチする。
-コマンドに感嘆符 \f(CW\*(Aq!\*(Aq\fR を接頭辞として付けると、
+LDAP において \fI/etc/sudoers\fP の個々の「ユーザ設定」に相当するのは、
+sudoRole エントリである。それは以下の属性からなっている。
+.TP  6n
+\fBsudoUser\fP
+次のうちのいづれか。ユーザ名、ユーザ ID (接頭辞 '#' が付く)、
+Unix グループ名またはグループ ID (それぞれ接頭辞 '%' と
+\&'%#' が付く)、ユーザのネットグループ (接頭辞 '+' が付く)、
+non\-Unix グループ名またはグループ ID (それぞれ接頭辞 '%:' と '%:#' が付く)。
+なお、ユーザのネットグループについては、
+ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行われる。
+ホストの要素はマッチングに使用されない。
+non\-Unix グループが使用できるのは、グローバルな \fIdefaults\fP sudoRole
+オブジェクトで適切な \fIgroup_plugin\fP が指定されているときだけである。
+.TP  6n
+\fBsudoHost\fP
+次のうちのいづれか。ホスト名、IP アドレス、ネットワークアドレス、
+ホストのネットグループ (接頭辞 '+' が付く)。
+ALL という特別な値はいかなるホストにもマッチする。
+なお、ホストのネットグループについては、
+ネットグループの成員中のホスト (完全修飾名とそうでないもののどちらでも)
+とドメインの要素のみを使って、マッチングが行われる。
+ユーザの要素はマッチングに使用されない。
+.TP  6n
+\fBsudoCommand\fP
+絶対パスで指定した Unix のコマンド名。コマンドライン引数を付けてもよく、
+glob 文字 (ワイルドカードとも言う) を含んでいてもよい。
+コマンドに感嘆符 '\&!' を接頭辞として付けると、
 ユーザにそのコマンドの実行を禁じることになる。
-.IP "\fBsudoOption\fR" 4
-.IX Item "sudoOption"
+.sp
+コマンド名として組み込みコマンドの "sudoedit" を使用すれば、
+ユーザが \fBsudo\fP を \fB\-e\fP オプション付きで (あるいは、\fBsudoedit\fP の名前で)
+実行するのを許可することになる。普通のコマンドの場合と同じように、
+コマンドライン引数まで指定してもよい。"sudoedit" は
+\fBsudo\fP 本体に組み込まれたコマンドなので、これをコマンド名に指定するときは、
+頭にパスをつけてはいけないことに注意していただきたい。
+.sp
+ALL という特別な値は、いかなるコマンドにもマッチする。
+.sp
+コマンド名の前に SHA\-2 ダイジェストが付いていると、実行が許可されるのは、
+ダイジェストがマッチしたときだけになる。これは、\fBsudo\fP を実行するユーザが、
+対象となるコマンドやその親ディレクトリに書き込み権限を持っているような場合に、
+役に立つだろう。ダイジェストのフォーマットとしては、sha224, sha256,
+sha384, sha512 がサポートされている。ダイジェスト名の後ろにはコロン
+(':\&') を置いて、その後に実際のダイジェストを続けなければならない。
+ダイジェストは、16 進数でも base64 形式でもよい。
+たとえば、sudoCommand に対して以下の値を指定すると、
+.nf
+.sp
+.RS 10n
+sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ /bin/ls
+.RE
+.fi
+.RS 6n
+.sp
+ユーザが \fI/bin/ls\fP を実行できるのは、\fI/bin/ls\fP の sha224
+ダイジェストが指定した値とマッチしたときだけになる。
+コマンドのダイジェストをサポートしているのは、バージョン 1.8.7 以上だけである。
+.RE
+.TP  6n
+\fBsudoOption\fP
 働きは、前述のグローバルオプションと同じだが、それが属している
-\&\f(CW\*(C`sudoRole\*(C'\fR エントリに対してのみ効果がある。
-.IP "\fBsudoRunAsUser\fR" 4
-.IX Item "sudoRunAsUser"
-変身対象となるユーザ名か uid (接頭辞 \f(CW\*(Aq#\*(Aq\fR が付く) を指定する。
-変身対象ユーザをリストに含む Unix グループ名 (接頭辞 \f(CW\*(Aq%\*(Aq\fR が付く) や、
-ユーザのネットグループ名 (接頭辞 \f(CW\*(Aq+\*(Aq\fR が付く) も使える。
-特別な値 \f(CW\*(C`ALL\*(C'\fR は、いかなるユーザにもマッチする。
-.Sp
-属性 \f(CW\*(C`sudoRunAsUser\*(C'\fR は、
-バージョン 1.7.0 以上の \fBsudo\fR でなければ、利用できない。
-それ以前のバージョンの \fBsudo\fR では、
-代わりに属性 \f(CW\*(C`sudoRunAs\*(C'\fR を使用している。
-.IP "\fBsudoRunAsGroup\fR" 4
-.IX Item "sudoRunAsGroup"
-変身対象となる Unix グループ名か gid (接頭辞 \f(CW\*(Aq#\*(Aq\fR が付く)。
-特別な値 \f(CW\*(C`ALL\*(C'\fR はいかなるグループにもマッチする。
-.Sp
-属性 \f(CW\*(C`sudoRunAsGroup\*(C'\fR は、
-バージョン 1.7.0 以上の \fBsudo\fR でなければ、利用できない。
-.IP "\fBsudoNotBefore\fR" 4
-.IX Item "sudoNotBefore"
-\&\f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR 形式のタイムスタンプ。
-この属性を含む \f(CW\*(C`sudoRole\*(C'\fR エントリがいつから有効になるかという、
+sudoRole エントリに対してのみ効果がある。
+.TP  6n
+\fBsudoRunAsUser\fP
+変身対象となるユーザ名か uid (接頭辞 '#' が付く) を指定する。
+変身対象ユーザをリストに含む Unix グループ名 (接頭辞 '%' が付く) や、
+ユーザのネットグループ (接頭辞 '+' が付く) も使える。
+特別な値 ALL は、いかなるユーザにもマッチする。
+.sp
+属性 sudoRunAsUser は、バージョン 1.7.0 以上の \fBsudo\fP でなければ、
+利用できない。それ以前のバージョンの \fBsudo\fP では、
+代わりに属性 sudoRunAs を使用している。
+.TP  6n
+\fBsudoRunAsGroup\fP
+変身対象となる Unix グループ名か gid (接頭辞 '#' が付く)。
+特別な値 ALL はいかなるグループにもマッチする。
+.sp
+属性 sudoRunAsGroup は、バージョン 1.7.0 以上の \fBsudo\fP でなければ、
+利用できない。
+.TP  6n
+\fBsudoNotBefore\fP
+yyyymmddHHMMSSZ 形式のタイムスタンプ。
+この属性を含む sudoRole エントリがいつから有効になるかという、
 スタート日時を指定するのに使用する。
-複数の \f(CW\*(C`sudoNotBefore\*(C'\fR が存在する場合は、
-一番早い日時が採用される。
-タイムスタンプは協定世界時 (\s-1UTC\s0) によるものでなければならず、
-ローカル・タイムゾーンによるものではないことに注意してほしい。
-分や秒の部分は省略できるが、\s-1LDAP\s0 サーバによっては
-(\s-1RFC\s0 の規定とは逆に) 分や秒の指定を必須にしていることもある。
-.Sp
-属性 \f(CW\*(C`sudoNotBefore\*(C'\fR は、
-バージョン 1.7.5 以上の \fBsudo\fR でなければ、利用できない。
-また、\fI/etc/ldap.conf\fR の \fB\s-1SUDOERS_TIMED\s0\fR
+複数の sudoNotBefore が存在する場合は、一番早い日時が採用される。
+タイムスタンプは協定世界時 (UTC) によるものでなければならず、
+ローカル・タイムゾーンによるものではないことに注意していただきたい。
+分や秒の部分は省略できるが、LDAP サーバによっては (RFC の規定に反して)
+分や秒の指定を必須にしていることもある。
+.sp
+属性 sudoNotBefore は、バージョン 1.7.5 以上の \fBsudo\fP でなければ、
+利用できない。また、\fI/etc/ldap.conf\fP の \fBSUDOERS_TIMED\fP
 オプションで明示的に有効にする必要がある。
-.IP "\fBsudoNotAfter\fR" 4
-.IX Item "sudoNotAfter"
-\&\f(CW\*(C`yyyymmddHHMMSSZ\*(C'\fR 形式のタイムスタンプ。
-この属性を含む \f(CW\*(C`sudoRole\*(C'\fR エントリがもはや有効ではなくなる、
-失効日時を示している。
-複数の \f(CW\*(C`sudoNotAfter\*(C'\fR が存在する場合は、
+.TP  6n
+\fBsudoNotAfter\fP
+yyyymmddHHMMSSZ 形式のタイムスタンプ。
+この属性を含む sudoRole エントリがもはや有効ではなくなる、
+失効日時を示している。複数の sudoNotAfter が存在する場合は、
 一番最後の日時が採用される。
-タイムスタンプは協定世界時 (\s-1UTC\s0) によるものでなければならず、
-ローカル・タイムゾーンによるものではないことに注意してほしい。
-分や秒の部分は省略できるが、\s-1LDAP\s0 サーバによっては
-(\s-1RFC\s0 の規定とは逆に) 分や秒の指定を必須にしていることもある。
-.Sp
-属性  \f(CW\*(C`sudoNotAfter\*(C'\fR は、
-バージョン 1.7.5 以上の \fBsudo\fR でなければ、利用できない。
-また、\fI/etc/ldap.conf\fR の \fB\s-1SUDOERS_TIMED\s0\fR
+タイムスタンプは協定世界時 (UTC) によるものでなければならず、
+ローカル・タイムゾーンによるものではないことに注意していただきたい。
+分や秒の部分は省略できるが、LDAP サーバによっては (RFC の規定に反して)
+分や秒の指定を必須にしていることもある。
+.sp
+属性  sudoNotAfter は、バージョン 1.7.5 以上の \fBsudo\fP でなければ、
+利用できない。また、\fI/etc/ldap.conf\fP の \fBSUDOERS_TIMED\fP
 オプションで明示的に有効にする必要がある。
-.IP "\fBsudoOrder\fR" 4
-.IX Item "sudoOrder"
-\&\s-1LDAP\s0 から取り出される \f(CW\*(C`sudoRole\*(C'\fR エントリには、
-固有の順番というものがない。
-そこで、整数の値を取る \f(CW\*(C`sudoOrder\*(C'\fR 属性を使用して
-(浮動小数点値をサポートする \s-1LDAP\s0 サーバでは、浮動小数点値が使える)、
-マッチするエントリの順番付けを行う。
-そうすることによって、LDAP による sudo 設定のエントリが、
-sudoers ファイルの動作をより忠実に真似られるようになるのだ。
-sudoers ファイルではエントリの順番が結果に影響を及ぼす。
-\&\f(CW\*(C`sudoOrder\*(C'\fR 属性を使用すると、
-複数のエントリがマッチする場合は、一番大きな \f(CW\*(C`sudoOrder\*(C'\fR
-属性を持つエントリが選ばれることになる。この動作は、
-sudoers ファイルの「最後にマッチしたものが選ばれる」動作に相当するわけだ。
-\&\f(CW\*(C`sudoOrder\*(C'\fR 属性が指定されていない場合は、
-値が 0 であると見なされる。
-.Sp
-属性 \f(CW\*(C`sudoOrder\*(C'\fR は、
-バージョン 1.7.5 以上の \fBsudo\fR でなければ、利用できない。
+.TP  6n
+\fBsudoOrder\fP
+LDAP から取り出される sudoRole エントリには、固有の順番というものがない。
+そこで、整数の値を取る sudoOrder 属性を使用して (浮動小数点値をサポートする
+LDAP サーバでは、浮動小数点値も使える)、マッチするエントリの順番付けを行う。
+そうすることで、LDAP による sudoers 設定のエントリが、
+エントリの順番が結果に影響を及ぼす sudoers ファイルの動作を、
+より忠実に真似られるようになるわけだ。
+sudoOrder 属性を使用すると、複数のエントリがマッチする場合には、
+一番大きな sudoOrder 属性を持つエントリが選ばれることになる。この動作は、
+sudoers ファイルの「最後にマッチしたものが選ばれる」動作に相当するわけである。
+sudoOrder 属性が指定されていない場合は、値が 0 であると見なされる。
+.sp
+属性 sudoOrder は、バージョン 1.7.5 以上の \fBsudo\fP でなければ、
+利用できない。
 .PP
 上記の各属性は単一の値を持つべきだが、同じタイプの属性が複数回現れても構わない。
-\&\f(CW\*(C`sudoRole\*(C'\fR エントリは、\f(CW\*(C`sudoUser\*(C'\fR、 
-\&\f(CW\*(C`sudoHost\*(C'\fR、\f(CW\*(C`sudoCommand\*(C'\fR を、
+sudoRole エントリは、sudoUser、sudoHost、sudoCommand を、
 少なくともそれぞれ一個は含んでいなければならない。
 .PP
 次の例では、wheel グループのユーザに
-\&\fBsudo\fR 経由でいかなるホストでも任意のコマンドの実行を許可している。
-.PP
-.Vb 7
-\&    dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
-\&    objectClass: top
-\&    objectClass: sudoRole
-\&    cn: %wheel
-\&    sudoUser: %wheel
-\&    sudoHost: ALL
-\&    sudoCommand: ALL
-.Ve
-.SS "\s-1LDAP\s0 を使って sudo の設定を検索するときの詳細"
-.IX Subsection "Anatomy of LDAP sudoers lookup"
-\&\s-1LDAP\s0 を使ってユーザの sudo 設定を検索するとき、LDAP の問い合わせは
-\&\fBsudo\fR の実行ごとにたった二回か三回行われるだけである。一回目の問い合わせは、
-グローバル・オプションを解析するために行われる。二回目の問い合わせは、
-\&\fBsudo\fR を実行するユーザのユーザ名や、
+\fBsudo\fP 経由でいかなるホストでも任意のコマンドの実行を許可している。
+.nf
+.sp
+.RS 4n
+dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
+objectClass: top
+objectClass: sudoRole
+cn: %wheel
+sudoUser: %wheel
+sudoHost: ALL
+sudoCommand: ALL
+.RE
+.fi
+.SS "LDAP を使って sudoers セキュリティポリシーの設定を照合するときの詳細"
+LDAP を使って、あるユーザに関する sudoers セキュリティポリシーを照合するとき、
+LDAP の問い合わせは \fBsudo\fP の実行ごとにたった二回か三回行われるだけである。
+一回目の問い合わせは、グローバル・オプションを解析するために行われる。
+二回目の問い合わせは、\fBsudo\fP を実行するユーザのユーザ名や、
 所属グループに対応するエントリを見つけるためだ
-(特別なタグ \s-1ALL\s0 が何にでもマッチするのは、この場合も同様である)。
+(特別なタグ ALL が何にでもマッチするのは、この場合も同様である)。
 ユーザ名やグループに対応するエントリが得られなかった場合は、
-三回目の問い合わせが行われ、
-ユーザのネットグループを含んでいるすべてのエントリーを取得して、
-問題のユーザがそのどれかに属していないかチェックする。
+三回目の問い合わせが行われ、ユーザのネットグループや
+non\-Unix グループを含んでいるすべてのエントリーを取得して、
\95\8fé¡\8cã\81®ã\83¦ã\83¼ã\82¶ã\81\8cã\81\9dã\81®ã\81©ã\82\8cã\81\8bã\81«å±\9eã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\8bã\82\92ã\83\81ã\82§ã\83\83ã\82¯ã\81\99ã\82\8bã\80\82
 .PP
-\&\fI/etc/ldap.conf\fR の設定オプション
-\&\fB\s-1SUDOERS_TIMED\s0\fR を有功にして、
-日時制限があるエントリを使えるようにしている場合は、
-\&\s-1LDAP\s0 の問い合わせにサブフィルターによる選別が伴うことになる。
+\fI/etc/ldap.conf\fP の設定オプション \fBSUDOERS_TIMED\fP を有功にして、
+エントリの日時制限を使えるようにしている場合は、
+LDAP の問い合わせにサブフィルターによる選別が伴うことになる。
 そのサブフィルターが、日時制限が存在するエントリについては、
-その制限を満たしているエントリのみに、情報の取り出しを限定するのである。
-.SS "\s-1LDAP\s0 を使う場合と使わない場合の sudo 設定の相違点"
-.IX Subsection "Differences between LDAP and non-LDAP sudoers"
-LDAP を使用する場合、sudo の設定の処理方法に \fI/etc/sudoers\fR
-の場合とは微妙な違いがいくつかある。
-たぶん最大の違いは、\s-1RFC\s0 に書いてあるとおり、
-\&\s-1LDAP\s0 の順序づけは不定なので、
+その制限を満たしているエントリのみに、情報の検索を限定するのである。
+.PP
+\fBNETGROUP_BASE\fP 設定オプションが使用されている場合は
+(下記の 「ldap.conf の設定」を参照)、
+ユーザがどことどこのネットグループに所属しているかを調べるための問い合わせが、
+sudoers セキュリティポリシー設定の問い合わせの前に行われる。
+そうすることで、セキュリティポリシー設定の問い合わせに使う文字列に、
+ネットグループを Unix グループと同じように使うことが可能になるのだ。
+上で述べた三回目の問い合わせは、
+グループ・プロバイダー・プラグインも同時に設定されていないかぎり、行われない。
+ネットグループについての \fBsudo\fP による LDAP の問い合わせは、
+実際には次のように行われる。
+.TP  5n
+1.\&
+nisNetgroupTriple (ユーザ、ホスト、NIS ドメインを含む) を持ったすべての
+nisNetgroup レコードと照合を行う。この問い合わせでは、
+nisNetgroupTriple エントリーのホスト名が長い形式でも短い形式でも、
+あるいは、タプルにホスト名が指定されていなくても、マッチすることになる。
+問い合わせに NIS ドメインがセットされている場合にマッチするのは、
+そのドメインを含むか、あるいは、ドメインの指定がないエントリだけである。
+NIS ドメインがセットされていない場合は、ワイルドカードが使用され、
+どんなドメイン名にもマッチすることになるが、
+LDAP サーバの中には、使用している NIS スキーマが、
+nisNetgroupTriple に対するワイルドカードをサポートしていないものがあることに留意していただきたい。
+.TP  5n
+2.\&
+問い合わせを繰り返して行い、すでにマッチしたレコードを指す
+memberNisNetgroup エントリが、入れ子のように使われている
+nisNetgroup レコードがあれば、そうしたものを見つけ出す。
+.PP
+多数のネットグループを持つサイトでは、\fBNETGROUP_BASE\fP を使用すると、
+\fBsudo\fP の実行速度を大幅に向上させることができる。
+.SS "LDAP を使う場合と使わない場合の sudoers セキュリティポリシー設定の相違点"
+LDAP を使用した場合は、sudoers セキュリティポリシー設定の処理方法に
+\fI/etc/sudoers\fP の場合とは微妙な違いがいくつかある。たぶん最大の違いは、
+RFC に書いてあるとおり、LDAP の順序づけは不定なので、
 属性やエントリが何らかの決まった順序で返されることを期待できないことだろう。
 .PP
-それでも、個々のエントリに割り振る順番については、\f(CW\*(C`sudoOrder\*(C'\fR
-によって決めることができる。
-だが、ある特定のエントリ内での属性の順番を決める、確実な方法は存在しないのだ。
+それでも、個々のエントリに割り振られる順番については、sudoOrder
+によってコントロールすることができる。
+だが、ある特定のエントリ内での属性の順番については、
+それを確定する方法は存在しないのだ。
 もっとも、あるエントリーにコマンドに関して相反するルールがある場合は、
 否定する方が優先される。いわゆるパラノイア的動作である
-(それが一番明示的なマッチだとはかぎらないが)。
+(それが一番すっきりしたマッチだとはかぎらないが)。
 .PP
 例を挙げてみよう。
-.PP
-.Vb 5
-\&    # /etc/sudoers の場合:
-\&    # shell 以外のすべてのコマンドを許可する
-\&    johnny  ALL=(root) ALL,!/bin/sh
-\&    # 次の設定は、ALL が最後にマッチするので、常にすべてのコマンドを
-\&    # 許可することになる
-\&    puddles ALL=(root) !/bin/sh,ALL
-\&
-\&    # 上記の johnny に相当する LDAP のエントリ:
-\&    # shell 以外のすべてのコマンドを許可する
-\&    dn: cn=role1,ou=Sudoers,dc=my\-domain,dc=com
-\&    objectClass: sudoRole
-\&    objectClass: top
-\&    cn: role1
-\&    sudoUser: johnny
-\&    sudoHost: ALL
-\&    sudoCommand: ALL
-\&    sudoCommand: !/bin/sh
-\&
-\&    # 上記の puddles に相当する LDAP のエントリ:
-\&    # ALL が最後に指定されているが、LDAP のコードはよりパラノイア的な
-\&    # 設定になっているため、これもまた role1 と同じように動作する
-\&    # ことに注意してほしい
-\&    dn: cn=role2,ou=Sudoers,dc=my\-domain,dc=com
-\&    objectClass: sudoRole
-\&    objectClass: top
-\&    cn: role2
-\&    sudoUser: puddles
-\&    sudoHost: ALL
-\&    sudoCommand: !/bin/sh
-\&    sudoCommand: ALL
-.Ve
+.nf
+.sp
+.RS 4n
+# /etc/sudoers の場合:
+# shell 以外のすべてのコマンドを許可する
+johnny  ALL=(root) ALL,!/bin/sh
+# 次の設定は、ALL が最後にマッチするので、常にすべての
+# コマンドを許可することになる
+puddles ALL=(root) !/bin/sh,ALL
+
+# 上記の johnny に相当する LDAP のエントリ:
+# shell 以外のすべてのコマンドを許可する
+dn: cn=role1,ou=Sudoers,dc=my\-domain,dc=com
+objectClass: sudoRole
+objectClass: top
+cn: role1
+sudoUser: johnny
+sudoHost: ALL
+sudoCommand: ALL
+sudoCommand: !/bin/sh
+
+# 上記の puddles に相当する LDAP のエントリ:
+# ALL が最後に指定されているが、LDAP のコードでは、
+# よりパラノイア的な方を、指定された設定と見なすようになって
+# いるため、これもまた role1 と同じように動作することに
+# 注意していただきたい
+dn: cn=role2,ou=Sudoers,dc=my\-domain,dc=com
+objectClass: sudoRole
+objectClass: top
+cn: role2
+sudoUser: puddles
+sudoHost: ALL
+sudoCommand: !/bin/sh
+sudoCommand: ALL
+.RE
+.fi
 .PP
 もう一つの相違は、Host、User、Runas についての否定は、
 現在のところ無視されるということだ。
 たとえば、以下に挙げるような属性は期待どおりに動作しない。
-.PP
-.Vb 3
-\&    # joe 以外の全員とマッチしないどころか、
-\&    # 誰にもマッチしない
-\&    sudoUser: !joe
-\&
-\&    # joe 以外の全員とマッチしないどころか、
-\&    # joe を含む全員にマッチしてしまう
-\&    sudoUser: ALL
-\&    sudoUser: !joe
-\&
-\&    # web01 以外のすべてとマッチしないどころか、
-\&    # web01 を含むすべてのホストにマッチしてしまう
-\&    sudoHost: ALL
-\&    sudoHost: !web01
-.Ve
+.nf
+.sp
+.RS 4n
+# joe 以外の全員とマッチしないどころか、
+# 誰にもマッチしない
+sudoUser: !joe
+
+# joe 以外の全員とマッチしないどころか、
+# joe を含む全員にマッチしてしまう
+sudoUser: ALL
+sudoUser: !joe
+
+# web01 以外のすべてとマッチしないどころか、
+# web01 を含むすべてのホストにマッチしてしまう
+sudoHost: ALL
+sudoHost: !web01
+.RE
+.fi
 .SS "sudo 用のスキーマ"
-.IX Subsection "Sudoers Schema"
-\&\fBsudo\fR の \s-1LDAP\s0 サポートを利用するためには、
-お使いの \s-1LDAP\s0 サーバに 
-\&\fBsudo\fR 用のスキーマをインストールしなければならない。
-さらに、'sudoUser' 属性の索引も必ず作成する。
+\fBsudo\fP の LDAP サポートを利用するためには、お使いの LDAP サーバに
+\fBsudo\fP 用のスキーマをインストールしなければならない。
+そして、sudoUser 属性の索引を必ず作成しておく。
 .PP
-たぶん、\fBsudo\fR の配布物中に三種類のスキーマが入っていると思う。
-すなわち OpenLDAP サーバ用 (\fIschema.OpenLDAP\fR)、
-Netscape ディレクトリサーバの流れを汲むサーバ用 (\fIschema.iPlanet\fR)、
-Microsoft Active Directory 用 (\fIschema.ActiveDirectory\fR)
-のスキーマである。
+たぶん、\fBsudo\fP の配布物中には三種類のスキーマが入っていると思う。
+すなわち OpenLDAP サーバ用 (\fIschema.OpenLDAP\fP)、
+Netscape ディレクトリサーバの流れを汲むサーバ用 (\fIschema.iPlanet\fP)、
+Microsoft Active Directory 用 (\fIschema.ActiveDirectory\fP) のスキーマである。
 .PP
-OpenLDAP 用の形式にした \fBsudo\fR のスキーマは、
+OpenLDAP 用の形式にした \fBsudo\fP のスキーマは、
 「用例」セクションにも記載しておいた。
 .SS "ldap.conf の設定"
-.IX Subsection "Configuring ldap.conf"
-sudo は LDAP に関する設定を知るために \fI/etc/ldap.conf\fR を読み込む。
+sudo は LDAP に関する設定を知るために \fI/etc/ldap.conf\fP を読み込む。
 通例、このファイルは、
 LDAP に対応しているさまざまなクライアントの間で共有されている。
-それ故、設定の大部分は \fBsudo\fR 専用ではない。
-注意すべきは、\fBsudo\fR は \fI/etc/ldap.conf\fR を独自に解析しており、
-\&\fIldap.conf\fR\|(5) のマニュアルで説明されているものとは
+それ故、設定の大部分は \fBsudo\fP 専用ではない。
+注意すべきは、\fBsudo\fP は \fI/etc/ldap.conf\fP を独自に解析しており、
+ldap.conf(5) のマニュアルで説明されているものとは
 異なるオプションをサポートしていることがあるということだ。
+\fIldap.conf\fP のパスは、sudo.conf(5) ファイルでプラグインに対する引き数
+\fIldap_conf\fP を使用すれば、変更することができる
+(訳注: sudoers ポリシー・プラグインに対して指定できる引き数については、
+sudoers(5) のマニュアルの「sudoers ポリシー・プラグインを使うための
+sudo.conf の設定」セクションに説明がある)。
 .PP
-もうひとつ注意してほしいのは、OpenLDAP ライブラリを使っているシステムで、
-\&\fI/etc/openldap/ldap.conf\fR やユーザの \fI.ldaprc\fR 
+もうひとつ注意していただきたいのは、
+OpenLDAP ライブラリを使っているシステムでは、
+\fI/etc/openldap/ldap.conf\fP やユーザの \fI.ldaprc\fP
 ファイルで指定しているデフォルト値が使用されないことである。
 .PP
-すなわち、\fI/etc/ldap.conf\fR に明示的に記載され、かつ \fBsudo\fR
+すなわち、\fI/etc/ldap.conf\fP に明示的に記載され、かつ \fBsudo\fP
 でサポートされているオプションのみが使用される。
 設定オプションを以下に大文字で列挙するが、
 解析されるときは大文字小文字は区別されない。
-.IP "\fB\s-1URI\s0\fR ldap[s]://[hostname[:port]] ..." 4
-.IX Item "URI ldap[s]://[hostname[:port]] ..."
-接続する一個以上の \s-1LDAP\s0 サーバ の URI を、空白 (whitespace)
-で区切ったリストの形で指定する。プロトコルは \fBldap\fR と \fBldaps\fR
-のどちらでもよい。
-後者は \s-1TLS\s0 (\s-1SSL\s0) 暗号化に対応しているサーバの場合である。
-ポートを指定しないときのデフォルトは、
-\&\f(CW\*(C`ldap://\*(C'\fR では 389 番ポート、
-\&\f(CW\*(C`ldaps://\*(C'\fR では 636 番ポートである。
-\&\fIhostname\fR を一つも指定しないと、
-\&\fBsudo\fR は \fBlocalhost\fR に接続することになる。
-\&\fB\s-1URI\s0\fR の行が二行以上ある場合は、
-\&\fB\s-1URI\s0\fR の行に複数のエントリがあるときと同様に処理される。
-OpenSSL ライブラリを使用しているシステムのみが、\f(CW\*(C`ldap://\*(C'\fR
-と \f(CW\*(C`ldaps://\*(C'\fR 両方の URI を混ぜて使うことに対応している。
-たいていの商用 Unix では Netscape 由来のライブラリが使用されているが、
-そうしたライブラリはどちらか一方に対応することしかできない。
-.IP "\fB\s-1HOST\s0\fR name[:port] ..." 4
-.IX Item "HOST name[:port] ..."
-\&\fBURI\fR パラメータが指定されていない場合は、
-\&\fB\s-1HOST\s0\fR パラメータで指定する空白 (whitespace)
-で区切ったリストが、接続する \s-1LDAP\s0 サーバである。
-各ホストにはコロン (':') に続けて、ポート番号を書いてもよい。
-\fB\s-1HOST\s0\fR パラメータは非推奨であり、\fB\s-1URI\s0\fR
-で指定する方が望ましい。このパラメータがあるのは、後方互換のためである。
-.IP "\fB\s-1PORT\s0\fR port_number" 4
-.IX Item "PORT port_number"
-\fB\s-1URI\s0\fR パラメータが指定されず、\fB\s-1HOST\s0\fR
-パラメータでもポートが指定されていないときは、\fB\s-1PORT\s0\fR パラメータが
-\&\s-1LDAP\s0 サーバに接続するときのデフォルトのポートを指定する。
-\&\fB\s-1PORT\s0\fR パラメータが使用されていない場合、デフォルトのポートは
-\&\s-1LDAP\s0 では 389 番、\s-1LDAP\s0 over \s-1TLS\s0 (\s-1SSL\s0) では
-636 番である。\fB\s-1PORT\s0\fR パラメータは非推奨であり、
-\&\fB\s-1URI\s0\fR で指定する方が望ましい。
+.PP
+パウンド記号 ('#') を使用すれば、
+以下はコメントであると示すことができる。すなわち、
+コメントの印と、それに続くいかなるテキストも、行末に至るまで、
+無視されることになる。長い行は、行末にバックスラッシュ ('\e')
+を置けば、継続することができる。
+行頭の空白 (white space)は、継続記号を使用している場合でも、
+行頭から取り除かれることに注意していただきたい。
+.TP  6n
+\fBBIND_TIMELIMIT\fP \fIseconds\fP
+\fBBIND_TIMELIMIT\fP パラメータでは、
+LDAP サーバに接続しようとするときの待ち時間を秒数で指定する。
+\fBURI\fP や \fBHOST\fP が複数指定されている場合は、その時間だけ待ってから、
+リスト中の次のサーバに接続を試みることになる。
+.TP  6n
+\fBBINDDN\fP \fIDN\fP
+\fBBINDDN\fP パラメータでは、誰の名前で LDAP の操作を行うかを、
+識別名 (DN) を使って指定する。これが指定されていない場合、
+LDAP の操作は anonymous の名前で実行される。LDAP サーバは、
+たいていデフォルトで anonymous によるアクセスを許可しているものである。
+.TP  6n
+\fBBINDPW\fP \fIsecret\fP
+\fBBINDPW\fP パラメータでは、LDAP の操作を行うときに使用するパスワードを指定する。
+通常、このパラメータは、\fBBINDDN\fP パラメータと組み合わせて使用する。
+\fIsecret\fP は、プレーンテキストのパスワードでもよく、
+"base64:" という接頭辞付きの、base64 でエンコードした文字列でもよい。
+たとえば、次のようなものだ。
+.nf
+.sp
+.RS 10n
+BINDPW base64:dGVzdA==
+.RE
+.fi
+.RS 6n
+.sp
+プレーンテキストのパスワードを使用する場合、
+パスワードは引用符を付けない単なる文字列にするべきだ。
+プレーンテキストのパスワード中には、コメント文字 ('#')
+があってはならない。また、バックスラッシュ ('\e')
+による特殊文字のエスケープはサポートされていない。
+.RE
+.TP  6n
+\fBDEREF\fP \fInever/searching/finding/always\fP
+検索を行うときに、alias の参照展開をどうするかを指定する。
+このオプションについての詳しい説明は、ldap.conf(5) のマニュアルにある。
+.TP  6n
+\fBHOST\fP \fIname[:port] ...\fP
+\fBURI\fP パラメータ (下記参照) が指定されていない場合は、
+\fBHOST\fP パラメータで指定する空白 (white space)
+で区切ったリストが、接続する LDAP サーバになる。
+各ホストにはコロン (':\&') に続けて、ポート番号を書いてもよい。
+\fBHOST\fP パラメータは非推奨であり、\fBURI\fP で指定する方が望ましい。
 このパラメータがあるのは、後方互換のためである。
-.IP "\fB\s-1BIND_TIMELIMIT\s0\fR seconds" 4
-.IX Item "BIND_TIMELIMIT seconds"
-接続しようとするときの待ち時間を秒数で指定する。\fB\s-1URI\s0\fR や
-\&\fB\s-1HOST\s0\fR が複数指定されている場合は、その時間だけ待ってから、
-リスト中の次のサーバに接続を試みることを意味する。
-.IP "\fB\s-1NETWORK_TIMEOUT\s0\fR seconds" 4
-.IX Item "NETWORK_TIMEOUT seconds"
-\&\fB\s-1BIND_TIMELIMIT\s0\fR の別名。OpenLDAP との互換のためにある。
-.IP "\fB\s-1TIMELIMIT\s0\fR seconds" 4
-.IX Item "TIMELIMIT seconds"
-\&\fB\s-1TIMELIMIT\s0\fR パラメータは、
-\&\s-1LDAP\s0 参照に対して応答が返ってくるまでの待ち時間を秒数で指定する。
-.IP "\fB\s-1TIMEOUT\s0\fR seconds" 4
-.IX Item "TIMEOUT seconds"
-\&\fB\s-1TIMEOUT\s0\fR パラメータは、
-様々な \s-1LDAP\s0 API から応答が返ってくるときの待ち時間を秒数で指定する。
-.IP "\fB\s-1SUDOERS_BASE\s0\fR base" 4
-.IX Item "SUDOERS_BASE base"
-\&\fBsudo\fR が \s-1LDAP\s0 参照を行うときに使用するベース \s-1DN\s0
-を指定する。ドメインが \f(CW\*(C`example.com\*(C'\fR ならば、
-普通 \f(CW\*(C`ou=SUDOers,dc=example,dc=com\*(C'\fR という形になる。
-\&\fB\s-1SUDOERS_BASE\s0\fR を複数回指定してもよい。その場合は、
-指定された順番で参照されることになる。
-.IP "\fB\s-1SUDOERS_SEARCH_FILTER\s0\fR ldap_filter" 4
-.IX Item "SUDOERS_SEARCH_FILTER ldap_filter"
-\&\fBsudo\fR が \s-1LDAP\s0 参照を行うとき、どんな情報を返すかを限定する
-\&\s-1LDAP\s0 のフィルター。
-普通これは、\f(CW\*(C`attribute=value\*(C'\fR とか
-\&\f(CW\*(C`(&(attribute=value)(attribute2=value2))\*(C'\fR という形を取る。
-.IP "\fB\s-1SUDOERS_TIMED\s0\fR on/true/yes/off/false/no" 4
-.IX Item "SUDOERS_TIMED on/true/yes/off/false/no"
-属性 \f(CW\*(C`sudoNotBefore\*(C'\fR や \f(CW\*(C`sudoNotAfter\*(C'\fR
-を評価するか、しないかを指定する。
-この二つの属性によって日時制限のある sudo 設定のエントリを実現している。
-.IP "\fB\s-1SUDOERS_DEBUG\s0\fR debug_level" 4
-.IX Item "SUDOERS_DEBUG debug_level"
-\&\fBsudo\fR が \s-1LDAP\s0 参照をするときのデバッグレベルを決める。
+.TP  6n
+\fBKRB5_CCNAME\fP \fIfile name\fP
+リモート・サーバに対して認証をするときに使用する Kerberos 5
+資格証明キャッシュのパス。このオプションは、SASL 認証 (下記参照)
+を使用するときしか意味を持たない。
+.TP  6n
+\fBLDAP_VERSION\fP \fInumber\fP
+サーバに接続するときに使用する LDAP プロトコルのバージョン。
+デフォルトの値は、プロトコルバージョン 3 である。
+.TP  6n
+\fBNETGROUP_BASE\fP \fIbase\fP
+LDAP でネットグループの問い合わせを行うときに使用するベース DN を指定する。
+ドメインが example.com ならば、たいてい ou=netgroup,dc=example,dc=com
+という形になる。\fBNETGROUP_BASE\fP を複数回指定してもよい。
+その場合は、指定された順番で問い合わせが行われることになる。
+.sp
+このオプションを使用すると、
+LDAP 経由で直接ユーザのネットグループを問い合わせることができる。
+そうする方が、sudoRole オブジェクトのうちで
+\&'+' という接頭辞を持つ sudoUser を含んでいるものをすべて取得するよりも、
+たいていの場合動作が高速になる。LDAP サーバによっては、
+nisNetgroup オブジェクトをその nisNetgroupTriple メンバによって検索できるようにするためには、
+使用している NIS スキーマに変更を加える必要があるものも存在する。
+OpenLDAP の \fBslapd\fP の場合は、
+nisNetgroupTriple アトリビュートに以下の変更を加えなければならない。
+.nf
+.sp
+.RS 10n
+attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
+    DESC 'Netgroup triple'
+    EQUALITY caseIgnoreIA5Match
+    SUBSTR caseIgnoreIA5SubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+.RE
+.fi
+.TP  6n
+\fBNETGROUP_SEARCH_FILTER\fP \fIldap_filter\fP
+\fBsudo\fP が LDAP でネットグループの問い合わせを行うとき、
+どんな情報を返すかを限定する LDAP のフィルター。通常 \fIldap_filter\fP は、
+attribute=value とか (&(attribute=value)(attribute2=value2))
+という形を取る。デフォルトの検索フィルターは、
+objectClass=nisNetgroupである。\fIldap_filter\fP の指定を省略すると、
+検索フィルターが全く使われないことになる。このオプションは、
+LDAP で直接ネットグループの問い合わせを行うときしか効果を持たない。
+.TP  6n
+\fBNETWORK_TIMEOUT\fP \fIseconds\fP
+\fBBIND_TIMELIMIT\fP の別名。OpenLDAP との互換のためにある。
+.TP  6n
+\fBPORT\fP \fIport_number\fP
+\fBURI\fP パラメータが指定されず、\fBHOST\fP
+パラメータでもポートが指定されていないときは、\fBPORT\fP パラメータが
+LDAP サーバに接続するときのデフォルトのポートを示すことになる。
+\fBPORT\fP パラメータが使用されていない場合、デフォルトのポートは
+LDAP では 389 番、LDAP over TLS (SSL) では 636 番である。
+\fBPORT\fP パラメータは非推奨であり、\fBURI\fP で指定する方が望ましい。
+このパラメータは後方互換のためにのみ存在している。
+.TP  6n
+\fBROOTBINDDN\fP \fIDN\fP
+\fBROOTBINDDN\fP パラメータでは、
+sudoers セキュリティポリシー設定の問い合わせのような、
+特権的な LDAP 操作をするとき、誰の名前で行うかを識別名 (DN)
+を使って指定する。その名前に対応するパスワードは、
+sudo.conf(5) の中でプラグインに対する引き数 \fIldap_secret\fP
+によってパスを指定されたファイルに書き込んでおくべきだ。
+このパスのデフォルトは \fI/etc/ldap.secret\fP である
+(訳注: \fBsudoers\fP プラグインに対する引き数 \fIldap_secret\fP
+については、sudoers(5) のマニュアルに記述がある)。
+このパラメータが設定されていない場合は、
+\fBBINDDN\fP で指定した名前があるならば、それが使用される。
+.TP  6n
+\fBROOTUSE_SASL\fP \fIon/true/yes/off/false/no\fP
+\fBROOTUSE_SASL\fP を有効にすると、
+\fBsudo\fP のような特権的なプロセスから LDAP サーバに接続するときに
+SASL 認証が可能になる。
+.TP  6n
+\fBSASL_AUTH_ID\fP \fIidentity\fP
+LDAP サーバに接続するときに使用する SASL ユーザ名。
+デフォルトでは、\fBsudo\fP は anonymous 接続を使用する。
+このオプションは、SASL 認証を使用するときしか意味を持たない。
+.TP  6n
+\fBSASL_SECPROPS\fP \fInone/properties\fP
+SASL セキュリティ・プロパティを指定する。プロパティなしならば、
+\fInone\fP である。詳細については、
+SASL プログラマーズ・マニュアルを参照すること。
+このオプションは、SASL 認証を使用するときしか意味を持たない。
+.TP  6n
+\fBSSL\fP \fIon/true/yes/off/false/no\fP
+\fBSSL\fP パラメータが on, true, yes になっていると、
+LDAP サーバと通信する際に、常に TLS (SSL) の暗号化を使用することになる。
+普通、そのためには、636 番ポート (ldaps) でサーバに接続していなければならない。
+.TP  6n
+\fBSSL\fP \fIstart_tls\fP
+\fBSSL\fP パラメータを start_tls  に設定すると、LDAP サーバへの接続を平文で開始し、
+バインド操作のために認証情報を送信する直前に、TLS の暗号化を始めることになる。
+これには、暗号化された通信のために専用のポートを必要としないという長所がある。
+このパラメータをサポートしているのは、
+OpenLDAP サーバや Tivoli ディレクトリ・サーバのような
+start_tls 拡張に対応している LDAP サーバのみである。
+.TP  6n
+\fBSUDOERS_BASE\fP \fIbase\fP
+\fBsudo\fP が LDAP の問い合わせを行うときに使用するベース DN を指定する。
+ドメインが example.com ならば、普通 ou=SUDOers,dc=example,dc=com
+という形になる。\fBSUDOERS_BASE\fP を複数回指定してもよい。
+その場合は、指定された順番で問い合わせが行われることになる。
+.TP  6n
+\fBSUDOERS_DEBUG\fP \fIdebug_level\fP
+\fBsudo\fP が LDAP の問い合わせをするときのデバッグレベルを決める。
 デバック情報の出力先は標準エラーである。値を 1 にすると、
 多からず少なからずほどほどのデバック情報が表示される。
 値を 2 にすると、マッチの結果そのものも出力される。
 実用環境では、このパラメータを設定するべきではない。
 ユーザが余計な情報に混乱しかねないからだ。
-.IP "\fB\s-1BINDDN\s0\fR \s-1DN\s0" 4
-.IX Item "BINDDN DN"
-\&\fB\s-1BINDDN\s0\fR パラメータは、誰の名前で \s-1LDAP\s0 の操作を行うかを、
-識別名 (\s-1DN\s0) を使って指定する。これが指定されていない場合、
-\&\s-1LDAP\s0 の操作は anonymous の名前で実行される。\s-1LDAP\s0 サーバは、
-たいていデフォルトで anonymous によるアクセスを許可しているものである。
-.IP "\fB\s-1BINDPW\s0\fR secret" 4
-.IX Item "BINDPW secret"
-\&\fB\s-1BINDPW\s0\fR パラメータは、
-\&\s-1LDAP\s0 の操作を行うときに使用するパスワードを指定する。
-通例、このパラメータは、\fB\s-1BINDDN\s0\fR パラメータと組み合わせて使用する。
-.IP "\fB\s-1ROOTBINDDN\s0\fR \s-1DN\s0" 4
-.IX Item "ROOTBINDDN DN"
-\&\fB\s-1ROOTBINDDN\s0\fR パラメータは、sudo 設定の参照のような、
-特権的な \s-1LDAP\s0 操作をするとき、誰の名前で行うかを識別名 (\s-1DN\s0)
-を使って指定する。その名前に対応するパスワードは \fI/etc/ldap.secret\fR
-に書き込んでおくべきだ。このパラメータが設定されていない場合は、
-\&\fB\s-1BINDDN\s0\fR で指定した名前があるならば、それが使用される。
-.IP "\fB\s-1LDAP_VERSION\s0\fR number" 4
-.IX Item "LDAP_VERSION number"
-サーバに接続するときに使用する \s-1LDAP\s0 プロトコルのバージョン。
-デフォルトの値は、プロトコルバージョン 3 である。
-.IP "\fB\s-1SSL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "SSL on/true/yes/off/false/no"
-\&\fB\s-1SSL\s0\fR パラメータが
-\&\f(CW\*(C`on\*(C'\fR, \f(CW\*(C`true\*(C'\fR, \f(CW\*(C`yes\*(C'\fR
-になっていると、\s-1LDAP\s0 サーバと通信する際に、常に
-\&\s-1TLS\s0 (\s-1SSL\s0) の暗号化を使用することになる。
-通例、それは 636 番ポート (ldaps) を通してサーバに接続することである。
-.IP "\fB\s-1SSL\s0\fR start_tls" 4
-.IX Item "SSL start_tls"
-\&\fB\s-1SSL\s0\fR パラメータを \f(CW\*(C`start_tls\*(C'\fR に設定すると、
-\&\s-1LDAP\s0 サーバへの接続を平文で開始し、
-バインド操作のために認証情報を送信する直前に、
-\&\s-1TLS\s0 の暗号化を始めることになる。
-これには、暗号化された通信のために専用のポートを必要としないという長所がある。
-このパラメータをサポートしているのは、
-OpenLDAP サーバのような \f(CW\*(C`start_tls\*(C'\fR 拡張に対応している
-\&\s-1LDAP\s0 サーバのみである。
-.IP "\fB\s-1TLS_CHECKPEER\s0\fR on/true/yes/off/false/no" 4
-.IX Item "TLS_CHECKPEER on/true/yes/off/false/no"
-\&\fB\s-1TLS_CHECKPEER\s0\fR が有効になっていると、
-\&\s-1LDAP\s0 サーバの \s-1TLS\s0 証明書が正当かどうかチェックが行われる。
-\&\s-1LDAP\s0 サーバの証明書が正当であることを確認できない場合 (たいていは、
-署名している認証局が未知 (unknown) であることが理由だ)、
-\&\fBsudo\fR はそのサーバに接続することができない。
-\&\fB\s-1TLS_CHECKPEER\s0\fR が無効になっている場合は、チェックが行われない。
-気をつけてほしいが、このチェックをやらないことにすると、
-サーバーの身元確認を行わないので、中間者攻撃の可能性が生じる。
-可能ならば、認証局の証明書は、その正当性をチェックできるように、
-手元のマシンにインストールしておくべきである。
-.IP "\fB\s-1TLS_CACERT\s0\fR file name" 4
-.IX Item "TLS_CACERT file name"
-\&\fB\s-1TLS_CACERTFILE\s0\fR の別名。OpenLDAP との互換のためにある。
-.IP "\fB\s-1TLS_CACERTFILE\s0\fR file name" 4
-.IX Item "TLS_CACERTFILE file name"
+.sp
+\fBSUDOERS_DEBUG\fP パラメータは非推奨であり、
+将来のリリースでは廃止されることになる。今では同じ情報が、
+\fBsudo\fP のデバッグ用フレームワークを通してログに記録されるようになっている。
+\fIdebug_level\fP の値に 1 や 2 を指定する代わりに、サブシステムとして
+"ldap" を使用し、重大度 (priority) にそれぞれ \fIdiag\fP や \fIinfo\fP
+を指定すればよいのだ。
+\fBsudo\fP のデバッグを設定する方法について詳細を知りたければ、
+sudo.conf(5) のマニュアルをご覧になるとよい
+(訳注: sudoers(5) のマニュアルの「デバッギング」セクションも参照)。
+.TP  6n
+\fBSUDOERS_SEARCH_FILTER\fP \fIldap_filter\fP
+\fBsudo\fP が LDAP の問い合わせを行うとき、
+どんな情報を返すかを限定する LDAP のフィルター。通常 \fIldap_filter\fP は、
+attribute=value とか (&(attribute=value)(attribute2=value2))
+という形を取る。デフォルトの検索フィルターは、objectClass=sudoRole である。
+\fIldap_filter\fP の指定を省略すると、検索フィルターが全く使われないことになる。
+.TP  6n
+\fBSUDOERS_TIMED\fP \fIon/true/yes/off/false/no\fP
+属性 sudoNotBefore や sudoNotAfter を評価するか、しないかを指定する。
+この二つの属性によって日時制限のある sudoers
+セキュリティポリシー設定のエントリを実現している。
+.TP  6n
+\fBTIMELIMIT\fP \fIseconds\fP
+\fBTIMELIMIT\fP パラメータでは、
+LDAP の問い合わせに対して応答が返ってくるまでの待ち時間を秒数で指定する。
+.TP  6n
+\fBTIMEOUT\fP \fIseconds\fP
+\fBTIMEOUT\fP パラメータでは、
+様々な LDAP API から応答が返ってくるまでの待ち時間を秒数で指定する。
+.TP  6n
+\fBTLS_CACERT\fP \fIfile name\fP
+\fBTLS_CACERTFILE\fP の別名。OpenLDAP との互換のためにある。
+.TP  6n
+\fBTLS_CACERTFILE\fP \fIfile name\fP
 認証局の証明書を一つにまとめたファイルのパス。たとえば、
-\&\fI/etc/ssl/ca\-bundle.pem\fR といったファイルであり、
-正当なものだとクライアントが認識している、すべての認証局の証明書がそこに入っている。
+\fI/etc/ssl/ca\-bundle.pem\fP といったファイルであり、
+正当なものだとクライアントが認識している、
+すべての認証局の証明書がそこに入っている。
 このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-Netscape 由来の \s-1LDAP\s0 ライブラリは、認証局とクライアント、
+Netscape 由来の LDAP ライブラリは、認証局とクライアント、
 両方の証明書に対して、同一の証明書データベースを使用する
-(\fB\s-1TLS_CERT\s0\fR を参照)。
-.IP "\fB\s-1TLS_CACERTDIR\s0\fR directory" 4
-.IX Item "TLS_CACERTDIR directory"
-\&\fB\s-1TLS_CACERTFILE\s0\fR に似ているが、ファイルではなく、たとえば
-\&\fI/etc/ssl/certs\fR といったディレクトリであり、認証局の証明書が
-1 認証局 1 ファイルの形でそこに入っている。\fB\s-1TLS_CACERTDIR\s0\fR
-で指定したディレクトリは、\fB\s-1TLS_CACERTFILE\s0\fR の後でチェックされる。
-このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-.IP "\fB\s-1TLS_CERT\s0\fR file name" 4
-.IX Item "TLS_CERT file name"
+(\fBTLS_CERT\fP を参照)。
+.TP  6n
+\fBTLS_CACERTDIR\fP \fIdirectory\fP
+\fBTLS_CACERTFILE\fP に似ているが、ファイルではなく、たとえば
+\fI/etc/ssl/certs\fP といったディレクトリであり、
+認証局の証明書が 1 認証局 1 ファイルの形でそこに入っている。
+\fBTLS_CACERTDIR\fP で指定したディレクトリは、\fBTLS_CACERTFILE\fP
+の後でチェックされる。このオプションをサポートしているのは、
+OpenLDAP ライブラリだけである。
+.TP  6n
+\fBTLS_CERT\fP \fIfile name\fP
 クライアントの証明書が入っているファイルのパス。この証明書は、
-\&\s-1LDAP\s0 サーバに対するクライアントの認証に使用できる。
-証明書のタイプは、利用する \s-1LDAP\s0 ライブラリによって異なっている。
-.Sp
+LDAP サーバに対するクライアントの認証に使用できる。
+証明書のタイプは、利用する LDAP ライブラリによって異なっている。
+.PP
+.RS 6n
+.PD 0
+.TP  6n
 OpenLDAP:
-    \f(CW\*(C`tls_cert /etc/ssl/client_cert.pem\*(C'\fR
-.Sp
+tls_cert /etc/ssl/client_cert.pem
+.PD
+.TP  6n
 Netscape 由来:
-    \f(CW\*(C`tls_cert /var/ldap/cert7.db\*(C'\fR
-.Sp
-Netscape 由来のライブラリを使う場合は、このファイルに認証局の証明書も入れることができる。
-.IP "\fB\s-1TLS_KEY\s0\fR file name" 4
-.IX Item "TLS_KEY file name"
-\&\fB\s-1TLS_CERT\s0\fR で指定した証明書に対応する、
-秘密鍵が入っているファイルのパス。
+tls_cert /var/ldap/cert7.db
+.TP  6n
+Tivoli ディレクトリ・サーバ:
+使用しない。\fBTLS_KEY\fP で指定するキー・データベースに、
+キーと証明書の両方が入っている。
+.sp
+Netscape 由来のライブラリを使う場合は、
+このファイルに認証局の証明書も入れることができる。
+.PD 0
+.PP
+.RE
+.PD
+.TP  6n
+\fBTLS_CHECKPEER\fP \fIon/true/yes/off/false/no\fP
+\fBTLS_CHECKPEER\fP が有効になっていると、
+LDAP サーバの TLS 証明書が正当かどうかチェックが行われる。
+LDAP サーバの証明書が正当であることを確認できない場合
+(たいていは、署名している認証局が未知 (unknown) であることが理由だ)、
+\fBsudo\fP はそのサーバに接続することができない。
+\fBTLS_CHECKPEER\fP が無効になっている場合は、チェックが行われない。
+このチェックをやらないことにすると、サーバーの身元の正真性を確認できないので、
+中間者攻撃の可能性が生じることに気をつけていただきたい。
+可能ならば、認証局の証明書は、その正当性のチェックができるように、
+手元のマシンにインストールしておくべきである。このオプションは、
+Tivoli ディレクトリ・サーバの LDAP ライブラリではサポートされていない。
+.TP  6n
+\fBTLS_KEY\fP \fIfile name\fP
+\fBTLS_CERT\fP で指定した証明書に対応する、秘密鍵が入っているファイルのパス。
 この秘密鍵はパスワードでプロテクトされていてはならない。
-鍵のタイプは利用する \s-1LDAP\s0 ライブラリによって異なっている。
-.Sp
+鍵のタイプは利用する LDAP ライブラリによって異なっている。
+.PP
+.RS 6n
+.PD 0
+.TP  6n
 OpenLDAP:
-    \f(CW\*(C`tls_key /etc/ssl/client_key.pem\*(C'\fR
-.Sp
-.Netscape 由来:
-    \f(CW\*(C`tls_key /var/ldap/key3.db\*(C'\fR
-.IP "\fB\s-1TLS_RANDFILE\s0\fR file name" 4
-.IX Item "TLS_RANDFILE file name"
-\&\fB\s-1TLS_RANDFILE\s0\fR は、random デバイスを持っていないシステムのために
+tls_key /etc/ssl/client_key.pem
+.PD
+.TP  6n
+Netscape 由来:
+tls_key /var/ldap/key3.db
+.TP  6n
+Tivoli ディレクトリ・サーバ:
+tls_key /usr/ldap/ldapkey.kdb
+.PD 0
+.PP
+Tivoli LDAP ライブラリを使用する場合は、
+このファイルに認証局やクライアントの証明書も入れることができる。
+また、暗号化することもできる。
+.RE
+.PD
+.TP  6n
+\fBTLS_CIPHERS\fP \fIcipher list\fP
+\fBTLS_CIPHERS\fP パラメータを使用すると、
+管理者が TLS (SSL) 接続に使用可能な暗号アルゴリズムを限定することができる。
+有効な暗号のリストについては、
+OpenLDAP や Tivoli ディレクトリ・サーバのマニュアルを参照していただきたい。
+Netscape 由来のライブラリは、このオプションをサポートしていない。
+.TP  6n
+\fBTLS_KEYPW\fP \fIsecret\fP
+\fBTLS_KEYPW\fP では、
+Tivoli ディレクトリ・サーバの LDAP ライブラリを使っているクライアントで、
+キー・データベースを復号するのに使用するパスワードを指定する。
+\fIsecret\fP は、プレーンテキストのパスワードでもよく、
+"base64:" という接頭辞付きの、base64 でエンコードした文字列でもよい。
+たとえば、次のようなものだ。
+.nf
+.sp
+.RS 10n
+TLS_KEYPW base64:dGVzdA==
+.RE
+.fi
+.RS 6n
+.sp
+プレーンテキストのパスワードを使用する場合、
+パスワードは引用符を付けない単なる文字列にするべきだ。
+プレーンテキストのパスワード中には、コメント文字 ('#')
+があってはならない。また、バックスラッシュ ('\e')
+による特殊文字のエスケープはサポートされていない。
+このオプションを使用するのならば、
+\fI/etc/ldap.conf\fP を誰にでも読める状態にしてはいけない。
+さもないと、パスワードを公開してしまうことになる。
+パスワードの公開を避ける別の方法としては、
+\fIstash file\fP を使用することも可能だ。そうすれば、
+パスワードを暗号化した形で格納することができる (下記参照)。
+.sp
+\fBTLS_KEYPW\fP が指定されていない場合、
+\fIstash file\fP が存在すれば、それを使用することになる。\fIstash file\fP は、
+\fBTLS_KEY\fP で指定されるファイルと同じパスを持たなければならないが、
+拡張子には .kdb の代わりに、.sth を使わなければならない。
+たとえば、ldapkey.sth といった具合だ。
+Tivoli ディレクトリ・サーバ出荷時のデフォルトの ldapkey.kdb は、
+ssl_password というパスワードを使って暗号化されている。
+\fIgsk8capicmd\fP というユーティリティを使用すれば、
+キー・データベースの管理と、\fIstash file\fP の作成を行うことができる。
+このオプションをサポートしているのは、Tivoli LDAP ライブラリだけである。
+.RE
+.TP  6n
+\fBTLS_RANDFILE\fP \fIfile name\fP
+\fBTLS_RANDFILE\fP では、random デバイスを持っていないシステムのために
 エントロピー・ソースのパスを指定する。
-これは通例、\fIprngd\fR や \fIegd\fR と組み合わせて使用するものである。
-このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-.IP "\fB\s-1TLS_CIPHERS\s0\fR cipher list" 4
-.IX Item "TLS_CIPHERS cipher list"
-管理者は \fB\s-1TLS_CIPHERS\s0\fR パラメータによって、\s-1TLS\s0
-(\s-1SSL\s0) 接続に使用可能な暗号アルゴリズムを限定することができる。
-有効な暗号のリストについては OpenSSL のマニュアルを参照してほしい。
+これは通例、\fIprngd\fP や \fIegd\fP と組み合わせて使用するものだ。
 このオプションをサポートしているのは、OpenLDAP ライブラリだけである。
-.IP "\fB\s-1USE_SASL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "USE_SASL on/true/yes/off/false/no"
-\&\s-1LDAP\s0 サーバが \s-1SASL\s0 認証をサポートしているなら、
-\&\fB\s-1USE_SASL\s0\fR を有効にすること。
-.IP "\fB\s-1SASL_AUTH_ID\s0\fR identity" 4
-.IX Item "SASL_AUTH_ID identity"
-\&\s-1LDAP\s0 サーバに接続するときに使用する \s-1SASL\s0 ユーザ名。
-デフォルトでは、\fBsudo\fR は anonymous 接続を使用する。
-.IP "\fB\s-1ROOTUSE_SASL\s0\fR on/true/yes/off/false/no" 4
-.IX Item "ROOTUSE_SASL on/true/yes/off/false/no"
-\&\fB\s-1ROOTUSE_SASL\s0\fR を有効にすると、
-\&\fBsudo\fR のような特権的なプロセスから \s-1LDAP\s0 サーバに接続するときに
-\&\s-1SASL\s0 認証が可能になる。
-.IP "\fB\s-1ROOTSASL_AUTH_ID\s0\fR identity" 4
-.IX Item "ROOTSASL_AUTH_ID identity"
-\&\fB\s-1ROOTUSE_SASL\s0\fR が有効なとき使用する \s-1SASL\s0 ユーザ名。
-.IP "\fB\s-1SASL_SECPROPS\s0\fR none/properties" 4
-.IX Item "SASL_SECPROPS none/properties"
-\&\s-1SASL\s0 セキュリティ・プロパティを指定する。プロパティなしならば、
-\&\fInone\fR である。
-詳細については、\s-1SASL\s0 プログラマーズ・マニュアルを参照すること。
-.IP "\fB\s-1KRB5_CCNAME\s0\fR file name" 4
-.IX Item "KRB5_CCNAME file name"
-リモート・サーバに対して認証をするときに使用する Kerberos 5
-資格証明キャッシュのパス。
-.IP "\fB\s-1DEREF\s0\fR never/searching/finding/always" 4
-.IX Item "DEREF never/searching/finding/always"
-検索を行うときに、alias の参照をどうするかを指定する。
-このオプションについての詳しい説明は、\fIldap.conf\fR\|(5) のマニュアルにある。
+.TP  6n
+\fBURI\fP \fIldap[s]://[hostname[:port]] ...\fP
+接続する一個以上の LDAP サーバ の URI を、空白 (white space)
+で区切ったリストの形で指定する。プロトコルは \fIldap\fP と \fIldaps\fP
+のどちらでもよい。後者は TLS (SSL) 暗号化に対応しているサーバの場合である。
+ポートを指定しないときのデフォルトは、
+ldap:// では 389 番ポート、ldaps:// では 636 番ポートである。
+\fIhostname\fP を一つも指定しないと、
+\fBsudo\fP は \fIlocalhost\fP に接続することになる。\fBURI\fP の行が二行以上ある場合は、
+\fBURI\fP の行に複数のエントリがあるときと同様に処理される。
+OpenSSL ライブラリを使用しているシステムのみが、
+ldap:// と ldaps:// 両方の URI を混ぜて使うことに対応している。
+たいていの商用 Unix では Netscape 由来のライブラリや
+Tivoli LDAP ライブラリが使用されているが、
+そうしたライブラリはどちらか一方に対応することしかできない。
+.TP  6n
+\fBUSE_SASL\fP \fIon/true/yes/off/false/no\fP
+LDAP サーバが SASL 認証をサポートしているとき、
+\fBUSE_SASL\fP を有効にする。
+.TP  6n
+\fBROOTSASL_AUTH_ID\fP \fIidentity\fP
+\fBROOTUSE_SASL\fP が有効なとき使用する SASL ユーザ名。
 .PP
-「用例」セクションにある \f(CW\*(C`ldap.conf\*(C'\fR
-のくだりも参照してほしい。
+「用例」セクションにある \fIldap.conf\fP のくだりも参照していただきたい。
 .SS "nsswitch.conf の設定"
-.IX Subsection "Configuring nsswitch.conf"
-ビルド時に無効にしないかぎり、\fBsudo\fR はネームサービス・スイッチ・ファイル
-\&\fI/etc/nsswitch.conf\fR を調べて、sudo の設定を参照する順番を決める。
-すなわち、\fI/etc/nsswitch.conf\fR で
-\&\f(CW\*(C`sudoers\*(C'\fR: という文字列に始まる行を探し、
+ビルド時に無効にしないかぎり、\fBsudo\fP はネームサービス・スイッチ・ファイル
+\fI/etc/nsswitch.conf\fP を調べて、
+sudoers セキュリティポリシーの設定を参照する順番を決める。
+すなわち、\fI/etc/nsswitch.conf\fP で sudoers: という文字列に始まる行を探し、
 その行によって参照順を決定するのである。
-æ°\97ã\82\92ã\81¤ã\81\91ã\81¦ã\81»ã\81\97ã\81\84ã\81®ã\81¯ã\80\81\fBsudo\fR は参照中、
+æ°\97ã\82\92ã\81¤ã\81\91ã\81¦ã\81\84ã\81\9fã\81 ã\81\8dã\81\9fã\81\84ã\81®ã\81¯ã\80\81\fBsudo\fP は参照中、
 マッチする項目に一度出会ったからと言って、そこで参照を終わりにしないことだ。
 後でマッチしたものが前にマッチしたものよりも優先されるのである。
-.PP
 以下の参照元が有効である。
 .PP
-.Vb 2
-\&    files       \fI/etc/sudoers\fR から sudo の設定を読み込む
-\&    ldap        LDAP から sudo の設定を読み込む
-.Ve
+.RS 4n
+.PD 0
+.TP  10n
+files
+\fI/etc/sudoers\fP から sudoers セキュリティポリシーの設定を読み込む
+.TP  10n
+ldap
+LDAP から sudoers セキュリティポリシーの設定を読み込む
+.RE
+.PD
 .PP
-なお、\f(CW\*(C`[NOTFOUND=return]\*(C'\fR の記述があると、
+なお、[NOTFOUND=return] の記述があると、
 先行する参照元にユーザが見つからなかった場合、参照を中断することになる。
 .PP
-最初に \s-1LDAP\s0 を参照し、その後で (もし存在するならば)
-ローカルマシン上の sudoers ファイルを調べるには、次のように指定する。
-.PP
-.Vb 1
-\&    sudoers: ldap files
-.Ve
+最初に LDAP を参照し、その後で (もし存在するならば)
+ローカルマシン上の \fIsudoers\fP ファイルを調べるには、次のように指定する。
+.nf
+.sp
+.RS 4n
+sudoers: ldap files
+.RE
+.fi
 .PP
-ローカルマシン上の \fIsudoers\fR ファイルをまったく無視するには、
+ローカルマシン上の \fIsudoers\fP ファイルをまったく無視するには、
 次のようにする。
+.nf
+.sp
+.RS 4n
+sudoers: ldap
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers: ldap
-.Ve
-.PP
-\&\fI/etc/nsswitch.conf\fR ファイルが存在しなかったり、存在しても sudoers
+\fI/etc/nsswitch.conf\fP ファイルが存在しなかったり、存在しても sudoers
 の行がなかったりした場合は、次のデフォルト設定が使用される。
+.nf
+.sp
+.RS 4n
+sudoers: files
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers: files
-.Ve
-.PP
-基盤となるオペーレーティング・システムが nsswitch.conf
-ファイルを使用しない場合でも、\fBsudo\fR は \fI/etc/nsswitch.conf\fR
-をサポートしていることに注意してほしい。
+使用しているオペーレーティング・システムが nsswitch.conf
+ファイルを使用しない場合でも、\fBsudo\fP は、AIX のシステム以外では
+(次のセクションを参照)、\fI/etc/nsswitch.conf\fP
+をサポートしていることに注意していただきたい。
 .SS "netsvc.conf の設定"
-.IX Subsection "Configuring netsvc.conf"
-\&\s-1AIX\s0 システムでは、\fI/etc/nsswitch.conf\fR ではなく、
-\&\fI/etc/netsvc.conf\fR ファイルを調べに行く。\fBsudo\fR としては、
-\fInetsvc.conf\fR を \fInsswitch.conf\fR のバリエーションとして扱うだけだ。
+AIX システムでは、\fI/etc/nsswitch.conf\fP ではなく、
+\fI/etc/netsvc.conf\fP ファイルを調べに行く。\fBsudo\fP としては、
+\fInetsvc.conf\fP を \fInsswitch.conf\fP のバリエーションとして扱うだけだ。
 それ故、上のセクションの記述のうち、ファイルの書式に関係のないものは、
 ここでも当てはまることになる。
 .PP
-最初に \s-1LDAP\s0 を参照し、その後で (もし存在するならば)
-ローカルマシン上の sudoers ファイルを調べるには、次のように指定する。
-.PP
-.Vb 1
-\&    sudoers = ldap, files
-.Ve
+最初に LDAP を参照し、その後で (もし存在するならば)
+ローカルマシン上の \fIsudoers\fP ファイルを調べるには、次のように指定する。
+.nf
+.sp
+.RS 4n
+sudoers = ldap, files
+.RE
+.fi
 .PP
-ローカルマシン上の \fIsudoers\fR ファイルをまったく無視するには、
+ローカルマシン上の \fIsudoers\fP ファイルをまったく無視するには、
 次のようにする。
+.nf
+.sp
+.RS 4n
+sudoers = ldap
+.RE
+.fi
 .PP
-.Vb 1
-\&    sudoers = ldap
-.Ve
-.PP
-\&\s-1LDAP\s0 を正式の参照元と見なし、
-\&\s-1LDAP\s0 にユーザが見つからなかったときのみ、
-ローカルの sudoers ファイルを使用する。
-.PP
-.Vb 1
-\&    sudoers = ldap = auth, files
-.Ve
+LDAP を正式の参照元と見なし、LDAP にユーザが見つからなかったときのみ、
+ローカルの \fIsudoers\fP ファイルを使用する。
+.nf
+.sp
+.RS 4n
+sudoers = ldap = auth, files
+.RE
+.fi
 .PP
-上記の例において、\f(CW\*(C`auth\*(C'\fR 修飾子が影響を及ぼすのは、
-ユーザを照合するときだけであることに注意してほしい。
-\&\f(CW\*(C`Defaults\*(C'\fR エントリについては、
-\&\s-1LDAP\s0 と \fIsudoers\fR の両方が参照される。
+注意していただきたいが、上記の例において、auth 修飾子が影響を及ぼすのは、
+ユーザを検索するときだけである。
+Defaults エントリについては、LDAP と \fIsudoers\fP の両方が参照される。
 .PP
-\&\fI/etc/netsvc.conf\fR ファイルが存在しなかったり、存在しても
+\fI/etc/netsvc.conf\fP ファイルが存在しなかったり、存在しても
 sudoers の行がなかったりした場合は、次のデフォルト設定が使用される。
-.PP
-.Vb 1
-\&    sudoers = files
-.Ve
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/ldap.conf\fR" 24
-.el .IP "\fI/etc/ldap.conf\fR" 24
-.IX Item "/etc/ldap.conf"
-\&\s-1LDAP\s0 の設定ファイル
-.ie n .IP "\fI/etc/nsswitch.conf\fR" 24
-.el .IP "\fI/etc/nsswitch.conf\fR" 24
-.IX Item "/etc/nsswitch.conf"
-sudo の設定の参照元の順番を決める
-.ie n .IP "\fI/etc/netsvc.conf\fR" 24
-.el .IP "\fI/etc/netsvc.conf\fR" 24
-.IX Item "/etc/netsvc.conf"
-\&\s-1AIX\s0 で sudo の設定の参照元の順番を決める
-.SH "用例"
-.IX Header "EXAMPLES"
+.nf
+.sp
+.RS 4n
+sudoers = files
+.RE
+.fi
+.SS "sssd との統合"
+\fISystem Security Services Daemon\fP (SSSD) を使用しているシステムで、
+\fBsudo\fP が SSSD サポートを有効にしてビルドされている場合は、
+LDAP の \fIsudoers\fP ルールをキャッシュするのに SSSD を使用することができる。
+\fIsudoers\fP の参照先として SSSD を使用するためには、
+\fI/etc/nsswitch.conf\fP の sudoers のエントリで ldap の代わりに
+sssd を使わねばならない。なお、SSSD 用の \fBsudo\fP のバックエンドは、
+\fI/etc/ldap.conf\fP ファイルを使用しないことに気をつけていただきたい。
+SSSD と共に使用するときの \fBsudo\fP の設定についてより詳しい情報をお知りになりたかったら、
+sssd\-sudo(5) をご覧になるとよい。
+.SH ファイル
+.TP  26n
+\fI/etc/ldap.conf\fP
+LDAP の設定ファイル
+.TP  26n
+\fI/etc/nsswitch.conf\fP
+sudoers セキュリティポリシー設定の参照元の順番を決める
+.TP  26n
+\fI/etc/netsvc.conf\fP
+AIX で sudoers セキュリティポリシー設定の参照元の順番を決める
+.SH 用例
 .SS "ldap.conf の一例"
-.IX Subsection "Example ldap.conf"
-.Vb 10
-\&  # URI か host:port の組み合わせを一つ以上指定する。
-\&  # どちらも指定されていない場合、sudo は localhost と 389 番
-\&  # ポートを使用する。
-\&  #
-\&  #host          ldapserver
-\&  #host          ldapserver1 ldapserver2:390
-\&  #
-\&  # host がポートなしで指定されている場合のポート番号。
-\&  # デフォルトは 389 である。
-\&  #port          389
-\&  #
-\&  # URI の指定は、host と port による指定に優先する。
-\&  uri            ldap://ldapserver
-\&  #uri            ldaps://secureldapserver
-\&  #uri            ldaps://secureldapserver ldap://ldapserver
-\&  #
-\&  #  LDAP サーバに接続しようとしているときの、秒単位の待ち時間。
-\&  bind_timelimit 30
-\&  #
-\&  # LDAP の参照を行っているときの、秒単位の待ち時間。
-\&  timelimit 30
-\&  #
-\&  # 必ず設定すること。さもないと、sudo は LDAP を無視することになる。
-\&  # 複数回指定してもよい。
-\&  sudoers_base   ou=SUDOers,dc=example,dc=com
-\&  #
-\&  # LDAP を参照したとき、sudo 設定のマッチングについて詳細情報を
-\&  # 表示する。
-\&  #sudoers_debug 2
-\&  #
-\&  # sudo 設定中で日時制限のあるエントリのサポートを有効にする。
-\&  #sudoers_timed yes
-\&  #
-\&  # LDAP の操作を行う者の認証情報 (設定する、しないは任意)。
-\&  #binddn        <who to search as>
-\&  #bindpw        <password>
-\&  #rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
-\&  #
-\&  # LDAP プロトコルのバージョン。デフォルトは 3 である。
-\&  #ldap_version 3
-\&  #
-\&  # LDAP 接続を暗号化したいなら、on にする。
-\&  # 通例、ポートを 636 (ldaps) にすることも必要
-\&  #ssl on
-\&  #
-\&  # ポート 389 を使用し、バインド操作のために認証情報が
-\&  # 送信される前に、暗号化セッションに切り替えたい場合に設定する。
-\&  # これをサポートしているのは、OpenLDAP のような start_tls 拡張に
-\&  # 対応している LDAP サーバだけである。
-\&  #ssl start_tls
-\&  #
-\&  # さらに以下の TLS 関連オプションを使うことで SSL/TLS 接続を
-\&  # 微調整できる。
-\&  #
-\&  #tls_checkpeer yes # サーバの SSL 証明書の正当性をチェックする。
-\&  #tls_checkpeer no  # サーバの SSL 証明書の正当性をチェックしない
-\&  #
-\&  # tls_checkpeer を有効にするときは、 tls_cacertfile か
-\&  # tls_cacertdir のどちらかを指定すること。tls_cacertfile や
-\&  # tls_cacertdir は OpenLDAP の使用時のみ使える。
-\&  #
-\&  #tls_cacertfile /etc/certs/trusted_signers.pem
-\&  #tls_cacertdir  /etc/certs
-\&  #
-\&  # /dev/random がないシステムでは、下記の設定を PRNGD、あるいは
-\&  # EGD.pl と一緒に使用すれば、暗号セッション用の鍵を生成するための
-\&  # 乱数プールの種を供給できる。このオプションが使えるのは、
-\&  # OpenLDAP を使用しているときだけである。
-\&  #
-\&  #tls_randfile /etc/egd\-pool
-\&  #
-\&  # 使用する暗号を限定することができる。どの暗号が使えるかに
-\&  # ついては、SSL の文書を参照してほしい。このオプションが
-\&  # 使えるのは、OpenLDAP を使用しているときだけである。
-\&  #
-\&  #tls_ciphers <cipher\-list>
-\&  #
-\&  # sudo は LDAP サーバと交信するときに、クライアントの証明書を
-\&  # 提示することができる。
-\&  # 注意:
-\&  #   * 両方の行を同時に有効にすること。
-\&  #   * キーファイルをパスワードでプロテクトしてはいけない
-\&  #   * キーファイルが読めるのは root だけにするのを忘れずに
-\&  #
-\&  # OpenLDAP の場合:
-\&  #tls_cert /etc/certs/client_cert.pem
-\&  #tls_key  /etc/certs/client_key.pem
-\&  #
-\&  # SunONE や iPlanet LDAP の場合:
-\&  # こちらの場合は、tls_cert や tls_key で指定するのは、
-\&  # 証明書やキーファイルの入っているディレクトリでもよく、
-\&  # ファイルそのもののパスでもよい。
-\&  # 前者の場合、ディレクトリ中のファイルは、既定の名前 (たとえば
-\&  # cert8.db と key4.db) でなければならない。もっとも、ファイルの
-\&  # パスを指定した場合は、バージョン 5.0 の LDAP SDK にはバグが
-\&  # あるので、ファイル名によってはうまく動作しないことがある。
-\&  # この理由から、tls_cert や tls_key には、ファイル名ではなく、
-\&  # ディレクトリを指定する方をお薦めする。
-\&  #
-\&  # tls_cert で指定した証明書のデータベースには、認証局の証明書と
-\&  # クライアントの証明書が、どちらか一方だけ入っていてもよく、
-\&  # 両方入っていてもよい。クライアントの証明書が入っている場合は、
-\&  # tls_key も指定するべきである。
-\&  # 後方互換のため、tls_cert のかわりに sslpath を使うこともできる。
-\&  #tls_cert /var/ldap
-\&  #tls_key /var/ldap
-\&  #
-\&  # LDAP に SASL 認証を使用する場合 (OpenSSL)
-\&  # use_sasl yes
-\&  # sasl_auth_id <SASL user name>
-\&  # rootuse_sasl yes
-\&  # rootsasl_auth_id <SASL user name for root access>
-\&  # sasl_secprops none
-\&  # krb5_ccname /etc/.ldapcache
-.Ve
-.SS "OpenLDAP 用の Sudo のスキーマ"
-.IX Subsection "Sudo schema for OpenLDAP"
+.nf
+.RS 2n
+# URI または host:port の組み合わせを一つ以上指定する。
+# どちらも指定されていない場合、sudo はデフォルトの localhost と
+# 389 番ポートを使用する。
+#
+#host          ldapserver
+#host          ldapserver1 ldapserver2:390
+#
+# host がポートなしで指定されている場合のポート番号。
+# デフォルトは 389 である。
+#port          389
+#
+# URI による指定は、host と port による指定に優先する。
+uri            ldap://ldapserver
+#uri            ldaps://secureldapserver
+#uri            ldaps://secureldapserver ldap://ldapserver
+#
+# LDAP サーバに接続しようとしているときの、秒単位の待ち時間。
+bind_timelimit 30
+#
+# LDAP に問い合わせを行っているときの、秒単位の待ち時間。
+timelimit 30
+#
+# 必ず設定すること。さもないと、sudo は LDAP を無視することになる。
+# 複数回指定してもよい。
+sudoers_base   ou=SUDOers,dc=example,dc=com
+#
+# LDAP で sudoers セキュリティポリシー設定を問い合わせる際の
+# マッチングについて詳細情報を表示する。
+#sudoers_debug 2
+#
+# sudoers セキュリティポリシー設定中で日時制限のあるエントリの
+# サポートを有効にする。
+#sudoers_timed yes
+#
+# LDAP の操作を行う者の認証情報 (設定する、しないは任意)。
+#binddn        <who to search as>
+#bindpw        <password>
+#rootbinddn    <who to search as, uses /etc/ldap.secret for bindpw>
+#
+# LDAP プロトコルのバージョン。デフォルトは 3 である。
+#ldap_version 3
+#
+# LDAP 接続を暗号化したい場合に設定する
+# 通例、ポートを 636 (ldaps) にすることも必要。
+#ssl on
+#
+# ポート 389 を使用し、バインド操作のために認証情報が
+# 送信される直前に、暗号化セッションに切り替えたい場合に設定する。
+# これをサポートしているのは、OpenLDAP のような start_tls 拡張に
+# 対応している LDAP サーバだけである。
+#ssl start_tls
+#
+# さらに以下の TLS 関連オプションを使うことで SSL/TLS 接続の
+# 細かい調整ができる。
+#
+#tls_checkpeer yes # サーバの SSL 証明書の正当性をチェックする
+#tls_checkpeer no  # サーバの SSL 証明書の正当性をチェックしない。
+#
+# tls_checkpeer を有効にするときは、 tls_cacertfile か
+# tls_cacertdir のどちらかを指定すること。tls_cacertfile や
+# tls_cacertdir は OpenLDAP の使用時のみ使える。
+#
+#tls_cacertfile /etc/certs/trusted_signers.pem
+#tls_cacertdir  /etc/certs
+#
+# /dev/random がないシステムでは、下記の設定を PRNGD、あるいは
+# EGD.pl と一緒に使用すれば、暗号セッション用の鍵を生成するための
+# 乱数プールの種を供給できる。このオプションが使えるのは、
+# OpenLDAP を使用しているときだけである。
+#
+#tls_randfile /etc/egd\-pool
+#
+# 使用する暗号を限定することができる。どの暗号が使えるかに
+# ついては、SSL の文書を参照すること。このオプションが
+# 使えるのは、OpenLDAP を使用しているときだけである。
+#
+#tls_ciphers <cipher\-list>
+#
+# sudo は LDAP サーバと交信するときに、クライアントの証明書を
+# 提示することができる。
+# 注意:
+#   * 両方の行を同時に有効にすること
+#   * キーファイルをパスワードでプロテクトしてはいけない
+#   * キーファイルが読めるのは root だけにするのを忘れずに。
+#
+# OpenLDAP の場合:
+#tls_cert /etc/certs/client_cert.pem
+#tls_key  /etc/certs/client_key.pem
+#
+# SunONE や iPlanet LDAP (訳注: Netscape 由来) の場合:
+# こちらの場合は、tls_cert や tls_key で指定するのは、証明書や
+# キーファイルの入っているディレクトリでもよく、ファイルそのものの
+# パスでもよい。前者の場合、ディレクトリ中のファイルは、所定の名前
+# (たとえばcert8.db と key4.db) でなければならない。もっとも、
+# ファイルのパスを指定した場合は、バージョン 5.0 の LDAP SDK には
+# バグがあるので、ファイル名によってはうまく動作しないことがある。
+# この理由から、tls_cert や tls_key には、ファイル名ではなく、
+# ディレクトリを指定する方をお薦めする。
+#
+# tls_cert で指定した証明書のデータベースには、認証局の証明書と
+# クライアントの証明書が、どちらか一方だけ入っていてもよく、
+# 両方入っていてもよい。クライアントの証明書が入っている場合は、
+# tls_key も指定するべきである。
+# 後方互換のため、tls_cert のかわりに sslpath を使うこともできる。
+#tls_cert /var/ldap
+#tls_key /var/ldap
+#
+# LDAP に SASL 認証を使用する場合 (OpenSSL)
+# use_sasl yes
+# sasl_auth_id <SASL user name>
+# rootuse_sasl yes
+# rootsasl_auth_id <SASL user name for root access>
+# sasl_secprops none
+# krb5_ccname /etc/.ldapcache
+.RE
+.fi
+.SS "OpenLDAP 用の sudo のスキーマ"
 下記のスキーマは OpenLDAP 用の形式になっており、
-\&\fBsudo\fR のソースやバイナリの配布に含まれる \fIschema.OpenLDAP\fR と同じものだ。
-このとおりの内容のファイルをスキーマ・ディレクトリ (たとえば、
-\&\fI/etc/openldap/schema\fR) に作成し、適切な \f(CW\*(C`include\*(C'\fR 行を
-\&\f(CW\*(C`slapd.conf\*(C'\fR に追加して、\fBslapd\fR をリスタートすればよい。
+\fBsudo\fP のソースやバイナリの配布には \fIschema.OpenLDAP\fP
+として収録されている。その \fIschema.OpenLDAP\fP
+ファイルをスキーマ・ディレクトリ (たとえば \fI/etc/openldap/schema\fP)
+にそのままコピーし、適切な include 行を \fIslapd.conf\fP に追加して、
+\fBslapd\fP をリスタートすればよい。
+.nf
+.sp
+.RS 2n
+attributetype ( 1.3.6.1.4.1.15953.9.1.1
+   NAME 'sudoUser'
+   DESC 'User(s) who may  run sudo'
+   EQUALITY caseExactIA5Match
+   SUBSTR caseExactIA5SubstringsMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.2
+   NAME 'sudoHost'
+   DESC 'Host(s) who may run sudo'
+   EQUALITY caseExactIA5Match
+   SUBSTR caseExactIA5SubstringsMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.3
+   NAME 'sudoCommand'
+   DESC 'Command(s) to be executed by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.4
+   NAME 'sudoRunAs'
+   DESC 'User(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.5
+   NAME 'sudoOption'
+   DESC 'Options(s) followed by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.6
+   NAME 'sudoRunAsUser'
+   DESC 'User(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.7
+   NAME 'sudoRunAsGroup'
+   DESC 'Group(s) impersonated by sudo'
+   EQUALITY caseExactIA5Match
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.8
+   NAME 'sudoNotBefore'
+   DESC 'Start of time interval for which the entry is valid'
+   EQUALITY generalizedTimeMatch
+   ORDERING generalizedTimeOrderingMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+attributetype ( 1.3.6.1.4.1.15953.9.1.9
+   NAME 'sudoNotAfter'
+   DESC 'End of time interval for which the entry is valid'
+   EQUALITY generalizedTimeMatch
+   ORDERING generalizedTimeOrderingMatch
+   SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
+
+attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
+    NAME 'sudoOrder'
+    DESC 'an integer to order the sudoRole entries'
+    EQUALITY integerMatch
+    ORDERING integerOrderingMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
+   DESC 'Sudoer Entries'
+   MUST ( cn )
+   MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
+        sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
+        sudoOrder $ description )
+   )
+.RE
+.fi
+.SH 関連項目
+ldap.conf(5), sssd\-sudo(5), sudo.conf(5), sudoers(5)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-.Vb 6
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.1
-\&    NAME \*(AqsudoUser\*(Aq
-\&    DESC \*(AqUser(s) who may  run sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SUBSTR caseExactIA5SubstringsMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.2
-\&    NAME \*(AqsudoHost\*(Aq
-\&    DESC \*(AqHost(s) who may run sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SUBSTR caseExactIA5SubstringsMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.3
-\&    NAME \*(AqsudoCommand\*(Aq
-\&    DESC \*(AqCommand(s) to be executed by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.4
-\&    NAME \*(AqsudoRunAs\*(Aq
-\&    DESC \*(AqUser(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.5
-\&    NAME \*(AqsudoOption\*(Aq
-\&    DESC \*(AqOptions(s) followed by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.6
-\&    NAME \*(AqsudoRunAsUser\*(Aq
-\&    DESC \*(AqUser(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.7
-\&    NAME \*(AqsudoRunAsGroup\*(Aq
-\&    DESC \*(AqGroup(s) impersonated by sudo\*(Aq
-\&    EQUALITY caseExactIA5Match
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.8
-\&    NAME \*(AqsudoNotBefore\*(Aq
-\&    DESC \*(AqStart of time interval for which the entry is valid\*(Aq
-\&    EQUALITY generalizedTimeMatch
-\&    ORDERING generalizedTimeOrderingMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-\&
-\& attributetype ( 1.3.6.1.4.1.15953.9.1.9
-\&    NAME \*(AqsudoNotAfter\*(Aq
-\&    DESC \*(AqEnd of time interval for which the entry is valid\*(Aq
-\&    EQUALITY generalizedTimeMatch
-\&    ORDERING generalizedTimeOrderingMatch
-\&    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-\&
-\& attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
-\&     NAME \*(AqsudoOrder\*(Aq
-\&     DESC \*(Aqan integer to order the sudoRole entries\*(Aq
-\&     EQUALITY integerMatch
-\&     ORDERING integerOrderingMatch
-\&     SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-\&
-\& objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME \*(AqsudoRole\*(Aq SUP top STRUCTURAL
-\&    DESC \*(AqSudoer Entries\*(Aq
-\&    MUST ( cn )
-\&    MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $
-\&          sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $
-\&          sudoOrder $ description )
-\&    )
-.Ve
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIldap.conf\fR\|(5), \fIsudoers\fR\|(5)
-.SH "警告"
-.IX Header "CAVEATS"
-LDAP を使用する \fBsudo\fR の設定と \fIsudoers\fR ファイルによる \fBsudo\fR の設定では、
-設定を解析する仕方に相違があるので、注意してほしい。詳細については、
-「\s-1LDAP\s0 を使う場合と使わない場合の
-sudo 設定の相違点」のセクションを参照すること。
-.SH "バグ"
-.IX Header "BUGS"
-\&\fBsudo\fR にバグを発見したと思ったら、下記ページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.SH "サポート"
-.IX Header "SUPPORT"
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には、下記 URL をご覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.SH "免責"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH 警告
+LDAP を使用する sudoers セキュリティポリシーの設定と
+\fIsudoers\fP ファイルによる設定では、設定を解析する仕方に相違があるので、
+注意していただきたい。詳細については、「LDAP を使う場合と使わない場合の
+sudoers セキュリティポリシー設定の相違点」のセクションを参照すること。
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
 下記 Web ページをご覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+https://www.sudo.ws/license.html
index d42895d..1ff667b 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1994-1996, 1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudo.mdoc.in
+.\"
+.\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
-.\" 
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
 .\"   and 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated Sat Oct  7 14:39:18 JST 2000
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002 by Yuichi SATO
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\"         by Yoichi Chonan
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.nr SL 0
-.nr BA 0
-.nr LC 0
-.nr PT 5
-.\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SUDO 8"
-.TH SUDO 8 "February  5, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDO 8 "January 19, 2016" "Sudo 1.8.17" "System Manager's Manual"
 .nh
-.SH "名前"
-sudo, sudoedit \- コマンドを他のユーザとして実行する
-.SH "書式"
-.IX Header "SYNOPSIS"
-\&\fBsudo\fR \fB\-h\fR | \fB\-K\fR | \fB\-k\fR | \fB\-V\fR
-.PP
-\&\fBsudo\fR \fB\-v\fR [\fB\-AknS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
-.PP
-\&\fBsudo\fR \fB\-l[l]\fR [\fB\-AknS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-U\fR\ \fIuser\ name\fR] [\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] [\fIcommand\fR]
-.PP
-\&\fBsudo\fR [\fB\-AbEHnPS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-C\fR\ \fIfd\fR]
-.if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-.if \n(SL [\fB\-r\fR\ \fIrole\fR] [\fB\-t\fR\ \fItype\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR]
-[\fB\s-1VAR\s0\fR=\fIvalue\fR] [\fB\-i\fR\ |\ \fB\-s\fR] [\fIcommand\fR]
-.PP
-\&\fBsudoedit\fR [\fB\-AnS\fR]
-.if \n(BA [\fB\-a\fR\ \fIauth_type\fR]
-[\fB\-C\fR\ \fIfd\fR]
-.if \n(LC [\fB\-c\fR\ \fIclass\fR|\fI\-\fR]
-[\fB\-g\fR\ \fIgroup\ name\fR|\fI#gid\fR] [\fB\-p\fR\ \fIprompt\fR]
-[\fB\-u\fR\ \fIuser\ name\fR|\fI#uid\fR] file ...
-.SH "説明"
-.IX Header "DESCRIPTION"
-\&\fBsudo\fR を使用すると、許可されたユーザーが、
-スーパーユーザや他のユーザに変身して、コマンドを実行することが可能になる。
-許可の範囲については、セキュリティ・ポリシーの指定するところに従う。
-実 uid と gid、実効 uid と gid は、変身の対象になるユーザの、
-パスワード・データベースに記載されているものと同一になるようにセットされる。
-所属するグループについても (\fB\-P\fR オプションが指定されていないかぎり)、
-グループ・データベースに基づいて初期化される。
-.PP
-\&\fBsudo\fR はセキュリティ・ポリシーと入出力のロギングについて、
-プラグイン方式をサポートしている。このため、\fBsudo\fR
-フロントエンドとシームレスに共動するポリシー・モジュールや
-I/O ロギング・モジュールを、サードパーティが独自に開発して配布することが可能である。
-デフォルトのセキュリティ・ポリシーは \fIsudoers\fR であり、その設定は、
-\&\fI/etc/sudoers\fR ファイル、もしくは \s-1LDAP\s0 を通して行われる。
-詳細については、「プラグイン」セクションを参照してほしい。
-.PP
-セキュリティ・ポリシーによって、あるユーザに \fBsudo\fR
-を使用する権限があるかどうか、
-あるとすれば、どんな権限を持っているかが決定される。
-セキュリティ・ポリシーは、ユーザにパスワードや他の認証方法を使って、
-本人であることを証明するように要求してもよい。認証が必要な場合、
-ユーザがパスワードを (設定によって変更可能な) 制限時間内に入力しないと、
-\&\fBsudo\fR は時間切れで終了する。この制限時間はポリシー次第であり、
-\&\fIsudoers\fR セキュリティ・ポリシーの場合、
-パスワード・プロンプトがタイムアウトするまでのデフォルトの時間は、
-.ie \n(PT \f(CW\*(C`5\*(C'\fR 分間である.
-.el 無制限である.
-.PP
-セキュリティ・ポリシーは、一定時間内ならユーザが認証なしで \fBsudo\fR
+.if  n .ad l
+.SH 名前
+\fBsudo\fP, \fBsudoedit\fP \- コマンドを他のユーザとして実行する
+.SH 書式
+.HP 5n
+\fBsudo\fP \fB\-h\fP\ |\ \fB\-K\fP\ |\ \fB\-k\fP\ |\ \fB\-V\fP
+.PD 0
+.HP 5n
+\fBsudo\fP \fB\-v\fP [\fB\-AknS\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP] [\fB\-p\fP\ \fIprompt\fP] [\fB\-u\fP\ \fIuser\fP]
+.br
+.HP 5n
+\fBsudo\fP \fB\-l\fP [\fB\-AknS\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP] [\fB\-p\fP\ \fIprompt\fP] [\fB\-U\fP\ \fIuser\fP] [\fB\-u\fP\ \fIuser\fP] [\fIcommand\fP]
+.br
+.HP 5n
+\fBsudo\fP [\fB\-AbEHnPS\fP] [\fB\-C\fP\ \fInum\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP]
+[\fB\-p\fP\ \fIprompt\fP] [\fB\-r\fP\ \fIrole\fP] [\fB\-t\fP\ \fItype\fP] [\fB\-u\fP\ \fIuser\fP]
+[\fIVAR\fP=\fIvalue\fP] [\fB\-i\fP\ |\ \fB\-s\fP] [\fIcommand\fP]
+.br
+.HP 9n
+\fBsudoedit\fP [\fB\-AknS\fP] [\fB\-C\fP\ \fInum\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP]
+[\fB\-p\fP\ \fIprompt\fP] [\fB\-u\fP\ \fIuser\fP] \fIfile\ ...\fP
+.PD
+.SH 説明
+\fBsudo\fP を使用すると、許可されたユーザが、セキュリティポリシーの設定の範囲内で、
+スーパーユーザや他のユーザに変身して、\fIcommand\fP を実行することが可能になる。
+セキュリティポリシーへの問い合わせは、ユーザ名によって行われるが、
+そのユーザ名を決めるのは、\fBsudo\fP を実行するユーザの実ユーザ ID であって、
+実効ユーザ ID ではない。
+.PP
+\fBsudo\fP はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサポートしている。
+従って、サードパーティは、
+\fBsudo\fP フロントエンドとシームレスに協働するポリシー・プラグインや入出力ロギング・プラグインを、
+独自に開発して配布することができる。
+デフォルトのセキュリティポリシーは \fIsudoers\fP であり、その設定は、
+\fI/etc/sudoers\fP ファイル、もしくは LDAP を通して行われる。
+詳細については、「プラグイン」セクションを参照していただきたい。
+.PP
+セキュリティポリシーは、あるユーザに \fBsudo\fP を使用する権限があるかどうか、
+あるとすれば、どんな権限を持っているかを決定する。
+セキュリティポリシーは、ユーザにパスワードや他の認証方法を使って、
+本人であることを証明するように要求することができる。
+認証が必要な場合、ユーザが自分のパスワードを、
+設定によって変更可能な制限時間内に入力しないと、\fBsudo\fP は時間切れで終了する
+(訳注: \fBsudo\fP はデフォルトでは、root や変身対象ユーザのパスワードではなく、
+\fBsudo\fP を実行するユーザ本人のパスワードを要求する)。
+この制限時間はポリシー次第であり、 \fIsudoers\fP セキュリティポリシーの場合、
+パスワード・プロンプトがタイムアウトするまでのデフォルトの時間は、5 分間である。
+.PP
+セキュリティポリシーは、一定時間内ならユーザが認証なしで \fBsudo\fP
 を何度も実行できるように、認証情報の一時保存 (credential caching)
-をサポートしてもよい。\fIsudoers\fR ポリシーでは、\fIsudoers\fR\|(5)
-で変更されないかぎり、認証情報を \f(CW\*(C`5\*(C'\fR 分間保持する。
-ユーザは \fBsudo\fR に \fB\-v\fR を付けて実行することで、
-\&\fIcommand\fR を実行しないでも、保存された認証情報を更新することができる。
+をサポートしてもよい。\fIsudoers\fP ポリシーでは、sudoers(5)
+で変更されないかぎり、認証情報を 5 分間保持する。
+ユーザは \fBsudo\fP に \fB\-v\fP を付けて実行することで、
+\fIcommand\fP を実行しないでも、保存された認証情報を更新することができる。
 .PP
-\&\fBsudoedit\fR というコマンド名で起動するのは、\fBsudo\fR に \fB-e\fR 
+\fBsudoedit\fP というコマンド名で起動するのは、\fBsudo\fP に \fB\-e\fP
 オプション (下記参照) を付けて実行するのと同じである。
 .PP
-セキュリティ・ポリシーは、ユーザが \fBsudo\fR を使おうとして
-成功した場合も失敗した場合も、それをログに記録することができる。
-I/O プラグインが設定によって組み込まれている場合は、
-実行しているコマンドの入出力もログに残すことができる。
-.SH "オプション"
-.IX Header "OPTIONS"
-\&\fBsudo\fR では以下のコマンドライン・オプションが使用できる。
-.IP "\-A" 12
-.IX Item "-A"
+セキュリティポリシーは、ユーザが \fBsudo\fP
+を使おうとして成功した場合も失敗した場合も、それをログに記録することができる。
+入出力プラグインが設定されている場合は、
+\fBsudo\fP 経由で実行するコマンドの入出力もログに残すことができる。
+.PP
+オプションとして以下のものが使用できる。
+.TP  12n
+\fB\-A\fP, \fB\-\-askpass\fP
 通常 \fBsudo\fR がパスワードを要求するとき、
 パスワードはユーザが使用している端末から読み込まれる。
-\&\fB\-A\fR (\fIaskpass\fR) オプションを指定すると、
+\fB\-A\fP (\fIaskpass\fP) オプションを指定すると、
 ヘルパー・プログラム (グラフィカルなものでもよい)
 が実行され、ユーザのパスワードを読み込んで、それを標準出力に書き出す。
-環境変数 \f(CW\*(C`SUDO_ASKPASS\*(C'\fR が設定されているときは、
+環境変数 SUDO_ASKPASS が設定されているときは、
 それがヘルパー・プログラムのパスになる。それ以外の場合は、
-\fI/etc/sudo.conf\fR に askpass プログラムを指定している行が存在すれば、
+sudo.conf(5) に askpass プログラムを指定している行が存在すれば、
 その値が使用される。一例を挙げよう。
-.Sp
-.Vb 2
-\&    # askpass ヘルパー・プログラムのパス
-\&    Path askpass /usr/X11R6/bin/ssh\-askpass
-.Ve
-.Sp
-利用できる askpass プログラムがないと、\fBsudo\fR
-はエラーメッセージを出して、終了する。
-.if \n(BA \{\
-.IP "\-a \fItype\fR" 12
-.IX Item "-a type"
-\&\fB\-a\fR (\fIauthentication type\fR) オプションを使うと、
-\&\fBsudo\fR はユーザの認証に、指定したタイプの認証方法を使用するようになる。
-ただし、その認証のタイプは \fI/etc/login.conf\fR
-で有効になっていなければならない。システム管理者は \fI/etc/login.conf\fR に
-\&\*(L"auth-sudo\*(R" 項目を追加することによって、
-\&\fBsudo\fR 専用の認証方法のリストを指定することができる。
-このオプションは \s-1BSD\s0 認証に対応したシステムでのみ有効である。
-\}
-.IP "\-b" 12
-.IX Item "-b"
-\&\fB\-b\fR (\fIbackground\fR) オプションを付けると、\fBsudo\fR
-は指定されたコマンドをバックグラウンドで実行する。
-\&\fB-b\fR オプションを使用すると、
-シェルのジョブ制御を使ってプロセスを操作できなくなるので、注意してほしい。
-バックグラウンドモードでは、対話的なコマンドのほとんどがまともに動かないだろう。
-.IP "\-C \fIfd\fR" 12
-.IX Item "-C fd"
-通常、\fBsudo\fR は、(コマンドを実行する前に) 標準入力、標準出力、
-標準エラーを除いて、
-開いているファイル・ディスクリプタをすべて閉じることになっている。
-\&\fB\-C\fR (\fIclose from\fR) オプションを使えば、
-標準エラーより番号が大きい (すなわち、ファイル・ディスクリプタ 3 以上の)
-どのファイル・ディスクリプタから閉じていくかを、ユーザが指定することができる。
-3 未満の値は指定できない。セキュリティ・ポリシーによっては、ユーザが
-\&\fB\-C\fR オプションを使用するのを制限していることがある。
-\&\fIsudoers\fR ポリシーが \fB\-C\fR オプションの使用を許可するのは、
-管理者が \fIclosefrom_override\fR オプションを有効にしているときのみである。
-.if \n(LC \{\
-.IP "\-c \fIclass\fR" 12
-.IX Item "-c class"
-\&\fB\-c\fR (\fIclass\fR) オプションを付けると、その指定した
-login class のリソースの制限内で、\fBsudo\fR は指定されたコマンドを実行する。
-\&\fB-c\fR の引き数 \fIclass\fR に使うことができるのは、
-\&\fI/etc/login.conf\fR で定義された class 名か、一個の '\-' 文字である。
-\&\fIclass\fR に \f(CW\*(C`\-\*(C'\fR を指定すると、コマンドは実行されるとき、
-変身対象ユーザのデフォルトのログイン権限によって制限されることになる。
-引き数 \fIclass\fR が実在する user class を指している場合は、コマンドを
-root として実行するか、あるいはすでに root になったシェルで
-\&\fBsudo\fR コマンドを実行するかしなければならない。 
-このオプションは、\s-1BSD\s0 login class が存在するシステムでのみ有効である。
-\}
-.IP "\-E" 12
-.IX Item "-E"
-\&\fB\-E\fR (\fIpreserve\fR \fIenvironment\fR) オプションを指定すると、
-現在の環境変数をそのまま保持するのがユーザの意向だと、
-セキュリティ・ポリシーに伝えることになる。
-\&\fB\-E\fR を指定しても、ユーザが環境を保持する許可を持っていない場合は、
-セキュリティ・ポリシーがたぶんエラーを返すだろう。
-.IP "\-e" 12
-.IX Item "-e"
-\&\fB\-e\fR (\fIedit\fR) オプションを指定するのは、
-ユーザがコマンドの実行ではなく、
-一個以上のファイルを編集しようとしていることを意味する。
-セキュリティ・ポリシーの参照では、
-コマンド名として文字列 \*(L"sudoedit\*(R" が使用される。
-セキュリティ・ポリシーによってユーザに権限があることが認められると、
-次のようなことが順番に行われる。
-.RS 12
-.IP "1." 4
+.nf
+.sp
+.RS 16n
+# askpass ヘルパー・プログラムのパス
+Path askpass /usr/X11R6/bin/ssh\-askpass
+.RE
+.fi
+.RS 12n
+.sp
+利用できる askpass プログラムがないと、\fBsudo\fP はエラーメッセージを出して、
+終了する。
+.RE
+.TP  12n
+\fB\-a\fP \fItype\fP, \fB\-\-auth\-type\fP=\fItype\fP
+\fI/etc/login.conf\fP で使用可になっていれば、ユーザを認証する際に指定された
+BSD の認証方法 \fItype\fP を使用する。システム管理者は、\fI/etc/login.conf\fP
+に "auth\-sudo" エントリを追加することで、
+sudo 専用の認証方法のリストを指定することができる。このオプションは、
+BSD 認証をサポートするシステムでのみ使用できる。
+.TP  12n
+\fB\-b\fP, \fB\-\-background\fP
+指定されたコマンドをバックグラウンドで実行する。
+\fBsudo\fP 経由で起動したバックグラウンド・プロセスは、
+シェルのジョブ制御を使って操作できないことに注意していただきたい。
+バックグラウンドモードでは、ほとんどの対話的なコマンドがうまく動かないだろう。
+.TP  12n
+\fB\-C\fP \fInum\fP, \fB\-\-close\-from\fP=\fInum\fP
+コマンドを実行するに先立って、\fInum\fP 以上の番号のファイル・ディスクリプタをすべてクローズする。
+3 未満の値は指定できない。デフォルトでは、コマンドを実行する際に、
+\fBsudo\fP は、標準入力、標準出力、標準エラー以外の、
+オープンしているすべてのファイル・ディスクリプタを閉じることになっている。
+セキュリティポリシーは、ユーザによるこのオプションの使用を制限することができる。
+\fIsudoers\fP ポリシーが \fB\-C\fP オプションの使用を許可するのは、
+管理者が \fIclosefrom_override\fP オプションを有効にしているときのみである。
+.TP  12n
+\fB\-c\fP \fIclass\fP, \fB\-\-login\-class\fP=\fIclass\fP
+指定されたログインクラス \fIclass\fP のリソース・リミットとスケジューリング優先度で、
+コマンドを実行する。引き数 \fIclass\fP に使用できるのは、\fI/etc/login.conf\fP
+で定義されたクラス名か、単独の '\-' 文字のどちらかである。
+\fIclass\fP が \fB\-\fP ならば、変身対象ユーザのデフォルトのログインクラスが使用されることになる。
+それ以外の場合は、コマンドをスーパーユーザ (ユーザ ID が 0) として実行するか、
+あるいは、すでにスーパーユーザとして実行しているシェルから
+\fBsudo\fP を実行するかのどちらかでなければならない。
+実行されるコマンドがログイン・シェルである場合は、
+umask や環境変数といった \fI/etc/login.conf\fP の他の設定も、
+存在すれば適用されることになる。
+このオプションは BSD ログインクラスを採用しているシステムでのみ有効である。
+.TP  12n
+\fB\-E\fP, \fB\-\-preserve\-env\fP
+現在の環境変数をそのまま保持するのがユーザの意向だと、セキュリティポリシーに指示する。
+ユーザが環境を保持する許可を持っていない場合は、
+セキュリティポリシーがエラーを返すことになるだろう。
+.TP  12n
+\fB\-e\fP, \fB\-\-edit\fP
+何らかのコマンドを実行するのではなく、1 個以上のファイルを編集する。
+セキュリティポリシーの参照では、コマンドのパス名の代わりに
+"sudoedit" という文字列が使用される。
+セキュリティポリシーによってユーザに権限があることが認められると、
+次のことが順番に行われる。
+.RS 16n
+.TP  5n
+1.\&
 編集対象のファイルのコピーをテンポラリファイルとして作成する。
-テンポラリファイルのオーナーは \fBsudo\fR を起動したユーザである。
-.IP "2." 4
-セキュリティ・ポリシーによって指定されたエディタを起動して、
-テンポラリファイルを編集する。\fIsudoers\fR ポリシーでは、環境変数の
-\&\f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR,
-\&\f(CW\*(C`EDITOR\*(C'\fR を (この順番で) 使用する。
-\&\f(CW\*(C`SUDO_EDITOR\*(C'\fR, \f(CW\*(C`VISUAL\*(C'\fR, 
-\&\f(CW\*(C`EDITOR\*(C'\fR のどれも設定されていない場合は、\fIsudoers\fR\|(5)
-の \fIeditor\fR オプションにリストされたプログラムのうち、
+テンポラリファイルのオーナーは \fBsudo\fP を起動したユーザである。
+.TP  5n
+2.\&
+セキュリティポリシーによって指定されたエディタを起動して、
+テンポラリファイルを編集する。\fIsudoers\fP ポリシーでは、環境変数
+SUDO_EDITOR, VISUAL, EDITOR を (この順番で) 使用する。
+SUDO_EDITOR, VISUAL, EDITOR のどれも設定されていない場合は、
+sudoers(5) の \fIeditor\fP オプションにリストされたプログラムのうち、
 最初のものが使われる。
-.IP "3." 4
-編集作業がすむと、テンポラリファイルをオリジナルのファイルに書き戻して、
+.TP  5n
+3.\&
+編集作業がすむと、テンポラリファイルをオリジナルのファイルにコピーして、
 テンポラリファイルを消去する。
 .RE
-.RS 12
-.Sp
+.RS 12n
+.sp
+編集する権限のないファイルを編集できないようにするため、
+セキュリティポリシーによって明示的に許可されていないかぎり、
+以下の制限が行われる。
+.RS 16n
+.TP  4n
+\fB\(bu\fP
+シンボリックリンクの編集は許可しない (バージョン 1.8.15 以上)。
+.TP  4n
+\fB\(bu\fP
+\fBsudo\fP を実行するのが root であるときを除いて、
+編集するファイルのパス中にシンボリックリンクがある場合、
+そのリンクの親ディレクトリが \fBsudo\fP を実行するユーザにとって書き込み可能ならば、
+リンクをたどらない (バージョン 1.8.16 以上)。
+.TP  4n
+\fB\(bu\fP
+\fBsudo\fP を実行するのが root であるときを除いて、
+ファイルが \fBsudo\fP を実行するユーザにとって書き込み可能なディレクトリにある場合、
+そのファイルの編集を許可しない (バージョン 1.8.16 以上)。
+.RE
+.sp
+ユーザがデバイス・スペシャルファイルの編集を許可されることは絶対にない。
+.sp
 指定されたファイルが存在しない場合は作成する。ここで注意すべきは、
-\&\fBsudo\fR によって実行されるコマンドの大部分と違って、
-\&\fB\-e\fR でエディタが実行されるときは、\fBsudo\fR
-を起動したユーザの環境が、変更を受けずにそのまま使われるということだ。
-何らかの理由で \fBsudo\fR が編集した内容でファイルを更新できないときは、
+\fBsudo\fP によって実行されるコマンドの大部分と違って、
+\fB\-e\fP でエディタが実行されるときは、\fBsudo\fP を起動したユーザの環境が、
+変更を受けずに使われるということだ。
+何らかの理由で \fBsudo\fP が編集した内容でファイルを更新できないときは、
 ユーザに警告を発し、編集した内容をテンポラリファイルに保存することになる。
 .RE
-.IP "\-g \fIgroup\fR" 12
-.IX Item "-g group"
-通常 \fBsudo\fR はコマンドを実行するとき、プライマリ・グループを、
-パスワード・データベースで変身対象ユーザ (デフォルトでは root である)
-のプライマリ・グループとして指定されているグループに設定する。これに対して、
-\&\fB\-g\fR (\fIgroup\fR) オプションを使用すると、
-\&\fBsudo\fR はプライマリ・グループを \fIgroup\fR に設定して、
-コマンドを実行することになる。グループ名の代わりに \fIgid\fR を指定するときは、
-\&\fI#gid\fR という書き方をする。\fIgid\fR としてコマンドを実行する場合、
-多くのシェルでは '#' をバックスラッシュ ('\e')
-でエスケープしなければならない。
-なお、\fB\-u\fR オプションが同時に指定されていない場合、コマンドは
-(root としてではなく) \fBsudo\fR を起動したユーザの資格で実行される。
-いづれにしろ、プライマリ・グループが \fIgroup\fR
-に設定されることに変わりはない。
-(訳注: \fB\-g\fR オプションを使用するには、
-\&\fIsudoers\fR ポリシーの場合なら、\fIsudoers\fR ファイルのユーザ設定で、
+.TP  12n
+\fB\-g\fP \fIgroup\fP, \fB\-\-group\fP=\fIgroup\fP
+コマンドを実行するとき、
+プライマリ・グループをパスワード・データベースの変身対象ユーザの項目で指定されているものではなく、
+\fIgroup\fP に設定する。\fIgroup\fP は、グループ名でもよく、'#' 記号にグループ
+ID 番号 (GID) を続けたものでもよい (たとえば、GID 0 なら #0)。
+GID としてコマンドを実行する場合、ほとんどのシェルでは、
+\&'#' をバックスラッシュ ('\e') でエスケープする必要がある。
+なお、\fB\-u\fP オプションが指定されていない場合、コマンドは
+\fBsudo\fP を起動したユーザの資格で実行される。いづれにしろ、
+プライマリ・グループが \fIgroup\fP に設定されることに変わりはない。
+(訳注: \fB\-g\fP オプションを使用するには、
+\fIsudoers\fP ポリシーの場合なら、\fIsudoers\fP ファイルのユーザ設定で、
 変身対象となるグループを設定しておく必要がある。詳細については、
-\&\fIsudoers\fR\|(5) のマニュアルの該当個所を参照してほしい。)
-.IP "\-H" 12
-.IX Item "-H"
-\&\fB\-H\fR (\fI\s-1HOME\s0\fR) オプションを指定すると、
-セキュリティ・ポリシーは、環境変数 \f(CW\*(C`HOME\*(C'\fR
-を、パスワード・データベースで変身対象ユーザ (デフォルトでは root)
-のホームディレクトリとして指定されているディレクトリに設定することになる。
+sudoers(5) のマニュアルの該当個所を参照していただきたい。)
+.TP  12n
+\fB\-H\fP, \fB\-\-set\-home\fP
+HOME 環境変数を、パスワード・データベースの変身対象ユーザの項目で、
+ホームディレクトリとして指定されているものに設定するように、
+セキュリティポリシーに要求する。
 ポリシーによっては、それがデフォルトの動作になっていることもある。
-.IP "\-h" 12
-.IX Item "-h"
-\&\fB-h\fR (\fIhelp\fR) オプションを指定すると、
-\&\fBsudo\fR は簡単なヘルプメッセージを標準出力に表示して、終了する。
-.IP "\-i [command]" 12
-.IX Item "-i [command]"
-\&\fB\-i\fR (\fIsimulate initial login\fR) オプションを指定すると、
-パスワード・データベースの変身対象ユーザのエントリで指定されてているシェルが、
-ログイン・シェルとして実行される。すなわち、\f(CW\*(C`.profile\*(C'\fR や
-\&\f(CW\*(C`.login\*(C'\fR といった、ログイン用のリソースファイルが、
-シェルによって読み込まれるわけだ。コマンドを指定すると、
-それがシェルに渡され、シェルの  \fB\-c\fR オプションを使って実行される。
-コマンドを指定しない場合は、対話的シェルが起動されることになる。\fBsudo\fR は、
+.TP  12n
+\fB\-h\fP, \fB\-\-help\fP
+簡単なヘルプメッセージを標準出力に表示して、終了する。
+.TP  12n
+\fB\-h\fP \fIhost\fP, \fB\-\-host\fP=\fIhost\fP
+セキュリティポリシー・プラグインがリモート・コマンドをサポートしているなら、
+指定された \fIhost\fP でコマンドを実行する。
+\fIsudoers\fP プラグインは、現在のところ、
+リモート・コマンドの実行をサポートしていないことに注意していただきたい。
+このオプションを \fB\-l\fP オプションと一緒に使えば、
+リモート・ホストにおけるユーザの権限のリストを得ることができる。
+(訳注: このオプションについは、sudo_plugin(5) のマニュアルの
+"Remote command execution" セクションもご覧いただきたい。
+そちらの説明が詳しい。)
+.TP  12n
+\fB\-i\fP, \fB\-\-login\fP
+パスワード・データベースの変身対象ユーザの項目でログイン・シェルとして指定されているシェルを実行する。すなわち、
+\&\fI.profile\fP や \fI.login\fP といったログイン用のリソース・ファイルが、
+シェルによって読み込まれることになる。コマンドを指定すると、
+それがシェルに渡され、シェルの  \fB\-c\fP オプションを使って実行される。
+コマンドを指定しない場合は、対話的シェルが起動される。\fBsudo\fP は、
 シェルを実行する前に、変身対象ユーザのホームディレクトリに移動しようとする。
-セキュリティ・ポリシーは、環境変数が最小限になるように、すなわち、
-ユーザが普通にログインしたときの環境と同様になるように、
-環境を初期化すべきである。
-\&\fIsudoers\fR ポリシーを使用している場合に、
-\&\fB\-i\fR オプションがコマンドの実行環境にどんな影響を与えるかについては、
-\&\fIsudoers\fR\|(5) のマニュアルの「コマンド環境」セクションに説明がある。
-.IP "\-K" 12
-.IX Item "-K"
-\&\fB\-K\fR (sure \fIkill\fR) オプションは \fB\-k\fR オプションに似ているが、
-ユーザの保存された認証情報を完全に消去してしまう点と、
-コマンドや他のオプションと組み合わせて使用できない点で異なっている。
-このオプションはパスワードを要求しない。
-すべてのセキュリティ・ポリシーが
+コマンドの実行は、ユーザが普通にログインしたときの環境とほぼ同じ環境で行われる。
+\fIsudoers\fP ポリシーを使用している場合に、
+\fB\-i\fP オプションがコマンドの実行環境にどんな影響を与えるかについては、
+sudoers(5) のマニュアルの「コマンド環境」セクションに説明がある。
+.TP  12n
+\fB\-K\fP, \fB\-\-remove\-timestamp\fP
+\fB\-k\fP オプションに似ているが、ユーザの保存された認証情報を完全に消去してしまう点と、
+コマンドや他のオプションと組み合わせて使えない点が異なっている。
+このオプションはパスワードを要求しない。すべてのセキュリティポリシーが、
 認証情報の一時保存をサポートしているわけではない。
-.IP "\-k [command]" 12
-.IX Item "-k [command]"
-\&\fB\-k\fR (\fIkill\fR) オプションを単独で使うと、
-\&\fBsudo\fR はユーザの保存された認証情報を無効にする。
-次回 \fBsudo\fR を実行するとき、パスワードが要求されることになるわけだ。
\81\93ã\81®ã\82ªã\83\97ã\82·ã\83§ã\83³è\87ªä½\93ã\81¯ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92å¿\85è¦\81ã\81¨ã\81\97ã\81ªã\81\84ã\80\82
\81ªã\81\8aã\80\81ã\81\93ã\81®ã\82ªã\83\97ã\82·ã\83§ã\83³ã\81\8c追å\8a ã\81\95ã\82\8cã\81\9fã\81®ã\81¯ã\80\81ã\83¦ã\83¼ã\82¶ã\81\8c .logout ã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\80\81\fBsudo\fR
+.TP  12n
+\fB\-k\fP, \fB\-\-reset\-timestamp\fP
+コマンドを伴わずに使用した場合は、ユーザの保存された認証情報を無効にする。
+言い換えると、次回 \fBsudo\fP を実行するときに、
+パスワードが要求されるということだ。このオプション自体は、
\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92è¦\81æ±\82ã\81\97ã\81ªã\81\84ã\80\82ã\81\93ã\81®ã\82ªã\83\97ã\82·ã\83§ã\83³ã\81\8c追å\8a ã\81\95ã\82\8cã\81\9fã\81®ã\81¯ã\80\81
\83¦ã\83¼ã\82¶ã\81\8c \fI.logout\fP ã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\80\81\fBsudo\fP
 をパスワードなしで実行できる期間を終了させることができるようにするためである。
-すべてのセキュリティ・ポリシーが認証情報の一時保存をサポートしているわけではない。
-.Sp
-\&\fB\-k\fR オプションをコマンドや、
-パスワードを必要とするような他のオプションと組み合わせて使用すると、
-\&\fBsudo\fR はユーザの保存された認証情報を無視することになる。
-その結果、\fBsudo\fR は
-(セキュリティ・ポリシーでパスワードを要求するようになっているならば)
-プロンプトを出してパスワードを要求する。このとき、
-ユーザの保存された認証情報の更新は行わない。
-.IP "\-l[l] [\fIcommand\fR]" 12
-.IX Item "-l[l] [command]"
-\&\fIcommand\fR を指定しない場合、\fB\-l\fR (\fIlist\fR) オプションは、
-\&\fBsudo\fR を実行しているユーザ (あるいは、\fB\-U\fR で指定したユーザ) が、
-現在ログインしているホストで許可されている (及び、禁じられている)
-コマンドを列挙する。\fIcommand\fR を指定した場合は、
-セキュリティ・ポリシーで許可されているコマンドならば、その絶対パスを表示する。
-指定する \fIcommand\fR に引数を付けると、それも一緒に表示される
-(訳注: セキュリティ・ポリシーで、許可するコマンドに引数まで指定している場合は、
-それにマッチする引数を \fB\-l\fR に続く \fIcommand\fR にも必ず付けなければならない)。
+.sp
+コマンドや、パスワードを必要とするような他のオプションと組み合わせて、
+このオプションを使用すると、
+\fBsudo\fP がユーザの保存された認証情報を無視することになる。
+その結果、\fBsudo\fP は (セキュリティポリシーがパスワードを要求するならば)、
+プロンプトを出して、パスワードを要求する。
+このとき、ユーザの保存された認証情報の更新は行われない。
+.sp
+すべてのセキュリティポリシーが、認証情報の一時保存をサポートしているわけではない。
+.TP  12n
+\fB\-l\fP, \fB\-\-list\fP
+コマンドを指定しない場合は、\fBsudo\fP を実行しているユーザ (あるいは、
+\fB\-U\fP オプションで指定したユーザ) が、現在ログインしているホストで許可されている
+(及び、禁じられている) コマンドのリストを表示する。
+このオプションを複数回指定すると、
+セキュリティポリシーが詳細な出力形式をサポートしていれば、
+長い方のリスト形式が使用される。
+.sp
+コマンドを指定した場合は、その実行がセキュリティポリシーによって許可されていれば、
+コマンドの絶対パスが表示される。
+コマンドラインでコマンドに引き数まで指定すると
+(訳注: その引き数が許可されていれば)、それも一緒に表示される。
 指定したコマンドが許可されていない場合は、
-\&\fBsudo\fR がステータス 1 で終了する。\fB\-l\fR オプションに
-\&\fBl\fR という引数を付けた場合や (すなわち \fB\-ll\fR)、
-\&\fB\-l\fR を複数回指定した場合は、長い方のリスト形式が使用される。
-.IP "\-n" 12
-.IX Item "-n"
-\&\fB\-n\fR (\fInon-interactive\fR) オプションがあると、
-\&\fBsudo\fR は ユーザにパスワードを要求するプロンプトを出さない。
-実行するコマンドにパスワードが必要な場合、
-\&\fBsudo\fR はエラーメッセージを表示して、終了する。
-.IP "\-P" 12
-.IX Item "-P"
-\&\fB\-P\fR (\fIpreserve\fR \fIgroup vector\fR) オプションを指定すると、
-\&\fBsudo\fR は、\fBsudo\fR を実行するユーザが所属するグループのリストを、
-変更せずにそのまま使用する。\fIsudoers\fR ポリシーの場合、デフォルトでは、
-所属グループの初期値として、
-変身対象となるユーザが所属するグループのリストを設定するのである。とは言え、
-実 gid や 実効 gid が変身対象ユーザと同一になるようにセットされる点には、
-変わりがない。
-.IP "\-p \fIprompt\fR" 12
-.IX Item "-p prompt"
-\&\fB\-p\fR (\fIprompt\fR) オプションを使うと、
-デフォルトのパスワードプロンプトを変更して、好きな文句にすることができる。
-\&\fIsudoers\fR ポリシーでは以下のパーセント (`\f(CW\*(C`%\*(C'\fR')
-エスケープが使用できる。
-.RS 12
-.ie n .IP "%H" 4
-.el .IP "\f(CW%H\fR" 4
-.IX Item "%H"
+\fBsudo\fP はステータス 1 で終了することになる。
+.TP  12n
+\fB\-n\fP, \fB\-\-non\-interactive\fP
+プロンプトを出してユーザに入力を求めることを一切しない。
+コマンドを実行するのにパスワードが必要な場合、
+\fBsudo\fP はエラーメッセージを出して、終了することになる。
+.TP  12n
+\fB\-P\fP, \fB\-\-preserve\-groups\fP
+\fBsudo\fP を実行するユーザの所属グループのリストを、変更せずにそのまま使用する。
+デフォルトでは、\fIsudoers\fP ポリシーの場合、所属グループは初期化されて、
+変身対象ユーザが所属しているグループのリストが使われることになっているのである。
+とは言え、実グループ ID と実効グループ ID が、
+変身対象ユーザと同一になるようにセットされる点には変わりがない。
+.TP  12n
+\fB\-p\fP \fIprompt\fP, \fB\-\-prompt\fP=\fIprompt\fP
+パスワードプロンプトに好みの文字列を使用する。文字列には、
+エスケープシーケンスが使用できる。\fIsudoers\fP では、
+以下のパーセント ('%') エスケープシーケンスをサポートしている。
+.PP
+.RS 12n
+.PD 0
+.TP  4n
+%H
 ドメイン名を含むホスト名に展開される (マシンのホスト名が完全修飾名であるか、
-\&\fIsudoers\fR\|(5) で \fIfqdn\fR オプションがセットされている場合に有効)
-.ie n .IP "%h" 4
-.el .IP "\f(CW%h\fR" 4
-.IX Item "%h"
+sudoers(5) で \fIfqdn\fP オプションがセットされている場合に有効)
+.PD
+.TP  4n
+%h
 ドメイン名なしのローカルホスト名に展開
-.ie n .IP "%p" 4
-.el .IP "\f(CW%p\fR" 4
-.IX Item "%p"
-パスワードを要求されるユーザ名に展開 (\fIsudoers\fR\|(5) の
-\&\fIrootpw\fR, \fItargetpw\fR, \fIrunaspw\fR フラグを尊重する)
-.ie n .IP "%U" 4
-.el .IP "\f(CW%U\fR" 4
-.IX Item "%U"
-変身対象になるユーザ (\f(CW\*(C`\-u\*(C'\fR
-オプションが同時に指定されていない場合は、root がデフォルト)
-のログイン名に展開される
-.ie n .IP "%u" 4
-.el .IP "\f(CW%u\fR" 4
-.IX Item "%u"
-\&\fBsudo\fR を起動するユーザのログイン名に展開される
-.ie n .IP "\*(C`%%\*(C'" 4
-.el .IP "\f(CW\*(C`%%\*(C'\fR" 4
-.IX Item "%%"
-連続した二つの \f(CW\*(C`%\*(C'\fR は、一個の \f(CW\*(C`%\*(C'\fR
-文字そのものを意味する
+.TP  4n
+%p
+パスワードを要求されているユーザ名に展開 (sudoers(5) の \fIrootpw\fP,
+\fItargetpw\fP, \fIrunaspw\fP フラグを尊重する)
+.TP  4n
+\&%U
+変身対象になるユーザ (\fB\-u\fP オプションが同時に指定されていないときは、root
+がデフォルト) のログイン名に展開される
+.TP  4n
+%u
+\fBsudo\fP を起動するユーザのログイン名に展開される
+.TP  4n
+%%
+連続する二つの '%' 文字は、1 個の '%' 文字そのものを意味する。
+.PP
+自家特製のプロンプトが、
+PAM をサポートしているシステムでシステムのパスワードプロンプトに置き替わるのは、
+\fIsudoers\fP で \fIpassprompt_override\fP フラグが無効になっていない場合である
+(訳注: sudoers(5) の passprompt_override の項も参照していただきたい)。
 .RE
-.RS 12
-.Sp
-\&\fB\-p\fR で指定したプロンプトが、\s-1PAM\s0
-をサポートしているシステムで、システムのパスワードプロンプトを上書きするのは、
-\&\fIsudoers\fR で \fIpassprompt_override\fR が有効になっている場合である
-(訳注: 実際にはもうすこし複雑なので、\fIsudoers\fR\|(5) の
-passprompt_override の項も参照してほしい)。
-.RE
-.if \n(SL \{\
-.IP "\-r \fIrole\fR" 12
-.IX Item "-r role"
-\&\fB\-r\fR (\fIrole\fR) オプションを使うと、(SELinux の)
-新しいセキュリティ・コンテキストが \fIrole\fR
-で指定されたロールを持つようになる。
-\}
-.IP "\-S" 12
-.IX Item "-S"
-\&\fB\-S\fR (\fIstdin\fR) オプションを指定すると、
-\&\fBsudo\fR はパスワードをターミナルデバイスからではなく、
-標準入力から読み込む。パスワードは末尾に改行を付けなければならない。
-.IP "\-s [command]" 12
-.IX Item "-s [command]"
-\&\fB\-s\fR (\fIshell\fR) は、環境変数 \fI\s-1SHELL\s0\fR が設定されていれば、
-そのシェルを、さもなければ、
-パスワード・データベースで指定されているシェルを実行する。
-コマンドが指定されている場合には、それをシェルに渡し、シェルの
-\&\fB\-c\fR オプションを通じて実行させる。
-コマンドが指定されていなければ、対話的シェルを開く。
-.if \n(SL \{\
-.IP "\-t \fItype\fR" 12
-\&\fB\-t\fR (\fItype\fR) オプションを使用すると、(SELinux の)
-新しい セキュリティ・コンテキストが \fItype\fR
-で指定されたタイプを持つようになる。
-type が指定されない場合は、デフォルトのタイプが、
-指定された role から導き出される。
-\}
-.IP "\-U \fIuser\fR" 12
-.IX Item "-U user"
-\&\fB\-U\fR (\fIother user\fR) オプションは、\fB\-l\fR と組み合わせて使用し、
-誰の権限の一覧を表示するかを指定する。自分以外のユーザの権限の表示は、
-セキュリティ・ポリシーによって禁止されているかもしれない。
-\&\fIsudoers\fR ポリシーでこのオプションの使用が認められているのは、
-root ユーザを別にすると、現在使用中のホストで許可するコマンドに
-\&\f(CW\*(C`ALL\*(C'\fR が指定してあるユーザだけである。
-.IP "\-u \fIuser\fR" 12
-.IX Item "-u user"
-\&\fB\-u\fR (\fIuser\fR) オプションを指定すると、\fBsudo\fR
-は指定されたコマンドを \fIroot\fR 以外のユーザとして実行する。
-ユーザ名の代わりに \fIuid\fR を指定するときは、\fI#uid\fR という書き方をする。
-多くのシェルでは、\fIuid\fR の資格でコマンドを実行するときは、
+.TP  12n
+\fB\-r\fP \fIrole\fP, \fB\-\-role\fP=\fIrole\fP
+指定された \fIrole\fP を含む
+SELinux のセキュリティ・コンテキストでコマンドを実行する。
+.TP  12n
+\fB\-S\fP, \fB\-\-stdin\fP
+プロンプトを標準エラーに表示するが、パスワードの読み込みは、
+ターミナルデバイスを使わずに、標準入力から行う。パスワードは、
+末尾に改行を付けなければならない。
+.TP  12n
+\fB\-s\fP, \fB\-\-shell\fP
+環境変数 SHELL が設定されていれば、そのシェルを、
+設定されていなければ、パスワード・データベースで
+\fBsudo\fP を起動するユーザのシェルとして指定されているシェルを実行する。
+コマンドが指定されている場合は、それをシェルに渡し、シェルの
+\fB\-c\fP オプションを使って実行する。コマンドが指定されていない場合は、
+対話的シェルを開く。
+.TP  12n
+\fB\-t\fP \fItype\fP, \fB\-\-type\fP=\fItype\fP
+指定された \fItype\fP を含む
+SELinux のセキュリティ・コンテキストでコマンドを実行する。
+\fItype\fP が指定されていない場合は、ロールからデフォルトのタイプを推測する。
+.TP  12n
+\fB\-U\fP \fIuser\fP, \fB\-\-other\-user\fP=\fIuser\fP
+\fBsudo\fP を実行しているユーザではなく、
+\fIuser\fP というユーザの権限の一覧を表示するために、
+\fB\-l\fP オプションと組み合わせて使用する。自分以外のユーザの権限の表示は、
+セキュリティポリシーによって禁止されているかもしれない。
+\fIsudoers\fP ポリシーでこのオプションの使用が認められているのは、
+root ユーザを別にすれば、現在使用中のホストで許可するコマンドに
+ALL が指定してあるユーザだけである。
+.TP  12n
+\fB\-u\fP \fIuser\fP, \fB\-\-user\fP=\fIuser\fP
+コマンドをデフォルトの変身対象ユーザ (通常は \fIroot\fP)
+以外のユーザとして実行する。\fIuser\fP に指定するのは、ユーザ名でもよく、
+\&'#' 記号を頭に付けたユーザ ID 番号 (UID) でもよい
+(たとえば、UID が 0 なら、#0 と指定する)。多くのシェルでは、
+UID の資格でコマンドを実行するには、
 \&'#' をバックスラッシュ ('\e') でエスケープしなければならない。
-セキュリティ・ポリシーによっては、使用できる \fIuid\fR
-をパスワード・データベースに記載されているものに限定していることもある。
-\&\fIsudoers\fR ポリシーでは、
-\&\fItargetpw\fR オプションが設定されていないかぎり、
-パスワード・データベースに存在しない \fIuid\fR も認めている。
-他のセキュリティ・ポリシーでは、これは許されないかもしれない。
-.IP "\-V" 12
-.IX Item "-V"
-\&\fB\-V\fR (\fIversion\fR) オプションを指定すると、
-\&\fBsudo\fR はそのバージョン文字列を、セキュリティ・ポリシー・プラグインや
-I/O プラグインのバージョン文字列とともに表示する。
-\&\fBsudo \-V\fR を実行するユーザがあらかじめ root になっている場合は、
-\&\fIsudo\fR がビルドされたときに configure
-スクリプトに渡された引数が表示される。また、プラグインについても、
+セキュリティポリシーによっては、使用できる UID
+をパスワード・データベースに登録されているものに限定していることもある。
+\fIsudoers\fP ポリシーでは、\fItargetpw\fP オプションが設定されていないかぎり、
+パスワード・データベースに存在しない UID も認めている。
+他のセキュリティポリシーでは、それは許されないかもしれない。
+.TP  12n
+\fB\-V\fP, \fB\-\-version\fP
+\fBsudo\fP のバージョン文字列を、セキュリティポリシー・プラグインや
+入出力プラグインのバージョン文字列とともに表示する。
+\fBsudo\fP を実行するユーザがあらかじめ root になっている場合は、
+\fBsudo\fP がビルドされたときに configure スクリプトに渡された引き数が表示される。
+プラグインについては、
 デフォルト・オプションのようなより詳細な情報が表示されるかもしれない。
-.IP "\-v" 12
-.IX Item "-v"
-\&\fB\-v\fR (\fIvalidate\fR) オプションを指定すると、\fBsudo\fR は
+.TP  12n
+\fB\-v\fP, \fB\-\-validate\fP
 ユーザの保存された認証情報を更新する。このとき、必要ならば、
-パスワードによる認証を行う。\fIsudoers\fR プラグインでは、
-このオプションによって \fBsudo\fR のタイムアウト時間がもう
-\&\f(CW\*(C`5\*(C'\fR 分間 (あるいは、何分であれ、\fIsudoers\fR
-で設定されたタイムアウト時間) 伸びるが、
-このオプションがコマンドを実行することはない。
-すべてのセキュリティ・ポリシーが認証情報の一時保存に対応しているわけではない。
-.IP "\-\-" 12
-\&\fB\-\-\fR オプションがあると、
-\&\fBsudo\fR はそこでコマンドライン引き数の処理をやめる。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1"
-このほか、sudo-1.8.4 では使用できなくなくなったが、sudo-1.8.3 には \fB\-D\fR
-というオプションも存在した。ご参考のため挙げておくと、
-次のようなものである。
-.RS 8
-.IP "\-D \fIlevel\fR" 12
-.IX Item "-D level"
-\&\fBsudo\fR そのもの、及び \fBsudo\fR プラグインのデバッグを有効にする。
-\&\fIlevel\fR には 1 から 9 までの値を指定できる。
-.RE
-.PP
-さらに、コマンドのためにセットしたい環境変数も、\fB\s-1VAR\s0\fR=\fIvalue\fR、
-たとえば \fB\s-1LD_LIBRARY_PATH\s0\fR=\fI/usr/local/pkg/lib\fR
-といった形でコマンドラインから渡すことができる。
-コマンドラインから渡される変数は、通常の環境変数と同じ制限の対象になるが、
-一つだけ重要な違いがある。\fIsudoers\fR で \fIsetenv\fR
-オプションが設定されているか、実行されるコマンドに
-\&\f(CW\*(C`SETENV\*(C'\fR タグがついているか、
-あるいは、マッチするコマンドが \f(CW\*(C`ALL\*(C'\fR である場合は、
-ユーザがほかの状況でなら禁じられているような変数をセットすることができるのだ。
-詳細については \fIsudoers\fR\|(5) を参照してほしい。
-.SH "プラグイン"
-.IX Header "PLUGINS"
-プラグインは \fI/etc/sudo.conf\fR の内容に基づいて、動的にロードされる。
-\&\fI/etc/sudo.conf\fR が存在しない場合や、存在しても
-\&\f(CW\*(C`Plugin\*(C'\fR の行がない場合は、
-\&\fBsudo\fR はこれまでどおり、
-\&\fIsudoers\fR のセキュリティ・ポリシーと I/O ロギングを使用する。
-それは、次のように \fI/etc/sudo.conf\fR ファイルに記述するのと同じことである。
-.PP
-.Vb 10
-\& #
-\& # Default /etc/sudo.conf file
-\& #
-\& # 書式:
-\& #   Plugin plugin_name plugin_path
-\& #   Path askpass /path/to/askpass
-\& #   Path noexec /path/to/noexec.so
-\& #   Debug sudo /var/log/sudo_debug all@warn
-\& #   Set disable_coredump true
-\& #
-\& # The plugin_path が絶対パスでない場合は、 /usr/local/libexec からの
-\& # 相対パスである。、
-\& # plugin_name は、プラグイン中の、プラグインのインターフェース構造を
-\& # 含むグローバルシンボルと同じものである。
-\& #
-\& Plugin sudoers_policy sudoers.so
-\& Plugin sudoers_io sudoers.so
-.Ve
-.PP
-\&\f(CW\*(C`Plugin\*(C'\fR 行は、キーワード \f(CW\*(C`Plugin\*(C'\fR に始まり、
-\&\fIsymbol_name\fR と \fIpath\fR が続く。
-\&\fIpath\fR は、プラグインを含む共有オブジェクト・ファイルへのパスである。
-\&\fIsymbol_name\fR はプラグイン共有オブジェクト中の
-\&\f(CW\*(C`policy_plugin\*(C'\fR 構造体や \f(CW\*(C`io_plugin\*(C'\fR
-構造体の名前である。 \fIpath\fR は絶対パスでも相対パスでもよい。
-相対パスの場合は、
-\&\fI/usr/local/libexec\fR ディレクトリを基点にした相対パスである。
-\&\fIpath\fR の後ろに他のパラメータを付けても、無視される。
-\&\f(CW\*(C`Plugin\*(C'\fR や \f(CW\*(C`Path\*(C'\fR で始まらない行は、
-ただ単に無視される。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote2"
-sudo-1.8.3 までは、上記の説明どおり、キーワードに \f(CW\*(C`Plugin\*(C'\fR と
-\&\f(CW\*(C`Path\*(C'\fR しか使用できなかった。
-.Sp
-sudo-1.8.4 以上では、上記の書式にもあるように、\f(CW\*(C`Debug\*(C'\fR や
-\&\f(CW\*(C`Set\*(C'\fR で始まる行も有効である。「デバッグ・フラグ」や
-「セキュリティに関する注意点」セクションも参照していただきたい。
-.Sp
-また、sudo-1.8.5 以上では、\fIpath\fR の後ろにパラメータを続けて書くことで
-(複数個あるときは空白で区切る)、
-それをオプションとしてプラグインに渡すことが可能になっている。
-たとえば、以下のようにだ。
-.Sp
-\&  Plugin sudoers_policy sudoers.so sudoers_file=/etc/sudoers sudoers_uid=0 sudoers_gid=0 sudoers_mode=0440
-.PP
-詳細については、\fIsudo_plugin\fR\|(8) のマニュアルをご覧になること。
-.SH "パス"
-.IX Header "PATHS"
-\&\f(CW\*(C`Path\*(C'\fR 行は、キーワード \f(CW\*(C`Path\*(C'\fR に始まり、
-設定するパスの名前とその値が続く。一例を挙げる。
-.PP
-.Vb 2
-\& Path noexec /usr/local/libexec/sudo_noexec.so
-\& Path askpass /usr/X11R6/bin/ssh\-askpass
-.Ve
-.PP
-次のようなプラグインではないプログラムやライブラリのパスを
-\&\fI/etc/sudo.conf\fR ファイルで設定することができる。
-.IP "askpass" 16
-.IX Item "askpass"
-端末が利用できないときに、
-ユーザのパスワードを読み込むのに使用するヘルパー・プログラムの絶対パス。
-たとえば、 \fBsudo\fR がグラフィカルな (つまり、テキストベースではない)
-アプリケーションから実行される場合がこれに当たる。
-\&\fIaskpass\fR で指定されたプログラムは、
-自分に渡された引数をプロンプトとして表示し、
-ユーザのパスワードを標準出力に書き出すべきである。
-\&\fIaskpass\fR の値は、環境変数
-\&\f(CW\*(C`SUDO_ASKPASS\*(C'\fR によって上書きすることができる。
-.IP "noexec" 16
-.IX Item "noexec"
-ライブラリ関数 \fIexecv()\fR, \fIexecve()\fR, \fIfexecve()\fR のダミー版
-(単にエラーを返すだけの関数) が入っている共有ライブラリの絶対パス。
-これは \f(CW\*(C`LD_PRELOAD\*(C'\fR
-やそれに相当するものをサポートしているシステムで
-\&\fInoexec\fR 機能を実現するために使用される。
-デフォルトでは  \fI/usr/local/libexec/sudo_noexec.so\fR になっている。
-.SH "デバッグ・フラグ (sudo-1.8.4 の新機能)"
-.IX Header "DEBUG FLAGS"
-バージョン 1.8.4 以上の \fBsudo\fR は、
-デバッグのための柔軟な枠組みに対応しており、
-問題が発生したとき、\fBsudo\fR の内部で何が起きているかを突き止めるために、
-それを利用することができる。
-.PP
-\&\f(CW\*(C`Debug\*(C'\fR 行の構成は、\f(CW\*(C`Debug\*(C'\fR
-というキーワードに始まり、それに、デバッグ対象のプログラム名
-(\fBsudo\fR, \fBvisudo\fR, \fBsudoreplay\fR) とデバッグファイル名が続き、
-最後にコンマで区切ったデバッグ・フラグのリストが来るという形になっている
-(訳注: \f(CW\*(C`Debug\*(C'\fR 行も \fI/etc/sudo.conf\fR に記載する)。
-デバッグフラグのシンタクスは、\&\fBsudo\fR と \fIsudoers\fR プラグインでは、
-\&\fIsubsystem\fR@\fIpriority\fR という書式を用いるが、
-「\f(CW\*(C`,\*(C'\fR」というコマンドを含まないかぎり、
-プラグインが別の書式を使っても構わない。
-.PP
-\"O For instance:
-一例を挙げよう。
-.PP
-.Vb 1
-\& Debug sudo /var/log/sudo_debug all@warn,plugin@info
-.Ve
-.PP
-上記のように指定すれば、\fIwarn\fR レベル以上のすべてのデバッグメッセージを
-ログに記録することになる。さらに、plugin サブシステムに関しては、
-\&\fIinfo\fR レベルのメッセージも記録する。 
-.PP
-現在のところ、一プログラムあたり一行の \f(CW\*(C`Debug\*(C'\fR
-エントリしか使用できない。
-プログラム名が \f(CW\*(C`sudo\*(C'\fR の \f(CW\*(C`Debug\*(C'\fR 行は、
-\&\fBsudo\fR フロントエンド、\fBsudoedit\fR、及び \fBsudo\fR
-のプラグインによって共有される。将来のリリースでは、プラグインごとの 
-\&\f(CW\*(C`Debug\*(C'\fR 行をサポートするかもしれない。
-また、一つのプログラムに対する複数のデバッグファイルをサポートするかもしれない。
-.PP
-\&\fBsudo\fR フロントエンドが使用する priority (重大度) を
-深刻なものから挙げると、\fIcrit\fR, \fIerr\fR, \fIwarn\fR, \fInotice\fR,
-\&\fIdiag\fR, \fIinfo\fR, \fItrace\fR, \fIdebug\fR である。
-ある  priority を指定すると、
-それよりも深刻なすべての priority も同時に指定したことになる。
-たとえば、\fInotice\fR という priority を指定すれば、 \fInotice\fR
-レベル以上のデバッグメッセージがログに記録されるわけである。
-.PP
-\&\fBsudo\fR では以下のサブシステムが使用できる。
-.IP "\fIall\fR" 10
-.IX Item "all"
-あらゆるサブシステムにマッチする
-.IP "\fIargs\fR" 10
-.IX Item "args"
-コマンドライン引数の処理
-.IP "\fIconv\fR" 10
-.IX Item "conv"
-ユーザとのやりとり
-.IP "\fIedit\fR" 10
-.IX Item "edit"
-sudoedit
-.IP "\fIexec\fR" 10
-.IX Item "exec"
-コマンドの実行
-.IP "\fImain\fR" 10
-.IX Item "main"
-\&\fBsudo\fR のメイン関数
-.IP "\fInetif\fR" 10
-.IX Item "netif"
-ネットワーク・インターフェースの取扱い
-.IP "\fIpcomm\fR" 10
-.IX Item "pcomm"
-プラグインとのやりとり
-.IP "\fIplugin\fR" 10
-.IX Item "plugin"
-プラグインの設定
-.IP "\fIpty\fR" 10
-.IX Item "pty"
-擬似 tty に関連したコード
-.IP "\fIselinux\fR" 10
-.IX Item "selinux"
-SELinux に特有の取扱い
-.IP "\fIutil\fR" 10
-.IX Item "util"
-ユーティリティ関数群
-.IP "\fIutmp\fR" 10
-.IX Item "utmp"
-utmp の取扱い
-.SH "返り値"
-.IX Header "RETURN VALUES"
-プログラムの実行に成功した場合、\fBsudo\fR が返す終了ステータスは、
-実行したプログラムの終了ステータスそのものである。
-.PP
-そうでない場合、設定やパーミッションに問題があったり、
-\&\fBsudo\fR が指定されたコマンドを実行できなかったりしたときは、
-\&\fBsudo\fR は返り値 1 で終了する。
-後者の場合は、エラーメッセージが標準エラーに表示される。
-また、\fBsudo\fR がユーザの \f(CW\*(C`PATH\*(C'\fR
-にある一つ以上のエントリを \fIstat\fR\|(2) できなかったときも、
-エラーが標準エラーに出力される (ただし、そのディレクトリが存在しなかったり、
-実際にはディレクトリでなかったりした場合は、
-そのエントリは無視され、エラーは表示されない)。そうしたことは、
-正常な環境では起きないはずのことである。\fIstat\fR\|(2) が
-\&\*(L"permission denied\*(R" を返す理由で一番よくあるのは、
-ユーザーがオートマウントを使用していて、\f(CW\*(C`PATH\*(C'\fR
-にあるディレクトリの一つが目下到達不可能なマシンにある場合だ。
-.SH "セキュリティに関する注意点"
-.IX Header "SECURITY NOTES"
-\&\fBsudo\fR は外部のコマンドをできるだけ安全に実行しようとする。
-.PP
-偽コマンドの実行 (command spoofing) を防止するため、
-\&\fBsudo\fR はコマンドを捜してユーザの \s-1PATH\s0 を検索する際に、
-\&\*(L".\*(R" と "" (どちらもカレントディレクトリを意味する) を最後に調べる
-(そのどちらか、あるいは両方が \s-1PATH\s0 中に存在すればだが)。
-とは言え、環境変数 \f(CW\*(C`PATH\*(C'\fR そのものは変更されずに、
-そのまま \fBsudo\fR が実行するプログラムに渡されることに注意してほしい。
-.PP
-\&\fBsudo\fR は通常、
-自分が明示的に実行したコマンドしかログに記録しないことに気を付けてほしい。
-ユーザが \f(CW\*(C`sudo su\*(C'\fR や \f(CW\*(C`sudo sh\*(C'\fR
-といったコマンドを実行した場合、そのシェルから続いて実行されるコマンドは
-\&\fBsudo\fR のセキュリティ・ポリシーの対象にならない。
-シェル・エスケープを提供するコマンドについても (たいていのエディタが
-それに含まれる) 同じことが言える。
-確かに、I/O ロギングが有効になっている場合は、
-シェルから続いて実行されるコマンドも、その入力や出力を記録されることになるが、
-従来からあるログに記録されるわけではないのである。
-こうしたことから、ユーザに \fBsudo\fR 経由でコマンドの使用を許すときは、
-そのコマンドが事実上ルート・シェルをうっかりユーザに与えていないかを、
-念には念を入れて確認しなければならない。もっと詳しいことが知りたかったら、
-\&\fIsudoers\fR\|(5) の「シェル・エスケープを防止する」
-のセクションを御覧になるとよい。
+ユーザの認証を行う。\fIsudoers\fP プラグインでは、このオプションによって
+\fBsudo\fP のタイムアウト時間がもう 5 分間 (これがデフォルトのタイムアウト時間)
+伸びるが、このオプションがコマンドを実行することはない。
+すべてのセキュリティポリシーが認証情報の一時保存に対応しているわけではない。
+.TP  12n
+\fB\-\-\fP
+\fB\-\-\fP オプションがあると、
+\fBsudo\fP はそこでコマンドライン引き数の処理をやめる。
+.PP
+さらに、コマンドのために設定したい環境変数も、\fIVAR\fP=\fIvalue\fP、たとえば
+LD_LIBRARY_PATH=\fI/usr/local/pkg/lib\fP
+といった形でコマンドラインで渡すことができる。コマンドラインで渡す環境変数は、
+セキュリティポリシー・プラグインによって課される制限の対象になる。
+\fIsudoers\fP ポリシーの場合、コマンドラインで渡される環境変数は、
+通常の環境変数と同じ制限の対象になるが、一つだけ重要な相違がある。
+\fIsudoers\fP で \fIsetenv\fP オプションが設定されているか、実行するコマンドに
+SETENV タグが付いているか、あるいは、マッチするコマンドが ALL である場合は、
+ユーザは他の状況なら禁じられているような環境変数を設定することができるのだ。
+詳細については、sudoers(5) のマニュアルを参照していただきたい。
+.SH コマンドの実行
+\fBsudo\fP がコマンドを実行するとき、
+セキュリティポリシーによってコマンドの実行環境が設定される。たいていの場合、
+実ユーザ、実効ユーザ、実グループ、実効グループ、及びその ID 番号が、変身対象ユーザの、
+パスワード・データベースに記載されているものと同一になるようにセットされる。
+所属グループのリストも、(\fB\-P\fP オプションが指定されていないかぎり)
+グループ・データベースに基づいて、初期化される。
+.PP
+セキュリティポリシーは、以下のパラメータを設定することができる。
+.TP  4n
+\fB\(bu\fP
+実ユーザ ID と実効ユーザ ID
+.TP  4n
+\fB\(bu\fP
+実グループ ID と実効グループ ID
+.TP  4n
+\fB\(bu\fP
+補助グループ ID
+.TP  4n
+\fB\(bu\fP
+環境のリスト
+.TP  4n
+\fB\(bu\fP
+カレント・ワーキング・ディレクトリ
+.TP  4n
+\fB\(bu\fP
+ファイル作成時のモード・マスク (umask)
+.TP  4n
+\fB\(bu\fP
+SELinux の role と type
+.TP  4n
+\fB\(bu\fP
+Solaris の project
+.TP  4n
+\fB\(bu\fP
+Solaris の privilege
+.TP  4n
+\fB\(bu\fP
+BSD のログインクラス (login class)
+.TP  4n
+\fB\(bu\fP
+スケジューリング優先度 (nice value とも言う)
+.SS プロセス・モデル
+\fBsudo\fP は、コマンドを実行するとき、まず fork(2) を呼び、
+実行環境を上記のように設定してから、子プロセスで execve システムコールを呼び出す。
+メインの \fBsudo\fP プロセスは、コマンドが完了するまで wait し、完了したら、
+コマンドの終了ステータスをセキュリティポリシーの close 関数に渡してから、
+終了する。入出力ロギング・プラグインが設定されている場合や、
+セキュリティポリシーが明示的にそれを要求している場合は、
+擬似端末 ("pty") が新規に作成され、二つ目の \fBsudo\fP プロセスが、
+既に存在しているユーザの pty と、コマンドがそこで実行されている新しい pty との間で、
+ジョブ制御シグナルを中継するために使用される。
+この二つ目の \fBsudo\fP プロセスによって、たとえば、
+コマンドのサスペンドやレジュームといったことが可能になるのである。
+この仕組みがなければ、コマンドは、POSIX で "orphaned process group"
+と言われる状態に陥り、どんなジョブ制御シグナルも受け取れないことになってしまうだろう。
+なお、特殊ケースとして次のことがある。ポリシー・プラグインが
+close 関数を定義していず、しかも、pty が要求されていない場合は、
+\fBsudo\fP は fork(2) を最初に呼ぶことをせず、直接コマンドを実行する。
+\fIsudoers\fP ポリシー・プラグインで close 関数が定義されることになるのは、
+入出力ロギングが有効か、pty が要求されているか、\fIpam_session\fP または
+\fIpam_setcred\fP が有効な場合だけである。PAM を使用しているシステムでは、
+デフォルトで \fIpam_session\fP と \fIpam_setcred\fP
+が有効になることに注意していただきたい。
+(訳注: 上記の「特殊ケースとして」以下についてだが、最近の \fBsudo\fP では、
+\fIsudoers\fP ポリシーにおける \fIpam_session\fP や \fIpam_setcred\fP
+の有効/無効に関係なく、pty が要求されていない場合は、
+fork せずに直接コマンドを実行するようである。)
+.SS シグナルの処理
+コマンドが \fBsudo\fP プロセスの子プロセスとして実行されているとき、
+\fBsudo\fP は自分が受け取ったシグナルをそのコマンドに中継する。
+ただし、SIGINT や SIGQUIT シグナルが中継されるのは、
+そのコマンドが新たに開いた pty で実行されているときか、
+シグナルがカーネルではなく、ユーザ・プロセスによって送出されたときだけである。
+そうなっていることで、ユーザが control\-C を入力するたびに、
+コマンドが SIGINT シグナルを二重に受け取らないようにしているのだ。
+SIGSTOP や SIGKILL のようないくつかのシグナルは、
+捕獲できないので、コマンドに中継されることもない。
+だから、\fBsudo\fP によって実行されているコマンドをサスペンドしたかったら、
+原則として、SIGSTOP ではなく、SIGTSTP コマンドを使用するべきである。
+.PP
+\fBsudo\fP は原則として、自分が受け取ったシグナルを子プロセスに中継するわけだが、
+自分が実行しているコマンドから来たシグナルは、中継しないという例外がある。
+コマンドが意図に反して自分自身を殺してしまわないようにしているのだ。
+システムによっては、reboot(8) コマンドが、システムをリブートする前に、
+自分自身を除くすべてのノン・システム・プロセスに SIGTERM を送るものがある。
+そうした場合も、中継の抑制があるため、\fBsudo\fP は自分が受け取った
+SIGTERM シグナルを reboot(8) に送り返さない。もし送り返すようになっていたら、
+システムが実際にリブートする前に reboot(8) が終了して、
+システムがシングルユーザ・モードによく似た半分死んだ状態 (half\-dead state)
+に陥ってしまうだろう。とは言え、注意していただきたいが、
+この中継の抑制が行われるのは、\fBsudo\fP によって直接実行されるコマンドに対してのみであり、
+そのコマンドが生成するかもしれない他のどんなプロセスに対しても当てはまらない。
+それ故、reboot(8) や shutdown(8) を呼び出すスクリプトを
+\fBsudo\fP 経由で実行すると、システムがそうしたわけのわからない状態に陥ることがある。
+reboot(8) や shutdown(8) の実行に \fBexec\fP() ファミリーの関数ではなく、
+\fBsystem\fP() 関数を使用していると、
+(\fBsystem\fP() は、呼び出しプロセスとコマンドの間にシェルを挟むため)
+そうしたことが起こりかねないのだ。
+.PP
+入出力ロギング・プラグインがロードされていない場合に、
+ポリシー・プラグインが \fBclose\fP() 関数を定義してもいず、
+コマンドのタイムアウトを設定していることもなく、コマンドを新たに開いた pty
+で実行することを要求してもいなかったならば、\fBsudo\fP は、
+コマンドを子プロセスとしてではなく、直接実行するかもしれない。
+.SS プラグイン
+プラグインは、sudo.conf(5) ファイルの Plugin 命令 (directive)
+で指定することができる。プラグインは、(システムがサポートしていれば)
+動的な共有オブジェクト (dynamic shared object) としてロードすることもできるし、
+また、\fBsudo\fP のバイナリに直接組み込むこともできる。sudo.conf(5)
+ファイルが存在しない場合や、sudo.conf(5) ファイルに Plugin の行がない場合は、
+\fBsudo\fP は従来どおり、\fIsudoers\fP のセキュリティポリシーと入出力ロギングを使用することになる。
+\fI/etc/sudo.conf\fP ファイルの詳細については、
+sudo.conf(5) のマニュアルを参照していただきたい。
+\fBsudo\fP プラグインの設計についての詳しい情報は、
+sudo_plugin(5) のマニュアルにある。
+.SH 終了ステータス
+コマンドの実行に成功した場合、\fBsudo\fP が返す終了ステータスは、
+実行したプログラムの終了ステータスである。
+コマンドがシグナルを受け取ることによって終了した場合は、
+\fBsudo\fP はコマンドを終了させたシグナルを自分自身に送るようになっている。
+.PP
+それ以外の場合、設定やパーミッションに問題があったり、
+\fBsudo\fP が指定されたコマンドを実行できなかったりしたときは、
+\fBsudo\fP は終了ステータス 1 で終了する。後者の場合は、
+エラーメッセージが標準エラーに表示される。\fBsudo\fP がユーザの
+PATH にある一つ以上のエントリを stat(2) できなかったときも、
+エラーが標準エラーに表示される (ただし、PATH
+中のディレクトリが存在しなかったときや、実際にはディレクトリでなかったときは、
+そのエントリは無視され、エラーは表示されない)。そういったことは、
+通常の状態では起きるはずがないことである。stat(2) が "permission denied"
+を返す理由で一番よくあるのは、ユーザがオートマウンターを使用していて、
+PATH 中のディレクトリの一つが目下到達不可能なマシンにある場合だ。
+.SH セキュリティに関するメモ
+\fBsudo\fP は、外部のコマンドをできるだけ安全に実行しようとする。
+.PP
+偽コマンドの実行 (command spoofing) を防止するため、\fBsudo\fP
+はコマンドを捜してユーザの PATH を検索する際に、"." や ""
+(どちらもカレント・ディレクトリを意味する) を最後に調べる (そのどちらか、
+あるいは両方が、PATH 中に存在すればだが)。とは言え、環境変数 PATH そのものは変更されずに、
+そのまま \fBsudo\fP が実行するプログラムに渡されることに注意していただきたい。
+.PP
+次のようなファイルを実行する \fBsudo\fP 権限を、絶対にユーザに許可してはいけない。
+すなわち、そのユーザに書き込みできるファイルや、
+そのユーザに書き込みできるディレクトリにあるファイルを実行する権限である。
+もし、ユーザがコマンドを書き換えたり、別のコマンドと置き換えたりできるならば、
+そのユーザは自分が実行できるコマンドに何でも追加できるわけで、
+それを制限する方法はまったくないのだ。
+.PP
+\fBsudo\fP は通常、自分が明示的に実行するコマンドしかログに記録しないことに注意していただきたい。
+ユーザが sudo su や sudo sh といったコマンドを実行した場合、
+そのシェルからさらに実行されるコマンドは、
+\fBsudo\fP のセキュリティポリシーの対象にはならないのだ。
+同じことが、シェル・エスケープを提供するコマンド (たいていのエディターが、
+それに含まれる) についても言える。確かに、入出力ロギングが有効になっている場合は、
+シェルからさらに実行されるコマンドも、その入力や出力を記録されることになるが、
+従来からあるログファイルに記録されるわけではないのである。従って、
+ユーザに \fBsudo\fP 経由で、あるコマンドを実行する権限を与えるときは、
+そのコマンドが事実上ルート・シェルをユーザにうっかり与えていないことを、
+念には念を入れて確認しなければならない。もっと詳しいことをお知りになりたかったら、
+sudoers(5) のマニュアルの「シェル・エスケープを防止する」というセクションをご覧になるとよい。
 .PP
 セキュリティ上問題になりかねない情報を漏洩しないように、
-\&\fBsudo\fR はデフォルトでは、自己を実行中のコアダンプを抑止している
-(指定されたコマンドを実行するときには、コアダンプを有効にし直すのである)。
-\&\fBsudo\fR そのもののクラッシュをデバッグするために、
-コアダンプを有効に戻したいならば、
-\&\fI/etc/sudo.conf\fR ファイルで \*(L"disable_coredump\*(R" を
-false にすればよい。(訳注: キーワード Set は sudo-1.8.4 以上でなければ、
-使用できない。)
-.PP
-.Vb 1
-\& Set disable_coredump false
-.Ve
-.PP
-注意してほしいのは、たいていのオペレーティングシステムが、
-デフォルトでは setuid プログラムのコアダンプを抑止していることだ。
-\&\fBsudo\fR もそうしたプログラムの一つである。
-そこで、実際に \fBsudo\fR のコアダンプ・ファイルを取得するには、
-setuid プロセスに対するコアダンプを有効にする必要があるかもしれない。
-\&\s-1BSD\s0 や Linux のシステムでは、これは sysctl コマンドによって行われる。 
-Solaris では coreadm コマンドが使用できる。
-.SH "環境変数"
-.IX Header "ENVIRONMENT"
-\&\fBsudo\fR は以下の環境変数を利用する。実行するコマンドの環境の内容は、
-セキュリティ・ポリシーによる制御の対象になる。
-.ie n .IP "\*(C`EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
-.IX Item "EDITOR"
-環境変数 \f(CW\*(C`SUDO_EDITOR\*(C'\fR や \f(CW\*(C`VISUAL\*(C'\fR
-が設定されていないとき、
-\&\fB\-e\fR (sudoedit) モードで使用するデフォルトのエディタ
-.ie n .IP "\*(C`MAIL\*(C'" 16
-.el .IP "\f(CW\*(C`MAIL\*(C'\fR" 16
-.IX Item "MAIL"
-\&\fB\-i\fR オプションが指定された場合や、
-\&\fIsudoers\fR で \fIenv_reset\fR が有効になっている場合に、
-変身対象ユーザのメールスプールにセットされる
-.ie n .IP "\*(C`HOME\*(C'" 16
-.el .IP "\f(CW\*(C`HOME\*(C'\fR" 16
-.IX Item "HOME"
-\&\fB\-i\fR や \fB\-H\fR オプションが指定された場合や、
-\&\fIsudoers\fR で \fIenv_reset\fR や \fIalways_set_home\fR
-が設定されている場合、あるいは \fIsudoers\fR で \fIset_home\fR が設定され、
-かつ \fB\-s\fR オプションが指定された場合に、
-変身対象ユーザのホームディレクトリにセットされる
-.ie n .IP "\*(C`PATH\*(C'" 16
-.el .IP "\f(CW\*(C`PATH\*(C'\fR" 16
-.IX Item "PATH"
-セキュリティ・ポリシーによって上書きされるかもしれない
-.ie n .IP "\*(C`SHELL\*(C'" 16
-.el .IP "\f(CW\*(C`SHELL\*(C'\fR" 16
-.IX Item "SHELL"
-\&\fB\-s\fR オプションで起動するシェルを決めるのに使用する
-.ie n .IP "\*(C`SUDO_ASKPASS\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_ASKPASS\*(C'\fR" 16
-.IX Item "SUDO_ASKPASS"
-ターミナルが利用できない場合や、
-\&\f(CW\*(C`\-A\*(C'\fR オプションが指定されている場合に、
-パスワードを読み込むのに使用するヘルパープログラムのパスを指定する
-.ie n .IP "\*(C`SUDO_COMMAND\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_COMMAND\*(C'\fR" 16
-.IX Item "SUDO_COMMAND"
-sudo が実行するコマンドにセットされる
-.ie n .IP "\*(C`SUDO_EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_EDITOR\*(C'\fR" 16
-.IX Item "SUDO_EDITOR"
-\&\fB\-e\fR (sudoedit) モードで使用するデフォルトのエディタ
-.ie n .IP "\*(C`SUDO_GID\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_GID\*(C'\fR" 16
-.IX Item "SUDO_GID"
-sudo を起動したユーザのグループ \s-1ID\s0 にセットされる
-.ie n .IP "\*(C`SUDO_PROMPT\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_PROMPT\*(C'\fR" 16
-.IX Item "SUDO_PROMPT"
-デフォルトのパスワード・プロンプトとして使用する
-.ie n .IP "\*(C`SUDO_PS1\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_PS1\*(C'\fR" 16
-.IX Item "SUDO_PS1"
-設定すると、
-実行されるプログラムの \f(CW\*(C`PS1\*(C'\fR がこの変数の値にセットされる
-.ie n .IP "\*(C`SUDO_UID\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_UID\*(C'\fR" 16
-.IX Item "SUDO_UID"
-sudo を起動したユーザのユーザ \s-1ID\s0 にセットされる
-.ie n .IP "\*(C`SUDO_USER\*(C'" 16
-.el .IP "\f(CW\*(C`SUDO_USER\*(C'\fR" 16
-.IX Item "SUDO_USER"
-sudo を起動したユーザのログイン名にセットされる
-.ie n .IP "\*(C`USER\*(C'" 16
-.el .IP "\f(CW\*(C`USER\*(C'\fR" 16
-.IX Item "USER"
-変身対象ユーザにセットされる (オプション \fB\-u\fR が指定されていなければ、
-root になる)
-.ie n .IP "\*(C`VISUAL\*(C'" 16
-.el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
-.IX Item "VISUAL"
-変数 \f(CW\*(C`SUDO_EDITOR\*(C'\fR が設定されていない場合に、
-\&\fB\-e\fR (sudoedit) モードで使用するデフォルトのエディタ
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudo.conf\fR" 24
-.el .IP "\fI/etc/sudo.conf\fR" 24
-.IX Item "/etc/sudo.conf"
-\&\fBsudo\fR フロントエンドの設定ファイル
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote3"
-念のため、次の二つを追加しておく。詳細については \fIsudoers\fR\|(5)
-をご覧いただきたい。
-.RS 4
-.IP "\fI/etc/sudoers\fR" 20
-.IX Item "/etc/sudoers"
-誰が何を実行できるかを設定するファイル
-.IP "\fI/var/lib/sudo\fR" 20
-.IX Item "/var/lib/sudo"
-\&\fBsudo\fR が認証情報の保存に使用するタイムスタンプを置く、
-デフォルトのディレクトリ
+\fBsudo\fP はデフォルトでは、自己を実行中のコアダンプを抑止している
+(指定されたコマンドを実行するときに、コアダンプを有効にし直すのだ)。
+この動作は昔からのものであり、たいていのオペレーティングシステムが
+setuid プロセスにデフォルトではコアダンプを許していた時代からそうなっていた。
+\fBsudo\fP 自体のクラッシュをデバッグするためにコアダンプを有効に戻したいならば、
+以下のように、sudo.conf(5) ファイルで "disable_coredump" を
+false にすればよい。
+.nf
+.sp
+.RS 6n
+Set disable_coredump false
 .RE
-.SH "用例"
-.IX Header "EXAMPLES"
-注意: 以下の例は、
-セキュリティ・ポリシーが適切に設定されていることを前提にしている。
+.fi
 .PP
-読み取り不可のディレクトリのファイル一覧を取得する。
+詳細については、sudo.conf(5) のマニュアルを参照していただきたい。
+.SH 環境変数
+\fBsudo\fP は以下の環境変数を利用する。
+実行するコマンドの環境が実際にどうなるかは、セキュリティポリシー次第である。
+.TP  17n
+EDITOR
+環境変数 SUDO_EDITOR や VISUAL が設定されていないとき、
+\fB\-e\fP (sudoedit) モードで使用するデフォルトのエディタ。
+.TP  17n
+MAIL
+\fB\-i\fP オプションが指定された場合や、\fIsudoers\fP で \fIenv_reset\fP
+が有効になっている場合には (\fIenv_keep\fP のリストに
+MAIL が存在しないかぎり)、変身対象ユーザのメールスプールにセットされる。
+.TP  17n
+HOME
+次の場合には、変身対象ユーザのホームディレクトリにセットされる。
+\fB\-i\fP や \fB\-H\fP オプションが指定された場合、
+\fB\-s\fP オプションが指定され、かつ \fIsudoers\fP で \fIset_home\fP が設定されている場合、
+\fIalways_set_home\fP が \fIsudoers\fP で有効になっている場合、
+あるいは、\fIenv_reset\fP が \fIsudoers\fP で有効になっていて、
+しかも \fIHOME\fP が \fIenv_keep\fP のリストに存在しない場合。
+.TP  17n
+LOGNAME
+次の場合には、変身対象ユーザのログイン名にセットされる。
+\fB\-i\fP オプションが指定された場合、
+\fIset_logname\fP オプションが \fIsudoers\fP で有効になっている場合、
+あるいは、\fIenv_reset\fP オプションが \fIsudoers\fP で有効になっていて、
+LOGNAME が \fIenv_keep\fP のリストに存在しない場合。
+.TP  17n
+PATH
+セキュリティポリシーによって上書きされるかもしれない。
+.TP  17n
+SHELL
+\fB\-s\fP オプションで起動するシェルを決めるのに使用する。
+.TP  17n
+SUDO_ASKPASS
+ターミナルが利用できない場合や、\fB\-A\fP オプションが指定された場合に、
+パスワードを読み込むのに使用するヘルパー・プログラムのパスを指定する。
+.TP  17n
+SUDO_COMMAND
+sudo が実行するコマンドにセットされる。
+.TP  17n
+SUDO_EDITOR
+\fB\-e\fP (sudoedit) モードで使用するデフォルトのエディタ。
+.TP  17n
+SUDO_GID
+sudo を起動したユーザのグループ ID にセットされる。
+.TP  17n
+SUDO_PROMPT
+デフォルトのパスワード・プロンプトとして使用する。
+.TP  17n
+SUDO_PS1
+設定すると、実行されるプログラムの PS1 がこの変数の値にセットされる。
+.TP  17n
+SUDO_UID
+sudo を起動したユーザのユーザ ID にセットされる。
+.TP  17n
+SUDO_USER
+sudo を起動したユーザのログイン名にセットされる。
+.TP  17n
+USER
+上で述べた LOGNAME と同じ値にセットされる。
+.TP  17n
+USERNAME
+USER と同じ。
+.TP  17n
+VISUAL
+SUDO_EDITOR が設定されていない場合に、\fB\-e\fP (sudoedit)
+モードで使用するデフォルトのエディタ。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+\fBsudo\fP フロントエンドの設定ファイル
+.SH 用例
+注意: 以下の例は、セキュリティポリシーが適切に設定されていることを前提にしている。
 .PP
-.Vb 1
-\& $ sudo ls /usr/local/protected
-.Ve
+読み取り不可のディレクトリのファイル一覧を取得する。
+.nf
+.sp
+.RS 6n
+$ sudo ls /usr/local/protected
+.RE
+.fi
 .PP
\83¦ã\83¼ã\82¶ yaz ã\81®ã\83\9bã\83¼ã\83 ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81®ã\83\95ã\82¡ã\82¤ã\83«ä¸\80覧ã\82\92å\8f\96å¾\97ã\81\97ã\81\9fã\81\84ã\81®ã\81 ã\81\8cã\80\81
-~yaz を含むファイルシステムが別のマシンにあって、
\83¦ã\83¼ã\82¶ yaz ã\81®ã\83\9bã\83¼ã\83 ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81®ã\83\95ã\82¡ã\82¤ã\83«ä¸\80覧ã\82\92å\8f\96å¾\97ã\81\99ã\82\8bã\80\82
+ただし、~yaz を含むファイルシステムが、別のマシンにあって、
 root でアクセスできるようにエクスポートされていない場合。
+.nf
+.sp
+.RS 6n
+$ sudo \-u yaz ls ~yaz
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-u yaz ls ~yaz
-.Ve
-.PP
-ユーザ www として \fIindex.html\fR ファイルを編集する。
-.PP
-.Vb 1
-\& $ sudo \-u www vi ~www/htdocs/index.html
-.Ve
+ユーザ www として \fIindex.html\fP ファイルを編集する。
+.nf
+.sp
+.RS 6n
+$ sudo \-u www vi ~www/htdocs/index.html
+.RE
+.fi
 .PP
 root と adm グループのユーザだけがアクセスできるシステムログを閲覧する。
+.nf
+.sp
+.RS 6n
+$ sudo \-g adm view /var/log/syslog
+.RE
+.fi
 .PP
-.Vb 1
-\& $ sudo \-g adm view /var/log/syslog
-.Ve
-.PP
-jim に変身してエディタを実行する。
-プライマリグループには別のグループを指定する。
-.PP
-.Vb 1
-\& $ sudo \-u jim \-g audio vi ~jim/sound.txt
-.Ve
+jim に変身してエディタを実行する。プライマリグループには別のグループを指定する。
+.nf
+.sp
+.RS 6n
+$ sudo \-u jim \-g audio vi ~jim/sound.txt
+.RE
+.fi
 .PP
 マシンをリブートする。
-.PP
-.Vb 1
-\& $ sudo shutdown \-r +15 "quick reboot"
-.Ve
+.nf
+.sp
+.RS 6n
+$ sudo shutdown \-r +15 "quick reboot"
+.RE
+.fi
 .PP
 /home パーティションに存在するディレクトリのディスク使用量リストを作成する。
-\&\f(CW\*(C`cd\*(C'\fR やファイル・リダイレクションがきちんと動作するように、
-コマンドをサブシェルで実行していることに注目してほしい。
-.PP
-.Vb 1
-\& $ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
-.Ve
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIgrep\fR\|(1), \fIsu\fR\|(1), \fIstat\fR\|(2),
-.if \n(LC \&\fIlogin_cap\fR\|(3),
-\&\fIpasswd\fR\|(5), \fIsudoers\fR\|(5), \fIsudo_plugin\fR\|(8), \fIsudoreplay\fR\|(8), \fIvisudo\fR\|(8)
-.SH "作者"
-.IX Header "AUTHORS"
-多数の人々が長年に渡って \fBsudo\fR の開発に取り組んできた。当バージョ
-ンは主として次の者が書いたコードからできている。
-.PP
-.Vb 1
-\&        Todd C. Miller
-.Ve
+cd やファイル・リダイレクションがきちんと動作するように、
+コマンドをサブシェルで実行している点に注目していただきたい。
+.nf
+.sp
+.RS 6n
+$ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
+.RE
+.fi
+.SH 参照項目
+su(1), stat(2), passwd(5), sudo.conf(5), sudoers(5), sudo_plugin(5),
+sudoreplay(8), visudo(8)
+.SH 履歴
+sudo の簡単な履歴については、\fBsudo\fP の配布に含まれている
+HISTORY ファイルをご覧いただきたい。
+(https://www.sudo.ws/history.html)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-\&\fBsudo\fR の開発に貢献してくださった方々のリストについては、
-\&\fBsudo\fR の配布に含まれる \s-1CONTRIBUTORS\s0 ファイルをご覧いただきたい
-(http://www.sudo.ws/sudo/contributors.html)。 
-.SH "履歴"
-.IX Header "HISTORY"
-\&\fBsudo\fR の簡単な履歴については、
-配布物中の \s-1HISTORY\s0 ファイルをご覧いただきたい
-(http://www.sudo.ws/sudo/history.html)。
-.SH "警告"
-.IX Header "CAVEATS"
-ユーザが \fBsudo\fR 経由で任意のコマンドを実行することを許可されているならば、
-そのユーザがルート・シェルを獲得するのを防止する簡単な方法はない。
-また、(エディタを含む) 多くのプログラムが、
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH 警告
+もし、ユーザが \fBsudo\fP 経由で任意のコマンドを実行することを許可されているなら、
+そのユーザがルート・シェルを手に入れるのを防止する簡単な方法は存在しない。
+また、(エディタをはじめとする) 多くのプログラムが、
 シェル・エスケープを通してユーザがコマンドを実行できるようにしており、
-この方法でユーザは \fBsudo\fR のチェックを回避することができる。
-とは言え、たいていのシステムでは、
-\&\fIsudoers\fR\|(5) モジュールの \fInoexec\fR 機能を用いて、
-シェル・エスケープを抑止することが可能である。
-.PP
-下記のように sudo の中で直に \f(CW\*(C`cd\*(C'\fR
-コマンドを実行しても意味がない。
+この方法でユーザは \fBsudo\fP によるチェックをすり抜けることができる。
+とは言え、たいていのシステムでは、sudoers(5) プラグインの \fInoexec\fP
+機能を使用することでシェルエスケープを抑止することが可能だ。
 .PP
-.Vb 1
-\& $ sudo cd /usr/local/protected
-.Ve
+下記のように \fBsudo\fP 中で直に \fBcd\fP コマンドを実行しても意味がない。
+.nf
+.sp
+.RS 6n
+$ sudo cd /usr/local/protected
+.RE
+.fi
 .PP
\81ªã\81\9cã\81ªã\82\89ã\80\81ã\81\93ã\81®ã\82³ã\83\9eã\83³ã\83\89ã\81\8cçµ\82äº\86ã\81\97ã\81\9fã\81¨ã\81\8dã\80\81ã\81\9dã\81®è¦ªã\83\97ã\83­ã\82»ã\82¹ (ã\81¤ã\81¾ã\82\8aã\80\81
-\&\fBsudo\fR を実行したシェル) は相変わらず元の状態のままだからだ。
-より詳しく知りたかったら、「用例」セクションを御覧になってほしい。
\81ªã\81\9cã\81ªã\82\89ã\80\81ã\81\93ã\81®ã\82³ã\83\9eã\83³ã\83\89ã\81\8cçµ\82äº\86ã\81\97ã\81\9fã\81¨ã\81\8dã\80\81ã\81\9dã\81®è¦ªã\83\97ã\83­ã\82»ã\82¹ (ã\81\99ã\81ªã\82\8fã\81¡ã\80\81\fBsudo\fP
+を実行したシェル) は、\fBsudo\fP を実行する前と同じ状態に戻るからだ。
+\fBcd\fP については、「用例」セクションもご覧になっていただきたい。
 .PP
-\&\fBsudo\fR を介してシェルスクリプトを実行すると、
-ある種のオペレーティングシステムで
+\fBsudo\fP を介してシェルスクリプトを実行すると、ある種のオペレーティング・システムで
 setuid シェルスクリプトを危険なものにしているのと同一の、
-カーネルのバグが表面化するおそれがある (使用している \s-1OS\s0 に 
-/dev/fd/ ディレクトリがあれば、setuid シェルスクリプトはたいてい安全である)。
-.SH "バグ"
-.IX Header "BUGS"
-\&\fBsudo\fR にバクを発見したと思ったら、下記のページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.SH "サポート"
-.IX Header "SUPPORT"
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には下記 URL を御覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.SH "免責"
-.IX Header "DISCLAIMER"
-\&\fBsudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+カーネルのバグが表面化するおそれがある (使用している OS に /dev/fd/
+ディレクトリがあれば、setuid シェルスクリプトはたいてい安全である)。
+.SH バグ
+\fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index 628014d..b720903 100644 (file)
@@ -1,9 +1,12 @@
-.\" Copyright (c) 2009-2011 Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM sudoreplay.mdoc.in
+.\"
+.\" Copyright (c) 2009-2016 Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
-.\" Japanese Version Copyright (c) 2012 Yoichi Chonan
-.\"         all rights reserved.
-.\" Translated (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
-.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
+.\"*******************************************************************
 .\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
+.\"*******************************************************************
 .\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
+.\" Japanese Version Copyright (c) 2012 Yoichi Chonan
+.\"         all rights reserved.
+.\" Translated (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
+.\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.IX Title "SUDOREPLAY 8"
-.TH SUDOREPLAY 8 "January  6, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH SUDOREPLAY 8 "May 4, 2016" "Sudo 1.8.17" "System Manager's Manual"
 .nh
-.SH "名前"
-sudoreplay \- sudo のセッションログを再生する
-.SH "書式"
-.IX Header "SYNOPSIS"
-\&\fBsudoreplay\fR [\fB\-h\fR] [\fB\-d\fR \fIdirectory\fR] [\fB\-f\fR \fIfilter\fR] [\fB\-m\fR \fImax_wait\fR] [\fB\-s\fR \fIspeed_factor\fR] \s-1ID\s0
-.PP
-\&\fBsudoreplay\fR [\fB\-h\fR] [\fB\-d\fR \fIdirectory\fR] \-l [search expression]
-.SH "説明"
-.IX Header "DESCRIPTION"
-\&\fBsudoreplay\fR は、\fBsudo\fR が生成した出力ログの再生、
+.if  n .ad l
+.SH 名前
+\fBsudoreplay\fP \- sudo のセッションログを再生する
+.SH 書式
+.HP 11n
+\fBsudoreplay\fP [\fB\-h\fP] [\fB\-d\fP\ \fIdir\fP] [\fB\-f\fP\ \fIfilter\fP] [\fB\-m\fP\ \fInum\fP]
+[\fB\-s\fP\ \fInum\fP] ID
+.HP 11n
+\fBsudoreplay\fP [\fB\-h\fP] [\fB\-d\fP\ \fIdir\fP] \fB\-l\fP [search\ expression]
+.SH 説明
+\fBsudoreplay\fP は、\fBsudo\fP が生成した出力ログの再生、
 または一覧表示を行う。再生する場合、
-\&\fBsudoreplay\fR はセッションの再生をリアルタイムで実行することもできるし、
+\fBsudoreplay\fP はセッションの再生をリアルタイムで実行することもできるし、
 コマンドライン・オプションによって再生速度を (早くしたり、
-遅くしたり) 調節することもできる。 
+遅くしたり) 調節することもできる。
 .PP
-上記書式の一つ目 (再生モード) で指定する \fI\s-1ID\s0\fR は、
-たとえば、\f(CW\*(C`0100A5\*(C'\fR のような、
+上記書式の一つ目 (再生モード) で指定する引数 \fIID\fP は、たとえば 0100A5 のような、
 数字とアルファベットの大文字からなる 6 字の文字列か、
-\&\fIsudoers\fR の \fIiolog_file\fR オプションにマッチするパターンかの、
-どちらかでなければならない。\fIsudoers\fR の \fIlog_output\fR
-オプションが有効な状態で、\fBsudo\fR を使ってコマンドを実行すると、
-\&\f(CW\*(C`TSID=ID\*(C'\fR という文字列が syslog 経由で
-あるいは \fBsudo\fR 独自のログファイルに記録される。
-また、\fI\s-1ID\s0\fRは、\fBsudoreplay\fR のリストモードを使用して、
-特定することもできる。
-.IP "[\fB訳注\fR]:" 8
-.IX Item "footnote1" 
-セッションの出力のロギングを有効にするには、\fIsudoers\fR ファイルの
-Defaults 行で \fIlog_output\fR を指定するか
-あるいは、同ファイルのユーザ設定でコマンドに \fILOG_OUTPUT\fR タグを付ける。
-\&\fIsudoers\fR のマニュアルを参照してほしい。
+\fIsudoers\fP ファイルの \fIiolog_file\fP オプションにマッチするパターンかの、
+どちらかでなければならない。
+\fIsudoers\fP ファイルの \fIlog_output\fP オプションが有効な状態で
+\fBsudo\fP を使ってコマンドを実行すると
+TSID=ID という文字列が、syslog 経由や \fBsudo\fP 独自のログファイルに記録される
+(訳注: その ID を引数として指定するのである)。
+また、\fIID\fP は、\fBsudoreplay\fP のリストモード (上記書式の二つ目) を使用して、
+突き止めることもできる。
+.IP "[\fB訳注\fP]:" 8
+セッションの出力のロギングを有効にするには、\fIsudoers\fP ファイルの 
+Defaults 行で \fIlog_output\fP を指定するか、あるいは
+同ファイルのユーザ設定でコマンドに \fILOG_OUTPUT\fP タグを付ける。
+詳細については、\fIsudoers\fP のマニュアルを参照していただきたい。
 .PP
-リストモードで \fBsudoreplay\fR を使用すれば、ユーザ、使用した端末 (tty)、
-実行したコマンドなど、いくつかの条件に基づいて、セッションの \s-1ID\s0
+リストモードで \fBsudoreplay\fP を使用すると、ユーザ、使用した端末 (tty)、
+実行したコマンドなど、いくつかの条件に基づいて、セッションの ID
 を知ることができる。
 .PP
 再生モードでは、標準出力がリダイレクトされていないかぎり、
 以下のキーが有効である。
-.IP "' ' (space)" 8
-.IX Item "' ' (space)"
+.TP  14n
+\&'\en' または '\er'
+次の再生イベントに飛ぶ。イベント間の休止が長いとき便利。
+.TP  14n
+\&'\ ' (space)
 出力を停止する。任意のキーを押せば、続行する。
-.IP "'<'" 8
+.TP  14n
+\&'<'
 再生速度を半分に下げる。
-.IP "'>'" 8
+.TP  14n
+\&'>'
 再生速度を倍にする。
-.SH "オプション"
-.IX Header "OPTIONS"
-\&\fBsudoreplay\fR では、以下のコマンドライン・オプションが使える。
-.IP "\-d \fIdirectory\fR" 12
-.IX Item "-d directory"
-セッションログが格納されているディレクトリとして、デフォルトの
-\&\fI/var/log/sudo\-io\fR の代わりに、\fIdirectory\fR を使用する。
-.IP "\-f \fIfilter\fR" 12
-.IX Item "-f filter"
-デフォルトでは、\fBsudoreplay\fR はコマンドの標準出力と標準エラー、
-それに端末 (tty) への出力を再生する。\fI\-f\fR を使えば、
-そのうちのどれを出力するかを選択することができる。引き数 \fIfilter\fR は、
-コンマで区切られたリストであり、\fIstdout\fR, \fIstderr\fR, \fIttyout\fR
-から一つ以上指定する。
-.IP "\-h" 12
-.IX Item "-h"
-\&\fB\-h\fR (\fIhelp\fR) オプションを指定すると、
-\&\fBsudoreplay\fR は簡単なヘルプ・メッセージを標準出力に表示して、終了する。
-.IP "\-l [\fIsearch expression\fR]" 12
-.IX Item "-l [search expression]"
-「リストモード」を有効にする。このモードでは、\fBsudoreplay\fR
-は再生可能なセッション ID を一覧表示することになる。検索式
-(\fIsearch expression\fR) を指定すると、表示する ID を絞り込むために、
-それが使用される。検索式は以下の述語 (predicate) から構成される。
-.RS
-.IP "[\fB訳注\fR]:" 8
-.IX "footnote2"
-このマニュアルで「ID」という言葉は、リストモードで表示される、
-ある ID を持つセッションそのものや、
-そのセッションの情報の意味でも使われている。
-.RE
-.RS 12
-.IP "command \fIcommand pattern\fR" 8
-.IX Item "command command pattern"
-実行されたコマンドが \fIcommand pattern\fR にマッチすれば、真になる。
-\&\s-1POSIX\s0 の正規表現をサポートするシステムでは、
-パターンに拡張正規表現が使える。
-\&\s-1POSIX\s0 の正規表現をサポートしていないシステムでは、
-単なる部分文字列のマッチが行われる。
-.IP "cwd \fIdirectory\fR" 8
-.IX Item "cwd directory"
-指定したディレクトリをカレントディレクトリとして、
-コマンドが実行されていれば、真になる。
-.IP "fromdate \fIdate\fR" 8
-.IX Item "fromdate date"
-コマンドを実行した日付が \fIdate\fR 以後なら、真になる。
+.PP
+オプションとして以下のものが使用できる。
+.TP  12n
+\fB\-d\fP \fIdir\fP, \fB\-\-directory\fP=\fIdir\fP
+セッションログは、デフォルトの \fI/var/log/sudo\-io\fP ではなく、
+\fIdir\fP にある。
+.TP  12n
+\fB\-f\fP \fIfilter\fP, \fB\-\-filter\fP=\fIfilter\fP
+再生する I/O タイプを選択する。
+デフォルトでは、\fBsudoreplay\fP はコマンドの標準出力、標準エラー、
+それに端末 (tty) への出力を表示することになっている。
+引き数 \fIfilter\fP は、コンマで区切ったリストであり、\fIstdout\fP, \fIstderr\fP,
+\fIttyout\fP から一つ以上指定する。
+.TP  12n
+\fB\-h\fP, \fB\-\-help\fP
+簡単なヘルプ・メッセージを標準出力に表示して終了する。
+.TP  12n
+\fB\-l\fP, \fB\-\-list\fP [\fIsearch expression\fP]
+「リスト・モード」を有効にする。
+このモードでは、\fBsudoreplay\fP は、再生可能なセッションのリストを、
+\fBsudo\fP のログファイルにおける表記と同じような書式で、
+/var/log/sudo\-io 以下のファイル名 (すなわち、シーケンス・ナンバー)
+によってソートして表示する。検索式 (\fIsearch expression\fP) を指定すると、
+表示する ID を絞り込むために、それが使用されることになる。
+検索式は以下の述語 (predicate) から構成される。
+.PP
+.RS 12n
+.PD 0
+.TP  8n
+command \fIpattern\fP
+実行されたコマンドが POSIX の拡張正規表現 \fIpattern\fP にマッチすれば、
+真になる。
+.PD
+.TP  8n
+cwd \fIdirectory\fP
+指定したディレクトリをカレントディレクトリとしてコマンドが実行されていれば、
+真になる。
+.TP  8n
+fromdate \fIdate\fP
+コマンドを実行した日付が \fIdate\fP 以後なら、真になる。
 サポートしている日時のフォーマットについては、
 「日付と時刻のフォーマット」を参照すること。
-.IP "group \fIrunas_group\fR" 8
-.IX Item "group runas_group"
-指定された \fIrunas_group\fR としてコマンドが実行されていれば、真になる。
-\&\fIrunas_group\fR を明示的に指定して、
-\&\fBsudo\fR を実行しないかぎり、
\81\93ã\81®æ¬\84ã\81¯ã\83­ã\82°ã\81«æ\9b¸ã\81\8dè¾¼ã\81¾ã\82\8cã\81ªã\81\84ã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ã\81¦ã\81»ã\81\97い。
-.IP "runas \fIrunas_user\fR" 8
-.IX Item "runas runas_user"
-指定された \fIrunas_user\fR としてコマンドが実行されていれば、真になる。
-\&\fBsudo\fR は、デフォルトでは
-\&\fIroot\fR ユーザとしてコマンドを実行することを忘れないように
-.IP "todate \fIdate\fR" 8
-.IX Item "todate date"
-コマンドを実行した日付が \fIdate\fR 以前なら、真になる。
+.TP  8n
+group \fIrunas_group\fP
+指定された \fIrunas_group\fP としてコマンドが実行されていれば、真になる。
+\fIrunas_group\fP を明示的に指定して、
+\fBsudo\fP を実行していないかぎり、
\81\93ã\81®æ¬\84ã\81¯ã\83­ã\82°ã\81«æ\9b¸ã\81\8dè¾¼ã\81¾ã\82\8cã\81ªã\81\84ã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ã\81¦ã\81\84ã\81\9fã\81 ã\81\8dã\81\9fい。
+.TP  8n
+runas \fIrunas_user\fP
+指定された \fIrunas_user\fP としてコマンドが実行されていれば、真になる。
+\fBsudo\fP は、デフォルトでは
+\fIroot\fP ユーザとしてコマンドを実行することをお忘れなく
+.TP  8n
+todate \fIdate\fP
+コマンドを実行した日付が \fIdate\fP 以前なら、真になる。
 サポートしている日付のフォーマットについては、
 「日付と時刻のフォーマット」を参照すること。
-.IP "tty \fItty\fR" 8
-.IX Item "tty tty"
+.TP  8n
+tty \fItty name\fP
 コマンドを実行したのが指定した端末デバイスならば、
-真になる。\fItty\fR は \fI/dev/\fR の部分を取って、指定する。
-たとえば、\fI/dev/tty01\fR ではなく、\fItty01\fR というように。
-(訳注: この説明は sudo-1.7.4 のころの指定法である。
-最近の \fBsudoreplay\fR では、\fI/dev/tty01\fR などと指定する必要があるようだ。)
-.IP "user \fIuser name\fR" 8
-.IX Item "user user name"
-コマンドを実行したユーザが \fIuser name\fR なら、真になる。
-.RE
-.RS 12
-.Sp
-述語は、他と区別できるなら、最短の文字列にまで短縮できる
-.\" (現在のところ、すべての述語は、文字一個にまで短縮できる)。
-.\" [訳注]: command や cwd を c に短縮することはできない。ということは、
-.\" このカッコ内の文は、古い記述がそのままになっているのだと思う。そこで、
-.\" man コマンドで見えないようにし、代わりに以下の文を追加しておく。
-(たとえば、現在のところ、述語 user の代わりに u が使える)。
-.Sp
-述語は \fIand\fR, \fIor\fR, \fI!\fR 演算子を使って、結合することができる。
-また、\f(CW\*(Aq(\*(Aq\fR と \f(CW\*(Aq)\*(Aq\fR を使えば、グループ化が可能だ
+真になる。\fItty name\fP は \fI/dev/\fP の部分を取って指定するべきである。
+たとえば、\fI/dev/tty01\fP ではなく、\fItty01\fP のように。
+(訳注: この説明は sudo\-1.7.4 のころの指定法である。
+最近の \fBsudoreplay\fP では、\fI/dev/tty01\fP などと指定する必要があるようだ。)
+.TP  8n
+user \fIuser name\fP
+コマンドを実行したユーザが \fIuser name\fP なら、真になる。
+.PP
+述語は、他と区別できるなら、最短の文字列にまで短縮することができる
+(訳注: たとえば、現在のところ、述語 user の代わりに u が使える)。
+.sp
+述語は、\fIand\fP, \fIor\fP, \fI\&!\fP 演算子を使って、組み合わせることができる。
+また、'\&(' と '\&)' によるグループ化も可能だ
 (ただし、たいていの場合、カッコはシェルに解釈されないように、
-エスケープしなければならない)。\fIand\fR 演算子の指定はしてもしなくてもよい。
-隣り合った述語は、間に \fIor\fR がないかぎり、\fIand\fR で結合していると見なされるからだ。
+エスケープしなければならない)。\fIand\fP 演算子は省略可能である。
+隣り合った述語は、間に \fIor\fP がないかぎり、
+\fIand\fP で結合していると見なされるからだ。
 .RE
-.IP "\-m \fImax_wait\fR" 12
-.IX Item "-m max_wait"
+.TP  12n
+\fB\-m\fP, \fB\-\-max\-wait\fP \fImax_wait\fP
 キーを押してから次のキーを押すまでの間や、データ出力同士の間にある
-待ち時間の上限を指定する。\fBsudo\fR はデフォルトでは、
+待ち時間の上限を指定する。\fBsudoreplay\fP はデフォルトでは、
 キーの押し下げやプログラムの出力の間にある経過時間を正確に再現する。
 しかし、それだと、セッション中に長い間合いがある場合など、
 うんざりすることになりかねない。
-\&\fI\-m\fR オプションを指定すれば、\fBsudoreplay\fR はそうした間合いを、
-長くても \fImax_wait\fR 秒以内に抑えるようになる。この値は、
-たとえば \fI2.5\fR といった、浮動小数点数で指定することも可能だ。
-.IP "\-s \fIspeed_factor\fR" 12
-.IX Item "-s speed_factor"
-このオプションを指定すると、\fBsudoreplay\fR
-は、キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。
-このオプションを使えば、表示速度を早くしたり遅くしたりできるわけだ。
-たとえば、\fIspeed_factor\fR に \fI2\fR を指定すれば、
-出力の速度が 2 倍になるし、\fI\.5\fR を指定すれば、出力の速度が半分になる。
-.IP "\-V" 12
-.IX Item "-V"
-\&\fB\-V\fR (version) オプションを指定すると、
-\&\fBsudoreplay\fR はバージョン番号を表示して終了する。
-.SS "日付と時刻のフォーマット"
-.IX Subsection "Date and time format"
+\fI\-m\fP オプションを指定すると、\fBsudoreplay\fP はそうした間合いを、
+長くても \fImax_wait\fP 秒以内に抑えるようになる。この値は、
+たとえば \fI2.5\fP といった、浮動小数点数で指定することも可能だ。
+.TP  12n
+\fB\-s\fP, \fB\-\-speed\fP \fIspeed_factor\fP
+このオプションを指定すると、\fBsudoreplay\fP は、
+キーの押し下げやプログラムの出力の間にある待ち時間の秒数を調節する。
+このオプションを使えば、再生速度を早くしたり遅くしたりできるわけだ。
+たとえば、\fIspeed_factor\fP に \fI2\fP を指定すれば、再生速度が 2 倍になるし、
+\&\fI.5\fP を指定すれば、再生速度が半分になる。
+.TP  12n
+\fB\-V\fP, \fB\-\-version\fP
+\fBsudoreplay\fP のバージョン番号を表示して終了する。
+.SS 日付と時刻のフォーマット
 日付と時刻の指定には、幾通りもの方法がある。よく使うフォーマットには、
 次のものがある。
-.IP "\s-1HH:MM:SS\s0 am \s-1MM/DD/CCYY\s0 timezone" 8
-.IX Item "HH:MM:SS am MM/DD/CCYY timezone"
+.TP  8n
+HH:MM:SS am MM/DD/CCYY timezone
 午前/午後 (am/pm) の代わりに 24 時間制の時刻を使ってもよい。
-.IP "\s-1HH:MM:SS\s0 am Month Day, Year timezone" 8
-.IX Item "HH:MM:SS am Month, Day Year timezone"
+.TP  8n
+HH:MM:SS am Month Day, Year timezone
 午前/午後 (am/pm) の代わりに 24 時間制の時刻を使ってもよい。
 月や曜日の名前には短縮形を使うこともできる。
 月や曜日の名前は、英語で指定しなければならないのに注意すること。
 (訳注: 曜日を指定する場合は、月と日にちの間以外なら、
 たいていの場所に置くことができる。
-なお、上記書式のように、å¹´ã\81®å\89\8dã\81«ã\82³ã\83³ã\83\9eã\82\92å\85¥ã\82\8cã\82\8bã\81\8bã\81©ã\81\86ã\81\8bã\81¯ã\80\81ä»»æ\84\8fã\81§ã\81\82ã\82\8bã\80\82)
-.IP "CCYY-MM-DD \s-1HH:MM:SS\s0" 8
-.IX Item "CCYY-MM-DD HH:MM:SS"
-\&\s-1ISO\s0 の日時フォーマット。
-.IP "\s-1DD\s0 Month \s-1CCYY\s0 \s-1HH:MM:SS\s0" 8
-.IX Item "DD Month CCYY HH:MM:SS"
+なお、上記書式のように、æ\97¥ã\81«ã\81¡ã\81®å¾\8cã\82\8dã\81«ã\82³ã\83³ã\83\9eã\82\92å\85¥ã\82\8cã\82\8bã\81\8bã\81©ã\81\86ã\81\8bã\81¯ã\80\81ä»»æ\84\8fã\81§ã\81\82ã\82\8bã\80\82)
+.TP  8n
+CCYY\-MM\-DD HH:MM:SS
+ISO の日時フォーマット。
+.TP  8n
+DD Month CCYY HH:MM:SS
 月の名前には短縮形も使える。
 .PP
-日付と時刻の一方を省略することができる。 am/pm とタイムゾーンは、
+日付と時刻の一方を省略することができる。am/pm とタイムゾーンは、
 指定してもしなくてもよい。日付が指定されない場合は、
 当日が指定されたものと見なされる。時刻が指定されない場合は、
 指定された日にちの 00:00:00 が使用される。
 時刻や日付のそれほど重要ではない部分も省略できるが、
 その場合は 0 が指定されたものと見なされる。
-たとえば、以下の表記は、すべて有効である。
 .PP
 以下の表記は、すべて有効な日時の指定である。
-.IP "now" 8
-.IX Item "now"
+.TP  8n
+now
 今日の今。
-.IP "tomorrow" 8
-.IX Item "tomorrow"
+.TP  8n
+tomorrow
 今からちょうど 1 日後。
-.IP "yesterday" 8
-.IX Item "yesterday"
+.TP  8n
+yesterday
 24 時間前。
-.IP "2 hours ago" 8
-.IX Item "2 hours ago"
+.TP  8n
+2 hours ago
 2 時間前。
-.IP "next Friday" 8
-.IX Item "next Friday"
-次の金曜日の 00:00:00。
-.IP "this week" 8
-.IX Item "this week"
-時刻は現在時刻。日付は来週の最初の日。
-.IP "a fortnight ago" 8
-.IX Item "a fortnight ago"
+.TP  8n
+next Friday
+来週の (やがて来る週の) 金曜日の 00:00:00。
+"this friday" と混同してはいけない。
+"this friday" ならば、今週の金曜日とマッチする。
+.TP  8n
+last week
+7 日前の現在時刻。"a week ago" と同じ。
+.TP  8n
+a fortnight ago
 14 日前の現在時刻。
-.IP "10:01 am 9/17/2009" 8
-.IX Item "10:01 am 9/17/2009"
+.TP  8n
+10:01 am 9/17/2009
 2009 年 9 月 17 日 午前 10 時 01 分。
-.IP "10:01 am" 8
-.IX Item "10:01 am"
+.TP  8n
+10:01 am
 今日の午前 10 時 01 分。
-.IP "10" 8
-.IX Item "10"
+.TP  8n
+10
 今日の午前 10 時 00 分。
-.IP "9/17/2009" 8
-.IX Item "9/17/2009"
+.TP  8n
+9/17/2009
 2009 年 9 月 17 日 午前 0 時 00 分。
-.IP "10:01 am Sep 17, 2009" 8
-.IX Item "10:01 am Sep 17, 2009"
+.TP  8n
+10:01 am Sep 17, 2009
 2009 年 9 月 17 日 午前 10 時 01 分。
-.SH "ファイル"
-.IX Header "FILES"
-.IP "\fI/var/log/sudo\-io\fR" 24
-.IX Item "/var/log/sudo-io"
-I/O ログを格納するデフォルトのディレクトリ。
-.IP "\fI/var/log/sudo\-io/00/00/01/log\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/log"
-セッションログの情報 (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/stdin\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stdin"
-セッションの標準入力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/stdout\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stdout"
-セッションの標準出力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/stderr\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/stderr"
-セッションの標準エラーのログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/ttyin\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/ttyin"
-セッションの tty 入力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/ttyout\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/ttyout"
-セッションの tty 出力のログ (一例)。
-.IP "\fI/var/log/sudo\-io/00/00/01/timing\fR" 24
-.IX Item "/var/log/sudo-io/00/00/01/timing"
-セッションのタイミングを記録したファイル (一例)。
 .PP
-\&\fBsudo\fR があるコマンドのためにパイプラインの一部として使用されたときを除いて、
-\&\fIstdin\fR, \fIstdout\fR, \fIstderr\fR
-用のファイルは空になることに注意してほしい。
-.SH "用例"
-.IX Header "EXAMPLES"
-ユーザ \fImillert\fR が実行したセッションを列挙する。
+注意していただきたいが、相対的な日時指定は、
+必ずしも期待通りに動作するとはかぎらない。
+たとえば、"next" 修飾子は、"next Monday" などのように、
+曜日と一緒に使うようになっている。
+week, month, year などの単位と組み合わせて使った場合は、結果が期待よりも
+1 多いものになってしまうのだ。たとえば、"next week" は、
+今からちょうど 2 週間後の日時を指すことになってしまい、
+意図したところとはたぶん違うだろう。この問題については、
+\fBsudoreplay\fP の将来のバージョンで対処するつもりだ。
+.SS "sudoreplay のデバッグ"
+バージョン 1.8.4 以上の \fBsudoreplay\fP は、
+柔軟なデバッグ用の枠組みをサポートしており、
+sudo.conf(5) ファイルの Debug 行で設定するようになっている。
 .PP
-.Vb 1
-\& sudoreplay \-l user millert
-.Ve
+sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
+sudo.conf(5) のマニュアルをご覧になっていただきたい。
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+デバッグ用枠組みの設定
+.TP  26n
+\fI/var/log/sudo\-io\fP
+入出力ログを格納するデフォルトのディレクトリ
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/log\fP
+セッションログについての情報 (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/stdin\fP
+セッションの標準入力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/stdout\fP
+セッションの標準出力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/stderr\fP
+セッションの標準エラーのログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/ttyin\fP
+セッションの tty 入力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/ttyout\fP
+セッションの tty 出力のログ (一例)
+.TP  26n
+\fI/var/log/sudo\-io/00/00/01/timing\fP
+セッションのタイミングを記録したファイル (一例)
 .PP
-ユーザ \fIbob\fR が実行したセッションのうち、
-コマンドに vi という文字列が含まれるものを列挙する。 
+\fBsudo\fP があるコマンドのパイプラインの一部として使用されたときを除いて、
+\fIstdin\fP, \fIstdout\fP, \fIstderr\fP ファイルは空になることに注意していただきたい。
+.SH 用例
+ユーザ \fImillert\fP が実行したセッションを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l user millert
+.RE
+.fi
 .PP
-.Vb 1
-\& sudoreplay \-l user bob command vi
-.Ve
+ユーザ \fIbob\fP が実行したセッションのうち、
+コマンドに vi という文字列が含まれるものを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l user bob command vi
+.RE
+.fi
 .PP
-ユーザ \fIjeff\fR が実行したセッションのうち、
+ユーザ \fIjeff\fP が実行したセッションのうち、
 コマンドが下記の正規表現にマッチするものを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l user jeff command '/bin/[a\-z]*sh'
+.RE
+.fi
 .PP
-.Vb 1
-\& sudoreplay \-l user jeff command \*(Aq/bin/[a\-z]*sh\*(Aq
-.Ve
-.PP
-\&\fIjeff\fR か \fIbob\fR がコンソールで実行したセッションを列挙する。
-.PP
-.Vb 1
-\& sudoreplay \-l ( user jeff or user bob ) tty console
-.Ve
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIsudo\fR\|(8), \fIscript\fR\|(1)
-.SH "作者"
-.IX Header "AUTHOR"
+\fIjeff\fP か \fIbob\fP がコンソールで実行したセッションを列挙する。
+.nf
+.sp
+.RS 6n
+# sudoreplay \-l \e( user jeff or user bob \e) tty console
+.RE
+.fi
+.SH 関連項目
+script(1), sudo.conf(5), sudo(8)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
+当バージョンは主として次の者が書いたコードからできている。
+.sp
+.RS 6n
 Todd C. Miller
-.SH "バグ"
-.IX Header "BUGS"
-\&\fBsudoreplay\fR にバグを発見したと思ったら、下記にアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.SH "サポート"
-.IX Header "SUPPORT"
-ある程度の無料サポートが sudo-users メーリングリストを通じて利用できる。
-購読やアーカイブの検索をなさりたかったら、下記 URL をご覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.SH "免責"
-.IX Header "DISCLAIMER"
-\&\fBsudoreplay\fR は「現状のまま」提供される。
+.RE
+.PP
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
+(https://www.sudo.ws/contributors.html)
+.SH バグ
+\fBsudoreplay\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBsudoreplay\fP は「現状のまま」提供される。
 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index efc7938..9145ac5 100644 (file)
@@ -1,10 +1,13 @@
-.\" Copyright (c) 1996,1998-2005, 2007-2012
-.\"    Todd C. Miller <Todd.Miller@courtesan.com>
-.\" 
+.\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
+.\" IT IS GENERATED AUTOMATICALLY FROM visudo.mdoc.in
+.\"
+.\" Copyright (c) 1996,1998-2005, 2007-2015
+.\"    Todd C. Miller <Todd.Miller@courtesan.com>
+.\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
 .\" copyright notice and this permission notice appear in all copies.
-.\" 
+.\"
 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\" 
+.\"
 .\" Sponsored in part by the Defense Advanced Research Projects
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\" 
 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
 .\"   and 2009 Yoichi Chonan
 .\"         all rights reserved.
 .\" Translated Sat Oct  7 14:39:18 JST 2000
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002 by Yuichi SATO
+.\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
+.\"         by Yuichi SATO
 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
 .\"         by Yoichi Chonan
 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
 .\"         by Yoichi Chonan
+.\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
+.\"         By Yoichi Chonan
 .\"
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` 
-.    ds C' 
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "VISUDO 8"
-.TH VISUDO 8 "March 12, 2012" "1.8.4" "MAINTENANCE COMMANDS"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
+.TH VISUDO 8 "November 20, 2015" "Sudo 1.8.17" "System Manager's Manual"
 .nh
-.SH "名前"
-\"O visudo \- edit the sudoers file
-visudo \- sudoers ファイルを編集する
-.SH "書式"
-.IX Header "SYNOPSIS"
-\&\fBvisudo\fR [\fB\-chqsV\fR] [\fB\-f\fR \fIsudoers\fR]
-.SH "説明"
-.IX Header "DESCRIPTION"
-\&\fBvisudo\fR は \fIvipw\fR\|(8) によく似た安全なやり方で 
-\&\fIsudoers\fR ファイルを編集する。 \fBvisudo\fR は \fIsudoers\fR 
-ファイルをロックして、重複した編集が同時に行われないようにするとともに、
+.if  n .ad l
+.SH 名前
+\fBvisudo\fP \- sudoers ファイルを編集する
+.SH 書式
+.HP 7n
+\fBvisudo\fP [\fB\-chqsV\fP] [\fB\-f\fP\ \fIsudoers\fP] [\fB\-x\fP\ \fIoutput_file\fP]
+.SH 説明
+\fBvisudo\fP は vipw(8) によく似た安全なやり方で \fIsudoers\fP ファイルを編集する。
+\fBvisudo\fP は \fIsudoers\fP ファイルをロックして、
+重複した編集が同時に行われないようにするとともに、
 整合性をざっと調べ、文法エラーのチェックを行う。
-\&\fIsudoers\fR ファイルが現在編集中だった場合は、
+\fIsudoers\fP ファイルが現在編集中だった場合は、
 「try again later」というメッセージを端末に表示する。
 .PP
-\&\fBvisudo\fR が使用するエディタについては、コンパイル時に設定された
-一つ以上のエディタからなるリストがプログラムに埋め込まれているが、
-\&\fIsudoers\fR ファイルの \f(CW\*(C`Defaults\*(C'\fR 行で
-\&\fIeditor\fR オプションを使えば、それを変更することができる。
-このリストはデフォルトでは、\f(CW"/usr/bin/vi"\fR になっている。
-通常 \fBvisudo\fR は、
-環境変数 \f(CW\*(C`VISUAL\*(C'\fR や \f(CW\*(C`EDITOR\*(C'\fR
+\fBvisudo\fP が使用するエディタについては、
+コンパイル時に設定された一つ以上のエディタからなるリストがプログラムに埋め込まれているが、
+\fIsudoers\fP ファイルの Defaults 行で \fIeditor\fP オプションを使えば、
+それを変更することができる。このリストは、デフォルトでは vi になっている。
+通常 \fBvisudo\fP は、環境変数 VISUAL や EDITOR
 の値が上述のエディタ・リストに含まれるエディタでないかぎり、
 そうした環境変数を使用しない。とは言え、
-\&\fBvisudo\fR が
-\&\fI\-\-with\-env\-editor\fR オプションを付けて configure されている場合や、
-\&\fIsudoeres\fR ファイルの \f(CW\*(C`Defaults\*(C'\fR 行で
-\&\fIenv_editor\fR オプションがセットされている場合は、\fBvisudo\fR は
-\&\f(CW\*(C`VISUAL\*(C'\fR や \f(CW\*(C`EDITOR\*(C'\fR によって指定された
-どんなエディタでも使用することになる。
-これがセキュリティホールになりかねないことに注意してほしい。
-単に \f(CW\*(C`VISUAL\*(C'\fR や \f(CW\*(C`EDITOR\*(C'\fR を設定するだけで、
+\fBvisudo\fP が \-\-with\-env\-editor オプションを付けて configure されている場合や、
+\fIsudoeres\fP ファイルの Defaults 行で \fIenv_editor\fP オプションがセットされている場合は、
+\fBvisudo\fP は VISUAL や EDITOR によって指定されたどんなエディタでも使用することになる。
+これがセキュリティホールになりかねないことに注意していただきたい。
+単に VISUAL や EDITOR を設定するだけで、
 ユーザが任意のプログラムを実行できるようになってしまうからだ。
 .PP
-\&\fBvisudo\fR は編集が終わると、\fIsudoers\fR ファイルの文法解析を行い、
-文法エラーがあれば、変更を保存しない。\fBvisudo\fR はエラーを発見すると、
-エラーが起きた行番号を知らせるメッセージを表示し、\*(L"What now?\*(R"
-というプロンプトを出す。このとき、\*(L"e\*(R" を押せば、
-\&\fIsudoers\fR ファイルを再編集できる。\*(L"x\*(R" を押せば、
-変更を保存せず終了だし、\*(L"Q\*(R" を押せば、変更を保存して終了だ。
-\&\*(L"Q\*(R" の選択は、くれぐれも慎重にやってほしい。なぜなら、
-\&\fBvisudo\fR が文法エラーがあると考えるのなら、\fBsudo\fR
-も同様に考えるはずであり、エラーが訂正されるまで、もう誰にも \fBsudo\fR
-が使えなくなってしまうからだ。文法エラーが発見されたとき、\*(L"e\*(R"
-を押して \fIsudoers\fR ファイルを編集しようとすると、
-カーソルがファイルのエラーが起きた行に飛ぶ (エディタにその機能があればだが)。
-.SH "オプション"
-.IX Header "OPTIONS"
-\&\fBvisudo\fR では以下のコマンドラインオプションが使用できる。
-.IP "\-c" 12
-.IX Item "-c"
-\&\fBcheck-only\fR モードを有効にする。現在の \fIsudoers\fR ファイルの
-文法エラー、所有者、アクセス権をチェックする
-(訳注: 所有者とアクセス権のチェックをするのは sudo-1.8.4p3 以降である)。
-\&\fB\-q\fR オプションが指定されていない場合は、メッセージを標準出力に表示して、
-\&\fIsudoers\fR の状態を報告する。チェックが成功裡に終わった場合は、
-\&\fBvisudo\fR は返り値 0 で終了する。
-エラーに出会った場合の返り値は 1 である。
-.IP "\-f \fIsudoers\fR" 12
-.IX Item "-f sudoers"
-\&\fIsudoers\fR ファイルの位置を指定・変更する。このオプションを付けると、
-\&\fBvisudo\fR はデフォルトの \fI/etc/sudoers\fR ではなく、
-ユーザが選んだ \fIsudoers\fR ファイルを編集 (あるいは、チェック)
-することになる。ロックファイルとしては、指定された \fIsudoers\fR
-ファイルの名前の末尾に \*(L".tmp\*(R" を付けたものが使われる。なお、
-\&\fBcheck-only\fR モードの場合だけ、\fB\-f\fR の引数に \*(L"\-\*(R"
-を指定することができる。
-これは、標準入力から \fIsudoers\fR が読み込まれるということである。
-.IP "\-h" 12
-.IX Item "-h"
-\&\fB\-h\fR (\fIhelp\fR) オプションを指定すると、
-\&\fBvisudo\fR は標準出力に簡単なヘルプメッセージを表示して、終了する。
-.IP "\-q" 12
-.IX Item "-q"
-\&\fBquiet\fR モードを有効にする。このモードでは、
-文法エラーの詳細情報は表示されない。このオプションが役に立つのは、
-\&\fB\-c\fR オプションと組み合わせたときだけである。
-.IP "\-s" 12
-.IX Item "-s"
-\&\fIsudoers\fR ファイルの\fB厳密\fR (\fBstrict\fR) チェックを有効にする。
+\fBvisudo\fP は編集が終わると、\fIsudoers\fP ファイルの文法解析を行い、
+文法エラーがあれば、変更を保存しない。\fBvisudo\fP はエラーを発見すると、
+エラーが起きた行番号を知らせるメッセージを表示し、
+"What now?" というプロンプトを出す。このとき、'e' を押せば、
+\fIsudoers\fP ファイルを再編集できる。'x' を押せば、
+変更を保存せずに終了し、'Q' を押せば、変更を保存して終了する。
+\&'Q' の選択は、くれぐれも慎重になさっていただきたい。なぜなら、
+\fBvisudo\fP が文法エラーがあると考えるのなら、\fBsudo\fP も同様に考えるはずであり、
+エラーが訂正されるまで、もう誰にも \fBsudo\fP を実行できなくなってしまうからだ。
+文法エラーが発見されたとき、'e' を押して \fIsudoers\fP
+ファイルを編集しようとすると、カーソルがファイルのエラーが起きた行に飛ぶ
+(エディタにその機能があればだが)。
+.PP
+オプションとして以下のものが使用できる。
+.TP  12n
+\fB\-c\fP, \fB\-\-check\fP
+\fIcheck\-only\fP モードを有効にする。
+現在の \fIsudoers\fP ファイルの文法エラー、所有者、アクセス権をチェックする。
+\fB\-q\fP オプションが指定されていない場合は、メッセージを標準出力に表示して、
+\fIsudoers\fP の状態を報告する。チェックが成功裡に終わった場合、
+\fBvisudo\fP は返り値 0 で終了する。エラーに出会った場合の返り値は 1 である。
+.TP  12n
+\fB\-f\fP \fIsudoers\fP, \fB\-\-file\fP=\fIsudoers\fP
+デフォルト以外の \fIsudoers\fP ファイルの位置を指定する。
+このオプションを付けると、\fBvisudo\fP はデフォルトの \fI/etc/sudoers\fP ではなく、
+ユーザが選んだ \fIsudoers\fP ファイルを編集 (あるいは、チェック) することになる。
+ロックファイルとしては、指定された \fIsudoers\fP ファイルの名前の末尾に
+".tmp" を付けたものが使われる。なお、\fIcheck\-only\fP モードの場合だけは、
+\fB\-f\fP の引数に '\-' を指定することができる。
+これは、標準入力から \fIsudoers\fP を読み込むということである。
+.TP  12n
+\fB\-h\fP, \fB\-\-help\fP
+標準出力に簡単なヘルプメッセージを表示して終了する。
+.TP  12n
+\fB\-q\fP, \fB\-\-quiet\fP
+\fIquiet\fP モードを有効にする。このモードでは、文法エラーの詳細は表示されない。
+このオプションが役に立つのは、\fB\-c\fP オプションと組み合わせたときだけである。
+.TP  12n
+\fB\-s\fP, \fB\-\-strict\fP
+\fIsudoers\fP ファイルの\fI厳密\fP (strict) チェックを有効にする。
 エイリアスを定義する前に使用すると、
-\&\fBvisudo\fR がそれを文法エラーと見なすようになるわけだ
+\fBvisudo\fP がそれを文法エラーと見なすようになる
 ホスト名やユーザ名がアルファベットの大文字、数字、アンダースコア ('_')
-だけから構成されている場合は、
-そうしたものとエイリアスとの区別が付かないことに注意してほしい。
-.IP "\-V" 12
-.IX Item "-V"
-\&\fB\-V\fR (version) オプションを指定すると、
-\&\fBvisudo\fR はバージョン番号を表示して、終了する。
-.SH "環境変数"
-.IX Header "ENVIRONMENT"
-以下の環境変数が参照されるかどうかは、\fIsudoers\fR の \fIeditor\fR や
-\&\fIenv_editor\fR オプションの値次第である。
-.ie n .IP "\*(C`VISUAL\*(C'" 16
-.el .IP "\f(CW\*(C`VISUAL\*(C'\fR" 16
-.IX Item "VISUAL"
-visudo が起動するエディタ
-.ie n .IP "\*(C`EDITOR\*(C'" 16
-.el .IP "\f(CW\*(C`EDITOR\*(C'\fR" 16
-.IX Item "EDITOR"
-\&\s-1VISUAL\s0 が設定されていないとき visudo が使用するエディタ
-.SH "ファイル"
-.IX Header "FILES"
-.ie n .IP "\fI/etc/sudoers\fR" 24
-.el .IP "\fI/etc/sudoers\fR" 24
-.IX Item "/etc/sudoers"
+だけから構成されている場合には、
+そうしたものとエイリアスとの区別が付かないことに注意していただきたい。
+.TP  12n
+\fB\-V\fP, \fB\-\-version\fP
+\fBvisudo\fP のバージョンと \fIsudoers\fP の文法バージョンを表示して終了する。
+.TP  12n
+\fB\-x\fP \fIoutput_file\fP, \fB\-\-export\fP=\fIoutput_file\fP
+\fIsudoers\fP を JSON フォーマットに変換 (export) して、
+\fIoutput_file\fP に書き出す。\fIoutput_file\fP が '\-' の場合は、
+変換された \fIsudoers\fP ポリシーが標準出力に書き出されることになる。
+デフォルトでは、\fI/etc/sudoers\fP
+(及び、それにインクルードされているすべてのファイル) が変換の対象になる。
+\fB\-f\fP を使用すれば、それ以外の \fIsudoers\fP
+ファイルを変換対象として指定することができる。
+フォーマットを変換するのは、サードパーティのアプリケーションにとって、
+従来の \fIsudoers\fP のフォーマットよりも解析しやすくするためである。
+様々な値は明示的なタイプを持ち、そうすることで従来の \fIsudoers\fP
+フォーマットの持つ曖昧さの多くを排除している。
+.SS "デバッグと sudoers プラグインへの引き数"
+バージョン 1.8.4 以上の \fBvisudo\fP は、
+柔軟なデバッグ用の枠組みをサポートしており、
+sudo.conf(5) ファイルの Debug 行で設定するようになっている。
+.PP
+\fBsudo\fP 1.8.12 以降の \fBvisudo\fP は、
+(訳注: \fI/etc/sudo.conf\fP で指定された)
+\fIsudoers\fP プラグインに対する引き数も理解する。
+そうした引き数は、\fIsudoers\fP ファイルのパス名、UID、GID、
+ファイルのモードを、デフォルトのものから変更しているのである。
+そうした引き数が存在する場合は、プラグインのパスの後ろに
+(すなわち、\fIsudoers.so\fP の後ろに) 列挙することになっている。
+複数の引き数があるときは、ホワイトスペースで区切って指定すればよい。
+一例を挙げる。
+.nf
+.sp
+.RS 6n
+Plugin sudoers_policy sudoers.so sudoers_mode=0400
+.RE
+.fi
+.PP
+以下の引き数が使用できる。
+.TP  10n
+sudoers_file=pathname
+\fIsudoers_file\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのパスをデフォルトのものから変更することができる。
+.TP  10n
+sudoers_uid=uid
+\fIsudoers_uid\fP 引き数を使用すると、
+\fIsudoers\fP ファイルの所有者をデフォルトのものから変更することができる。
+指定には、ユーザ ID 番号を使うべきである。
+.TP  10n
+sudoers_gid=gid
+\fIsudoers_gid\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのグループをデフォルトのものから変更することができる。
+指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。
+.TP  10n
+sudoers_mode=mode
+\fIsudoers_mode\fP 引き数を使用すると、
+\fIsudoers\fP ファイルのファイル・モードをデフォルトのものから変更することができる。
+指定には、8 進数の値を使うべきである。
+.PP
+sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
+sudo.conf(5) のマニュアルをご覧になっていただきたい。
+.SH 環境変数
+以下の環境変数が参照されるかどうかは、\fIsudoers\fP における
+\fIeditor\fP や \fIenv_editor\fP の値次第である。
+.TP  17n
+VISUAL
+\fBvisudo\fP が起動するエディタ
+.TP  17n
+EDITOR
+VISUAL が設定されていないとき \fBvisudo\fP が使用するエディタ
+.SH ファイル
+.TP  26n
+\fI/etc/sudo.conf\fP
+sudo のフロントエンドの設定
+.TP  26n
+\fI/etc/sudoers\fP
 誰が何を実行できるかのリスト
-.ie n .IP "\fI/etc/sudoers.tmp\fR" 24
-.el .IP "\fI/etc/sudoers.tmp\fR" 24
-.IX Item "/etc/sudoers.tmp"
+.TP  26n
+\fI/etc/sudoers.tmp\fP
 visudo が使うロックファイル
-.SH "メッセージによる診断"
-.IX Header "DIAGNOSTICS"
-.IP "sudoers file busy, try again later." 4
-.IX Item "sudoers file busy, try again later."
-現在、ほかの誰かが \fIsudoers\fR ファイルを編集中である。
-.ie n .IP "/etc/sudoers.tmp: Permission denied" 4
-.el .IP "\f(CW@sysconfdir\fR@/sudoers.tmp: Permission denied" 4
-\&\fBvisudo\fR を root として実行しなかった。
-.IP "Can't find you in the passwd database" 4
-.IX Item "Can't find you in the passwd database"
-あなたのユーザ ID はシステムの passwd ファイルに載っていない。
-.IP "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined" 4
-.IX Item "Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined"
+.SH "エラー (警告) メッセージ"
+.TP  6n
+sudoers file busy, try again later.
+現在、ほかの誰かが \fIsudoers\fP ファイルを編集中である。
+.TP  6n
+/etc/sudoers.tmp: Permission denied
+\fBvisudo\fP を root として実行しなかった。
+.TP  6n
+Can't find you in the passwd database
+あなたのユーザ ID はシステムの passwd ファイルに存在しない。
+.TP  6n
+Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined
 User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias)
 を、定義しないまま使用しようとしている。
 あるいは、記載したユーザ名かホスト名の中に、アルファベットの大文字、
 数字、アンダースコア ('_') のみからなるものがある。後者の場合は、
-この warning を無視して構わない (\fBsudo\fR は警告を出さないないだろう)。
-\&\fB\-s\fR (strict) モードでは、warning ではなく、error になる。
-.IP "Warning: unused {User,Runas,Host,Cmnd}_Alias" 4
-.IX Item "Warning: unused {User,Runas,Host,Cmnd}_Alias"
+この warning を無視して構わない (\fBsudo\fP は文句を言わないだろう)。
+\fB\-s\fP (strict) モードでは、
+warning ではなく、error になる。
+.TP  6n
+Warning: unused {User,Runas,Host,Cmnd}_Alias
 指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、
 定義されているが、一度も使用されていない。そうした使用しないエイリアスは、
 コメントアウトするなり、消去するなりしてもよい。
-\&\fB\-s\fR (strict) モードでは、warning ではなく、error になる。
-.IP "Warning: cycle in {User,Runas,Host,Cmnd}_Alias" 4
-.IX Item "Warning: cycle in {User,Runas,Host,Cmnd}_Alias"
+.TP  6n
+Warning: cycle in {User,Runas,Host,Cmnd}_Alias
 指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、
 直接自分自身を参照しているか、
 構成要素のエイリアスを通して自分自身を参照している。
-\&\fBsudo\fR は \fIsudoers\fR を解析するとき、
-循環を無視するので、これはデフォルトでは、単なる警告になっている。
-.SH "関連項目"
-.IX Header "SEE ALSO"
-\&\fIvi\fR\|(1), \fIsudoers\fR\|(5), \fIsudo\fR\|(8), \fIvipw\fR\|(8)
-.SH "作者"
-.IX Header "AUTHOR"
-多数の人々が長年に渡って \fBsudo\fR の開発に取り組んできた。
-\&\fBvisudo\fR の当バージョンを書いたのは、
-.PP
-.Vb 1
-\& Todd Miller
-.Ve
+\fBsudo\fP は \fIsudoers\fP ファイルを解析するとき、
+循環を無視するので、デフォルトでは単なる警告になっている。
+.TP  6n
+visudo: /etc/sudoers: input and output files must be different
+\fB\-x\fP オプションを使用する際に引数として指定した
+\fIoutput_file\fP ファイルのパス名が、
+変換対象である \fIsudoers\fP ファイルのパス名と同じである。
+.SH 関連項目
+vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)
+.SH 作者
+多数の人々が長年に渡って \fBsudo\fP の開発に取り組んできた。
+このバージョンは、主として次の者が書いたコードからなっている。
+.sp
+.RS 6n
+Todd C. Miller
+.RE
 .PP
-である。\fBsudo\fR の開発に貢献してくださった方々のリストについては、
-\&\fBsudo\fR の配布に含まれる \s-1CONTRIBUTORS\s0 ファイルをご覧いただきたい
-(http://www.sudo.ws/sudo/contributors.html)。 
-.SH "警告"
-.IX Header "CAVEATS"
-\&\fBvisudo\fR が使用するエディタでシェル・エスケープが可能なかぎり、
+\fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
+配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい
+(https://www.sudo.ws/contributors.html)。
+.SH 警告
+\fBvisudo\fP が使用するエディタでシェル・エスケープが可能なかぎり、
 ユーザがルート・シェルを獲得するのを防止する簡単な方法はない。
-.SH "バグ"
-.IX Header "BUGS"
-\&\fBvisudo\fR にバクを発見したと思ったら、下記のページにアクセスして、
-バグレポートを提出していただきたい。
-.br
-http://www.sudo.ws/sudo/bugs/
-.SH "サポート"
-.IX Header "SUPPORT"
-ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。
-購読やアーカイブの検索には下記 URL を御覧になること。
-.br
-http://www.sudo.ws/mailman/listinfo/sudo\-users
-.SH "免責"
-.IX Header "DISCLAIMER"
-\&\fBvisudo\fR は「現状のまま」提供される。
-明示的な、あるいは黙示的ないかなる保証も、
+.SH バグ
+\fBvisudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
+にアクセスして、バグレポートを提出していただきたい。
+.SH サポート
+ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
+購読やアーカイブの検索には、下記 URL を御覧になるとよい。
+https://www.sudo.ws/mailman/listinfo/sudo\-users
+.SH 免責
+\fBvisudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
 商品性や特定目的への適合性についての黙示的な保証を含め、
 またそれのみに止まらず、これを否認する。詳細な全文については、
-\&\fBsudo\fR と一緒に配布されている \s-1LICENSE\s0 ファイルや、
-下記 Web ページを御覧いただきたい。
-.br
-http://www.sudo.ws/sudo/license.html
+\fBsudo\fP と一緒に配布されている LICENSE ファイルや、
+下記 Web ページをご覧いただきたい。
+https://www.sudo.ws/license.html
index f1efe4c..b22f3d1 100644 (file)
@@ -1,7 +1,9 @@
-○:sudo:1.8.4p4:2012/02/05:sudoers:5:2012/5/09:B:cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
-○:sudo:1.8.4p4:2012/01/06:sudoers.ldap:5:20012/5/09::cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
-○:sudo:1.8.4p4:2012/02/05:sudo:8:2012/5/09:B:cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
-×:sudo:1.8.4p4:2012/01/06:sudo_plugin:8:::::
-@:sudo:1.8.4p4:2012/02/05:sudoedit:8:sudo:8:
-○:sudo:1.8.4p4:2012/01/06:sudoreplay:8:2012/5/09::cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
-○:sudo:1.8.4p4:2012/03/12:visudo:8:20012/5/09:B:cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+○:sudo:1.8.17:2016/01/20:sudoers:5:2016/09/10:B:cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+○:sudo:1.8.17:2016/01/15:sudoers.ldap:5:20016/09/10::cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+○:sudo:1.8.17:2016/01/15:sudo.conf:5:2016/09/10::cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+×:sudo:1.8.17:2016/01/20:sudo_plugin:5:::::
+○:sudo:1.8.17:2016/01/19:sudo:8:2016/09/10:B:cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+@:sudo:1.8.17:2016/01/19:sudoedit:8:sudo:8:
+○:sudo:1.8.17:2016/05/04:sudoreplay:8:2016/09/10::cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+○:sudo:1.8.17:2015/11/20:visudo:8:20016/09/10:B:cyoichi@maple.ocn.ne.jp:Chonan Yoichi:
+