OSDN Git Service

sudo: update to version 1.8.17
[linuxjm/jm.git] / manual / sudo / release / man5 / sudoers.5
1 .\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
2 .\" IT IS GENERATED AUTOMATICALLY FROM sudoers.mdoc.in
3 .\"
4 .\" Copyright (c) 1994-1996, 1998-2005, 2007-2016
5 .\"     Todd C. Miller <Todd.Miller@courtesan.com>
6 .\"
7 .\" Permission to use, copy, modify, and distribute this software for any
8 .\" purpose with or without fee is hereby granted, provided that the above
9 .\" copyright notice and this permission notice appear in all copies.
10 .\"
11 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 .\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19 .\"
20 .\" Sponsored in part by the Defense Advanced Research Projects
21 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
22 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
23 .\"
24 .\"*******************************************************************
25 .\"
26 .\" This file was generated with po4a. Translate the source file.
27 .\"
28 .\"*******************************************************************
29 .\" 
30 .\" Japanese Version Copyright (c) 2000-2002 Yuichi SATO
31 .\"   and 2009 Yoichi Chonan
32 .\"         all rights reserved.
33 .\" Translated Sat Oct  7 14:39:18 JST 2000
34 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
35 .\" Updated & Modified Fri Dec  6 04:40:44 JST 2002
36 .\"         by Yuichi SATO
37 .\" New Translation (sudo-1.6.9p17) Fri Jan 23 10:31:17 JST 2009
38 .\"         by Yoichi Chonan <cyoichi@maple.ocn.ne.jp>
39 .\" Updated & Modified (sudo-1.7.2p1) Sat Nov 14 21:15:16 JST 2009
40 .\"         by Yoichi Chonan
41 .\" Modified Tue Nov 24 20:00:00 JST 2009 by Yoichi Chonan
42 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
43 .\"         by Yoichi Chonan
44 .\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
45 .\"         By Yoichi Chonan
46 .\"
47 .TH SUDOERS 5 "January 20, 2016" "Sudo 1.8.17" "File Formats Manual"
48 .nh
49 .if  n .ad l
50 .SH 名前
51 \fBsudoers\fP \- デフォルトの sudo 用セキュリティポリシー・プラグイン
52 .SH 説明
53 \fBsudoers\fP ポリシー・プラグインは、デフォルトの \fBsudo\fP 用ポリシー・プラグインであり、
54 このポリシー・プラグインによってユーザがどんな \fBsudo\fP 権限を持つかの制御が行われる。
55 ポリシーの運用は \fI/etc/sudoers\fP ファイルによって行われるが、
56 LDAP を使用することも可能である。ポリシーを設定するときの書式は、
57 「SUDOERS ファイルの書式」セクションで詳しく説明している。
58 \fBsudoers\fP ポリシーの情報を LDAP に格納することについては、
59 sudoers.ldap(5) をご覧いただきたい。
60 .SS "sudoers ポリシー・プラグインを使うための sudo.conf の設定"
61 \fBsudo\fP は sudo.conf(5) ファイルを参照して、
62 どのポリシー・プラグインと入出力ロギング・プラグインをロードするかを決める。
63 sudo.conf(5) ファイルが存在しない場合や、存在しても Plugin 行を含まない場合は、
64 \fBsudoers\fP プラグインがポリシーの決定や 入出力ロギングに使用されることになる。
65 \fBsudoers\fP プラグインを使用するように明示的に設定するには、
66 sudo.conf(5) に次のよう書き込めばよい。
67 .nf
68 .sp
69 .RS 6n
70 Plugin sudoers_policy sudoers.so
71 Plugin sudoers_io sudoers.so
72 .RE
73 .fi
74 .PP
75 \fBsudo\fP 1.8.5 以来、\fBsudoers\fP プラグインに対する任意の引き数を
76 sudo.conf(5) で指定することが可能になっている。
77 そうした引き数が存在する場合は、プラグインのパスの後ろに続けることになる
78 (すなわち、\fIsudoers.so\fP の後ろだ)。
79 引き数がいくつもあるときは、ホワイトスペースで区切って指定すればよい。
80 一例を挙げる。
81 .nf
82 .sp
83 .RS 6n
84 Plugin sudoers_policy sudoers.so sudoers_mode=0400
85 .RE
86 .fi
87 .PP
88 以下のプラグインに対する引き数が使用できる。
89 .TP  10n
90 ldap_conf=pathname
91 \fIldap_conf\fP 引き数を使用すると、
92 \fIldap_conf\fP ファイルのパスをデフォルトのものから変更することができる。
93 .TP  10n
94 ldap_secret=pathname
95 \fIldap_secret\fP 引き数を使用すると、
96 \fIldap_secret\fP ファイルのパスをデフォルトのものから変更することができる。
97 .TP  10n
98 sudoers_file=pathname
99 \fIsudoers_file\fP 引き数を使用すると、
100 \fIsudoers\fP ファイルのパスをデフォルトのものから変更することができる。
101 .TP  10n
102 sudoers_uid=uid
103 \fIsudoers_uid\fP 引き数を使用すると、
104 sudoers ファイルの所有者をデフォルトのものから変更することができる。
105 指定には、ユーザ ID 番号を使うべきである。
106 .TP  10n
107 sudoers_gid=gid
108 \fIsudoers_gid\fP 引き数を使用すると、
109 sudoers ファイルのグループをデフォルトのものから変更することができる。
110 指定には、グループ ID 番号を使用しなければならない (グループ名ではない)。
111 .TP  10n
112 sudoers_mode=mode
113 \fIsudoers_mode\fP 引き数を使用すると、
114 sudoers ファイルのファイル・モードをデフォルトのものから変更することができる。
115 指定には、8 進数の値を使うべきである。
116 .PP
117 sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、
118 sudo.conf(5) のマニュアルをご覧になっていただきたい。
119 .SS ユーザの認証
120 \fBsudoers\fP セキュリティポリシーでは、ユーザはたいていの場合、
121 本人であることを証明してからでなければ。\fBsudo\fP を使用できない。ただし、
122 \fBsudo\fP の実行者が root だったり、変身対象ユーザが \fBsudo\fP の実行者と同一であったり、
123 ポリシーがその実行者やコマンドに対して認証を免除している場合は、パスワードが要求されることはない。
124 su(1) とは違って、\fBsudoers\fP ポリシーが認証に当たってチェックするのは、
125 \fBsudo\fP を実行するユーザの認証情報 (訳注: 通常はパスワード) であって、
126 変身対象ユーザの (あるいは、root の) 認証情報ではない。この動作は、後述する
127 \fIrootpw\fP, \fItargetpw\fP, \fIrunaspw\fP フラグによって変更することができる。
128 .PP
129 ポリシーに登録されていないユーザが \fBsudo\fP を使って、コマンドを実行しようとすると、
130 しかるべき権威者にメールが送付される。そうしたメールの宛先は、
131 後述する「デフォルト設定」の \fImailto\fP 行によって設定できるが、
132 デフォルトでは root になっている。
133 .PP
134 \fBsudo\fP を使用する権限のないユーザが、\fB\-l\fP や \fB\-v\fP オプションを付けて
135 \fBsudo\fP の実行を試みても、認証に失敗し、しかも \fImail_always\fP または
136 \fImail_badpass\fP フラグが有効になっている場合を除いて、
137 メールは送付されないことに注意していただきたい。
138 そうした動作になっていることで、ユーザとしては、
139 自分が \fBsudo\fP を使用できるかどうか、自分で判断できるわけである。
140 \fBsudo\fP 実行の試みは (成功、失敗にかかわらず)、すべてログに記録される。
141 メールが送られるかどうかには関係がない。
142 .PP
143 \fBsudo\fP が root によって実行されたとき、環境変数 SUDO_USER が設定されていると、
144 \fBsudoers\fP ポリシーは、実際のユーザが誰かを判断するのに、その値を使用することになる。
145 ユーザとしては、この動作を利用することで、すでにルートシェルを起動している場合でも、
146 自分が \fBsudo\fP を介して実行したコマンドのログを取ることができる。
147 また、この動作のおかげで、\fBsudo\fP で実行するスクリプトやプログラムから呼び出される場合でさえ、
148 \fB\-e\fP オプションが役に立つものになっている。ただし、そうした場合でも、
149 \fIsudoers\fP ファイルの参照はやはり root に対してなされるのであって、
150 SUDO_USER が指定しているユーザに対してではないことに注意していただきたい。
151 .PP
152 \fBsudoers\fP は、認証情報の一時保存 (credential caching) にユーザごとのタイムスタンプ・ファイルを使用する。
153 ユーザの認証が済むと、記録が書き込まれるが、それには、認証に使用された uid、
154 端末セッション ID、タイムスタンプ (利用できるならば、単調増加時計 (monotonic clock)
155 を使用する) が含まれている。ユーザは、その後しばらくの間 (\fItimestamp_timeout\fP
156 オプションによって変更されていなければ、5 分間)、パスワードなしで \fBsudo\fP を使うことができる。
157 \fBsudoers\fP はデフォルトでは、各 tty ごとに別の記録を使用する。
158 そこで、認証は、ユーザのログイン・セッションごとに独立して行われることになる。
159 \fItty_tickets\fP オプションを無効にすれば、あるユーザのすべてのセッションに対して、
160 単一のタイムスタンプの使用を強制することができる。
161 .SS ロギング
162 \fBsudoers\fP は \fBsudo\fP の実行が成功したときも失敗したときも、
163 その旨を (エラーの内容とともに) syslog(3) や独自のファイル、
164 あるいはその両方に記録することができる。\fBsudoers\fP はデフォルトでは、
165 syslog(3) 経由でログを記録することになっているが、この動作はデフォルト設定の
166 \fIsyslog\fP と \fIlogfile\fP を使って変更することができる。
167 ログファイルの書式については、「ログの書式」セクションの説明をご覧いただきたい。
168 .PP
169 また \fBsudoers\fP は、擬似 tty でコマンドを実行して、
170 すべての入力や出力をログに記録することもできる。
171 標準入力、標準出力、標準エラーを、それが端末と結びついていない場合でも、
172 ログに記録することができるのだ。入出力ロギングは、デフォルトでは ON になっていないが、
173 \fIlog_input\fP や \fIlog_output\fP オプションを使って有効にすることができる。
174 コマンド・タグの LOG_INPUT や LOG_OUTPUT を使用して有効にすることも可能だ。
175 入出力ログファイルがどんなふうに格納されるかについては、
176 「入出力ログファイル」セクションに詳細な説明がある。
177 .SS コマンド環境
178 環境変数はプログラムの動作に影響を与えることがあるので、\fBsudoers\fP は、
179 実行されるコマンドがユーザの環境からどんな変数を引き継ぐかについて、
180 制御する手段を用意している。すなわち、\fBsudoers\fP は二つの異なった方法で、
181 環境変数を処理することができる。
182 .PP
183 デフォルトでは \fIenv_reset\fP オプションが有効になっている。
184 この場合、コマンドは新しい、最小の環境で実行されることになる。
185 ATX (及び PAM を使用していない Linux システム) では、\fI/etc/environment\fP
186 ファイルの内容で環境が初期化される。新しい環境には、TERM, PATH,
187 HOME, MAIL, SHELL, LOGNAME, USER, USERNAME, 及び SUDO_* という変数、
188 それに、呼び出し側のプロセスから来た変数で、\fIenv_check\fP や \fIenv_keep\fP
189 オプションによって許可されたものが含まれている。これは、言わば、
190 環境変数のホワイトリストである。値が () で始まる環境変数は、
191 変数名と値の両方が \fIenv_keep\fP や \fIenv_check\fP の指定にマッチしないかぎり、
192 除去されるが、それは、\fBbash\fP シェルの古いバージョンでは関数と解釈されることになるからである。
193 1.8.11 より前のバージョンでは、そうした変数は無条件で除去されていた。
194 .PP
195 これに対して、\fIenv_reset\fP オプションが無効になっている場合は、
196 \fIenv_check\fP や \fIenv_delete\fP オプションによって明示的に拒否されていないかぎり、
197 いかなる環境変数も呼び出し側のプロセスから継承される。
198 この場合、\fIenv_check\fP や \fIenv_delete\fP は、ブラックリストのように振る舞うわけだ。
199 値が () で始まる環境変数は、ブラックリストの一つにマッチしない場合でも、
200 必ず除去される。危険性のある環境変数のすべてをブラックリストに載せることは不可能なので、
201 \fIenv_reset\fP を有効にしておくデフォルトの動作を採用することをお勧めする。
202 .PP
203 デフォルトでは、環境変数のマッチは変数名によって行われる。
204 しかしながら、マッチに使われるパターンに等号 ('=') が含まれる場合は、
205 変数名と値の両方がマッチしなければならない。たとえば、旧式の
206 (shellshock 問題以前の export 方法による)
207 \fBbash\fP のシェル関数にマッチさせるならば、次のように指定すればよいだろう。
208 .nf
209 .sp
210 .RS 4n
211 env_keep += "my_func=()*"
212 .RE
213 .fi
214 .PP
215 旧式の \fBbash\fP のシェル関数は、デフォルトでは保存されないので、
216 "=()*" という後続部分がなかったら、こうした環境変数はマッチしないことになる。
217 .IP "[\fB訳注\fP]:" 8
218 shellshock 以前の bash では、たとえば "my_func='() { ls \-F; }'"
219 といったシェル変数を export することで、
220 my_func という関数をサブシェルに渡すことができた。
221 shellshock 以後の bash では、この方法による関数の継承はできなくなり、
222 値が "() { ls \-F; }" である my_func という変数が、
223 渡されるだけになっている。だから、
224 sudoers ファイルの Defaults 行に上のように書いても、
225 shellshock 以後の bash を使っているかぎり、
226 my_func という環境変数が保存されるだけで、関数が渡されるわけではない。
227 .PP
228 \fBsudo\fP が許可、または拒否する環境変数すべてのリストは、"sudo \-V" を
229 root の資格で実行したときの出力中に含まれている。このリストは、
230 \fBsudo\fP が実行されるオペレーティングシステムによって異なることに気をつけていただきたい。
231 .PP
232 PAM をサポートしているシステムで、\fBpam_env\fP モジュールが
233 \fBsudo\fP に対して有効になっていると、
234 PAM の管理する環境にある変数が、環境にマージされることになるだろう。
235 ただし、PAM 環境にある変数がユーザの環境にすでに存在している場合に、
236 その値が上書きされることになるのは、
237 その変数が \fBsudoers\fP によって保存されていないときだけである。
238 すなわち、\fIenv_reset\fP が有効になっているときは、
239 \fIenv_keep\fP のリストによって \fBsudo\fP を実行するユーザの環境から保存された変数が、
240 PAM 環境にある変数より優先される。また、
241 \fIenv_reset\fP が無効になっているときは、
242 \fBsudo\fP を実行するユーザの環境にある変数が、
243 \fIenv_delete\fP のリストのパターンにマッチしていないかぎり、
244 PAM 環境にある変数よりも優先されるのである。
245 .PP
246 たいていのオペレーティングシステムのダイナミック・リンカは、
247 ダイナミック・リンキングを制御する働きがある環境変数を、
248 \fBsudo\fP もその一つである setuid 実行ファイルの環境から除去するようになっていることに注意していただきたい。
249 オペレーティングシステムによって名前は様々だが、_RLD*, DYLD_*, LD_*,
250 LDR_*, LIBPATH, SHLIB_PATH などが、この範疇に含まれるだろう。
251 そうした変数は、\fBsudo\fP の実行が始まるよりも前に、環境から除去されるので、
252 \fBsudo\fP がそうした変数を保存することは不可能である。
253 .PP
254 特例として、\fBsudo\fP に \fB\-i\fP (initial login) オプションが指定されている場合は、
255 \fBsudoers\fP は \fIenv_reset\fP の有効・無効にかかわらず、環境を初期化する。
256 環境変数 DISPLAY, PATH, TERM は変更されないが、HOME, MAIL, SHELL, USER, LOGNAME
257 は、変身対象ユーザのそれにセットされる。ATX (及び PAM を使用していない
258 Linux システム) では、\fI/etc/environment\fP の内容も取り込まれる。
259 それ以外の環境変数はすべて捨てられる。
260 .PP
261 最後に、\fIenv_file\fP オプションが設定されている場合は、
262 そのファイルに記載されたいかなる変数も、
263 すでに存在している環境変数と衝突しないかぎり、
264 そこで指定されている値にセットされることになる。
265 .SH "SUDOERS ファイルの書式"
266 \fIsudoers\fP ファイルは二種類のエントリから構成されている。
267 (要するに変数である) エイリアスと (誰が何を実行できるかを指定している) ユーザ設定だ。
268 (訳注: 訳者としては、「エイリアス、デフォルト設定、ユーザ設定の三種類のエントリから構成されている」と言った方が、
269 現在の実態に合っているのではないかと思う。)
270 .PP
271 一人のユーザに複数のエントリがマッチするときは、順番に適用される。
272 複数の指定がマッチしている箇所については、最後にマッチしたものが使用される
273 (それが一番明示的なマッチだとはかぎらないが)。
274 .PP
275 以下では \fIsudoers\fP ファイルの文法を拡張 Backus\-Naur 記法 (EBNF) を用いて記述する。
276 EBNF を御存じないからといって、あきらめないでいただきたい。
277 わりと簡単なものだし、以下に出てくる定義には詳しい説明をつけておきますから。
278 .SS "EBNF の基礎の基礎"
279 EBNF は言語の文法を記述する簡潔で厳密な方法である。
280 EBNF の個々の定義は生成規則からできている。たとえば、
281 .PP
282 シンボル ::= 定義 | 別の定義 1 | 別の定義 2 ...
283 .PP
284 個々の生成規則は、ほかの生成規則を参照し、そのようにして言語の文法を作り上げている。
285 また EBNF には以下の演算子が含まれるが、正規表現で御存じの読者も多いだろう。
286 だが、いわゆる「ワイルドカード」文字と混同しないでいただきたい。
287 あれは別の意味を持っている。
288 .TP  6n
289 \&?
290 直前のシンボル (または、シンボルのグループ) が、あってもなくてもよいことを意味する。
291 すなわちそのシンボルは、1 回現れてもよいし、1 回も現れないでもよい。
292 .TP  6n
293 *
294 直前のシンボル (または、シンボルのグループ) が 0 回以上現れる。
295 .TP  6n
296 +
297 直前のシンボル (または、シンボルのグループ) が 1 回以上現れる。
298 .PP
299 丸カッコを使うと、複数のシンボルをグループにまとめることができる。
300 なお、混乱を避けるため、以下の定義では、それが (シンボル名ではなく)
301 文字どおりの文字列や記号であることを示す場合には、シングルクォート
302 (' ') で囲むことにする。
303 .SS エイリアス
304 エイリアスには四種類ある。User_Alias, Runas_Alias, Host_Alias,
305 Cmnd_Alias である。
306 .nf
307 .sp
308 .RS 0n
309 Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |
310           'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
311           'Host_Alias'  Host_Alias (':' Host_Alias)* |
312           'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*
313
314 User_Alias ::= NAME '=' User_List
315
316 Runas_Alias ::= NAME '=' Runas_List
317
318 Host_Alias ::= NAME '=' Host_List
319
320 Cmnd_Alias ::= NAME '=' Cmnd_List
321
322 NAME ::= [A\-Z]([A\-Z][0\-9]_)*
323 .RE
324 .fi
325 .PP
326 個々のエイリアスの定義は、次の形をとる。
327 .nf
328 .sp
329 .RS 0n
330 Alias_Type NAME = item1, item2, ...
331 .RE
332 .fi
333 .PP
334 上記において \fIAlias_Type\fP は、User_Alias, Runas_Alias, Host_Alias,
335 Cmnd_Alias のうちの一つである。NAME は、アルファベットの大文字、数字、
336 アンダースコア ('_') からなる文字列であるが、
337 先頭の文字はアルファベットの大文字でなければならない。
338 同じタイプのエイリアス定義を、コロンで (':') つないで、一行に複数書くこともできる。
339 たとえば、
340 .nf
341 .sp
342 .RS 0n
343 Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
344 .RE
345 .fi
346 .PP
347 既存のエイリアスを再定義するのは、文法エラーである。
348 異なるタイプのエイリアスに対して同じ名前を使用することはできるが、
349 お薦めできることではない。
350 .PP
351 エイリアスの有効な要素となるものの定義は、以下のようになる。
352 .nf
353 .sp
354 .RS 0n
355 User_List ::= User |
356               User ',' User_List
357
358 User ::= '!'* user name |
359          '!'* #uid |
360          '!'* %group |
361          '!'* %#gid |
362          '!'* +netgroup |
363          '!'* %:nonunix_group |
364          '!'* %:#nonunix_gid |
365          '!'* User_Alias
366 .RE
367 .fi
368 .PP
369 User_List を構成するのは、一個以上の次のものである。
370 ユーザ名、ユーザID (接頭辞 '#' が付く)、
371 システムグループ名やその ID (それぞれ、接頭辞 '%' と '%#' が付く)、
372 ネットグループ名 (接頭辞 '+' が付く)、
373 non\-Unix グループ名やその ID (それぞれ、接頭辞 '%:' と '%:#' が付く)、
374 それに User_Alias。
375 リストの各項目の前には一個以上の '!' 演算子を付けてもよい。
376 奇数個の '!' はその項目の値を否定する。偶数個の場合は互い相殺されるだけだ。
377 なお、ユーザのネットグループについては、
378 ネットグループの成員中のユーザとドメインの要素のみを使って、マッチングが行われる。
379 ホストの要素はマッチングに使用されない。
380 .PP
381 ユーザ名、uid、グループ名、gid、ネットグループ名、non\-Unix グループ名、
382 non\-Unix グループ の gid は、ダブルクォートで囲めば、特殊文字をエスープしないですむ。
383 ダブルクォートで囲まずに特殊文字を使いたいなら、エスケープした 16 進数を指定してやればよい。
384 たとえば、スペースなら \ex20 という具合だ。
385 ダブルクォートを使用する場合は、接頭辞があれば、それをダブルクォートの内側に入れなければならない。
386 .PP
387 non\-Unix グループやその gid を指定するときのの書式が、
388 実際にどんなものになるかは、
389 利用するグループ・プロバイダー・プラグイン (group provider plugin) 次第である。
390 たとえば、QAS (Quest Authentication Services) の AD プラグインは、
391 以下の書式をサポートしている。
392 .TP  6n
393 \fB\(bu\fP
394 同じドメインのグループ: "%:Group Name"
395 .TP  6n
396 \fB\(bu\fP
397 任意のドメインのグループ: "%:Group Name@FULLY.QUALIFIED.DOMAIN"
398 .TP  6n
399 \fB\(bu\fP
400 グループ SID: "%:S\-1\-2\-34\-5678901234\-5678901234\-5678901234\-567"
401 .PP
402 詳細については、
403 「グループ・プロバイダー・プラグイン」セクションをご覧いただきたい。
404 .PP
405 グループ名を囲む引用符は任意であることに注意していただきたい。
406 文字列を引用符で囲まない場合は、バックスラッシュ ('\e') を使って、
407 スペースや特殊文字をエスケープしなければならない。
408 エスケープする必要がある文字のリストについては、
409 「ほかの特殊文字と予約語」のセクションを参照していただきたい。
410 .nf
411 .sp
412 .RS 0n
413 Runas_List ::= Runas_Member |
414                Runas_Member ',' Runas_List
415
416 Runas_Member ::= '!'* user name |
417                  '!'* #uid |
418                  '!'* %group |
419                  '!'* %#gid |
420                  '!'* %:nonunix_group |
421                  '!'* %:#nonunix_gid |
422                  '!'* +netgroup |
423                  '!'* Runas_Alias
424 .RE
425 .fi
426 .PP
427 Runas_List は User_List に似ている。違うのは、User_Alias ではなく、
428 Runas_Alias が使えることだ。ユーザ名やグループ名のマッチは、
429 文字列として行われることに気を付けていただきたい。
430 言い換えると、二つのユーザ名 (あるいは、グループ名) は、
431 仮に同じ uid (gid) を持っていても、別個のものと見なされるのである。
432 だから、もし同じ uid を持ったすべてのユーザ名にマッチさせたかったら
433 (たとえば、root と toor がそうだとしよう)、ユーザ名の代わりに uid を使えばよい
434 (この例なら、#0 である)。
435 .nf
436 .sp
437 .RS 0n
438 Host_List ::= Host |
439               Host ',' Host_List
440
441 Host ::= '!'* host name |
442          '!'* ip_addr |
443          '!'* network(/netmask)? |
444          '!'* +netgroup |
445          '!'* Host_Alias
446 .RE
447 .fi
448 .PP
449 Host_List を構成するのは、一個以上の次のものである。
450 ホスト名、IP アドレス、ネットワークアドレス、
451 ネットグループ名 (接頭辞 '+' が付く)、および他のエイリアス。
452 ここでもまた、項目の値は、'!' 演算子によって否定することができる。なお、
453 ホストのネットグループについては、ネットグループの成員中のホスト
454 (完全修飾名とそうでないもののどちらでも) とドメインの要素のみを使って、
455 マッチングが行われる。ユーザの要素はマッチングに使用されない。
456 ネットワークアドレスをネットマスクなしで指定した場合は、
457 \fBsudo\fP はローカルホストのネットワークインターフェースを一つ一つ参照し、
458 指定されたネットワークアドレスと同じアドレスを持つインターフェースがあれば、
459 そのネットマスクを使用することになる。ネットマスクの指定は、
460 標準の IP アドレス表記 (たとえば 255.255.255.0 や ffff:ffff:ffff:ffff::) でもよく、
461 CIDR 表記 (ビット数、たとえば 24 や 64) でもよい。
462 ホスト名の一部にシェル風のワイルドカードを使用することができるが
463 (下記の「ワイルドカード」セクションを参照)、
464 ご使用のマシンの hostname コマンドが完全修飾ドメイン名 (FQDN) を返さない場合、
465 ワイルドカードを利用するには \fIfqdn\fP オプションを使う必要がある。
466 なお、\fBsudo\fP がチェックするのは、
467 実在のネットワークインターフェースだけだということに留意してほしい。
468 すなわち、IP アドレス 127.0.0.1 (localhost) がマッチすることは、絶対にないのである。
469 また、"localhost" というホスト名がマッチするのは、
470 それが実際のホスト名であるときだけであり、
471 それは通常、ネットワークにつながっていないシステムの場合にしか当てはまらない。
472 .nf
473 .sp
474 .RS 0n
475 digest ::= [A\-Fa\-f0\-9]+ |
476            [[A\-Za\-z0\-9\+/=]+
477
478 Digest_Spec ::= "sha224" ':' digest |
479                 "sha256" ':' digest |
480                 "sha384" ':' digest |
481                 "sha512" ':' digest
482
483 Cmnd_List ::= Cmnd |
484               Cmnd ',' Cmnd_List
485
486 command name ::= file name |
487                  file name args |
488                  file name '""'
489
490 Cmnd ::= Digest_Spec? '!'* command name |
491          '!'* directory |
492          '!'* "sudoedit" |
493          '!'* Cmnd_Alias
494 .RE
495 .fi
496 .PP
497 Cmnd_List は一個以上の、コマンド名、ディレクトリ、
498 他のエイリアスからなるリストである。コマンド名は絶対パスのファイル名であり、
499 シェル風のワイルドカードを含んでいても構わない(下記の「ワイルドカード」セクションを参照)。
500 単にファイル名だけ指定した場合、
501 ユーザはお望みのどんな引き数でも付けてそのコマンドを実行することができる。
502 とは言え、コマンドライン引き数を (ワイルドカードを含めて)
503 指定しても構わないし、また、引き数に "\&" を指定して、そのコマンドは、
504 コマンドライン引き数を付けずに実行することしかできないと指示することもできる。
505 ディレクトリは '/' で終わる絶対パス名である。
506 Cmnd_List にディレクトリを指定すると、
507 ユーザーはそのディレクトリ内の任意のファイルを実行できるようになる
508 (だが、そのサブディレクトリにあるファイルは実行できない)。
509 .PP
510 Cmnd がコマンドライン引き数を伴っている場合は、 Cmnd 中の引き数は、
511 ユーザがコマンドラインで打ち込む引き数と正確に一致しなければならない
512 (Cmnd 中の引き数にワイルドカードがあるならば、
513 それがコマンドラインの引き数とマッチしなければならない)。
514 以下に挙げる文字をコマンド引き数の中で用いるときは、
515 \&'\e' によってエスケープしなければならないことに注意していただきたい。
516 \&',\&', ':\&', '=\&', '\e' がそれである。
517 Cmnd に "sudoedit" という \fBsudo\fP の組み込みコマンドを指定すると、
518 ユーザに \fBsudo\fP を \fB\-e\fP オプション付きで
519 (あるいは、\fBsudoedit\fP というコマンド名で) 実行することを許可することになる。
520 この場合、コマンドライン引き数も指定することができるのは、
521 普通のコマンドとまったく同様だ。
522 "sudoedit" は、\fBsudo\fP そのものに組み込まれたコマンドなので、\fIsudoers\fP
523 ファイルではパスを前に付けずに指定しなければならないことに注意していただきたい。
524 .PP
525 コマンド名の前に Digest_Spec が付いている場合、コマンドのマッチに成功するのは、
526 指定された SHA\-2 ダイジェストを使って照合できたときだけである。
527 ダイジェストのフォーマットとしては、
528 sha224, sha256, sha384, sha512 をサポートしている。
529 文字列は、16 進数形式でも base64 形式でも指定できる (base64 の方が短くて済む)。
530 SHA\-2 ダイジェストを 16 進数形式で生成できるユーティリティはいくつかある。
531 openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum
532 といったものがそうだ。
533 .PP
534 たとえば、openssl を使うなら、
535 .nf
536 .sp
537 .RS 0n
538 $ openssl dgst \-sha224 /bin/ls
539 SHA224(/bin/ls)= 118187da8364d490b4a7debbf483004e8f3e053ec954309de2c41a25
540 .RE
541 .fi
542 .PP
543 openssl を使って、base64 の出力を生成することもできる。
544 .nf
545 .sp
546 .RS 0n
547 $ openssl dgst \-binary \-sha224 /bin/ls | openssl base64
548 EYGH2oNk1JC0p9679IMATo8+BT7JVDCd4sQaJQ==
549 .RE
550 .fi
551 .PP
552 注意: もしユーザがコマンドそのものに対して (直接であれ、\fBsudo\fP コマンドを通してであれ)
553 書き込み権限を持っているならば、そのユーザは、ダイジェストチェックが済み、
554 コマンドが実行されるまでの間に、コマンドを別のものに置き換えることができるかもしれない。
555 同様の競合状態が、fexecve(2) システムコールを持っていないシステムでは、
556 コマンドが存在するディレクトリがユーザによって書き込み可能であるときに起こりえる。
557 .PP
558 コマンド・ダイジェストをサポートしているのは、バージョン 1.8.7 以上だけである。
559 .SS "デフォルト設定 (Defaults)"
560 かなりの設定オプションが、
561 一行以上の Default_Entry 行を指定することで実行時にデフォルトの値から変更可能だ。
562 その効果の及ぶ範囲は、あらゆるホストのすべてのユーザにすることもできるし、
563 ある特定のホストのすべてのユーザ、ある特定のユーザ、ある特定のコマンド、
564 ある特定のユーザとして実行するコマンドなどに限定することもできる。
565 気を付けてほしいのは、コマンドに限定した Defaults 行にコマンドライン引き数まで書くことができないことだ。
566 引き数を指定する必要がある場合は、Cmnd_Alias を定義して、代わりにそれを参照すればよい。
567 .nf
568 .sp
569 .RS 0n
570 Default_Type ::= 'Defaults' |
571                  'Defaults' '@' Host_List |
572                  'Defaults' ':' User_List |
573                  'Defaults' '!' Cmnd_List |
574                  'Defaults' '>' Runas_List
575
576 Default_Entry ::= Default_Type Parameter_List
577
578 Parameter_List ::= Parameter |
579                    Parameter ',' Parameter_List
580
581 Parameter ::= Parameter '=' Value |
582               Parameter '+=' Value |
583               Parameter '\-=' Value |
584               '!'* Parameter
585 .RE
586 .fi
587 .PP
588 パラメータは\fBフラグ\fP、\fB整数値\fP、\fB文字列\fP、\fBリスト\fPのどれであってもよい。
589 フラグは要するにブーリアン (真偽値) であり、'\&!' 演算子で off にできる。
590 整数値、文字列、リストのパラメータにも、真偽値として使用して、
591 それを無効にできるものがいくつか存在する。
592 パラメータの値が複数の単語を含むときは、
593 値をダブルクオート (\&"") で囲むとよい。
594 特殊文字はバックスラッシュ ('\e') でエスケープすることができる。
595 .PP
596 リストには代入演算子が = のほかにもう二つある。+= と \-= である。
597 こうした演算子は、それぞれ、リストに付け加えたり、リストから削除したりするのに使用する。
598 \-= 演算子を使って、リストに存在しない要素を消去しようとしても、エラーにはならない。
599 .PP
600 Defaults 行の解析は、次の順序で行われる。まず、汎用、Host、User の Defaults
601 が解析され、それから Runas の Defaults、最後にコマンドの Defaults の順番になる。
602 .PP
603 Defaults 行で使用できるパラメータのリストについては、
604 「SUDOERS のオプション」を御覧いただきたい。
605 .SS "ユーザ設定 (User Specification)"
606 .nf
607 .RS 0n
608 User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \e
609               (':' Host_List '=' Cmnd_Spec_List)*
610
611 Cmnd_Spec_List ::= Cmnd_Spec |
612                    Cmnd_Spec ',' Cmnd_Spec_List
613
614 Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
615
616 Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
617
618 SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
619
620 Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
621               'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
622               'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
623               'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')
624 .RE
625 .fi
626 .PP
627 \fBユーザ設定\fPは、あるユーザが、指定されたホストで (どのユーザに変身して)
628 どのコマンドを実行できるかを決定する。デフォルトでは、コマンドは \fBroot\fP
629 に変身して実行されるが、これはコマンドごとに変更することができる。
630 .PP
631 ユーザ設定の基本構造は、"who where = (as_whom) what" である
632 ("誰が どのホストで = (誰に変身して) 何を")。構成部分に分けて説明しよう。
633 .SS Runas_Spec
634 Runas_Spec は変身の対象となるユーザやグループを規定している。
635 完全な形の Runas_Spec は、(上で定義しているように) コロン (':\&') で区切られ、
636 カッコで囲まれた、二つの Runas_List からなっている。一つ目の Runas_List は、
637 \fBsudo\fP で \fB\-u\fP オプションを使ったときに変身できるユーザを指している。
638 二番目の方が規定しているのは、\fBsudo\fP の \fB\-g\fP オプションによって指定できるグループのリストだ。
639 両方の Runas_List が指定されている場合は、それぞれの Runas_List
640 にリストされているユーザとグループの任意の組み合わせで、
641 コマンドを実行することができる。一つ目の Runas_List だけが指定されている場合は、
642 リスト中のいかなるユーザにでも変身してコマンドを実行できるが、
643 \fB\-g\fP オプションを指定することはできない。一つ目の Runas_List が空で、
644 二番目だけ指定されている場合は、\fBsudo\fP を実行するユーザの資格で、
645 グループを Runas_List にリストされている任意のグループに設定して、
646 コマンドを実行することができる。Runas_Lists が両方とも空の場合は、
647 \fBsudo\fP を実行するユーザの資格でしかコマンドを実行できない。
648 Runas_Spec がまったく指定されていない場合は、\fBroot\fP としてコマンドを実行できるが、
649 グループを指定することはできない。
650 .PP
651 Runas_Spec は、それに続くコマンドに対してデフォルトを定める。
652 それはどういうことかと言うと、次のようなエントリがあったとしよう。
653 .nf
654 .sp
655 .RS 0n
656 dgb     boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
657 .RE
658 .fi
659 .PP
660 ユーザ \fBdgb\fP は \fI/bin/ls\fP, \fI/bin/kill\fP, \fI/usr/bin/lprm\fP を実行することができる。
661 ただし、\fBoperator\fP として実行できるだけだ。たとえば、次のようにである。
662 .nf
663 .sp
664 .RS 0n
665 $ sudo \-u operator /bin/ls
666 .RE
667 .fi
668 .PP
669 エントリの後ろの方の Runas_Spec を変更することも可能だ。
670 上のエントリをこんなふうに書き変えたとしよう。
671 .nf
672 .sp
673 .RS 0n
674 dgb     boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
675 .RE
676 .fi
677 .PP
678 すると、ユーザ \fBdgb\fP は、\fI/bin/ls\fP こそ \fBoperator\fP としてだが、
679 \fI/bin/kill\fP や \fI/usr/bin/lprm\fP は \fBroot\fP の資格で実行できるようになる。
680 .PP
681 \fBdgb\fP が /bin/ls を実行するとき、変身対象ユーザとグループのどちらでも
682 \fBoperator\fP になれるように、この記述を拡張することもできる。
683 .nf
684 .sp
685 .RS 0n
686 dgb     boulder = (operator : operator) /bin/ls, (root) /bin/kill,\e
687         /usr/bin/lprm
688 .RE
689 .fi
690 .PP
691 注意してほしいが、Runas_Spec のグループの部分は、
692 コマンドをそのグループとして実行することをユーザに許可しているのであって、
693 そうすることをユーザに強制しているのではない。
694 コマンドラインでグループを指定しない場合は、コマンドは、
695 パスワード・データベースにある変身対象ユーザのエントリに登録されているグループとして実行されることになるのだ。
696 以下のコマンドはすべて、上記の sudoers エントリによって許可されることになるだろう。
697 .nf
698 .sp
699 .RS 0n
700 $ sudo \-u operator /bin/ls
701 $ sudo \-u operator \-g operator /bin/ls
702 $ sudo \-g operator /bin/ls
703 .RE
704 .fi
705 .PP
706 次の例では、ユーザ \fBtcm\fP がモデムのデバイスファイルにアクセスするコマンドを
707 dialer グループとして実行できるようにしている。
708 .nf
709 .sp
710 .RS 0n
711 tcm     boulder = (:dialer) /usr/bin/tip, /usr/bin/cu,\e
712         /usr/local/bin/minicom
713 .RE
714 .fi
715 .PP
716 この例では、グループしか指定できないことに注意してほしい。コマンドは、
717 ユーザ \fBtcm\fP の資格のまま実行されるのである。たとえば、次のように。
718 .nf
719 .sp
720 .RS 0n
721 $ sudo \-g dialer /usr/bin/cu
722 .RE
723 .fi
724 .PP
725 Runas_Spec には複数のユーザやグループが存在してもよい。
726 その場合、ユーザは \fB\-u\fP や \fB\-g\fP オプションを使って、
727 ユーザとグループのどんな組み合わせでも選択することができる。
728 .nf
729 .sp
730 .RS 0n
731 alan    ALL = (root, bin : operator, system) ALL
732 .RE
733 .fi
734 .PP
735 この例では、ユーザ \fBalan\fP は root と bin のどちらのユーザにでも変身して、
736 任意のコマンドを実行することができる。また、グループを
737 operator や system に設定することも自由である。
738 .SS SELinux_Spec
739 SELinux をサポートするシステムでは、\fIsudoers\fP ファイルのエントリで
740 SELinux の role や type をコマンドに関連付けることも可能である。
741 role や type を特定のコマンドについて指定すると、
742 \fIsudoers\fP 中でデフォルトとして設定されている role や type があっても、
743 それよりも優先される。もっとも、role や type をコマンドラインで指定すれば、
744 そちらが \fIsudoers\fP 中の値よりさらに優先されることになる。
745 .SS Tag_Spec
746 コマンドは 0 個以上のタグを伴うことができる。使用できるタグの値は 14 個あり、
747 EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT,
748 NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD, SETENV, NOSETENV が、それである。
749 ある Cmnd にタグをセットすると、
750 Cmnd_Spec_List 中のそれ以後の Cmnd は、
751 反対の意味を持つタグによって変更されないかぎり、そのタグを継承することになる
752 (すなわち、PASSWD は NOPASSWD を無効にし、NOEXEC は EXEC を無効にする)。
753 .TP  2n
754 \fIEXEC\fP と \fINOEXEC\fP
755 .sp
756 \fBsudo\fP が \fInoexec\fP サポートつきでコンパイルされ、
757 使用しているオペレーティングシステムがそれに対応している場合、NOEXEC タグを利用すれば、
758 動的にリンクされた実行ファイルが、そこからさらにコマンドを実行するのを防ぐことができる。
759 .sp
760 次の例では、ユーザ \fBaaron\fP は \fI/usr/bin/more\fP と
761 \fI/usr/bin/vi\fP を実行できるが、シェル・エスケープは利用できない。
762 .nf
763 .sp
764 .RS 2n
765 aaron   shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
766 .RE
767 .fi
768 .RS 2n
769 .sp
770 NOEXEC がどんなふうに働くのか、お使いのシステムで利用できるかどうか、
771 などについてさらに詳しく知りたかったら、
772 後述の「シェル・エスケープの防止」セクションを御覧になるとよい。
773 .RE
774 .TP  2n
775 \fIFOLLOW\fP と \fINOFOLLOW\fP
776 バージョン 1.8.15 以来、\fBsudoedit\fP は、
777 \fIsudoedit_follow\fP オプションが有効になっていないかぎり、
778 ファイルがシンボリックリンクならば、それを開かないようになっている。
779 \fIFOLLOW\fP と \fINOFOLLOW\fP タグは、\fIsudoedit_follow\fP の値を上書きするので、
780 これを使用すれば、シンボリックリンクの編集をコマンドごとに許可したり、
781 禁止したりすることができる。
782 この二つのタグが効果があるのは、\fIsudoedit\fP コマンドに対してのみであり、
783 他のどんなコマンドに対しても無視される。
784 .TP  2n
785 \fILOG_INPUT\fP と \fINOLOG_INPUT\fP
786 .sp
787 この二つのタグは \fIlog_input\fP オプションの値をコマンドごとに変更する。
788 詳しい情報については、後述する「SUDOERS のオプション」セクションの
789 \fIlog_input\fP の説明をご覧になっていただきたい。
790 .TP  2n
791 \fILOG_OUTPUT\fP と \fINOLOG_OUTPUT\fP
792 .sp
793 この二つのタグは \fIlog_output\fP オプションの値をコマンドごとに変更する。
794 詳しい情報については、後述する「SUDOERS のオプション」セクションの
795 \fIlog_output\fP の説明をご覧になっていただきたい。
796 .TP  2n
797 \fIMAIL\fP と \fINOMAIL\fP
798 .sp
799 この二つのタグを使えば、
800 \fImail_all_cmnds\fP オプションの値をコマンドごとに上書きすることによって、
801 ユーザがコマンドを実行したときにメールを送付するかどうかについて、
802 きめ細かな制御を行うことができる。
803 \fBsudo\fP が \fB\-l\fP や \fB\-v\fP オプションを付けて実行されたときには、効果がない。
804 \fINOMAIL\fP は、\fImail_always\fP や \fImail_no_perms\fP オプションも上書きする。
805 詳細については、後述の「SUDOERS のオプション」セクションにある
806 \fImail_all_cmnds\fP, \fImail_always\fP, \fImail_no_perms\fP の説明をご覧いただきたい。
807 .TP  2n
808 \fIPASSWD\fP と \fINOPASSWD\fP
809 .sp
810 デフォルトでは、\fBsudo\fP はコマンドを実行する前に、ユーザが本人であることを証明するように求める。
811 この振舞いは NOPASSWD タグによって変更することができる。Runas_Spec と同様、
812 NOPASSWD タグも Cmnd_Spec_List 中のそれに続くコマンドに対してデフォルトを定める。
813 PASSWD の働きは反対であり、振舞いを元に戻したいときに使える。たとえば、
814 .nf
815 .sp
816 .RS 2n
817 ray     rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm
818 .RE
819 .fi
820 .RS 2n
821 .sp
822 とすれば、ユーザ \fBray\fP はマシン rushmore 上で認証をしないでも
823 \fBroot\fP として \fI/bin/kill\fP, \fI/bin/ls\fP, \fI/usr/bin/lprm\fP
824 を実行できるようになる。もし \fBray\fP がパスワードなしで実行できるコマンドを
825 \fI/bin/kill\fP だけに絞りたいのなら、エントリはこうなるだろう。
826 .nf
827 .sp
828 .RS 2n
829 ray     rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
830 .RE
831 .fi
832 .sp
833 ただし、ユーザが \fIexempt_group\fP オプションで指定されているグループに属する場合は、
834 PASSWD タグが効果を持たないことに注意してほしい。
835 .sp
836 デフォルトでは、現在使用中のホストに関するユーザのエントリのうちに
837 NOPASSWD タグが指定されているものが一つでもあれば、
838 そのユーザはパスワードなしで "sudo \-l" を実行できる。
839 なお、ユーザがパスワードなしで "sudo \-v" を実行できるのは、
840 現在使用中のホストに関するそのユーザのエントリのすべてで
841 NOPASSWD タグが生きているときのみである。この動作は、\fIverifypw\fP や \fIlistpw\fP
842 オプションによって変更できる。
843 .RE
844 .TP  2n
845 \fISETENV\fP と \fINOSETENV\fP
846 .sp
847 上記のタグは \fIsetenv\fP オプションの値をコマンドごとに変更する。
848 あるコマンドに対して SETENV を設定すると、
849 ユーザがコマンドラインから \fB\-E\fP オプションを使用して、
850 \fIenv_reset\fP オプションを無効にできるようになることに注意してほしい。
851 それだけではない。コマンドラインから設定する環境変数が \fIenv_check\fP,
852 \fIenv_delete\fP, \fIenv_keep\fP による規制を受けないようにもなる。
853 それ故、こうした形で環境変数を設定することを許可するのは、
854 信用できるユーザだけに限るべきである。なお、マッチするコマンドが
855 \fBALL\fP だった場合は、暗黙のうちに SETENVタグがそのコマンドに付けられるが、
856 このデフォルトの動作は UNSETENV タグを使えば打ち消すことができる。
857 .SS ワイルドカード
858 \fIsudoers\fP ファイルでは、ホスト名、コマンドのパス名、
859 コマンドライン引き数にシェル形式のワイルドカード (メタ文字とか
860 glob キャラクタとも言う) が使用できる。ワイルドカードのマッチングは、
861 IEEE Std 1003.1 ("POSIX.1") で規定されている glob(3) や fnmatch(3)
862 関数を用いて行われる。
863 .TP  10n
864 *
865 0 個以上の任意の文字 (ホワイトスペースも含む) にマッチする。
866 .TP  10n
867 \&?
868 任意の 1 文字 (ホワイトスペースも含む) にマッチする。
869 .TP  10n
870 [...]
871 指定された範囲の任意の 1 文字にマッチする。
872 .TP  10n
873 [!...]
874 指定された範囲\fI以外\fPの任意の 1 文字にマッチする。
875 .TP  10n
876 \ex
877 \&'x' がどんな文字であっても、'x' そのものとして評価する。
878 この表記法は '*', '\&?', '[\&', ']\&'
879 といった特殊文字をエスケープするために使用される。
880 .PP
881 \fB上記のものは正規表現ではないことに注意していただきたい。\fP
882 正規表現とは違って、範囲内の文字一つ以上にマッチさせる方法は存在しない。
883 .PP
884 使用しているシステムの glob(3) や fnmatch(3) 関数が文字クラスに対応しているなら、
885 文字クラスが使用できる。ただし、':\&' 文字は、
886 \fIsudoers\fP で特別な意味を持っているので、エスケープしなければならない。
887 一例を上げる。
888 .nf
889 .sp
890 .RS 4n
891 /bin/ls [[\e:\&alpha\e:\&]]*
892 .RE
893 .fi
894 .PP
895 \fIsudoers\fP 中で上のように書けば、アルファベットの文字で始まるどんなファイル名にもマッチするだろう。
896 .PP
897 コマンドのファイル名の部分で使われたワイルドカードはフォワードスラッシュ
898 ('/') に\fIマッチしない\fPことに注意していただきたい。そこで、次のようなパスは、
899 .nf
900 .sp
901 .RS 4n
902 /usr/bin/*
903 .RE
904 .fi
905 .PP
906 \fI/usr/bin/who\fP にマッチするが、\fI/usr/bin/X11/xterm\fP にはマッチしない。
907 .PP
908 だが、コマンドライン引き数の部分のマッチングでは、
909 ワイルドカードはスラッシュに\fIしっかりマッチする\fP。
910 コマンドライン引き数には、任意の文字列を含むことが認められており、
911 パス名しか許されていないわけではないからだ。
912 .PP
913 \fIsudoers\fP \fB中でコマンドライン引き数にワイルドカードを使用するときは、\fP
914 \fB注意しなければならない。\fP
915 .br
916 コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行う。
917 そのため、'\&?' や '*' といったワイルドカード文字が、
918 ユーザが指定したコマンドライン引き数と、
919 単語の境界をまたいでマッチしてしまうことになるのだ。
920 これは想定外のことかもしれない。たとえば、\fIsudoers\fP に次のような行があると、
921 .nf
922 .sp
923 .RS 4n
924 %operator ALL = /bin/cat /var/log/messages*
925 .RE
926 .fi
927 .PP
928 以下のコマンドが実行できることになるが、
929 .nf
930 .sp
931 .RS 4n
932 $ sudo cat /var/log/messages.1
933 .RE
934 .fi
935 .PP
936 また、以下のコマンドの実行も可能になってしまう。
937 .nf
938 .sp
939 .RS 4n
940 $ sudo cat /var/log/messages /etc/shadow
941 .RE
942 .fi
943 .PP
944 後者は、おそらく意図に反しているだろう。たいていの場合、
945 コマンドラインの処理は、\fIsudoers\fP ファイルの中ではなく、
946 スクリプト言語中で行った方が間違いがない。
947 .SS ワイルドカード・ルールの例外
948 上記ルールには以下の例外がある。
949 .TP  10n
950 \&""
951 \fIsudoers\fP ファイルのエントリにおいて、空文字列 \&""
952 が唯一のコマンドライン引き数だった場合は、
953 そのコマンドは引き数を\fI付けずに\fP実行しなければならないことを意味している。
954 .TP  10n
955 sudoedit
956 組み込みコマンド \fIsudoedit\fP にコマンドラインで渡す引き数は、
957 常にパス名であるはずだ。そこで、ワイルドカードはフォワードスラッシュ
958 ('/') にマッチしないようになっている
959 (訳注: \fIsudoers\fP 中で \fIsudoedit\fP に対して引き数を指定する場合、
960 それは一般のコマンドライン引き数と同じ扱いではなく、パス名扱いになるということ)。
961 .SS "sudoers に他のファイルをインクルードする"
962 #include 命令や #includedir 命令を使えば、現在解析中の \fIsudoers\fP ファイルに、
963 外部にあるほかの \fIsudoers\fP ファイルをインクルードすることができる。
964 .PP
965 この方法を使えば、たとえば、サイト全体で使用する \fIsudoers\fP ファイルのほかに、
966 マシンごとのローカルな \fIsudoers\fP ファイルを持つことができる。
967 ここでは、サイト全体の \fIsudoers\fP ファイルを \fI/etc/sudoers\fP とし、
968 マシンごとの方は \fI/etc/sudoers.local\fP とすることにしよう。
969 \fI/etc/sudoers\fP に \fI/etc/sudoers.local\fP をインクルードするには、
970 \fI/etc/sudoers\fP 中に次の行を書き込めばよい。
971 .nf
972 .sp
973 .RS 4n
974 #include /etc/sudoers.local
975 .RE
976 .fi
977 .PP
978 \fBsudo\fP は解析中この行に出会うと、カレントファイル (\fI/etc/sudoers\fP だ)
979 の処理を一時中止して、処理の対象を \fI/etc/sudoers.local\fP に切り替える。
980 そして、\fI/etc/sudoers.local\fP の末尾まで達したら、\fI/etc/sudoers\fP の残りを処理するのである。
981 インクルードされるファイルが、さらに他のファイルをインクルードしていてもよい。
982 インクルートのネストには、128 ファイルまでというハード・リミットがあって、
983 インクルードファイルのループが起きないようになっている。
984 .PP
985 インクルードファイルのパスが絶対パスでない場合は (すなわち、パスが
986 \&'/' で始まっていない場合は)、インクルードする側の sudoers
987 ファイルと同じディレクトリに、インクルードされるファイルも存在しなければならない。
988 たとえば、\fI/etc/sudoers\fP に次のような行があったら、
989 .nf
990 .sp
991 .RS 4n
992 #include sudoers.local
993 .RE
994 .fi
995 .PP
996 インクルードされるファイルは、\fI/etc/sudoers.local\fP である。
997 .PP
998 なお、ファイル名には %h エスケープが使える。これはホスト名の短縮形を示している。
999 たとえば、マシンのホスト名が "xerxes" のとき、
1000 .nf
1001 .sp
1002 .RS 4n
1003 #include /etc/sudoers.%h
1004 .RE
1005 .fi
1006 .PP
1007 と書けば、\fBsudo\fP はファイル \fI/etc/sudoers.xerxes\fP
1008 をインクルードすることになる。
1009 .PP
1010 #includedir 命令を使えば、\fIsudoers.d\fP ディレクトリを作っておいて、
1011 システムのパッケージ管理者がパッケージをインストールする際に \fIsudoers\fP
1012 のルールを記したファイルをそこに入れてやる、といったことが可能になる。
1013 たとえば、次のように書くと、
1014 .nf
1015 .sp
1016 .RS 4n
1017 #includedir /etc/sudoers.d
1018 .RE
1019 .fi
1020 .PP
1021 \fBsudo\fP は \fI/etc/sudoers.d\fP にあるファイルを一つづつ読み込む。
1022 ただし、末尾が '~' だったり、'.\&' 文字を含んでいたりするファイル名はスキップするが、
1023 これは、パッケージマネージャやエディタが作った、
1024 テンポラリファイルやバックアップファイルを読み込むような問題を起こさないためである。
1025 ファイルは辞書順にソートされて、解析される。すなわち、\fI/etc/sudoers.d/01_first\fP は
1026 \fI/etc/sudoers.d/10_second\fP より前に解析されるということだ。
1027 ソートは辞書順であって、数値の順ではないので、
1028 \fI/etc/sudoers.d/1_whoops\fP というファイルがあっても、
1029 \fI/etc/sudoers.d/10_second\fP \fIより後で\fPロードされることに注意していただきたい。
1030 ファイル名の先頭を 0 で埋めて数字の桁を揃えれば、
1031 こうした問題を回避することができる。
1032 .PP
1033 気をつけていただきたいが、#include でインクルードされたファイルとは違って
1034 (訳注: \fBvisudo\fP は \fI/etc/sudoers\fP を編集するとき、#include
1035 で指定したファイルがあれば、続けてそれも編集する)、
1036 \fBvisudo\fP が #includedir で指定したディレクトリのファイルまで編集するのは、
1037 シンタクスエラーを含むものがあるときだけである。
1038 とは言え、\fBvisudo\fP を \fB\-f\fP オプション付きで実行して、
1039 ディレクトリ中のファイルを直接編集することは可能だが、その場合は、
1040 他のファイルで定義されているエイリアスが再定義されていても、
1041 それを見つけて指摘してくれることはない。
1042 .SS ほかの特殊文字と予約語
1043 パウンド記号 ('#') はコメントを示すのに使用される
1044 (例外は、#include 命令の一部であるときや、ユーザ名に関連して現れ、
1045 その後に一個以上の数字が続くときであり、後者の場合は uid と見なされる)。
1046 コメント記号とそれに続くテキストは、行末にいたるまで無視される。
1047 .PP
1048 予約語 \fBALL\fP は組込みのエイリアスであり、何に対してでもマッチする。
1049 \fBALL\fP は、Cmnd_Alias, User_Alias, Runas_Alias, Host_Alias
1050 を代わりに使えるところなら、どこでも使用できる。
1051 \fBALL\fP という名前のエイリアスを自分で定義しようとしてはいけない。
1052 組込みのエイリアスの方が、自分で作ったエイリアスより優先して使われるからだ。
1053 \fBALL\fP の使用には危険が伴うことがあるのを忘れないでいただきたい。
1054 なぜなら、\fBALL\fP をコマンドに関して使うと、
1055 ユーザにシステム上の\fIどんな\fPコマンドでも実行することを許してしまうからである。
1056 .PP
1057 エクスクラメーションマーク ('\&!') は、リストやエイリアス中はもちろん、
1058 Cmnd の前でも論理 \fInot\fP 演算子として使用することができる。
1059 これによってある値を除外することが可能になるわけだ。
1060 ただし、'\&!' 演算子が効果を持つためには、
1061 そこから除外する対象が存在しなければならない。
1062 たとえば、root 以外のすべてのユーザにマッチさせたい場合は、
1063 次の表現を使用する。
1064 .nf
1065 .sp
1066 .RS 4n
1067 ALL,!root
1068 .RE
1069 .fi
1070 .PP
1071 次のように \fBALL\fP の記述を省くと、
1072 .nf
1073 .sp
1074 .RS 4n
1075 !root
1076 .RE
1077 .fi
1078 .PP
1079 確かに root を明示的に否定することにはなるが、
1080 他のどんなユーザともマッチすることがない。
1081 この点が、正真の「否定」演算子とは違っている。
1082 .PP
1083 とは言え、組込みエイリアス \fBALL\fP と '\&!' を組み合わせて、
1084 「二三のコマンド以外のすべての」コマンドの実行をあるユーザに許可しようとしても、
1085 意図どおりの動きになることはめったにないことに気をつけていただきたい
1086 (下記の「セキュリティに関する注意点」を参照)。
1087 .PP
1088 長い行は、行末にバックスラッシュ '\e' を置けば、継続することができる。
1089 .PP
1090 リストにおける要素間やユーザ設定における構文用特殊文字 ('=\&', ':\&',
1091 \&'(\&', ')\&') の前後に空白 (white space) を入れることは、任意である。
1092 .PP
1093 次の文字を単語 (ユーザ名とかホスト名とか) の一部として使うときは、
1094 バックスラッシュ ('\e') でエスケープしなければならない。
1095 \&'\&!', '=\&', ':\&', ',\&', '(\&', ')\&', '\e' がそれである。
1096 .SH "SUDOERS のオプション"
1097 すでに説明したように、\fBsudo\fP の動作は Default_Entry 行によって変更することができる。
1098 Defaults に与えることのできるパラメータについて、
1099 サポートされているもののすべてを、タイプ別にまとめて以下に列挙する。
1100 .PP
1101 \fBブーリアン・フラグ\fP (真偽値)
1102 .TP  18n
1103 always_query_group_plugin
1104 \fIgroup_plugin\fP の設定がなされている場合に、
1105 %group の形式のグループを解決するのに、
1106 同名のシステム・グループが同時に存在しないかぎり、
1107 指定された \fIgroup_plugin\fP を使用する。
1108 \fIalways_query_group_plugin\fP が設定されていない通常の状態では、
1109 %:group の形式のグループのみが \fIgroup_plugin\fP に渡されるのである。
1110 このフラグはデフォルトでは \fIoff\fP である。
1111 .TP  18n
1112 always_set_home
1113 これを有効にすると、\fBsudo\fP は環境変数 HOME を変身対象ユーザの
1114 (\fB\-u\fP オプションが使用されていないかぎり、root の)
1115 ホームディレクトリに設定することになる。事実上、
1116 暗黙のうちに \fBsudo\fP に \fB\-H\fP オプションが常に指定されることになるわけだ。
1117 気をつけていただきたいが、デフォルトでは、
1118 \fIenv_reset\fP オプションが有効になっている場合は、
1119 HOME の値は、変身対象ユーザのホームディレクトリに設定されることになる。
1120 だから、\fIalways_set_home\fP
1121 の指定に効果があるのは、\fIenv_reset\fP を無効に設定している場合か、
1122 \fIenv_keep\fP のリストに HOME が存在する場合だけである。
1123 このフラグはデフォルトでは \fIoff\fP である。
1124 .TP  18n
1125 authenticate
1126 これをセットすると、ユーザはコマンドの実行を許可される前に、パスワードで
1127 (あるいは、ほかの認証方法で) 自分が本人であることを証明しなければならなくなる。
1128 このデフォルト値は PASSWD や NOPASSWD タグで変更できる。
1129 このフラグはデフォルトでは \fIon\fP である。
1130 .TP  18n
1131 closefrom_override
1132 これをセットすると、ユーザが \fBsudo\fP の \fB\-C\fP
1133 オプションを使用できるようになる。\fB\-C\fP オプションというのは、
1134 \fBsudo\fP が開いているファイル・ディスクリプタを閉じていくとき、
1135 どのディスクリプタから閉じていくかという、デフォルトの始点を変更するものだ。
1136 このフラグはデフォルトでは \fIoff\fP である。
1137 .TP  18n
1138 compress_io
1139 これをセットすると、
1140 \fBsudo\fP がコマンドの入出力のログを取るように設定されている場合に、
1141 入出力のログを \fBzlib\fP を使って、圧縮することになる。
1142 \fBsudo\fP が \fBzlib\fP をサポートするようにコンパイルされている場合、
1143 このフラグのデフォルトは \fIon\fP である。
1144 .TP  18n
1145 exec_background
1146 デフォルトでは、\fBsudo\fP 自体がフォアグラウンドで実行されているかぎり、
1147 コマンドは \fBsudo\fP によってフォアグラウンド・プロセスとして実行される。それに対して、
1148 \fIexec_background\fP フラグが有効になっている場合は、
1149 コマンドが (入出力ロギングや \fIuse_pty\fP フラグのために) pty で実行されていると、
1150 そのコマンドはバックグラウンド・プロセスとして実行されることになる。
1151 このとき、そのコマンドが制御ターミナルから読み込みを行おうとすると
1152 (あるいは、ターミナルの設定を変更しようとすると)、
1153 コマンドは SIGTTIN シグナル (ターミナル設定の場合は SIGTTOU シグナル)
1154 によってサスペンドされる。そうしたことが起きても、
1155 \fBsudo\fP がフォアグラウンド・プロセスならば、
1156 そのコマンドは制御ターミナルの使用を許可され、
1157 ユーザが何の操作をしないでも、フォアグラウンドで実行が再開される。
1158 コマンドの実行をバックグラウンドで始めることの利点は、
1159 そうすれば、コマンドが明示的に要求しないかぎり、
1160 \fBsudo\fP はターミナルから読み込みを行う必要がないということである。
1161 そうしない場合は、コマンドが入力を要求しているか否かに関わりなく、
1162 いかなる入力もコマンドに渡さなければならないのだ
1163 (カーネルがターミナルのバッファリングをしているので、
1164 コマンドが本当にその入力を必要としているかどうかを、
1165 判断することはできないのである)。
1166 この動作は、従来の \fIsudo\fP の動作とは異なっている。
1167 また、コマンドが pty で実行されていないときの動作とも異なっている。
1168 .sp
1169 この動作がシームレスに行われるためには、オペレーティングシステムが、
1170 システムコールの自動的な再スタートをサポートしていなければならない。
1171 残念なことに、すべてのオペレーティングシステムが、
1172 デフォルトでそれを行ってくれるわけではなく、
1173 それを行ってくれるオペレーティングシステムにも、バグがあることがある。たとえば、
1174 Mac OS X は、\fBtcgetattr\fP() や \fBtcsetattr\fP() システムコールの再スタートに失敗する
1175 (これは Mac OS X のバグである)。それだけではなく、この動作は、
1176 コマンドが SIGTTIN や SIGTTOU シグナルで停止することを当てにしているので、
1177 そうしたシグナルは捕獲し、別のシグナル (たいていは SIGSTOP)
1178 で自分を停止させるプログラムは、自動的にフォアグラウンド化できない。
1179 linux の su(1) コマンドの動作が、系統によっては、そんなふうになっている。
1180 このフラグはデフォルトでは \fIoff\fP である。
1181 .sp
1182 この設定は、バージョン 1.8.7 以上でのみサポートされている。
1183 また、入出力ロギングが有効になっている場合や、
1184 \fIuse_pty\fP フラグが有効になっている場合以外、この設定には効果がない。
1185 .TP  18n
1186 env_editor
1187 これをセットすると、\fBvisudo\fP はデフォルトのエディタ・リストを利用する前に、
1188 環境変数 EDITOR や VISUAL の値を使用するようになる。
1189 それがセキュリティホールになりかねないことに注意していただきたい。
1190 ユーザが root として任意のコマンドを、
1191 ログに記録されることなく実行できるようになるからだ。
1192 こうした環境変数を利用するときの、\fIenv_editor\fP を有効にするよりも安全な方法は、
1193 \fIsudoers\fP ファイルの \fIeditor\fP オプションにコロンで区切ったエディタのリストを書いておくことだ。そうすれば、
1194 \fBvisudo\fP が EDITOR や VISUAL を使うのは、それが \fIeditor\fP
1195 オプションに指定した値とマッチしたときだけになる。
1196 \fIenv_reset\fP フラグが有効な場合に、\fBsudo\fP 経由で \fBvisudo\fP を起動したとき
1197 \fIenv_editor\fP フラグが効果を持つためには、
1198 環境変数 EDITOR や VISUAL が \fIenv_keep\fP のリストに存在していなければならない。
1199 このフラグはデフォルトでは \fIoff\fP である。
1200 .TP  18n
1201 env_reset
1202 これをセットすると、\fBsudo\fP は最小限の環境でコマンドを実行することになる。
1203 その環境には、以下の変数が含まれている。TERM, PATH, HOME,
1204 MAIL, SHELL, LOGNAME, USER, USERNAME、及び SUDO_* という変数。
1205 それに、\fBsudo\fP を起動するユーザの環境にある変数のうち、
1206 \fIenv_keep\fP や \fIenv_check\fP のリストにマッチするものが加わり、
1207 さらに、\fIenv_file\fP オプションによって指定されたファイルがあれば、
1208 そのファイルに記載されたすべての変数が追加される。
1209 \fIenv_keep\fP や \fIenv_check\fP のリストにどんな変数が存在するかについては、
1210 root ユーザとして \fBsudo\fP に \fB\-V\fP オプションを付けて実行すれば、
1211 \fIsudoers\fP 中でグローバルな Defaults パラメータによって変更された結果を、
1212 見ることができる。
1213 なお、\fIsecure_path\fP オプションが設定されているときは、
1214 その値が環境変数 PATH の値として使用される。
1215 このフラグはデフォルトでは \fIon\fP である。
1216 .TP  18n
1217 fast_glob
1218 通常 \fBsudo\fP はパス名のマッチングをするとき、glob(3)関数を使用して、
1219 シェル・スタイルのワイルドカード展開 (glob) を行う。
1220 しかし、glob(3) はファイルシステムにアクセスするので、
1221 指定パターンによっては、作業を完了するまでに時間がかかることがある。
1222 必要な時にマウントするようになっている (つまりオートマウントの)
1223 ネットワーク・ファイル・システムを参照するときは、とりわけ時間がかかる。
1224 \fIfast_glob\fP オプションを指定すると、\fBsudo\fP が fnmatch(3) 関数を使うようになるが、
1225 こちらの関数はマッチングを行う際にファイルシステムにアクセスしない。
1226 \fIfast_glob\fP の欠点は、\fI./ls\fP や \fI../bin/ls\fP
1227 のような相対パスに対するマッチができないことである。そのため、
1228 ワイルドカードを含むパス名が、否定演算子 '!\&'
1229 と一緒に使われている場合に、セキュリティ上の問題が生じるおそれがある。
1230 そうしたルールは簡単に迂回できるからだ。
1231 従って、\fIsudoers\fP ファイルに、ワイルドカードを含むパス名を否定するルールが存在する場合は、
1232 このオプションを使ってはいけない。このフラグはデフォルトでは \fIoff\fP である。
1233 .TP  18n
1234 fqdn
1235 ローカル・ホスト名 (hostname コマンドが返すもの) がドメイン名を含まないとき、
1236 \fIsudoers\fP ファイルで完全修飾ホスト名を使用したかったら、
1237 このフラッグをセットするとよい。すなわち、myhost ではなく、
1238 myhost.mydomain.edu を使いたい場合だ。そのときでも、
1239 そうしたければ、短縮形も使用できる (両方を混ぜて使うこともできる)。
1240 このオプションに効果があるのは、\fBgetaddrinfo\fP() や \fBgethostbyname\fP()
1241 関数が返すホストの「正規名 (canonical name)」が、
1242 完全修飾ドメイン名であるときだけである。
1243 システムがホスト名の解決に DNS を使用するように設定されているときは、普通そうなる。
1244 .sp
1245 システムが DNS よりも優先して \fI/etc/hosts\fP を使用するように設定されている場合、
1246 ホストの正規名は完全修飾名ではないかもしれない。
1247 ホスト名解決のために問い合わせる情報源の順番は、普通 \fI/etc/nsswitch.conf\fP,
1248 \fI/etc/netsvc.conf\fP, \fI/etc/host.conf\fP ファイルで指定されている。
1249 \fI/etc/resolv.conf\fP のこともある。\fI/etc/hosts\fP ファイルでは、
1250 エントリの最初のホスト名が正規名と見なされる。後に続く名前はエイリアスであり、
1251 \fBsudoers\fP によって使用されることはない。たとえば、hosts ファイルに
1252 "xyzzy" というマシンについて下記の行があるとき、
1253 完全修飾ドメイン名がホストの正規名であり、短い方の名前はエイリアスである。
1254 .sp
1255 .RS 24n
1256 192.168.1.1     xyzzy.sudo.ws xyzzy
1257 .RE
1258 .RS 18n
1259 .sp
1260 hosts ファイルにおけるマシンのエントリの書式が不適切だと、
1261 hosts ファイルへの問い合わせが DNS より前に行われる場合、\fIfqdn\fP
1262 オプションを指定しても、効果がない。
1263 .sp
1264 気を付けてほしいのは、ホスト名の解決に DNS を使用する場合、
1265 \fIfqdn\fP 有効にすると、\fBsudoers\fP は DNS に問い合わせをしなければならないので、
1266 DNS が稼働していないと (たとえば、マシンがネットワークから切り離されていると)、
1267 \fBsudo\fP が使えなくなるということである。
1268 もう一つ気を付けるべきことがある。hosts ファイルを使用する場合と同じことだが、
1269 DNS が知っているホストの正規名を使わなければならない。
1270 言い換えれば、ホストのエイリアス (CNAME のエントリ) を使ってはいけない。
1271 パフォーマンスの問題もあるし、DNS からエイリアスをすべて取得する方法はないからでもある。
1272 .sp
1273 このフラグはデフォルトでは \fIoff\fP である。
1274 .RE
1275 .TP  18n
1276 ignore_dot
1277 これをセットすると、環境変数 PATH 中に "." や ""
1278 (どちらもカレントディレクトリを意味する) があっても、
1279 \fBsudo\fP はそれを無視する。PATH そのものは変更されない。
1280 このフラグはデフォルトでは \fIoff\fP である。
1281 .TP  18n
1282 ignore_local_sudoers
1283 LDAP の方でこのフラグをセットすると、\fI/etc/sudoers\fP の解析がスキップされることになる。
1284 このフラグは、ローカルにある sudoers ファイルの使用を禁じて、
1285 LDAP のみを使うようにしたい諸企業のためにある。
1286 たちの悪いオペレータが \fI/etc/sudoers\fP に手を加えて、
1287 自分の権限を増やそうとしても、そうした悪だくみは阻止されるわけだ。
1288 このオプションが設定されているときは、
1289 \fI/etc/sudoers\fP ファイルは存在する必要すらない。このオプションは、
1290 LDAP 中に、マッチする特定のエントリが存在しなかったときに、
1291 いかに振舞うべきかを \fBsudo\fP に指示するものだから、
1292 これを指定する sudoOption は、cn=defaults のセクションになければ意味がない。
1293 このフラグはデフォルトでは \fIoff\fP である。
1294 .TP  18n
1295 insults
1296 これをセットすると、不正なパスワードが入力されたとき、
1297 \fBsudo\fP がユーザに悪態をつく。このフラグはデフォルトでは \fIoff\fP である。
1298 .TP  18n
1299 log_host
1300 これをセットすると、ホスト名が (syslog 経由ではない) \fBsudo\fP のログファイルに記録されることになる。
1301 このフラグはデフォルトでは \fIoff\fP である。
1302 .TP  18n
1303 log_input
1304 これをセットすると、\fBsudo\fP は、擬似 tty でコマンドを実行し、
1305 ユーザの入力をすべてログに取ることになる。入出力がリダイレクトされているとか、
1306 コマンドがパイプラインの一部だとかいう理由で、標準入力がユーザの tty
1307 に結びつけられていない場合でも、その入力はやはりキャプチャーされ、
1308 独立したログファイルに書き込まれる。
1309 より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよい。
1310 このフラグはデフォルトでは \fIoff\fP である。
1311 .TP  18n
1312 log_output
1313 これをセットすると、\fBsudo\fP は、\fI擬似 tty\fP でコマンドを実行し、
1314 スクリーンに送られたすべての出力をログに取ることになる。
1315 script(1) コマンドと似たことをやるわけだ。
1316 より詳しい情報については、「入出力ログファイル」セクションをご覧になるとよい。
1317 このフラグはデフォルトでは \fIoff\fP である。
1318 .TP  18n
1319 log_year
1320 これをセットすると、四桁の年が (syslog 経由ではない) \fBsudo\fP のログファイルに記入されることになる。
1321 このフラグはデフォルトでは \fIoff\fP である。
1322 .TP  18n
1323 long_otp_prompt
1324 \fBS/Key\fP や \fBOPIE\fP のような One Time Password (OTP) スキームを採用しているときにこれを有効にすると、
1325 チャレンジをローカルウィンドウにカット・アンド・ペーストしやすいように、
1326 二行のプロンプトが使用される。デフォルトのプロンプトほど見栄えはよくないが、
1327 こちらの方が便利だと思う人もいる。このフラグはデフォルトでは \fIoff\fP である。
1328 .TP  18n
1329 mail_all_cmnds
1330 ユーザが \fBsudo\fP 経由でコマンドの実行を試みるたびに
1331 (\fBsudoedit\fP の実行も含む)、\fImailto\fP ユーザにメールを送付する。
1332 ただし、ユーザが \fBsudo\fP に \fB\-l\fP や \fB\-v\fP オプションを付けて実行したときは、
1333 認証エラーがあり、しかも \fImail_badpass\fP フラグがセットされていないかぎり、
1334 メールを送付することはない。このフラグはデフォルトでは \fIoff\fP である。
1335 .TP  18n
1336 mail_always
1337 ユーザが \fBsudo\fP を実行するたびに、\fImailto\fP ユーザにメールを送る。
1338 このフラグはデフォルトでは \fIoff\fP である。
1339 .TP  18n
1340 mail_badpass
1341 \fBsudo\fP を実行するユーザが正しいパスワードを入力しなかったら、
1342 \fImailto\fP ユーザにメールを送付する。ユーザが実行しようとしているコマンドが
1343 \fBsudoers\fP によって許可されていない場合に、\fImail_all_cmnds\fP,
1344 \fImail_always\fP, \fImail_no_host\fP, \fImail_no_perms\fP, \fImail_no_user\fP
1345 フラグのどれかがセットされていると、このフラグは効果を持たないことになる。
1346 このフラグはデフォルトでは \fIoff\fP である。
1347 .TP  18n
1348 mail_no_host
1349 これをセットすると、\fBsudo\fP を起動したユーザが \fIsudoers\fP
1350 ファイルに記載されてはいるものの、
1351 使用中のホストでコマンドの実行を許可されていない場合に、
1352 \fImailto\fP ユーザにメールを送付する。このフラグはデフォルトでは
1353 \fIoff\fP である。
1354 .TP  18n
1355 mail_no_perms
1356 これをセットすると、\fBsudo\fP を起動したユーザが
1357 \fBsudo\fP の使用を許可されているが、
1358 実行しようとしているコマンドが \fIsudoers\fP ファイルの
1359 そのユーザのエントリに登録されていないか、明示的に禁止されている場合に、
1360 \fImailto\fP ユーザにメールを送付する。このフラグはデフォルトでは
1361 \fIoff\fP である。
1362 .TP  18n
1363 mail_no_user
1364 これをセットすると、\fBsudo\fP を起動したユーザが \fIsudoers\fP
1365 ファイルに記載されていない場合に、\fImailto\fP ユーザにメールを送付する。
1366 このフラグはデフォルトでは \fIon\fP である。
1367 .TP  18n
1368 netgroup_tuple
1369 これをセットすると、
1370 ネットグループの検索がネットグループのタプル全部を使って行われることになる
1371 (すなわち、ホスト名、ユーザ名、ドメインの三つが、それぞれ設定されているならば、
1372 使用される)。従来の \fBsudo\fP では、
1373 User_List で使用されるネットグループについては、
1374 ユーザ名とドメインだけを照合し、Host_List で使用されるネットグループについては、
1375 ホスト名とドメインだけを照合していた。このフラグはデフォルトでは \fIoff\fP である。
1376 .TP  18n
1377 noexec
1378 これをセットすると、\fBsudo\fP を通して実行されるすべてのコマンドが、
1379 EXEC タグで無効にされないかぎり、
1380 あたかも NOEXEC タグが設定されているかのごとく振舞うようになる。
1381 前述の「\fIEXEC\fP と \fINOEXEC\fP」の説明、および、
1382 このマニュアルの終わりの方にある「シェル・エスケープの防止」というセクションを参照していただきたい。
1383 このフラグはデフォルトでは \fIoff\fP である。
1384 .TP  18n
1385 pam_session
1386 認証に PAM を使用するシステムでは、\fBsudo\fP は新しい PAM セッションを作成し、
1387 その中でコマンドを実行する。PAM の実装が古い場合や、
1388 PAM セッションの開始が utmp や wtmp ファイルを変更するオペレーティングシステムでは、
1389 \fIpam_session\fP を無効にする必要があるかもしれない。
1390 ただし、PAM セッションのサポートを無効にすると、
1391 実行されるコマンドに対するリソースの上限が更新されないかもしれない。
1392 なお、\fIpam_session\fP, \fIpam_setcred\fP, \fIuse_pty\fP が無効になっていて、
1393 しかも 入出力ロギングが設定されていない場合は、
1394 \fBsudo\fP はコマンドを子プロセスとしてではなく、
1395 直接実行する。このフラグはデフォルトでは \fIon\fP である。
1396 .sp
1397 この設定は、バージョン 1.8.7 以上でのみサポートされている。
1398 .TP  18n
1399 pam_setcred
1400 認証に PAM を使用するシステムでは、\fBsudo\fP はデフォルトでは、
1401 使用している認証システムがサポートしているなら、変身対象ユーザの認証情報
1402 (credential) が有効であることを確認しようとする。認証情報の例を一つ挙げれば、
1403 Kerberos のチケットがそれである。\fIpam_session\fP, \fIpam_setcred\fP,
1404 \fIuse_pty\fP が無効になっていて、しかも 入出力ロギングが設定されていない場合は、
1405 \fBsudo\fP はコマンドを子プロセスとしてではなく、直接実行する。
1406 このフラグはデフォルトでは \fIon\fP である。
1407 .sp
1408 この設定は、バージョン 1.8.8 以上でのみサポートされている。
1409 .TP  18n
1410 passprompt_override
1411 通常、\fIpassprompt\fP オプションによって指定されたパスワードプロンプトが使用されるのは、
1412 PAM のようなシステムが用意しているパスワードプロンプトが、
1413 "Password:" という文字列にマッチしているときだけである。
1414 \fIpassprompt_override\fP をセットすると、\fIpassprompt\fP が無条件で使われることになる。
1415 このフラグはデフォルトでは \fIoff\fP である。
1416 .TP  18n
1417 path_info
1418 通常 \fBsudo\fP は、環境変数 PATH 中にコマンドが見付からないと、
1419 ユーザにその旨を知らせる。これを利用すれば、
1420 一般ユーザにアクセス権のない実行ファイルのありかについて情報を収集できるという理由から、
1421 この動作を無効にしたいサイトもあるかもしれない。
1422 その場合の欠点は、実行ファイルが単にユーザの PATH 中になかっただけの場合でも、
1423 実行の許可がないと \fBsudo\fP がユーザに告げることになって、
1424 実情がわかりにくいかもしれないことである。
1425 このフラグはデフォルトでは \fIon\fP である。
1426 .TP  18n
1427 preserve_groups
1428 デフォルトでは、\fBsudo\fP は所属グループの初期値として、
1429 変身対象ユーザが所属しているグループのリストを設定する。
1430 \fIpreserve_groups\fP をセットすると、
1431 \fBsudo\fP を実行するユーザの所属グループのリストが、
1432 変更されずにそのまま維持される。とは言え、実グループ ID や実効グループ ID が、
1433 変身対象ユーザのそれに設定されることに変わりはない。
1434 このフラグはデフォルトでは \fIoff\fP である。
1435 .TP  18n
1436 pwfeedback
1437 ほかのたいていの Unix のプログラムと同様、
1438 \fBsudo\fP はパスワードを読み込むとき、デフォルトでは、ユーザが Return
1439 (または Enter) キーを押すまで、エコーを off にする。
1440 この動作にとまどうユーザが存在する。
1441 彼らには \fBsudo\fP が急に反応しなくなったように見えるのだ。
1442 \fIpwfeedback\fP をセットすると、ユーザがキーを押すたびに、
1443 \fBsudo\fP が目に見える反応を返すようになる。
1444 これには、セキュリティ上の問題があることに注意していただきたい。
1445 側で見ている人が、打ち込まれたパスワードの文字数を特定できてしまうかもしれないのだ。
1446 このフラグはデフォルトでは \fIoff\fP である。
1447 .TP  18n
1448 requiretty
1449 これをセットすると、\fBsudo\fP が実行されるのは、ユーザが実際の tty
1450 にログインしたときだけになる。すなわち、\fBsudo\fP を実行できるのは、
1451 ログイン・セッションからだけであって、cron(8) や cgi\-bin スクリプトといった、
1452 ほかの方法を介して実行することはできないということだ。
1453 このフラグは、デフォルトでは \fIoff\fP である。
1454 .TP  18n
1455 root_sudo
1456 これをセットすると、root も \fBsudo\fP を実行できるようになる。
1457 このフラグを無効にすると、ユーザがたとえば "sudo sudo /bin/sh"
1458 といったように \fBsudo\fP コマンドを「連鎖的に」使って、
1459 ルートシェルを獲得することができなくなる。
1460 ところで、\fIroot_sudo\fP が off だと、
1461 root が \fBsudoedit\fP まで実行できなくなることに注意していただきたい。
1462 \fIroot_sudo\fP を無効にしても、セキュリティが実際に向上するわけではない。
1463 このフラグが存在しているのは、
1464 もっぱら歴史的な理由からなのだ。このフラグはデフォルトでは \fIon\fP である。
1465 .TP  18n
1466 rootpw
1467 これをセットすると、\fBsudo\fP は、コマンドを実行したり、
1468 ファイルを編集したりするとき、起動したユーザのパスワードではなく、
1469 root のパスワードを要求するようになる。
1470 このフラグはデフォルトでは \fIoff\fP である。
1471 .TP  18n
1472 runaspw
1473 これをセットすると、\fBsudo\fP は、コマンドを実行したり、
1474 ファイルを編集したりするとき、起動したユーザのパスワードではなく、
1475 \fIsudoers\fP ファイルの \fIrunas_default\fP オプションで指定しているユーザーの
1476 (デフォルトでは root である) パスワードを要求するようになる。
1477 このフラグはデフォルトでは \fIoff\fP である。
1478 .TP  18n
1479 set_home
1480 これが有効なときに \fBsudo\fP を \fB\-s\fP オプション付きで起動すると、
1481 環境変数 HOME が変身対象ユーザの (\fB\-u\fP オプションが使用されないかぎり、
1482 それは root である) ホームディレクトリに設定される。すなわち、
1483 \fB\-s\fP オプションが \fB\-H\fP オプションを事実上兼ねることになるわけだ。
1484 気をつけてほしいのは、\fIenv_reset\fP が有効な場合、HOME はすでに
1485 (訳注: 変身対象ユーザのホームディレクトリに) 設定済みだということだ。
1486 だから、\fIset_home\fP の効果があるのは、\fIenv_reset\fP が無効に設定されているか、
1487 \fIenv_keep\fP のリストに HOME が存在する場合だけである。
1488 このフラグはデフォルトでは \fIoff\fP である。
1489 .TP  18n
1490 set_logname
1491 通常 \fBsudo\fP は環境変数 LOGNAME, USER, USERNAME を変身対象ユーザの名前
1492 (\fB\-u\fP オプションが指定されていない場合、普通は root) にセットする。
1493 しかし、プログラムによっては
1494 (たとえば、RCS リビジョンコントロールシステムがその一つだが)
1495 ユーザが実際には誰であるかを判定するのに LOGNAME を使用していることがあり、
1496 そのため、この振舞いを変更したい場合もある。
1497 set_logname オプションに '!\&' を付けて否定することで、それができる。
1498 なお \fIenv_reset\fP オプションを無効にしていない場合に、
1499 \fIenv_keep\fP のリストに LOGNAME, USER, USERNAME などが入っていると、
1500 \fIset_logname\fP は効果を持たないので、注意していただきたい。
1501 このフラグはデフォルトでは \fIon\fP である。
1502 .TP  18n
1503 set_utmp
1504 これが有効になっていると、\fBsudo\fP は擬似 tty を割り当てるときに、
1505 utmp (または utmpx) ファイルにエントリを作成する。
1506 \fBsudo\fP によって擬似 tty の割り当てが行われるのは、\fIlog_input\fP,
1507 \fIlog_output\fP, \fIuse_pty\fP といったフラグが有効になっているときである。
1508 デフォルトでは、新しいエントリは、そのユーザの utmp エントリが存在すれば、
1509 そのコピーであり、tty, time, type, pid フィールドが更新される。
1510 このフラグはデフォルトでは \fIon\fP である。
1511 .TP  18n
1512 setenv
1513 これをセットすると、ユーザがコマンドラインで \fB\-E\fP オプションを指定して、
1514 \fIenv_reset\fP オプションを無効にできるようになる。
1515 さらに、コマンドラインから設定する環境変数が
1516 \fIenv_check\fP, \fIenv_delete\fP, \fIenv_keep\fP による制限を受けなくなる。
1517 それ故、そのようなやり方で変数を設定することを許可するのは、
1518 信用できるユーザのみに限るべきだ。
1519 このフラグはデフォルトでは \fIoff\fP である。
1520 .TP  18n
1521 shell_noargs
1522 これがセットされているとき、\fBsudo\fP を引き数なしで起動すると、
1523 \fBsudo\fP は \fB\-s\fP オプションが指定されたかのように振舞う。
1524 すなわち、root ユーザとしてシェルを実行するわけだ (シェルは、環境変数
1525 SHELL がセットされていれば、それによって決まり、
1526 セットされていなければ、\fBsudo\fP を起動したユーザの
1527 /etc/passwd エントリに登録されたものになる)。このフラグはデフォルトでは
1528 \fIoff\fP である。
1529 .TP  18n
1530 stay_setuid
1531 通常 \fBsudo\fP は、コマンドを実行するとき、実 UID と実効 UID
1532 を変身対象ユーザ (デフォルトでは root) のものにセットする。
1533 このオプションは、その振舞いを変更して、\fBsudo\fP を起動したユーザの
1534 UID が、そのまま実 UID として残るようにするのだ。言い換えると、
1535 このオプションは \fBsudo\fP を setuid ラッパーとして動作するようにするわけである。
1536 プログラムを setuid で動かすと、危険をもたらしかねないという理由から、
1537 ある種の機能を使えないようにしているシステムでは、
1538 このオプションが役に立つかもしれない。このオプションは、システムコールの
1539 setreuid() や setresuid() をサポートしているシステムでのみ有効である。
1540 このフラグはデフォルトでは \fIoff\fP である。
1541 .TP  18n
1542 sudoedit_checkdir
1543 .br
1544 これをセットすると、
1545 \fBsudoedit\fP は、編集対象ファイルのパス中にあるディレクトリ部分のすべてについて、
1546 \fBsudoedit\fP を実行するユーザとって書き込み可能かどうかを、チェックすることになる。
1547 ユーザに書き込み可能なディレクトリに存在するいかなるシンボリックリンクも、
1548 たどられることがなく、また、ユーザに書き込み可能なディレクトリにあるファイルの編集は、
1549 拒否されることになる。
1550 ただし、こうした制限は、\fBsudoedit\fP を実行するユーザが root の場合には、行われない。
1551 システムによっては、編集対象ファイルのパス中にあるディレクトリ部分のすべてが、
1552 変身対象ユーザにとって読み込み可能でないかぎり、
1553 \fBsudoedit\fP でファイルを編集できないものもある。
1554 このフラグはデフォルトでは \fIon\fP である。
1555 .sp
1556 この設定が最初に導入されたのは、バージョン 1.8.15 だったが、
1557 当初のものには競合状態を引き起こす欠陥があった。
1558 編集対象ファイルのパスの途中に書き込み可能なディレクトリがあり、
1559 そこにシンボリックリンクが存在する場合のチェックは、バージョン 1.8.16 で追加された。
1560 .TP  18n
1561 sudoedit_follow
1562 \fBsudoedit\fP はデフォルトでは、ファイルをオープンするときにシンボリックリンクをたどらない。
1563 \fIsudoedit_follow\fP オプションを有効にすると、
1564 \fBsudoedit\fP がシンボリックリンクをオープンできるようになる。
1565 そうした動作は \fIFOLLOW\fP や \fINOFOLLOW\fP タグを使えば、
1566 コマンドごとに変更することができる。このフラグはデフォルトでは \fIoff\fP である。
1567 .sp
1568 この設定は、バージョン 1.8.15 以上でのみサポートされている。
1569 .TP  18n
1570 targetpw
1571 これをセットすると、\fBsudo\fP は、コマンドを実行したり、
1572 ファイルを編集したりするとき、起動したユーザのパスワードではなく、
1573 \fB\-u\fP オプションで指定されたユーザ (デフォルトでは root)
1574 のパスワードを要求するようになる。
1575 このフラグを設定をすると、\fB\-u\fP オプションの引き数として、
1576 passwd データベースに登録されていない uid が使えなくなることに注意してほしい。
1577 このフラグはデフォルトでは \fIoff\fP である。
1578 .TP  18n
1579 tty_tickets
1580 これをセットすると、ユーザは tty ごとに認証をしなければならなくなる。
1581 このフラグが有効な場合、\fBsudo\fP は、各 tty に対して、
1582 タイムスタンプ・ファイル中の、それぞれ別個に記録される情報を使用することになる。
1583 それに対して、このフラグが無効な場合は、すべてのログイン・セッションに対して、
1584 単一の記録が使用されるのである。このフラグはデフォルトでは \fIon\fP である。
1585 .TP  18n
1586 umask_override
1587 これをセットすると、\fBsudo\fP は umask を \fIsudoers\fP の
1588 umask オプションで指定されたとおりの値に、変更を加えることなく設定する。
1589 このことによって、ユーザ自身の umask 値よりもっと緩やかな umask 値を
1590 \fIsudoers\fP ファイルで指定することが可能になる。\fBsudo\fP の昔の動作と同じになるわけだ。
1591 \fIumask_override\fP をセットしない場合、
1592 現在の \fBsudo\fP は umask を、ユーザの umask 値と \fIsudoers\fP で指定した
1593 umask 値とのビット和に設定することになっている。
1594 このフラグはデフォルトでは \fIoff\fP である。
1595 .TP  18n
1596 use_netgroups
1597 これをセットすると、ユーザやホストを指定する場所でネットグループ
1598 (接頭辞 '+' が付く) が使えるようになる。LDAP を使用する sudoers では、
1599 ネットグループをサポートすると、\fI/etc/ldap.conf\fP ファイルで
1600 \fBNETGROUP_BASE\fP 設定オプションを指定していない場合に、
1601 サーバ側で負荷の高い部分文字列 (substring) のマッチングを行う必要が生じる。
1602 そこで、ネットグループを使用する必要がない場合は、
1603 このオプションを \fIoff\fP にすれば、LDAP サーバの負荷を減らすことができる。
1604 このフラグはデフォルトでは \fIon\fP である。
1605 .TP  18n
1606 use_pty
1607 これをセットすると、\fBsudo\fP は入出力のロギングが行われていないときでも、
1608 擬似 tty でコマンドを実行することになる。
1609 \fBsudo\fP によって実行された悪意のあるプログラムが、
1610 バックグラウンド・プロセスをフォークし、
1611 そのプロセスが、メインプログラムの実行が終了した後でも、
1612 ユーザのターミナルデバイスを握って離さないといったことが考えられる。
1613 このオプションを使えば、そういったことが不可能になる。
1614 このフラグはデフォルトでは \fIoff\fP である。
1615 .TP  18n
1616 utmp_runas
1617 これをセットすると、\fBsudo\fP は utmp (または utmpx) ファイルを更新するとき、
1618 変身対象ユーザの名前を記録するようになる。\fBsudo\fP はデフォルトでは、
1619 \fBsudo\fP を実行したユーザの名前を記録するのだ。
1620 このフラグはデフォルトでは \fIoff\fP である。
1621 .TP  18n
1622 visiblepw
1623 デフォルトでは、ユーザがパスワードを入力しなければならないときに、
1624 使用しているターミナルでエコーの抑制ができなかったら、
1625 \fBsudo\fP は実行を拒否するようになっている。
1626 それに対し、\fIvisiblepw\fP フラグが設定されていると、
1627 パスワードがスクリーンに表示されてしまう場合でも、
1628 \fBsudo\fP はプロンプトを出して、パスワードを求めるようになる。
1629 ssh(1) はデフォルトでは、コマンドを実行する際に tty を割り当てないので、
1630 \fBsudo\fP はエコーの抑制ができないが、その場合でも、この設定によって、
1631 "ssh somehost sudo ls" といった操作の実行が可能になるわけだ。
1632 このフラグはデフォルトでは \fIoff\fP である。
1633 .PP
1634 \fB整数\fP:
1635 .TP  18n
1636 closefrom
1637 \fBsudo\fP はコマンドを実行する前に、標準入力、標準出力、標準エラー
1638 (すなわち、ファイルディスクリプタ 0\-2 ) を除いて、
1639 開いているすべてのファイル・ディスクリプタをクローズする。
1640 \fIclosefrom\fP オプションを使用すると、
1641 0\-2 以外のどのファイル・ディスクリプタから閉じて行くかを指定することができる。
1642 デフォルトは 3 である。
1643 .TP  18n
1644 maxseq
1645 入出力ログファイルで
1646 "%{seq}" エスケープシーケンスに置き換えられる連続番号の最大値
1647 (詳細については、後述の \fIiolog_dir\fP オプションの説明を参照すること)。
1648 "%{seq}" に置き換えられる値は 36 進数だが、\fImaxseq\fP そのものは
1649 10 進数で指定するべきである。2176782336 (38 進数の連続番号では、
1650 "ZZZZZZ" に相当する) より大きい値は 、暗黙のうちに
1651 2176782336 に縮小される。デフォルトの値は 2176782336 である。
1652 .sp
1653 使用している連続番号が \fImaxseq\fP の値に達したら、最初の値の 0 に戻る。
1654 それ以後は、\fBsudoers\fP は存在している入出力ログファイルをサイズ 0 に短縮して、
1655 そのパス名を再利用することになる。
1656 .sp
1657 この設定は、バージョン 1.8.7 以上でのみサポートされている。
1658 .TP  18n
1659 passwd_tries
1660 \fBsudo\fP が「失敗」をログに記録して終了する前に、
1661 ユーザがパスワードを入力できる回数。デフォルトは 3 回。
1662 .PP
1663 \fB真偽値としても使用できる整数\fP:
1664 .TP  18n
1665 loglinelen
1666 \fBsudo\fP 独自のログファイルの一行あたりの文字数。この値は、
1667 ログファイルを見やすくするために改行する位置を決めるのに使用される。
1668 この値は、syslog 経由のログファイルには影響せず、
1669 独自のファイルにログを記録するときのみ効果がある。デフォルトは 80 である
1670 (改行をしないようにするには、値を 0 にするか、頭に '!\&' を付けて、
1671 このオプションを否定する)。
1672 .TP  18n
1673 passwd_timeout
1674 \fBsudo\fP のパスワードプロンプトが時間切れになるまでの分単位の時間。
1675 0 を指定すると、時間切れなしになる。
1676 分よりももっと細かい時間を指定したかったら、2.5 のように、
1677 小数点以下を付けることもできる。デフォルトは 5 分。
1678 .TP  18n
1679 timestamp_timeout
1680 .br
1681 \fBsudo\fP がパスワードを再び要求するようになるまでの時間を分単位で指定する。
1682 分よりももっと細かい時間を指定したかったら、2.5 のように、
1683 小数点以下を付けることもできる。デフォルトは 5 分である。
1684 これを 0 にセットすると、毎回パスワードを要求するようになる。
1685 0 よりも小さい値にセットすると、ユーザのタイムスタンプは、
1686 システムがリブートされるまで期限切れにならない。
1687 ユーザが "sudo \-v" と "sudo \-k" を実行することによって、
1688 タイムスタンプを自分で作ったり、消したりできるようにしたかったら、
1689 この手を使えばよい。
1690 .TP  18n
1691 umask
1692 コマンドを実行するときに使用する umask 値。
1693 ユーザの umask 値をそのまま使いたかったら、'!\&' を頭に付けて、
1694 このオプションを否定するか、0777 にセットすればよい。
1695 このオプションの値が 0777 以外の場合、実際に使用される umask 値は、
1696 ユーザの umask 値と \fIumask\fP オプションの値とのビット和であり、
1697 後者のデフォルトは 0022 である。
1698 このことによって、\fBsudo\fP がコマンドを実行するときの umask 値が、
1699 ユーザの umask 値より低くならないようになっているわけだ。
1700 PAM を使用しているシステムでは、
1701 PAM のデフォルト設定で umask 値を指定することができるが、
1702 その場合は、それが \fIsudoers\fP で指定する値に優先することに注意していただきたい。
1703 .PP
1704 \fB文字列\fP:
1705 .TP  18n
1706 badpass_message
1707 ユーザが不正なパスワードを入力したときに表示するメッセージ。
1708 \fIinsults\fP フラグが有効になっていないかぎり、
1709 デフォルトは「Sorry, try again.」である。
1710 .TP  18n
1711 editor
1712 \fBvisudo\fP で使用できるエディタをコロン (':\&') で区切ったリスト。\fBvisudo\fP は、
1713 可能ならば、ユーザの EDITOR 環境変数や
1714 VISUAL 環境変数とマッチしたリスト中のエディタを選択する。
1715 それができないときは、このリストにあるエディタで、実際に存在し、
1716 かつ実行可能な最初のエディタを使用する。
1717 環境変数 EDITOR や VISUAL は、\fIenv_reset\fP オプションが有効な場合、
1718 デフォルトでは保存されないことに注意していただきたい。
1719 デフォルトは \fIvi\fP である。
1720 .TP  18n
1721 iolog_dir
1722 このオプションの値をトップレベル・ディレクトリにして、
1723 入出力ログを置くディレクトリのパス名が構成される。この値が使用されるのは、
1724 \fIlog_input\fP や \fIlog_output\fP オプションが有効になっているときや、
1725 LOG_INPUT や LOG_OUTPUT タグがコマンドに付いているときだけである。
1726 このディレクトリ以下に、セッション ID が連番ならば、
1727 セッションの連番が (訳注: 以下の "%{seq}" の説明にあるような形で) 
1728 格納されることになるわけだ。デフォルトは \fI/var/log/sudo\-io\fP である。
1729 .sp
1730 以下のパーセント ('%') エスケープシーケンスが使用できる。
1731 .PP
1732 .RS 18n
1733 .PD 0
1734 .TP  6n
1735 %{seq}
1736 単調に増加する 36 進数の連続番号に展開される。たとえば、0100A5
1737 といった番号であり、二桁づつ使って新しいディレクトリを作っていく。
1738 この場合なら、\fI01/00/A5\fP といった具合だ。
1739 .PD
1740 .TP  6n
1741 %{user}
1742 \fBsudo\fP を実行するユーザーのログイン名に展開される。
1743 .TP  6n
1744 %{group}
1745 \fBsudo\fP を実行するユーザーの実グループ ID の名前に展開される。
1746 .TP  6n
1747 %{runas_user}
1748 変身対象ユーザのログイン名に展開される (たとえば root)。
1749 .TP  6n
1750 %{runas_group}
1751 変身対象ユーザのグループ名に展開される (たとえば wheel)。
1752 .TP  6n
1753 %{hostname}
1754 ドメイン名なしのローカル・ホスト名に展開される。
1755 .TP  6n
1756 %{command}
1757 実行されるコマンドのベースネームに展開される。
1758 .PP
1759 このほか、システムの strftime(3) 関数がサポートしているエスケープシーケンスは、
1760 いかなるものでも展開の対象になる。
1761 .sp
1762 \&'%' 文字そのものを使いたかったら、文字列 '%%' を使用すればよい。
1763 .RE
1764 .TP  18n
1765 iolog_file
1766 \fIiolog_dir\fP を基点とする相対パス名であり、\fIlog_input\fP や
1767 \fIlog_output\fP オプションが有効になっていたり、LOG_INPUT や LOG_OUTPUT
1768 タグがコマンドに付いている場合に、入出力ログがこの中に格納される。
1769 \fIiolog_file\fP の値が複数のディレクトリ構成要素を含んでいることがあるのに注意していただきたい。
1770 デフォルトは "%{seq}" である。
1771 .sp
1772 使用できるパーセント ('%') エスケープシーケンスのリストについては、
1773 上記の \fIiolog_dir\fP オプションを参照。
1774 .sp
1775 エスケープシーケンスの展開とは別に、パス名が六個以上の X で終わっている場合は、
1776 X の部分が、他と重複しない英数字の組み合わせに置き換えられる。
1777 mktemp(3) 関数の場合と同様である。
1778 .sp
1779 \fIiolog_dir\fP と \fIiolog_file\fP を結合して作られるパスがすでに存在している場合は、
1780 \fIiolog_file\fP が 6 個以上の X で終わっていないかぎり、
1781 既存の入出力ログファイルは、サイズ 0 に短縮された上で、上書きされることになる。
1782 .TP  18n
1783 lecture_status_dir
1784 \fBsudo\fP はこのディレクトリに、
1785 ユーザが訓戒を受けたかどうかを示すファイルを、ユーザごとに入れておく。
1786 ユーザが訓戒を受けると、サイズ 0 のファイルがこのディレクトリに作成され、
1787 \fBsudo\fP はそのユーザに再び訓戒を行わなくなる。このディレクトリは、
1788 システムのブート時に\fI消去すべきではない\fP。
1789 デフォルトは \fI/var/lib/sudo/lectured\fP である。
1790 .TP  18n
1791 mailsub
1792 \fImailto\fP ユーザに送付するメールの件名。
1793 エスケープ文字 %h はマシンのホスト名に展開される。
1794 デフォルトは「*** SECURITY information for %h ***」である。
1795 .TP  18n
1796 noexec_file
1797 \fBsudo\fP バージョン 1.8.1 以来、このオプションはサポートされていない。
1798 現在では、noexec ファイルのパスは sudo.conf(5) ファイルで設定するべきである。
1799 .TP  18n
1800 pam_login_service
1801 .br
1802 PAM を認証に使用しているシステムでは、このオプションの値が、
1803 \fBsudo\fP コマンドに \fB\-i\fP オプションが指定されたとき使用されるサービス名になる。
1804 デフォルトの値は、
1805 "sudo" である。\fIpam_service\fP の説明もご覧いただきたい。
1806 .sp
1807 この設定は、バージョン 1.8.8 以上でのみサポートされている。
1808 .TP  18n
1809 pam_service
1810 PAM を使用しているシステムでは、このオプションで指定するサービス名が、
1811 適用される PAM ポリシーを指定することになる。サービス名は \fIpam.conf\fP
1812 ファイル中のエントリ名や、\fI/etc/pam.d\fP にあるファイル名に対応している。
1813 デフォルトの値は "sudo" である。
1814 .sp
1815 この設定は、バージョン 1.8.8 以上でのみサポートされている。
1816 .TP  18n
1817 passprompt
1818 パスワードを要求するときに使用するデフォルトのプロンプト。
1819 \fB\-p\fP オプションや環境変数 SUDO_PROMPT によって変更することができる。
1820 以下のパーセント ('%') エスケープシーケンスが使用できる。
1821 .PP
1822 .RS 18n
1823 .PD 0
1824 .TP  6n
1825 %H
1826 ドメイン名付きのローカルホスト名に展開される (マシンのホスト名が完全修飾名か、
1827 \fIfqdn\fP オプションがセットされている場合のみ)。
1828 .PD
1829 .TP  6n
1830 %h
1831 ドメイン名なしのローカル・ホスト名に展開される。
1832 .TP  6n
1833 %p
1834 パスワードを要求されているユーザ名に展開 (\fIsudoers\fP ファイルの
1835 \fIrootpw\fP, \fItargetpw\fP, \fIrunaspw\fP フラグを尊重する)。
1836 .TP  6n
1837 \&%U
1838 変身対象ユーザの (デフォルトでは root) ログイン名に展開。
1839 .TP  6n
1840 %u
1841 \fBsudo\fP を実行するユーザーのログイン名に展開される。
1842 .TP  6n
1843 %%
1844 連続した二個の % は、一個の % 文字そのものを意味する。
1845 .PP
1846 デフォルトの値は「Password:」である。
1847 .RE
1848 .TP  18n
1849 role
1850 コマンドの実行に当たって
1851 SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、
1852 デフォルトのロール。デフォルトのロールは、
1853 \fIsudoers\fP ファイルや、コマンドラインオプションを使って、
1854 コマンドごとに変更することができる。このオプションが利用できるのは、
1855 \fBsudo\fP が SELinux サポートつきでビルドされたときだけである。
1856 .TP  18n
1857 runas_default
1858 コマンドラインで \fB\-u\fP オプションが指定されていないときの、
1859 デフォルトの変身対象ユーザ。デフォルトでは root になっている。
1860 .TP  18n
1861 syslog_badpri
1862 ユーザが認証に失敗したときに使用する syslog の重大度 (priority)。
1863 デフォルトでは alert になっている。
1864 .sp
1865 syslog の重大度には、次のものが指定できる。\fBemerg\fP, \fBalert\fP,
1866 \fBcrit\fP, \fBerr\fP, \fBwarning\fP, \fBnotice\fP, \fBinfo\fP, \fBdebug\fP。
1867 .TP  18n
1868 syslog_goodpri
1869 ユーザが認証に成功したときに使用する syslog の重大度 (priority)。
1870 デフォルトでは notice になっている。
1871 .sp
1872 どんな syslog の重大度が指定できるかについては、
1873 \fIsyslog_badpri\fP を参照。
1874 .TP  18n
1875 sudoers_locale
1876 sudoers ファイルを解析したり、コマンドのログを記録したり、
1877 email を送付したりするときに使用するロケール。
1878 ロケールの変更は、sudoers の解釈に影響があるかもしれないので、
1879 気をつけていただきたい。デフォルトでは "C" になっている。
1880 .TP  18n
1881 timestampdir
1882 \fBsudo\fP がタイムスタンプ・ファイルを置くディレクトリ。
1883 このディレクトリは、システムがリブートするとき、クリアされるべきである。
1884 デフォルトは \fI/var/run/sudo/ts\fP になっている。
1885 .TP  18n
1886 timestampowner
1887 ユーザが訓戒を受けたかどうかを示すファイルを入れておくディレクトリや、
1888 タイムスタンプ・ディレクトリ、
1889 及びそうしたディレクトリに置かれるすべてのファイルの所有者。
1890 デフォルトは root である。
1891 .TP  18n
1892 type
1893 コマンドの実行に当たって
1894 SELinux の新しいセキュリティ・コンテキストを構成するときに使用する、
1895 デフォルトのタイプ。デフォルトのタイプは、
1896 \fIsudoers\fP ファイルや、コマンドラインオプションを使って、
1897 コマンドごとに変更することができる。このオプションが利用できるのは、
1898 \fBsudo\fP が SELinux サポートつきでビルドされたときだけである。
1899 .PP
1900 \fB真偽値としても使用できる文字列\fP:
1901 .TP  14n
1902 env_file
1903 \fIenv_file\fP オプションでは、
1904 実行するプログラムの環境に設定する変数を記載したファイルの絶対パスを指定する。
1905 このファイルに記載する項目は、"VARIABLE=value" か "export VARIABLE=value"
1906 の形でなければならない。変数の値をシングルクォートやダブルクォートで囲んでもよい。
1907 このファイルに含まれる変数は、\fIenv_keep\fP や \fIenv_check\fP のような
1908 \fBsudo\fP のほかの環境設定の影響を受ける。
1909 .TP  14n
1910 exempt_group
1911 このグループのユーザはパスワードの入力や \fIsecure_path\fP などによる
1912 PATH の限定を免除される。指定するグループ名に接頭辞の % を付けてはいけない。
1913 このオプションはデフォルトではセットされていない。
1914 .TP  14n
1915 group_plugin
1916 このオプションの値となる文字列には、
1917 \fBsudoers\fP が使用するグループ・プラグインと、必要ならその引き数を指定する。
1918 値となる文字列は、プラグインのパスに続けて、その設定に必要な引き数があれば、
1919 それを付け加えたものだが、パスは絶対パスか、
1920 \fI/usr/local/libexec/sudo\fP を基点とする相対パスにするべきである。
1921 引き数が存在するなら、それはプラグインの初期化関数に渡される。
1922 引き数が存在する場合は、文字列全体をダブルクォート (\&"") で囲まなければならない。
1923 .sp
1924 詳細については、
1925 「グループ・プロバイダー・プラグイン」セクションををご覧いただきたい。
1926 .TP  14n
1927 lecture
1928 \fBsudo\fP はパスワードプロンプトに添えて簡単な訓戒を表示することができる。
1929 このオプションはその訓戒をいつ表示するかを決定する。以下の値が可能である。
1930 .PP
1931 .RS 14n
1932 .PD 0
1933 .TP  8n
1934 always
1935 いつでも必ず訓戒を表示する。
1936 .PD
1937 .TP  8n
1938 never
1939 訓戒をまったく表示しない。
1940 .TP  8n
1941 once
1942 ユーザがはじめて \fBsudo\fP を実行したときだけ表示する。
1943 .PP
1944 値を指定しないと、\fIonce\fP を指定したことになる。頭に '!' を付けて、
1945 このオプションを否定すると、値に \fInever\fP が使用される。
1946 デフォルトの値は \fIonce\fP である。
1947 .RE
1948 .TP  14n
1949 lecture_file
1950 標準の訓戒とは別の \fBsudo\fP の訓戒を書き込んだファイルのパス。
1951 指名したファイルが存在すれば、\fBsudo\fP は標準の訓戒の代わりに、それを使用する。
1952 デフォルトでは、プログラムに埋め込まれた訓戒が使用される。
1953 .TP  14n
1954 listpw
1955 このオプションは、\fBsudo\fP を \fB\-l\fP オプション付きで実行したとき、
1956 ユーザがパスワードを要求されるのは、どんな場合かを決定する。
1957 以下の値が可能である。
1958 .PP
1959 .RS 14n
1960 .PD 0
1961 .TP  10n
1962 all
1963 パスワードを入力しないですむためには、
1964 \fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
1965 NOPASSWD タグが設定されていなければならない。
1966 .PD
1967 .TP  10n
1968 always
1969 ユーザは \fB\-l\fP オプションを使用する際に、必ずパスワードを入力しなければならない。
1970 .TP  10n
1971 any
1972 パスワードを入力しないですむためには、
1973 \fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一つに
1974 NOPASSWD タグが設定されていなければならない。
1975 .TP  10n
1976 never
1977 ユーザは \fB\-l\fP オプションを使用する際に、パスワードを入力する必要がまったくない。
1978 .PP
1979 値を指定しないと、値は \fIany\fP だと見なされる。'!' を頭に付けて、
1980 このオプションを否定すると、値に \fInever\fP が使われることになる。
1981 デフォルトは \fIany\fP である。
1982 .RE
1983 .TP  14n
1984 logfile
1985 \fBsudo\fP 独自のログファイルのパス (syslog 経由のログファイルではない)。
1986 パスを指定すると、独自ファイルへのロギングが on になり、
1987 \&'!' を頭に付けて、このオプションを否定すると、off になる。
1988 デフォルトでは、\fBsudo\fP は syslog 経由でログを取る。
1989 .TP  14n
1990 mailerflags
1991 メーラを起動するときに使用するフラグ。デフォルトは \fB\-t\fP になっている。
1992 .TP  14n
1993 mailerpath
1994 警告メールの送信に使用するメール・プログラムのパス。
1995 デフォルトは configure したときに見つかった sendmail のパス。
1996 .TP  14n
1997 mailfrom
1998 警告メールやエラー・メールを送るとき、差出人として使用するアドレス。
1999 \fBsudo\fP が @ 記号を解釈しないように、
2000 アドレスはダブルクォート (\&"") で囲むべきである。
2001 デフォルトは、\fBsudo\fP を実行しているユーザの名前。
2002 .TP  14n
2003 mailto
2004 警告メールやエラー・メールを送付する宛先のアドレス。
2005 \fBsudo\fP が @ 記号を解釈しないように、
2006 アドレスはダブルクォート (\&"") で囲むべきである。
2007 デフォルトは root になっている。
2008 .TP  14n
2009 secure_path
2010 \fBsudo\fP から実行されるあらゆるコマンドが使用するパス。
2011 \fBsudo\fP を実行するユーザが、無難な PATH 環境変数 を使っているかどうか確信が持てないなら、
2012 このオプションを使用するとよいだろう。もう一つの使用法は、
2013 「root のパス」と「一般ユーザのパス」を別のものにしておきたい場合だ。
2014 ユーザが \fIexempt_group\fP オプションで指定したグループに属していると、
2015 そのユーザは \fIsecure_path\fP の影響を受けない。
2016 このオプションは、デフォルトではセットされていない。
2017 .TP  14n
2018 syslog
2019 syslog を使ってログを取っている場合の syslog のファシリティ
2020 (syslog 経由でログを取らないなら、'!' を頭に付けて、
2021 このオプションを否定する)。デフォルトでは authpriv になっている。
2022 .sp
2023 syslog のファシリティには、次のものが指定できる。
2024 \fBauthpriv\fP (使用 OS が対応している場合), \fBauth\fP, \fBdaemon\fP, \fBuser\fP,
2025 \fBlocal0\fP, \fBlocal1\fP, \fBlocal2\fP, \fBlocal3\fP, \fBlocal4\fP, \fBlocal5\fP,
2026 \fBlocal6\fP, \fBlocal7\fP。
2027 .TP  14n
2028 verifypw
2029 このオプションは、\fBsudo\fP を \fB\-v\fP オプション付きで実行したとき、
2030 ユーザがパスワードを要求されるのは、どんな場合かを決定する。
2031 以下の値が可能である。
2032 .PP
2033 .RS 14n
2034 .PD 0
2035 .TP  8n
2036 all
2037 パスワードを入力しないですむためには、
2038 \fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリのすべてに
2039 NOPASSWD タグが設定されていなければならない。
2040 .PD
2041 .TP  8n
2042 always
2043 ユーザは \fB\-v\fP オプションを使用する際に、必ずパスワードを入力しなければならない。
2044 .TP  8n
2045 any
2046 パスワードを入力しないですむためには、
2047 \fIsudoers\fP ファイルの使用中のホストに対する当該ユーザのエントリの少なくとも一つに
2048 NOPASSWD タグが設定されていなければならない。
2049 .TP  8n
2050 never
2051 ユーザは \fB\-v\fP オプションを使用する際に、パスワードを入力する必要がまったくない。
2052 .PP
2053 値を指定しないと、値は \fIall\fP だと見なされる。'!' を頭に付けて、
2054 このオプションを否定すると、値に \fInever\fP が使われることになる。
2055 デフォルトは \fIall\fP である。
2056 .RE
2057 .PP
2058 \fB真偽値としても使用できるリスト\fP:
2059 .TP  18n
2060 env_check
2061 「安全」だと見なされない場合に、ユーザの環境から取り除かれる環境変数。
2062 TZ 以外のすべての環境変数について、「安全」というのは、変数の値に
2063 \&'%' や '/' という文字を一つも含まないことである。この動作を利用すれば、
2064 出来のよくないプログラムに見られる
2065 printf 形式のフォーマットの脆弱性に対処することが可能になる。
2066 TZ 変数については、以下のどれかが真ならば、安全ではないと見なされる。
2067 .PP
2068 .RS 18n
2069 .PD 0
2070 .TP  4n
2071 \fB\(bu\fP
2072 変数の値が絶対パス名であり (コロン (':\&') が先頭に付いていることもある)、
2073 それが \fIzoneinfo\fP ディレクトリの位置にマッチしない。
2074 .PD
2075 .TP  4n
2076 \fB\(bu\fP
2077 変数の値に \fI..\fP というパスの要素が存在する。
2078 .TP  4n
2079 \fB\(bu\fP
2080 変数の値にホワイトスペースや表示不能文字が存在する。
2081 .TP  4n
2082 \fB\(bu\fP
2083 変数の値が PATH_MAX の値より長い。
2084 .PP
2085 このオプションの引き数は、ダブルクォートで囲まれ、
2086 スペースで区切られたリストでもよく、
2087 ダブルクォートなしの単一の値でもよい。リストは、=, +=, \-=, \&!
2088 演算子を使って、それぞれ置き換えたり、追加したり、削除したり、
2089 無効にしたりすることができる。\fIenv_check\fP で指定された変数は、
2090 \fIenv_reset\fP オプショの有効・無効にかかわらず、上記のチェックにパスすれば、
2091 環境に保存されることになる。チェックされる環境変数のグローバルなリストは、
2092 root ユーザが \fBsudo\fP に \fB\-V\fP オプションを付けて実行したときに表示される。
2093 .RE
2094 .TP  18n
2095 env_delete
2096 \fIenv_reset\fP オプションが無効になっているときに、
2097 ユーザの環境から取り除かれる環境変数。このオプションの引き数は、
2098 ダブルクォートで囲まれ、スペースで区切られたリストでもよく、
2099 ダブルクォートなしの単一の値でもよい。
2100 リストは、=, +=, \-=, \&! 演算子を使って、それぞれ置き換えたり、追加したり、
2101 削除したり、無効にしたりすることができる。
2102 取り除かれる環境変数のグローバルなリストは、root ユーザが \fBsudo\fP に
2103 \fB\-V\fP オプションを付けて実行したときに表示される。
2104 なお、オペレーティングシステムには、危険をもたらしかねない変数を、
2105 いかなる setuid プロセス (\fBsudo\fP もその一つ)
2106 の環境からも取り除くことにしているものが多いことに留意してほしい。
2107 .TP  18n
2108 env_keep
2109 \fIenv_reset\fP オプションが有効になっているときでも、
2110 ユーザの環境にそのまま保存される環境変数。このオプションによって、
2111 \fBsudo\fP から生み出されるプロセスが受け取る環境を、
2112 きめ細かく制御することが可能になる。このオプションの引き数は、
2113 ダブルクォートで囲まれ、スペースで区切られたリストでもよく、
2114 ダブルクォートなしの単一の値でもよい。
2115 リストは、=, +=, \-=, \&! 演算子を使って、
2116 それぞれ置き換えたり、追加したり、削除したり、無効にしたりすることができる。
2117 保存される変数のグローバルなリストは、root ユーザが \fBsudo\fP に
2118 \fB\-V\fP オプションを付けて実行したときに表示される。
2119 .SH グループ・プロバイダー・プラグイン
2120 \fBsudoers\fP プラグインは、non\-Unix グループの検索を可能にするために、
2121 補助的なプラグインに対するインターフェースを備えており、それによって、
2122 標準的な Unix グループ・データベース以外のグループ情報源に対する問い合わせができるようになっている。
2123 先に述べたような、non\-Unix グループを指定する書式の使用を可能にしたかったら、
2124 この仕組みが使用できる。
2125 .PP
2126 グループ・プロバイダー・プラグインは、デフォルト設定の \fIgroup_plugin\fP
2127 によって指定する。\fIgroup_plugin\fP に対する引き数は、プラグインのパスに続けて、
2128 その設定に必要なオプションがあれば、それを付け加えたものだが、
2129 パスは絶対パスか、\fI/usr/local/libexec/sudo\fP
2130 を基点とする相対パスにするべきである。そうしたオプションは (指定されていれば)
2131 プラグインの初期化関数に渡されることになる。オプションがある場合は、
2132 文字列全体をダブルクォート (\&"") で囲まなければならない。
2133 .PP
2134 以下のグループ・プロバイダー・プラグインがデフォルトでインストールされている。
2135 .TP  10n
2136 group_file
2137 \fIgroup_file\fP プラグインは、\fI/etc/group\fP の代わりに、
2138 \fI/etc/group\fP と同じ書式を使用する別のグループファイルを使えるようにする。
2139 プラグインに対するオプションとして、グループファイルのパスを指定するべきである。
2140 たとえば、使用するグループファイルが \fI/etc/sudo\-group\fP ならば、
2141 次のように書くことになる。
2142 .nf
2143 .sp
2144 .RS 10n
2145 Defaults group_plugin="group_file.so /etc/sudo\-group"
2146 .RE
2147 .fi
2148 .TP  10n
2149 system_group
2150 \fIsystem_group\fP プラグインは、標準 C ライブラリの関数 \fBgetgrnam\fP() と
2151 \fBgetgrid\fP() によるグループ検索をサポートしている。このプラグインは、
2152 ユーザがそのユーザの補助グループのリストに存在しないグループに所属しているといった場合にも使用できる。
2153 このプラグインはオプションを取らないので、書式は次のようになる。
2154 .nf
2155 .sp
2156 .RS 10n
2157 Defaults group_plugin=system_group.so
2158 .RE
2159 .fi
2160 .PP
2161 グループ・プロバイダー・プラグインの API については、sudo_plugin(5)
2162 に詳細な説明がある。
2163 .SH ログの書式
2164 \fBsudoers\fP は、何が起きたかを記録するのに、suslog(3) を使用することもできるし、
2165 単独のログ・ファイルを使用することもできる。
2166 どちらの場合も、ログの書式はほとんど同じである。
2167 .SS 実行を許可されたコマンドに関するログ記載事項
2168 sudo が実行したコマンドは、次の書式を使って記録される
2169 (読みやすいように、ここでは複数行に分けている)。
2170 .nf
2171 .sp
2172 .RS 4n
2173 date hostname progname: username : TTY=ttyname ; PWD=cwd ; \e
2174     USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \e
2175     ENV=env_vars COMMAND=command
2176 .RE
2177 .fi
2178 .PP
2179 各フィールドは以下のようになっている。
2180 .TP  14n
2181 date
2182 コマンドが実行された日時。たいていは、"MMM, DD, HH:MM:SS" の形式である。
2183 syslog(3) 経由でロギングしている場合に、
2184 日時が実際にどんな形式になるかを決めるのは、syslog デーモンである。
2185 \fBsudo\fP 独自のファイルにロギングしているとき、
2186 \fIlog_year\fP オプションが有効だと、日時に年度も含まれることになる。
2187 .TP  14n
2188 hostname
2189 \fBsudo\fP が実行されたホストの名前。このフィールドは、
2190 syslog(3) 経由でロギングしているときにのみ存在する。
2191 .TP  14n
2192 progname
2193 プログラム名。普通は、\fIsudo\fP か \fIsudoedit\fP。このフィールドは、
2194 syslog(3) 経由でロギングしているときのみ存在する。
2195 .TP  14n
2196 username
2197 \fBsudo\fP を実行したユーザのログイン名。
2198 .TP  14n
2199 ttyname
2200 \fBsudo\fP が実行された端末の短縮名
2201 (たとえば、"console", "tty01", "pts/0" など)。端末が存在しなかった場合は、
2202 "unknown" になる。
2203 .TP  14n
2204 cwd
2205 \fBsudo\fP が実行されたカレント・ワーキング・ディレクトリ。
2206 .TP  14n
2207 runasuser
2208 変身対象ユーザ。
2209 .TP  14n
2210 runasgroup
2211 変身対象グループがコマンドラインで指定されていれば、そのグループ。
2212 .TP  14n
2213 logid
2214 入出力ログの識別名。コマンドの出力を再生するときに使用できる。
2215 このフィールドは、\fIlog_input\fP や \fIlog_output\fP
2216 オプションが有効なときにのみ存在する。
2217 .TP  14n
2218 env_vars
2219 環境変数がコマンドラインで指定された場合、そのリスト。
2220 .TP  14n
2221 command
2222 実行された実際のコマンド。
2223 .PP
2224 メッセージは \fIsudoers_locale\fP で指定されたロケールを使って記録される。
2225 デフォルトは "C" である。
2226 .SS 実行を拒否されたコマンドに関するログ記載事項
2227 ユーザがコマンドの実行を認められなかった場合、
2228 拒否された理由が、ユーザ名の後に記録されることになる。
2229 理由として挙げられるものには、次のようなものがある。
2230 .TP  3n
2231 user NOT in sudoers
2232 そのユーザに関する記載が \fIsudoers\fP ファイルに存在しない。
2233 .TP  3n
2234 user NOT authorized on host
2235 そのユーザに関する記載が \fIsudoers\fP ファイルに存在するが、
2236 このホストではコマンドの実行を許可されていない。
2237 .TP  3n
2238 command not allowed
2239 このホストに対するそのユーザの記載が \fIsudoers\fP ファイルに存在するが、
2240 指定されたコマンドの実行を許可されていない。
2241 .TP  3n
2242 3 incorrect password attempts
2243 ユーザがパスワードの入力に 3 回失敗した。実際に書き込まれる試行回数は、
2244 失敗した回数と \fIpasswd_tries\fP オプションの値によって様々である。
2245 .TP  3n
2246 a password is required
2247 \fBsudo\fP に \fB\-n\fP オプションを指定したが、パスワードが必要だった。
2248 .TP  3n
2249 sorry, you are not allowed to set the following environment variables
2250 ユーザがコマンドラインで環境変数を指定したが、
2251 それは \fIsudoers\fP によって許可されていない。
2252 .SS エラーに関するログ記載事項
2253 エラーが起きると、\fBsudoers\fP はメッセージをログに記録し、たいていの場合は、
2254 管理者に email で報告する。起きるかもしれないエラーには次のものがある。
2255 .TP  3n
2256 parse error in /etc/sudoers near line N
2257 \fBsudoers\fP が上記ファイルの解析中にエラーに出会った。
2258 エラーのタイプによっては、実際のエラーは、記載された行番号より 1 行上、
2259 あるいは、1 行下にあることもある。
2260 .TP  3n
2261 problem with defaults entries
2262 \fIsudoers\fP ファイル中に意味不明なデフォルト設定 (Defaults setting) が、
2263 一つ以上ある。このエラーがあっても、\fBsudo\fP が実行できなくなることはないが、
2264 \fBvisudo\fP を使って \fIsudoers\fP ファイルをチェックするべきである。
2265 .TP  3n
2266 timestamp owner (username): \&No such user
2267 \fItimestampowner\fP オプションで指定されたタイムスタンプ・ディレクトリの所有者が、
2268 パスワード・データベースに存在しなかった。
2269 .TP  3n
2270 unable to open/read /etc/sudoers
2271 \fIsudoers\fP ファイルを読み込もうとしたが、オープンできなかった。
2272 そうしたことは、\fIsudoers\fP ファイルがリモート・ファイルシステムに存在して、
2273 そこではユーザ ID 0 を別の値にマップしている場合に起きることがある
2274 (訳注: たとえば、NFS で root_squash が有効な場合)。
2275 通常 \fBsudoers\fP は、この問題を回避するために、グループのパーミッションを使って
2276 \fIsudoers\fP ファイルをオープンしようとする。
2277 \fI/etc/sudoers\fP の所有権を変更するなり、
2278 sudo.conf(5) ファイルの \fBsudoers\fP Plugin 行の末尾に "sudoers_uid=N"
2279 ('N' は、\fIsudoers\fP ファイルの所有者のユーザ ID)
2280 といった引き数を追加するなりを、考慮すべきである。
2281 .TP  3n
2282 unable to stat /etc/sudoers
2283 \fI/etc/sudoers\fP ファイルが見つからない。
2284 .TP  3n
2285 /etc/sudoers is not a regular file
2286 \fI/etc/sudoers\fP は存在するが、通常ファイルでもシンボリック・リンクでもない。
2287 .TP  3n
2288 /etc/sudoers is owned by uid N, should be 0
2289 \fIsudoers\fP ファイルの所有者が適切ではない。
2290 \fIsudoers\fP ファイルの所有者を変更したい場合には、sudo.conf(5) ファイルの
2291 \fBsudoers\fP Plugin 行に "sudoers_uid=N" ('N' は、
2292 \fIsudoers\fP ファイルの所有者のユーザ ID) を付け加えていただきたい。
2293 .TP  3n
2294 /etc/sudoers is world writable
2295 \fIsudoers\fP ファイルのパーミッションがすべてのユーザに書き込みを許している。
2296 \fIsudoers\fP ファイルは、誰にでも書き込み可であってはならず、
2297 デフォルトのファイルモードは 0440 である (所有者とグループのみ読むことができ、
2298 書き込み権限は誰にもない)。デフォルトのモードは、sudo.conf(5) ファイルの
2299 \fBsudoers\fP Plugin 行に "sudoers_mode"
2300 オプションを指定することで変更することができる。
2301 .TP  3n
2302 /etc/sudoers is owned by gid N, should be 1
2303 \fIsudoers\fP ファイルの所有グループが適切ではない。
2304 \fIsudoers\fP ファイルの所有グループを変更したい場合には、
2305 sudo.conf(5) ファイルの \fBsudoers\fP Plugin 行に "sudoers_gid=N"
2306 ('N' は、\fIsudoers\fP ファイルの所有グループ ID) を付け加えていただきたい。
2307 .TP  3n
2308 unable to open /var/run/sudo/ts/username
2309 \fBsudoers\fP がユーザのタイムスタンプ・ファイルを読み込んだり、
2310 作成したりすることができなかった。そうしたことは、
2311 \fItimestampowner\fP が root 以外のユーザに設定されていて、
2312 しかも \fI/var/run/sudo\fP のモードが、
2313 グループやその他のユーザに対して検索不可になっている場合に起きることがある。
2314 \fI/var/run/sudo\fP のデフォルトのモードは、0711 である。
2315 .TP  3n
2316 unable to write to /var/run/sudo/ts/username
2317 \fBsudoers\fP がユーザのタイムスタンプ・ファイルに書き込むことができなかった。
2318 .TP  3n
2319 /var/run/sudo/ts is owned by uid X, should be Y
2320 タイムスタンプ・ディレクトリの所有者が \fItimestampowner\fP 以外のユーザである。
2321 そうしたことは、\fItimestampowner\fP の値を変更した時に起きることがある。
2322 \fBsudoers\fP は、ディレクトリの所有者が訂正されるまで、
2323 タイムスタンプ・ディレクトリを無視することになる。
2324 .TP  3n
2325 /var/run/sudo/ts is group writable
2326 タイムスタンプ・ディレクトリがグループによって書き込み可能になっている。
2327 書き込みが可能なのは、\fItimestampowner\fP のみにするべきだ。
2328 タイムスタンプ・ディレクトリのデフォルトのモードは、700 である。
2329 \fBsudoers\fP は、ディレクトリのモードが訂正されるまで、
2330 タイムスタンプ・ディレクトリを無視することになる。
2331 .SS "syslog 経由でロギングするときの注意点"
2332 デフォルトでは、\fBsudoers\fP は syslog(3) 経由でメッセージをログに記録する。
2333 その場合、\fIdate\fP, \fIhostname\fP, \fIprogname\fP フィールドをログに付加するのは、
2334 syslog デーモンであって、\fBsudoers\fP ではない。
2335 従って、そうしたフィールドは、システムが違えば書式も違うかもしれない。
2336 .PP
2337 ほとんどのシステムで、syslog(3) は、かなり小さなログ・バッファしか持っていない。
2338 そこで、コマンドライン引き数の後ろの方が切り捨てられたりしないように、
2339 \fBsudoers\fP は、(date, hostname, 及び "sudo" という文字列を別にして)
2340 ログ・メッセージが 960 字以上になると、それを分割するようになっている。
2341 メッセージが分割される場合、後続部分では、
2342 ユーザ名の後ろに "(command continued)" という文字列が続き、
2343 その後にコマンドライン引き数の残りが続くことになる。
2344 .SS ファイルにロギングするときの注意点
2345 \fIlogfile\fP オプションを設定すると、\fBsudoers\fP は \fI/var/log/sudo\fP
2346 といったローカルなファイルにログを記録するようになる。ファイルにロギングする場合も、
2347 \fBsudoers\fP は syslog(3) とほとんど同じ書式を使用するが、
2348 いつくかの重要な違いがある。
2349 .TP  5n
2350 1.\&
2351 \fIprogname\fP と \fIhostname\fP フィールドは存在しない。
2352 .TP  5n
2353 2.\&
2354 \fIlog_year\fP オプションが有効な場合、日付には年度も含まれることになる。
2355 .TP  5n
2356 3.\&
2357 \fIloglinelen\fP (デフォルトでは 80) 文字よりも長い行は改行され、
2358 4 文字分のインデントを付けて次の行に続くことになる。
2359 そうすることで、記述情報が人間に読みやすくなるが、
2360 ログファイルに対して grep(1) を使用することは難しくなる。
2361 \fIloglinelen\fP オプションに 0 を指定すると
2362 (あるいは、頭に '\&!' をつけて、否定すると)、改行は行われなくなる。
2363 .SH 入出力ログファイル
2364 入出力ロギングを有効にすると、\fBsudo\fP は擬似 tty でコマンドを実行して、
2365 ユーザのすべての入力や出力のログを取ることになる。
2366 入出力は、\fIiolog_dir\fP オプションで指定したディレクトリに
2367 (デフォルトでは \fI/var/log/sudo\-io\fP)、
2368 一意なセッション ID を使って記録される。
2369 このセッション ID は、(訳注: syslog 経由であれ、独自ファイルであれ)
2370 \fBsudo\fP に関するログの行に、"TSID=" に続く値として書き込まれているものだ。
2371 \fIiolog_file\fP オプションを使えば、
2372 セッション ID の形式を変更することができる。
2373 .PP
2374 各入出力ログは、独立したディレクトリに収納される。
2375 そうしたディレクトリには、次のようなファイルが入っている。
2376 .TP  10n
2377 \fIlog\fP
2378 次のような情報を含むテキストファイル。コマンドが実行された日時、
2379 \fBsudo\fP を実行したユーザの名前、変身対象ユーザ名、変身対象グループ名 (ないこともある)、
2380 \fBsudo\fP が実行された端末、その端末の縦横のサイズ (何行何桁か)、
2381 コマンドがそこから実行されたカレントディレクトリ、
2382 それに、コマンドそのもののパス名 (引き数があれば、それも)
2383 .TP  10n
2384 \fItiming\fP
2385 入出力ログに記録される各事項間の時間間隔と各事項の入出力バイト数のログ
2386 (セッションの再生で使用される)
2387 .TP  10n
2388 \fIttyin\fP
2389 ユーザが使用している端末からの入力 (ユーザがタイプしたこと)。
2390 .TP  10n
2391 \fIstdin\fP
2392 パイプやファイルからの入力
2393 .TP  10n
2394 \fIttyout\fP
2395 擬似 tty の出力 (コマンドがスクリーンに書き出したこと)
2396 .TP  10n
2397 \fIstdout\fP
2398 パイプへ出力されたり、ファイルにリダイレクトされた標準出力
2399 .TP  10n
2400 \fIstderr\fP
2401 パイプへ出力されたり、ファイルへリダイレクトされた標準エラー
2402 .PP
2403 \fIlog\fP 以外のすべてのファイルは、\fIcompress_io\fP オプションが無効になっていないかぎり、
2404 gzip 形式で圧縮される。バッファリングを行うので、入出力のデータは、
2405 \fBsudo\fP コマンドが完了するまで、完全なものにはならない。
2406 入出力ログファイルの出力の部分は、sudoreplay(8) を使って再生することができる。
2407 また、sudoreplay(8) ユーティリティは、利用できるログをリスト表示したり、
2408 検索したりするのに使うこともできる。
2409 .PP
2410 ユーザの入力には、パスワードのような (たとえ、
2411 画面にエコーされることはないにしても) 秘密情報が含まれていることがある。
2412 そういった情報も、暗号化されずに、ログファイルに記録されることに注意していただきたい。
2413 たいていの場合、\fIlog_output\fP や LOG_OUTPUT を使って、
2414 コマンドの出力をログに記録するだけで十分用が足りる。
2415 .PP
2416 入出力ログは、セッションごとに独立したディレクトリに収納される。
2417 そのため、従来からあるログローテーション・ユーティリティを使用して、
2418 保存しておく入出力ログ数を制限することはできない。
2419 保存する入出力ログ数を制限する最も簡単な方法は、
2420 \fImaxseq\fP オプションで保存したいログの最大数を指定することである。
2421 入出力ログの連番が \fImaxseq\fP に達すると、連番は 0 にリセットされ、
2422 \fBsudoers\fP は既存の入出力ログファイルをサイズ 0 に短縮して、再利用することになる。
2423 .SH ファイル
2424 .TP  26n
2425 \fI/etc/sudo.conf\fP
2426 sudo フロントエンドの設定
2427 .TP  26n
2428 \fI/etc/sudoers\fP
2429 誰が何を実行できるかのリスト
2430 .TP  26n
2431 \fI/etc/group\fP
2432 ローカルのグループファイル
2433 .TP  26n
2434 \fI/etc/netgroup\fP
2435 ネットワークグループのリスト
2436 .TP  26n
2437 \fI/var/log/sudo\-io\fP
2438 入出力のログファイル (訳注: 厳密には、
2439 入出力のログを記録するファイル群をその下に格納するトップディレクトリ)
2440 .TP  26n
2441 \fI/var/run/sudo/ts\fP
2442 \fBsudoers\fP セキュリティポリシーが使用するタイムスタンプを格納するディレクトリ
2443 .TP  26n
2444 \fI/var/lib/sudo/lectured\fP
2445 \fBsudoers\fP セキュリティポリシーが使用する訓戒状態ファイルを格納するディレクトリ
2446 .TP  26n
2447 \fI/etc/environment\fP
2448 Linux や AIX で \fB\-i\fP モードを使用するときの初期環境
2449 .SH 用例
2450 以下は \fIsudoers\fP ファイルの記載例である。
2451 正直なところ、いささか凝りすぎの部分もある。
2452 まず最初に継承を許可する環境変数をいくつか指定し、
2453 続いて \fIaliases\fP の定義をする。
2454 .nf
2455 .sp
2456 .RS 0n
2457 # sudo 経由で X アプリケーションを実行するとき、HOME は
2458 # .Xauthority ファイルを探すために使用される。ほかのプログラムも
2459 # 設定ファイルを探すのに HOME を使用するので、この指定が
2460 # 権限の昇格を引き起こしかねないことに注意してほしい。
2461 Defaults env_keep += "DISPLAY HOME"
2462
2463 # User alias の指定
2464 User_Alias      FULLTIMERS = millert, mikef, dowdy
2465 User_Alias      PARTTIMERS = bostley, jwfox, crawl
2466 User_Alias      WEBMASTERS = will, wendy, wim
2467
2468 # Runas alias の指定
2469 Runas_Alias     OP = root, operator
2470 Runas_Alias     DB = oracle, sybase
2471 Runas_Alias     ADMINGRP = adm, oper
2472
2473 # Host alias の指定
2474 Host_Alias      SPARC = bigtime, eclipse, moet, anchor :\e
2475                 SGI = grolsch, dandelion, black :\e
2476                 ALPHA = widget, thalamus, foobar :\e
2477                 HPPA = boa, nag, python
2478 Host_Alias      CUNETS = 128.138.0.0/255.255.0.0
2479 Host_Alias      CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
2480 Host_Alias      SERVERS = master, mail, www, ns
2481 Host_Alias      CDROM = orion, perseus, hercules
2482
2483 # Cmnd alias の指定
2484 Cmnd_Alias      DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\e
2485                         /usr/sbin/restore, /usr/sbin/rrestore,\e
2486                         sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== \e
2487                         /home/operator/bin/start_backups
2488 Cmnd_Alias      KILL = /usr/bin/kill
2489 Cmnd_Alias      PRINTING = /usr/sbin/lpc, /usr/bin/lprm
2490 Cmnd_Alias      SHUTDOWN = /usr/sbin/shutdown
2491 Cmnd_Alias      HALT = /usr/sbin/halt
2492 Cmnd_Alias      REBOOT = /usr/sbin/reboot
2493 Cmnd_Alias      SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh,\e
2494                          /usr/local/bin/tcsh, /usr/bin/rsh,\e
2495                          /usr/local/bin/zsh
2496 Cmnd_Alias      SU = /usr/bin/su
2497 Cmnd_Alias      PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
2498 .RE
2499 .fi
2500 .PP
2501 以下では、コンパイル時に埋め込まれたデフォルト値のいくつかを変更している。
2502 \fBsudo\fP には syslog(3) 経由でログを記録し、
2503 ファシリティにはすべての場合に \fIauth\fP を使用させたい。
2504 フルタイムのスタッフには \fBsudo\fP の訓戒を出さないようにしたい。
2505 ユーザ \fBmillert\fP はパスワードを入力しないでよい。
2506 コマンドを root として実行するときは、
2507 環境変数 LOGNAME, USER, USERNAME を変更したくない。
2508 さらに、\fISERVERS\fP という Host_Alias に属するマシンでは、
2509 ローカルなログファイルを副本として作り、
2510 ログの記入事項は数年に渡って保存されるので、
2511 ログの各行に間違いなく年度が入るようにする。
2512 最後に \fIPAGERS\fP という Cmnd_Alias に属するコマンド
2513 (\fI/usr/bin/more\fP, \fI/usr/bin/pg\fP, \fI/usr/bin/less\fP) については、
2514 シェル・エスケープを無効にする。なお、最後の設定は、
2515 許可するコマンドが ALL になっているユーザに対しては、
2516 効果的な抑制にはならないことに注意していただきたい。
2517 .nf
2518 .sp
2519 .RS 0n
2520 # built\-in defaults の変更
2521 Defaults                syslog=auth
2522 Defaults>root           !set_logname
2523 Defaults:FULLTIMERS     !lecture
2524 Defaults:millert        !authenticate
2525 Defaults@SERVERS        log_year, logfile=/var/log/sudo.log
2526 Defaults!PAGERS         noexec
2527 .RE
2528 .fi
2529 .PP
2530 ユーザ設定が、誰が何を実行できるかを実際に決めている部分だ。
2531 .nf
2532 .sp
2533 .RS 0n
2534 root            ALL = (ALL) ALL
2535 %wheel          ALL = (ALL) ALL
2536 .RE
2537 .fi
2538 .PP
2539 \fBroot\fP と \fBwheel\fP グループに属するすべてのユーザには、
2540 どのホストでも任意のユーザとしていかなるコマンドでも実行することを認める。
2541 .nf
2542 .sp
2543 .RS 0n
2544 FULLTIMERS      ALL = NOPASSWD: ALL
2545 .RE
2546 .fi
2547 .PP
2548 フルタイムのシステム管理者 (\fBmillert\fP, \fBmikef\fP, \fBdowdy\fP) は、
2549 どのホストでも任意のコマンドを認証なしで実行できる。
2550 .nf
2551 .sp
2552 .RS 0n
2553 PARTTIMERS      ALL = ALL
2554 .RE
2555 .fi
2556 .PP
2557 パートタイムのシステム管理者 (\fBbostley\fP, \fBjwfox\fP, \fBcrawl\fP) は、
2558 どのホストでも任意のコマンドを実行できるが、その際に認証をしなければならない
2559 (このエントリには NOPASSWD タグが指定されていないので)。
2560 .nf
2561 .sp
2562 .RS 0n
2563 jack            CSNETS = ALL
2564 .RE
2565 .fi
2566 .PP
2567 ユーザ \fBjack\fP は、\fICSNETS\fP というエイリアスに属するマシンで、
2568 任意のコマンドを実行できる (すなわち、ネットワークが 128.138.243.0,
2569 128.138.204.0, 128.138.242.0 のマシンだ)。この内、128.138.204.0 にのみ
2570 class C のネットワークであることを示す明示的な (CIDR 表記の)
2571 netmask がある。\fICSNETS\fP のほかのネットワークについては、
2572 ローカルマシンの netmask がマッチングの際に使われることになる。
2573 .nf
2574 .sp
2575 .RS 0n
2576 lisa            CUNETS = ALL
2577 .RE
2578 .fi
2579 .PP
2580 ユーザ \fBlisa\fP は、エイリアスが \fICUNETS\fP のいかなるホストでも、
2581 任意のコマンドを実行することができる
2582 (すなわち、128.138.0.0 という class B ネットワークのマシンだ)。
2583 .nf
2584 .sp
2585 .RS 0n
2586 operator        ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\e
2587                 sudoedit /etc/printcap, /usr/oper/bin/
2588 .RE
2589 .fi
2590 .PP
2591 ユーザ \fBoperator\fP は、
2592 簡単な保守管理に用途が限定されたコマンドを実行できる。この場合それは、
2593 バックアップしたり、プロセスを kill したり、印刷システムを操作したり、
2594 システムをシャットダウンしたりするのに関係するコマンドと、
2595 \fI/usr/oper/bin/\fP ディレクトリにある任意のコマンドである。
2596 注意: \fIDUMPS\fP という Cmnd_Alias に属するコマンドのひとつ、すなわち
2597 \fI/home/operator/bin/start_backups\fP は、sha224 ダイジェスト付きである。
2598 そうしているのは、そのスクリプトが置かれているディレクトリが
2599 operator ユーザによって書き込み可能だからだ。スクリプトが変更された場合
2600 (その結果、ダイジェストが一致しないことになる)、
2601 \fBsudo\fP 経由でそのスクリプトを実行することはもはや不可能になる。
2602 .nf
2603 .sp
2604 .RS 0n
2605 joe             ALL = /usr/bin/su operator
2606 .RE
2607 .fi
2608 .PP
2609 ユーザ \fBjoe\fP は、su(1) を使って operator になることしかできない。
2610 .nf
2611 .sp
2612 .RS 0n
2613 pete            HPPA = /usr/bin/passwd [A\-Za\-z]*, !/usr/bin/passwd root
2614
2615 %opers          ALL = (: ADMINGRP) /usr/sbin/
2616 .RE
2617 .fi
2618 .PP
2619 \fBopers\fP グループのユーザは、\fI/usr/sbin/\fP にあるコマンドを、
2620 自分自身の資格で、Runas_Alias \fIADMINGRP\fP に属する任意のグループ
2621 (すなわち、\fBadm\fP か \fBoper\fP グループ) として実行できる。
2622 .PP
2623 ユーザ \fBpete\fP は、\fIHPPA\fP に属するマシンで
2624 root 以外なら誰のパスワードでも変更することを許されている。
2625 コマンドライン引き数は、結合して一つの文字列にした上で、マッチングを行うので、
2626 ワイルドカード '*' は、\fI複数の\fP単語とマッチすることになる。だから、
2627 この例は、passwd(1) がコマンドラインで複数のユーザ名を受け付けないことを前提としているのである。
2628 GNU のシステムでは、
2629 passwd(1) に対するオプションをユーザ引き数の後ろに置くことができるのに注意していただきたい。
2630 そのため、このルールは次のようなコマンドも許可してしまうことになる。
2631 .nf
2632 .sp
2633 .RS 4n
2634 passwd username \-\-expire
2635 .RE
2636 .fi
2637 .PP
2638 これは、望ましくないことかもしれない。
2639 .nf
2640 .sp
2641 .RS 0n
2642 bob             SPARC = (OP) ALL : SGI = (OP) ALL
2643 .RE
2644 .fi
2645 .PP
2646 ユーザ \fBbob\fP は、\fISPARC\fP や \fISGI\fP に属するマシンで
2647 Runas_Alias \fIOP\fPに登録されている任意のユーザとして
2648 (\fBroot\fP と \fBoperator\fP である) どんなコマンドでも実行できる。
2649 .nf
2650 .sp
2651 .RS 0n
2652 jim             +biglab = ALL
2653 .RE
2654 .fi
2655 .PP
2656 ユーザ \fBjim\fP は、\fIbiglab\fP ネットグループに属するマシンで、
2657 どんなコマンドでも実行できる。
2658 \fBsudo\fP は、"biglab" に '+' の接頭辞が付いているので、
2659 それをネットグループだと認識する。
2660 .nf
2661 .sp
2662 .RS 0n
2663 +secretaries    ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
2664 .RE
2665 .fi
2666 .PP
2667 \fBsecretaries\fP ネットグループのユーザは、ユーザの追加や削除はもちろん、
2668 プリンタの管理にも協力する必要がある。
2669 そこで、すべてのマシンでその種のコマンドの実行を認められている。
2670 .nf
2671 .sp
2672 .RS 0n
2673 fred            ALL = (DB) NOPASSWD: ALL
2674 .RE
2675 .fi
2676 .PP
2677 ユーザ \fBfred\fP は、Runas_Alias \fIDB\fP の任意のユーザとして
2678 (\fBoracle\fP か \fBsybase\fP だ)
2679 パスワードを入力しないでもコマンドを実行することができる。
2680 .nf
2681 .sp
2682 .RS 0n
2683 john            ALPHA = /usr/bin/su [!\-]*, !/usr/bin/su *root*
2684 .RE
2685 .fi
2686 .PP
2687 ユーザ \fBjohn\fP は、\fIALPHA\fP に属するマシンで su(1) を使って
2688 root 以外の誰にでもなることができるが、
2689 su にオプションを指定することは許されていない。
2690 .nf
2691 .sp
2692 .RS 0n
2693 jen             ALL, !SERVERS = ALL
2694 .RE
2695 .fi
2696 .PP
2697 ユーザ \fBjen\fP は、Host_Alias \fISERVERS\fP に属するマシン
2698 (master, mail, www, ns) を除くいかなるマシンでも、任意のコマンドを実行できる。
2699 .nf
2700 .sp
2701 .RS 0n
2702 jill            SERVERS = /usr/bin/, !SU, !SHELLS
2703 .RE
2704 .fi
2705 .PP
2706 \fBjill\fP は、Host_Alias \fISERVERS\fP のいかなるマシンでも
2707 \fI/usr/bin/\fP ディレクトリにある任意のコマンドを実行できるが、
2708 \fISU\fP や \fISHELLS\fP という Cmnd_Alias に属するコマンドは実行できない。
2709 ルールのこのくだりでは特に言っていないが、
2710 Cmnd_Alias \fIPAGER\fP のコマンドはすべて \fI/usr/bin\fP にあり、
2711 \fInoexec\fP オプションが設定されている。
2712 .nf
2713 .sp
2714 .RS 0n
2715 steve           CSNETS = (operator) /usr/local/op_commands/
2716 .RE
2717 .fi
2718 .PP
2719 ユーザ \fBsteve\fP は、ディレクトリ \fI/usr/local/op_commands/\fP
2720 にある任意のコマンドを実行できるが、
2721 operator というユーザとして実行できるだけだ。
2722 .nf
2723 .sp
2724 .RS 0n
2725 matt            valkyrie = KILL
2726 .RE
2727 .fi
2728 .PP
2729 \fBmatt\fP も、自分用のワークステーション valkyrie で、
2730 ハングしたプロセスの kill ぐらいはできる必要がある。
2731 .nf
2732 .sp
2733 .RS 0n
2734 WEBMASTERS      www = (www) ALL, (root) /usr/bin/su www
2735 .RE
2736 .fi
2737 .PP
2738 ホスト www で User_Alias \fIWEBMASTERS\fP に属するいかなるユーザも
2739 (will, wendy, wim だ)、ユーザ www (web ページの所有者)
2740 として任意のコマンドを実行することができる。
2741 単に su(1) でユーザ www になってもよい。
2742 .nf
2743 .sp
2744 .RS 0n
2745 ALL             CDROM = NOPASSWD: /sbin/umount /CDROM,\e
2746                 /sbin/mount \-o nosuid\e,nodev /dev/cd0a /CDROM
2747 .RE
2748 .fi
2749 .PP
2750 いかなるユーザも、Host_Alias が \fICDROM\fP のマシンで
2751 (orion, perseus, hercules)、パスワードを入力することなく
2752 CD\-ROM をマウント、アンマウントできる。
2753 上記のコマンドを打ち込むのはユーザにとっていささか面倒なので、
2754 シェルスクリプトとしてカプセル化してしまうのがよいだろう。
2755 .IP "[\fB訳注\fP]:" 8
2756 注意していただきたいが、
2757 \fI/etc/sudoers\fP ファイルに「user1 ALL = (ALL) ALL」といった設定を書いても、
2758 user1 が \fBsudo\fP 経由であらゆるコマンドを実行できるようになるのは、
2759 自ホスト、すなわち、その \fI/etc/sudoers\fP が存在するホストだけであって、
2760 telnet や ssh で接続したホストで 
2761 \fBsudo\fP 経由でコマンドを実行できるとはかぎらない。
2762 他ホストの \fBsudo\fP は、自分のところにある \fI/etc/sudoers\fP 
2763 ファイルしか参照しないからである。
2764 .sp
2765 それでは、何故、上記の「用例」で自ホスト以外の設定が行われているのだろうか? 
2766 そもそも、\fIsudoers\fP の書式で自ホスト以外のホストを指定できるのは、
2767 何故なのか? ホストに \fBALL\fP を指定できるのは、何故なのか? 
2768 それは、管理しているサイトのすべてのホストの設定を記した 
2769 \fIsudoers\fP ファイルを一つ作って、それをすべてのホストにコピーして使う、
2770 そういった使い方を想定しているからだろう。昔の習慣の名残りかもしれない。
2771 もし、サイト中のすべてのホストの設定を一ヶ所にまとめて置き、
2772 それをすべてのホストに共有させたいのなら 
2773 (すなわち、\fIsudoers\fP セキュリティポリシー設定の集中管理がしたいのなら)、
2774 \fBLDAP\fP の採用を考えるべきである。
2775 .SH セキュリティに関する注意点
2776 .SS "'!\&' 演算子の限界"
2777 一般的に言って、演算子 '!\&' を使用して \fBALL\fP
2778 からコマンドの「引き算」をするのは、あまり効果的な方法ではない。
2779 ユーザは実行したいコマンドを名前を変えてコピーし、
2780 それからそれを実行するといった簡単な方法で、裏をかくことができるからだ。
2781 たとえば、
2782 .nf
2783 .sp
2784 .RS 0n
2785 bill    ALL = ALL, !SU, !SHELLS
2786 .RE
2787 .fi
2788 .PP
2789 という行は、\fISU\fP や \fISHELLS\fP に列記されているコマンドの \fBbill\fP による実行を、
2790 本当に阻止することにはならない。なぜなら、\fBbill\fP としては、
2791 そうしたコマンドを単に名前を変えてコピーすればよいし、
2792 エディタなどのプログラムからシェル・エスケープを利用することもできるからだ。
2793 だから、この種の制限はやった方がまし程度に考えておくべきである
2794 (そして、しっかりした運用方針によって制限の実効力を上げるべきだ)。
2795 .PP
2796 一般に、もし ユーザに許可するコマンドに \fBALL\fP が入っているならば、
2797 ユーザが自分でプログラムを作って
2798 (あるいは、シェルを自分専用に別の名前でコピーして)、
2799 ルート・シェルを獲得するのを防ぐことはできない。
2800 ユーザ設定でどんな項目に '!\&'  を付けようとも防止不可能である。
2801 .SS "\fIfast_glob\fP の持つセキュリティ上の問題"
2802 \fIfast_glob\fP オプションが使われている場合、
2803 パス名に glob 文字 (ワイルドカードとも言う)
2804 が含まれるコマンドを確実に無効にすることは不可能である。その理由は、
2805 C ライブラリの fnmatch(3) 関数は、相対パスのパス名展開ができないからだ。
2806 このことは、権限を許可するルールにとっては、
2807 たいていの場合不便なだけにすぎないが、権限を減らしたり、
2808 取り消したりするルールにとっては、セキュリティ上の問題をもたらしかねない。
2809 .PP
2810 たとえば、\fIsudoers\fP ファイルに次のエントリがあったとしよう。
2811 .nf
2812 .sp
2813 .RS 0n
2814 john    ALL = /usr/bin/passwd [a\-zA\-Z0\-9]*, /usr/bin/chsh [a\-zA\-Z0\-9]*,\e
2815               /usr/bin/chfn [a\-zA\-Z0\-9]*, !/usr/bin/* root
2816 .RE
2817 .fi
2818 .PP
2819 それでも、\fIfast_glob\fP が有効になっていれば、\fBjohn\fP は
2820 "/usr/bin/passwd root" を実行できてしまう。
2821 \fI/usr/bin\fP に移動して、"./passwd root" を実行すればよいのだ。
2822 .SS シェル・エスケープの防止
2823 \fBsudo\fP があるプログラムを実行した場合、そのプログラムは、
2824 ほかのプログラムの実行も含めて、何でも自由に好きなことができる。
2825 このことがセキュリティ上の問題になりかねないのは、
2826 プログラムがシェル・エスケープを許しているのは珍しいことではなく、
2827 そのために、ユーザが \fBsudo\fP
2828 のアクセス制御やロギングをすり抜けることが可能になるからだ。
2829 よく使うプログラムでシェル・エスケープを許しているものには、
2830 (当然ながら) シェル、エディタ、
2831 ページャ、メーラ、ターミナルなどがある。
2832 .PP
2833 この問題に対処するには、基本的に二つの方法がある。
2834 .TP  10n
2835 制限
2836 ユーザに任意のコマンドの実行を許すようなコマンドに対して、
2837 ユーザがアクセスできないようにする。
2838 エディタの場合は、制限モード (restricted mode) と称して、
2839 シェル・エスケープが使えないモードを持っているものも多い。
2840 とは言え、\fBsudo\fP 経由でエディタを使うのなら、
2841 \fBsudoedit\fP を使用する方がより優れた対策である。
2842 シェル・エスケープを提供するプログラムはたくさんあるので、
2843 それを提供しないプログラムのみを使用するようにユーザを制限するのは、
2844 たいてい実現不可能である。
2845 .TP  10n
2846 noexec
2847 共有ライブラリをサポートしているシステムには、
2848 環境変数 (たいていは LD_PRELOAD) で別の共有ライブラリを指定することによって、
2849 デフォルトのライブラリ関数を置き換えることができるものが多い。
2850 そういったシステムでは、\fBsudo\fP の \fInoexec\fP 機能を使えば、
2851 \fBsudo\fP から実行されるプログラムが、
2852 何かほかのプログラムを実行するのを防ぐことができる。
2853 とは言え、これが当てはまるのは、
2854 動的にリンクされたネイティブなプログラムだけだということに留意してほしい。
2855 静的にリンクされたプログラムや、
2856 バイナリ・エミュレーションのもとで動くほかの OS のプログラムには効果がない。
2857 .sp
2858 \fInoexec\fP 機能は SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX,
2859 MacOS X, HP\-UX 11.x、それに 5.3 以上の AIX で使えることがわかっている。
2860 環境変数 LD_PRELOAD をサポートしているたいていのオペレーティングシステムが、
2861 この機能に対応しているはずだ。
2862 使用しているオペレーティングシステムのマニュアルページを調べて、
2863 ダイナミック・リンカについて (通例 ld.so, ld.so.1, dyld, dld.sl, rld,
2864 loader といった名前になっている) LD_PRELOAD
2865 がサポートされているかどうか確認していただきたい。
2866 .sp
2867 あるコマンドに対して \fInoexec\fP を有効にするには、
2868 上述の「ユーザ設定」セクションで解説したように、NOEXEC タグを使用する。
2869 そのときの例を再掲しよう。
2870 .nf
2871 .sp
2872 .RS 10n
2873 aaron   shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
2874 .RE
2875 .fi
2876 .RS 10n
2877 .sp
2878 この例では、ユーザ \fBaaron\fP 対して、\fInoexec\fP を有効にした上で、
2879 \fI/usr/bin/more\fP と \fI/usr/bin/vi\fP の実行を許可している。
2880 このようにすれば、この二つのコマンドから (シェルのような)
2881 ほかのコマンドを実行することができなくなるわけだ。使用しているシステムが
2882 \fInoexec\fP に対応する能力があるかどうかよくわからない場合でも、
2883 取りあえず試してみることなら、いつだってできる。\fInoexec\fP を有効にして、
2884 シェル・エスケープが可能かどうか確かめてみればよいのだ。
2885 .RE
2886 .PP
2887 注意してほしいが、シェル・エスケープの禁止は万能薬ではない。
2888 root の権限で動いているプログラムには、ほかにも、危険性のあるさまざまな作業
2889 (ファイルの属性を変更するとか、上書きしてしまうとか) が可能であり、
2890 思いがけずに権限を拡大してしまうこともありえるのだ。特にエディタについて言うと、
2891 ユーザには \fBsudoedit\fP を実行する許可を与えるのが、より安全な方法である
2892 (下記参照)。
2893 .SS 安全な編集作業
2894 \fBsudoers\fP プラグインでは \fBsudoedit\fP が使用できるようになっており、
2895 ユーザは好みのエディタを使って、安全にファイルを編集することができる。
2896 \fBsudoedit\fP は \fBsudo\fP の組み込みコマンドなので、
2897 \fIsudoers\fP ファイル中で指定するときは、
2898 頭にパスを付けてはいけない。ただし、コマンドライン引き数については、
2899 通常のコマンドと全く同じように指定することができる。
2900 \fBsudoedit\fP のコマンドライン引き数にワイルドカードを使用した場合は、
2901 \fBsudoedit\fP の引き数にはパス名が来るはずなので、
2902 ワイルドカードはフォワードスラッシュ ('/') にマッチしないようになっている。
2903 .PP
2904 \fBsudo\fP 経由で実行される他のコマンドとは違って、エディターは
2905 \fBsudo\fP を起動するユーザの資格で、環境を変更せずに実行される。
2906 詳しくは、sudo(8) のマニュアルの \fB\-e\fP オプションの説明をご覧になるとよい。
2907 .PP
2908 たとえば、ユーザ operator が "message of the day" ファイルを編集できるようにするには、\fIsudoers\fP
2909 で次のように指定する。
2910 .nf
2911 .sp
2912 .RS 6n
2913 operator        ALL = sudoedit /etc/motd
2914 .RE
2915 .fi
2916 .PP
2917 そして、ユーザ operator は、\fBsudoedit\fP を次のように実行する。
2918 .nf
2919 .sp
2920 .RS 6n
2921 $ sudoedit /etc/motd
2922 .RE
2923 .fi
2924 .PP
2925 エディタは、root ではなく、ユーザ operator の資格で、\fI/etc/motd\fP
2926 の作業用コピーに対して実行される。ファイルの編集が済むと、
2927 \fI/etc/motd\fP は作業用コピーの内容で更新されることになる。
2928 .PP
2929 ユーザが書き込み権限を持っているディレクトリに存在するファイルに対して、
2930 ファイル名を直接指定してであれ、ワイルドカードによって指定してであれ、
2931 \fBsudoedit\fP を使って編集する許可をそのユーザに与えてはいけない。
2932 もし、ユーザがディレクトリに対して書き込み権限を持っているならば、編集を許可されたファイルを、
2933 別のファイルに対するリンクで置き換えることができるわけで、そうすることによって、
2934 任意のどんなファイルでも編集できるようになってしまうからだ。
2935 そうした事態を防ぐために、バージョン 1.8.16 以降の \fBsudoedit\fP では、
2936 \fIsudoedit_checkdir\fP オプションが無効になっている場合や、
2937 \fBsudoedit\fP を実行するユーザが root である場合を除いて、
2938 ユーザが書き込み権限を持っているディレクトリに存在するいかなるシンボリックリンクも、
2939 たどらないようになっている。
2940 また、書き込み権限があるディレクトリに存在するファイルの編集を行うことも拒否する。
2941 さらに、バージョン 1.8.15 以降の \fBsudoedit\fP では、
2942 \fIsudoers\fP ファイルで \fIsudoedit_follow\fP オプションが有効になっているか、
2943 \fIsudoedit\fP コマンドの前に FOLLOW タグが指定してあるかのどちらかでないかぎり、
2944 シンボリックリンクをオープンしないようになっている。
2945 .SS タイムスタンプ・ファイルのチェック
2946 \fBsudoers\fP は、タイムスタンプ・ディレクトリ (デフォルトでは
2947 \fI/var/run/sudo/ts\fP) の所有者を調べて、所有者が root でなかったり、
2948 root 以外のユーザにも書き込み可能であったりすると、
2949 そのディレクトリの中身を無視する。古いバージョンの \fBsudo\fP は、
2950 タイムスタンプ・ファイルを \fI/tmp\fP に置いていたが、
2951 そうしたことは今では推奨できない。
2952 特権を持たないユーザが自分の作ったファイルの所有者を変更できるシステムでは、
2953 ユーザがタイムスタンプを自分で作成することが可能になるかもしれないからだ。
2954 .PP
2955 タイムスタンプ・ディレクトリは、
2956 リブートしたときにその中身を\fI消去されるべき\fPだが、
2957 すべてのシステムに \fI/var/run\fP ディレクトリが存在するとはかぎらない。
2958 問題が起きるのを避けるために、\fBsudoers\fP は、
2959 ブートタイムを参照できるシステムでは、
2960 マシンがブートした時刻よりも古い日時を持つタイムスタンプ・ファイルを無視する。
2961 .PP
2962 グラフィカルなデスクトップ環境を持っているシステムの中には、
2963 特権を持たないユーザにシステム・クロックの変更を許しているものがある。
2964 \fBsudoers\fP は、タイムスタンプが有効か否を確認するのに、
2965 システム・クロックを拠り所にしている。そこで、そうしたシステムでは、
2966 ユーザがクロックを後戻りさせることで、\fItimestamp_timeout\fP よりも長い時間
2967 \fBsudo\fP を実行することが可能になるかもしれない。そうした事態に対抗するため、
2968 \fBsudoers\fP は、システムがサポートしているならば、
2969 タイムスタンプに単調増加時計 (monotonic clock) を使用する
2970 (単調増加時計は後戻りすることがないからだ)。
2971 .PP
2972 \fBsudoers\fP はあまりにも未来に設定されたタイムスタンプを認めない。
2973 タイムスタンプが「現在時 + 2 * TIMEOUT」より新しい日時だった場合、
2974 そのタイムスタンプは無視され、\fBsudoers\fP はログに記録して、警告を発する。
2975 .PP
2976 タイムスタンプ・ファイルはファイルシステム中に作られるものだから、
2977 ユーザのログイン・セッションが終わっても残っている。
2978 そのため、ユーザがログインし、認証を行ってから
2979 \fBsudo\fP を使ってコマンドを実行し、一旦ログアウトして、再度ログインしたとき、
2980 認証なしで \fBsudo\fP を実行することが可能になってしまうかもしれない。
2981 タイムスタンプ・ファイルに記録されているタイムスタンプが 5 分以内のものであれば
2982 (あるいは、\fIsudoers\fP ファイルで設定されているタイムアウト時間以内のものであれば)、
2983 そういうことが可能かもしれないのだ。
2984 \fItty_tickets\fP オプションが有効な場合は、タイムスタンプの記録に、
2985 ユーザが認証するときに使った端末のデバイス番号が含まれる。それよって、
2986 tty ごとのきめ細かな管理が可能になるが、それでもタイムスタンプの記録が、
2987 ユーザのセッションが終わった後まで有効である可能性もある。また、
2988 タイムスタンプの記録には、最後に認証を行ったプロセスのセッション ID も含まれている。
2989 別の端末セッションのプロセスが、同じタイムスタンプの記録を使えないようにしているのだ。
2990 それはまた、ユーザがログアウトし、再度同じ端末にログインしたときに、
2991 パスワードを入力することなしに \fBsudo\fP を実行できる可能性を減少させる役にも立っている。
2992 .SH デバッギング
2993 バージョン 1.8.4 以上の \fBsudoers\fP プラグインは、
2994 デバッグのための柔軟な枠組みをサポートしており、問題が発生したときに、
2995 プラグインの内部で何が起きているかを突き止めるために、
2996 それを利用することができる。設定は sudo.conf(5) ファイルで行うことが可能だ。
2997 .PP
2998 \fBsudoers\fP プラグインは、
2999 フロントエンドである \fBsudo\fP と同じデバッグ・フラグの書式を使用する。
3000 すなわち、\fIsubsystem\fP@\fIpriority\fP である。
3001 .PP
3002 \fBsudoers\fP が使用する priority (重大度) を深刻なものから挙げると、
3003 \fIcrit\fP, \fIerr\fP, \fIwarn\fP, \fInotice\fP, \fIdiag\fP, \fIinfo\fP, \fItrace\fP,
3004 \fIdebug\fP である。ある priority を指定すると、
3005 それより深刻なすべての priority も併せて指定したことになる。
3006 たとえば、\fInotice\fP という priority を指定すれば、
3007 \fInotice\fP レベル以上のデバッグメッセージがログに記録される。
3008 .PP
3009 \fBsudoers\fP では以下のサブシステムが使用できる。
3010 .TP  10n
3011 \fIalias\fP
3012 User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias の処理
3013 .TP  10n
3014 \fIall\fP
3015 すべてのサブシステムにマッチする
3016 .TP  10n
3017 \fIaudit\fP
3018 Solaris BSM (Basic Security Module) と Linux の監査コード
3019 .TP  10n
3020 \fIauth\fP
3021 ユーザの認証
3022 .TP  10n
3023 \fIdefaults\fP
3024 \fIsudoers\fP ファイルの \fIDefaults\fP 設定
3025 .TP  10n
3026 \fIenv\fP
3027 環境の取扱い
3028 .TP  10n
3029 \fIldap\fP
3030 LDAP を使用する sudoers
3031 .TP  10n
3032 \fIlogging\fP
3033 ロギングのサポート
3034 .TP  10n
3035 \fImatch\fP
3036 \fIsudoers\fP ファイルにおけるユーザ、グループ、ホスト、ネットグループのマッチング
3037 .TP  10n
3038 \fInetif\fP
3039 ネットワークインターフェースの取扱い
3040 .TP  10n
3041 \fInss\fP
3042 \fBsudoers\fP におけるネームサービス・スイッチの取扱い
3043 .TP  10n
3044 \fIparser\fP
3045 \fIsudoers\fP ファイルの解析
3046 .TP  10n
3047 \fIperms\fP
3048 パーミッションの設定
3049 .TP  10n
3050 \fIplugin\fP
3051 プラグインにとって \fImain\fP に相当する
3052 .TP  10n
3053 \fIpty\fP
3054 擬似 tty 関連コード
3055 .TP  10n
3056 \fIrbtree\fP
3057 赤黒木 (redblack tree) の内部情報
3058 .TP  10n
3059 \fIsssd\fP
3060 SSSD を使用する sudoers
3061 .TP  10n
3062 \fIutil\fP
3063 ユーティリティ関数群
3064 .PD 0
3065 .PP
3066 一例を挙げておく。
3067 .nf
3068 .sp
3069 .RS 0n
3070 Debug sudoers.so /var/log/sudo_debug match@info,nss@info
3071 .RE
3072 .fi
3073 .PD
3074 .PP
3075 より詳しい情報については、sudo.conf(5) マニュアルをご覧いただきたい。
3076 .SH 関連項目
3077 ssh(1), su(1), fnmatch(3), glob(3), mktemp(3), strftime(3), sudo.conf(5),
3078 sudoers.ldap(5), sudo(8), sudo_plugin(5), visudo(8)
3079 .SH 作者
3080 多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
3081 当バージョンは主として次の者が書いたコードからできている。
3082 .sp
3083 .RS 6n
3084 Todd C. Miller
3085 .RE
3086 .PP
3087 \fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
3088 配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
3089 (https://www.sudo.ws/contributors.html)
3090 .SH 警告
3091 \fIsudoers\fP ファイルの編集には、\fB必ず\fP \fBvisudo\fP コマンドを使うべきである。
3092 そうすれば、\fBvisudo\fP がファイルをロックし、文法のチェックをやってくれる。
3093 \fIsudoers\fP ファイルに文法的な間違いがあると、\fBsudo\fP が動かなくなるので、
3094 \fIsudoers\fP ファイルには文法エラーが絶対にあってはならないのだ。
3095 .PP
3096 ネットグループを (ユーザについてではなく) マシンについて使用し、
3097 \fInetgroup\fP ファイルに完全修飾ホスト名を記載する場合は
3098 (たいていそうするものだが)、そのマシンのホスト名を
3099 hostname コマンドが出力する通りの完全修飾名で書くか、さもなければ、
3100 \fIsudoers\fP ファイルで \fIfqdn\fP オプションを使うかしなければならない。
3101 .SH バグ
3102 \fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
3103 にアクセスして、バグレポートを提出していただきたい。
3104 .SH サポート
3105 ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
3106 購読やアーカイブの検索には、下記 URL をご覧になるとよい。
3107 https://www.sudo.ws/mailman/listinfo/sudo\-users
3108 .SH 免責
3109 \fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
3110 商品性や特定目的への適合性についての黙示的な保証を含め、
3111 またそれのみに止まらず、これを否認する。詳細な全文については、
3112 \fBsudo\fP と一緒に配布されている LICENSE ファイルや、
3113 下記 Web ページをご覧いただきたい。
3114 https://www.sudo.ws/license.html