OSDN Git Service

sudo: update to version 1.8.17
[linuxjm/jm.git] / manual / sudo / release / man8 / sudo.8
1 .\" DO NOT EDIT THIS FILE, IT IS NOT THE MASTER!
2 .\" IT IS GENERATED AUTOMATICALLY FROM sudo.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 .\" Updated & Modified (sudo-1.8.4p4) Wed May  9 12:26:33 JST 2012
42 .\"         by Yoichi Chonan
43 .\" Updated & Modified (sudo-1.8.17) Sat Sep 10 10:39:07 JST 2016
44 .\"         By Yoichi Chonan
45 .\"
46 .TH SUDO 8 "January 19, 2016" "Sudo 1.8.17" "System Manager's Manual"
47 .nh
48 .if  n .ad l
49 .SH 名前
50 \fBsudo\fP, \fBsudoedit\fP \- コマンドを他のユーザとして実行する
51 .SH 書式
52 .HP 5n
53 \fBsudo\fP \fB\-h\fP\ |\ \fB\-K\fP\ |\ \fB\-k\fP\ |\ \fB\-V\fP
54 .PD 0
55 .HP 5n
56 \fBsudo\fP \fB\-v\fP [\fB\-AknS\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP] [\fB\-p\fP\ \fIprompt\fP] [\fB\-u\fP\ \fIuser\fP]
57 .br
58 .HP 5n
59 \fBsudo\fP \fB\-l\fP [\fB\-AknS\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP] [\fB\-p\fP\ \fIprompt\fP] [\fB\-U\fP\ \fIuser\fP] [\fB\-u\fP\ \fIuser\fP] [\fIcommand\fP]
60 .br
61 .HP 5n
62 \fBsudo\fP [\fB\-AbEHnPS\fP] [\fB\-C\fP\ \fInum\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP]
63 [\fB\-p\fP\ \fIprompt\fP] [\fB\-r\fP\ \fIrole\fP] [\fB\-t\fP\ \fItype\fP] [\fB\-u\fP\ \fIuser\fP]
64 [\fIVAR\fP=\fIvalue\fP] [\fB\-i\fP\ |\ \fB\-s\fP] [\fIcommand\fP]
65 .br
66 .HP 9n
67 \fBsudoedit\fP [\fB\-AknS\fP] [\fB\-C\fP\ \fInum\fP] [\fB\-g\fP\ \fIgroup\fP] [\fB\-h\fP\ \fIhost\fP]
68 [\fB\-p\fP\ \fIprompt\fP] [\fB\-u\fP\ \fIuser\fP] \fIfile\ ...\fP
69 .PD
70 .SH 説明
71 \fBsudo\fP を使用すると、許可されたユーザが、セキュリティポリシーの設定の範囲内で、
72 スーパーユーザや他のユーザに変身して、\fIcommand\fP を実行することが可能になる。
73 セキュリティポリシーへの問い合わせは、ユーザ名によって行われるが、
74 そのユーザ名を決めるのは、\fBsudo\fP を実行するユーザの実ユーザ ID であって、
75 実効ユーザ ID ではない。
76 .PP
77 \fBsudo\fP はセキュリティポリシーと入出力のロギングについて、プラグイン方式をサポートしている。
78 従って、サードパーティは、
79 \fBsudo\fP フロントエンドとシームレスに協働するポリシー・プラグインや入出力ロギング・プラグインを、
80 独自に開発して配布することができる。
81 デフォルトのセキュリティポリシーは \fIsudoers\fP であり、その設定は、
82 \fI/etc/sudoers\fP ファイル、もしくは LDAP を通して行われる。
83 詳細については、「プラグイン」セクションを参照していただきたい。
84 .PP
85 セキュリティポリシーは、あるユーザに \fBsudo\fP を使用する権限があるかどうか、
86 あるとすれば、どんな権限を持っているかを決定する。
87 セキュリティポリシーは、ユーザにパスワードや他の認証方法を使って、
88 本人であることを証明するように要求することができる。
89 認証が必要な場合、ユーザが自分のパスワードを、
90 設定によって変更可能な制限時間内に入力しないと、\fBsudo\fP は時間切れで終了する
91 (訳注: \fBsudo\fP はデフォルトでは、root や変身対象ユーザのパスワードではなく、
92 \fBsudo\fP を実行するユーザ本人のパスワードを要求する)。
93 この制限時間はポリシー次第であり、 \fIsudoers\fP セキュリティポリシーの場合、
94 パスワード・プロンプトがタイムアウトするまでのデフォルトの時間は、5 分間である。
95 .PP
96 セキュリティポリシーは、一定時間内ならユーザが認証なしで \fBsudo\fP
97 を何度も実行できるように、認証情報の一時保存 (credential caching)
98 をサポートしてもよい。\fIsudoers\fP ポリシーでは、sudoers(5)
99 で変更されないかぎり、認証情報を 5 分間保持する。
100 ユーザは \fBsudo\fP に \fB\-v\fP を付けて実行することで、
101 \fIcommand\fP を実行しないでも、保存された認証情報を更新することができる。
102 .PP
103 \fBsudoedit\fP というコマンド名で起動するのは、\fBsudo\fP に \fB\-e\fP
104 オプション (下記参照) を付けて実行するのと同じである。
105 .PP
106 セキュリティポリシーは、ユーザが \fBsudo\fP
107 を使おうとして成功した場合も失敗した場合も、それをログに記録することができる。
108 入出力プラグインが設定されている場合は、
109 \fBsudo\fP 経由で実行するコマンドの入出力もログに残すことができる。
110 .PP
111 オプションとして以下のものが使用できる。
112 .TP  12n
113 \fB\-A\fP, \fB\-\-askpass\fP
114 通常 \fBsudo\fR がパスワードを要求するとき、
115 パスワードはユーザが使用している端末から読み込まれる。
116 \fB\-A\fP (\fIaskpass\fP) オプションを指定すると、
117 ヘルパー・プログラム (グラフィカルなものでもよい)
118 が実行され、ユーザのパスワードを読み込んで、それを標準出力に書き出す。
119 環境変数 SUDO_ASKPASS が設定されているときは、
120 それがヘルパー・プログラムのパスになる。それ以外の場合は、
121 sudo.conf(5) に askpass プログラムを指定している行が存在すれば、
122 その値が使用される。一例を挙げよう。
123 .nf
124 .sp
125 .RS 16n
126 # askpass ヘルパー・プログラムのパス
127 Path askpass /usr/X11R6/bin/ssh\-askpass
128 .RE
129 .fi
130 .RS 12n
131 .sp
132 利用できる askpass プログラムがないと、\fBsudo\fP はエラーメッセージを出して、
133 終了する。
134 .RE
135 .TP  12n
136 \fB\-a\fP \fItype\fP, \fB\-\-auth\-type\fP=\fItype\fP
137 \fI/etc/login.conf\fP で使用可になっていれば、ユーザを認証する際に指定された
138 BSD の認証方法 \fItype\fP を使用する。システム管理者は、\fI/etc/login.conf\fP
139 に "auth\-sudo" エントリを追加することで、
140 sudo 専用の認証方法のリストを指定することができる。このオプションは、
141 BSD 認証をサポートするシステムでのみ使用できる。
142 .TP  12n
143 \fB\-b\fP, \fB\-\-background\fP
144 指定されたコマンドをバックグラウンドで実行する。
145 \fBsudo\fP 経由で起動したバックグラウンド・プロセスは、
146 シェルのジョブ制御を使って操作できないことに注意していただきたい。
147 バックグラウンドモードでは、ほとんどの対話的なコマンドがうまく動かないだろう。
148 .TP  12n
149 \fB\-C\fP \fInum\fP, \fB\-\-close\-from\fP=\fInum\fP
150 コマンドを実行するに先立って、\fInum\fP 以上の番号のファイル・ディスクリプタをすべてクローズする。
151 3 未満の値は指定できない。デフォルトでは、コマンドを実行する際に、
152 \fBsudo\fP は、標準入力、標準出力、標準エラー以外の、
153 オープンしているすべてのファイル・ディスクリプタを閉じることになっている。
154 セキュリティポリシーは、ユーザによるこのオプションの使用を制限することができる。
155 \fIsudoers\fP ポリシーが \fB\-C\fP オプションの使用を許可するのは、
156 管理者が \fIclosefrom_override\fP オプションを有効にしているときのみである。
157 .TP  12n
158 \fB\-c\fP \fIclass\fP, \fB\-\-login\-class\fP=\fIclass\fP
159 指定されたログインクラス \fIclass\fP のリソース・リミットとスケジューリング優先度で、
160 コマンドを実行する。引き数 \fIclass\fP に使用できるのは、\fI/etc/login.conf\fP
161 で定義されたクラス名か、単独の '\-' 文字のどちらかである。
162 \fIclass\fP が \fB\-\fP ならば、変身対象ユーザのデフォルトのログインクラスが使用されることになる。
163 それ以外の場合は、コマンドをスーパーユーザ (ユーザ ID が 0) として実行するか、
164 あるいは、すでにスーパーユーザとして実行しているシェルから
165 \fBsudo\fP を実行するかのどちらかでなければならない。
166 実行されるコマンドがログイン・シェルである場合は、
167 umask や環境変数といった \fI/etc/login.conf\fP の他の設定も、
168 存在すれば適用されることになる。
169 このオプションは BSD ログインクラスを採用しているシステムでのみ有効である。
170 .TP  12n
171 \fB\-E\fP, \fB\-\-preserve\-env\fP
172 現在の環境変数をそのまま保持するのがユーザの意向だと、セキュリティポリシーに指示する。
173 ユーザが環境を保持する許可を持っていない場合は、
174 セキュリティポリシーがエラーを返すことになるだろう。
175 .TP  12n
176 \fB\-e\fP, \fB\-\-edit\fP
177 何らかのコマンドを実行するのではなく、1 個以上のファイルを編集する。
178 セキュリティポリシーの参照では、コマンドのパス名の代わりに
179 "sudoedit" という文字列が使用される。
180 セキュリティポリシーによってユーザに権限があることが認められると、
181 次のことが順番に行われる。
182 .RS 16n
183 .TP  5n
184 1.\&
185 編集対象のファイルのコピーをテンポラリファイルとして作成する。
186 テンポラリファイルのオーナーは \fBsudo\fP を起動したユーザである。
187 .TP  5n
188 2.\&
189 セキュリティポリシーによって指定されたエディタを起動して、
190 テンポラリファイルを編集する。\fIsudoers\fP ポリシーでは、環境変数
191 SUDO_EDITOR, VISUAL, EDITOR を (この順番で) 使用する。
192 SUDO_EDITOR, VISUAL, EDITOR のどれも設定されていない場合は、
193 sudoers(5) の \fIeditor\fP オプションにリストされたプログラムのうち、
194 最初のものが使われる。
195 .TP  5n
196 3.\&
197 編集作業がすむと、テンポラリファイルをオリジナルのファイルにコピーして、
198 テンポラリファイルを消去する。
199 .RE
200 .RS 12n
201 .sp
202 編集する権限のないファイルを編集できないようにするため、
203 セキュリティポリシーによって明示的に許可されていないかぎり、
204 以下の制限が行われる。
205 .RS 16n
206 .TP  4n
207 \fB\(bu\fP
208 シンボリックリンクの編集は許可しない (バージョン 1.8.15 以上)。
209 .TP  4n
210 \fB\(bu\fP
211 \fBsudo\fP を実行するのが root であるときを除いて、
212 編集するファイルのパス中にシンボリックリンクがある場合、
213 そのリンクの親ディレクトリが \fBsudo\fP を実行するユーザにとって書き込み可能ならば、
214 リンクをたどらない (バージョン 1.8.16 以上)。
215 .TP  4n
216 \fB\(bu\fP
217 \fBsudo\fP を実行するのが root であるときを除いて、
218 ファイルが \fBsudo\fP を実行するユーザにとって書き込み可能なディレクトリにある場合、
219 そのファイルの編集を許可しない (バージョン 1.8.16 以上)。
220 .RE
221 .sp
222 ユーザがデバイス・スペシャルファイルの編集を許可されることは絶対にない。
223 .sp
224 指定されたファイルが存在しない場合は作成する。ここで注意すべきは、
225 \fBsudo\fP によって実行されるコマンドの大部分と違って、
226 \fB\-e\fP でエディタが実行されるときは、\fBsudo\fP を起動したユーザの環境が、
227 変更を受けずに使われるということだ。
228 何らかの理由で \fBsudo\fP が編集した内容でファイルを更新できないときは、
229 ユーザに警告を発し、編集した内容をテンポラリファイルに保存することになる。
230 .RE
231 .TP  12n
232 \fB\-g\fP \fIgroup\fP, \fB\-\-group\fP=\fIgroup\fP
233 コマンドを実行するとき、
234 プライマリ・グループをパスワード・データベースの変身対象ユーザの項目で指定されているものではなく、
235 \fIgroup\fP に設定する。\fIgroup\fP は、グループ名でもよく、'#' 記号にグループ
236 ID 番号 (GID) を続けたものでもよい (たとえば、GID 0 なら #0)。
237 GID としてコマンドを実行する場合、ほとんどのシェルでは、
238 \&'#' をバックスラッシュ ('\e') でエスケープする必要がある。
239 なお、\fB\-u\fP オプションが指定されていない場合、コマンドは
240 \fBsudo\fP を起動したユーザの資格で実行される。いづれにしろ、
241 プライマリ・グループが \fIgroup\fP に設定されることに変わりはない。
242 (訳注: \fB\-g\fP オプションを使用するには、
243 \fIsudoers\fP ポリシーの場合なら、\fIsudoers\fP ファイルのユーザ設定で、
244 変身対象となるグループを設定しておく必要がある。詳細については、
245 sudoers(5) のマニュアルの該当個所を参照していただきたい。)
246 .TP  12n
247 \fB\-H\fP, \fB\-\-set\-home\fP
248 HOME 環境変数を、パスワード・データベースの変身対象ユーザの項目で、
249 ホームディレクトリとして指定されているものに設定するように、
250 セキュリティポリシーに要求する。
251 ポリシーによっては、それがデフォルトの動作になっていることもある。
252 .TP  12n
253 \fB\-h\fP, \fB\-\-help\fP
254 簡単なヘルプメッセージを標準出力に表示して、終了する。
255 .TP  12n
256 \fB\-h\fP \fIhost\fP, \fB\-\-host\fP=\fIhost\fP
257 セキュリティポリシー・プラグインがリモート・コマンドをサポートしているなら、
258 指定された \fIhost\fP でコマンドを実行する。
259 \fIsudoers\fP プラグインは、現在のところ、
260 リモート・コマンドの実行をサポートしていないことに注意していただきたい。
261 このオプションを \fB\-l\fP オプションと一緒に使えば、
262 リモート・ホストにおけるユーザの権限のリストを得ることができる。
263 (訳注: このオプションについは、sudo_plugin(5) のマニュアルの
264 "Remote command execution" セクションもご覧いただきたい。
265 そちらの説明が詳しい。)
266 .TP  12n
267 \fB\-i\fP, \fB\-\-login\fP
268 パスワード・データベースの変身対象ユーザの項目でログイン・シェルとして指定されているシェルを実行する。すなわち、
269 \&\fI.profile\fP や \fI.login\fP といったログイン用のリソース・ファイルが、
270 シェルによって読み込まれることになる。コマンドを指定すると、
271 それがシェルに渡され、シェルの  \fB\-c\fP オプションを使って実行される。
272 コマンドを指定しない場合は、対話的シェルが起動される。\fBsudo\fP は、
273 シェルを実行する前に、変身対象ユーザのホームディレクトリに移動しようとする。
274 コマンドの実行は、ユーザが普通にログインしたときの環境とほぼ同じ環境で行われる。
275 \fIsudoers\fP ポリシーを使用している場合に、
276 \fB\-i\fP オプションがコマンドの実行環境にどんな影響を与えるかについては、
277 sudoers(5) のマニュアルの「コマンド環境」セクションに説明がある。
278 .TP  12n
279 \fB\-K\fP, \fB\-\-remove\-timestamp\fP
280 \fB\-k\fP オプションに似ているが、ユーザの保存された認証情報を完全に消去してしまう点と、
281 コマンドや他のオプションと組み合わせて使えない点が異なっている。
282 このオプションはパスワードを要求しない。すべてのセキュリティポリシーが、
283 認証情報の一時保存をサポートしているわけではない。
284 .TP  12n
285 \fB\-k\fP, \fB\-\-reset\-timestamp\fP
286 コマンドを伴わずに使用した場合は、ユーザの保存された認証情報を無効にする。
287 言い換えると、次回 \fBsudo\fP を実行するときに、
288 パスワードが要求されるということだ。このオプション自体は、
289 パスワードを要求しない。このオプションが追加されたのは、
290 ユーザが \fI.logout\fP ファイルで、\fBsudo\fP
291 をパスワードなしで実行できる期間を終了させることができるようにするためである。
292 .sp
293 コマンドや、パスワードを必要とするような他のオプションと組み合わせて、
294 このオプションを使用すると、
295 \fBsudo\fP がユーザの保存された認証情報を無視することになる。
296 その結果、\fBsudo\fP は (セキュリティポリシーがパスワードを要求するならば)、
297 プロンプトを出して、パスワードを要求する。
298 このとき、ユーザの保存された認証情報の更新は行われない。
299 .sp
300 すべてのセキュリティポリシーが、認証情報の一時保存をサポートしているわけではない。
301 .TP  12n
302 \fB\-l\fP, \fB\-\-list\fP
303 コマンドを指定しない場合は、\fBsudo\fP を実行しているユーザ (あるいは、
304 \fB\-U\fP オプションで指定したユーザ) が、現在ログインしているホストで許可されている
305 (及び、禁じられている) コマンドのリストを表示する。
306 このオプションを複数回指定すると、
307 セキュリティポリシーが詳細な出力形式をサポートしていれば、
308 長い方のリスト形式が使用される。
309 .sp
310 コマンドを指定した場合は、その実行がセキュリティポリシーによって許可されていれば、
311 コマンドの絶対パスが表示される。
312 コマンドラインでコマンドに引き数まで指定すると
313 (訳注: その引き数が許可されていれば)、それも一緒に表示される。
314 指定したコマンドが許可されていない場合は、
315 \fBsudo\fP はステータス 1 で終了することになる。
316 .TP  12n
317 \fB\-n\fP, \fB\-\-non\-interactive\fP
318 プロンプトを出してユーザに入力を求めることを一切しない。
319 コマンドを実行するのにパスワードが必要な場合、
320 \fBsudo\fP はエラーメッセージを出して、終了することになる。
321 .TP  12n
322 \fB\-P\fP, \fB\-\-preserve\-groups\fP
323 \fBsudo\fP を実行するユーザの所属グループのリストを、変更せずにそのまま使用する。
324 デフォルトでは、\fIsudoers\fP ポリシーの場合、所属グループは初期化されて、
325 変身対象ユーザが所属しているグループのリストが使われることになっているのである。
326 とは言え、実グループ ID と実効グループ ID が、
327 変身対象ユーザと同一になるようにセットされる点には変わりがない。
328 .TP  12n
329 \fB\-p\fP \fIprompt\fP, \fB\-\-prompt\fP=\fIprompt\fP
330 パスワードプロンプトに好みの文字列を使用する。文字列には、
331 エスケープシーケンスが使用できる。\fIsudoers\fP では、
332 以下のパーセント ('%') エスケープシーケンスをサポートしている。
333 .PP
334 .RS 12n
335 .PD 0
336 .TP  4n
337 %H
338 ドメイン名を含むホスト名に展開される (マシンのホスト名が完全修飾名であるか、
339 sudoers(5) で \fIfqdn\fP オプションがセットされている場合に有効)
340 .PD
341 .TP  4n
342 %h
343 ドメイン名なしのローカルホスト名に展開
344 .TP  4n
345 %p
346 パスワードを要求されているユーザ名に展開 (sudoers(5) の \fIrootpw\fP,
347 \fItargetpw\fP, \fIrunaspw\fP フラグを尊重する)
348 .TP  4n
349 \&%U
350 変身対象になるユーザ (\fB\-u\fP オプションが同時に指定されていないときは、root
351 がデフォルト) のログイン名に展開される
352 .TP  4n
353 %u
354 \fBsudo\fP を起動するユーザのログイン名に展開される
355 .TP  4n
356 %%
357 連続する二つの '%' 文字は、1 個の '%' 文字そのものを意味する。
358 .PP
359 自家特製のプロンプトが、
360 PAM をサポートしているシステムでシステムのパスワードプロンプトに置き替わるのは、
361 \fIsudoers\fP で \fIpassprompt_override\fP フラグが無効になっていない場合である
362 (訳注: sudoers(5) の passprompt_override の項も参照していただきたい)。
363 .RE
364 .TP  12n
365 \fB\-r\fP \fIrole\fP, \fB\-\-role\fP=\fIrole\fP
366 指定された \fIrole\fP を含む
367 SELinux のセキュリティ・コンテキストでコマンドを実行する。
368 .TP  12n
369 \fB\-S\fP, \fB\-\-stdin\fP
370 プロンプトを標準エラーに表示するが、パスワードの読み込みは、
371 ターミナルデバイスを使わずに、標準入力から行う。パスワードは、
372 末尾に改行を付けなければならない。
373 .TP  12n
374 \fB\-s\fP, \fB\-\-shell\fP
375 環境変数 SHELL が設定されていれば、そのシェルを、
376 設定されていなければ、パスワード・データベースで
377 \fBsudo\fP を起動するユーザのシェルとして指定されているシェルを実行する。
378 コマンドが指定されている場合は、それをシェルに渡し、シェルの
379 \fB\-c\fP オプションを使って実行する。コマンドが指定されていない場合は、
380 対話的シェルを開く。
381 .TP  12n
382 \fB\-t\fP \fItype\fP, \fB\-\-type\fP=\fItype\fP
383 指定された \fItype\fP を含む
384 SELinux のセキュリティ・コンテキストでコマンドを実行する。
385 \fItype\fP が指定されていない場合は、ロールからデフォルトのタイプを推測する。
386 .TP  12n
387 \fB\-U\fP \fIuser\fP, \fB\-\-other\-user\fP=\fIuser\fP
388 \fBsudo\fP を実行しているユーザではなく、
389 \fIuser\fP というユーザの権限の一覧を表示するために、
390 \fB\-l\fP オプションと組み合わせて使用する。自分以外のユーザの権限の表示は、
391 セキュリティポリシーによって禁止されているかもしれない。
392 \fIsudoers\fP ポリシーでこのオプションの使用が認められているのは、
393 root ユーザを別にすれば、現在使用中のホストで許可するコマンドに
394 ALL が指定してあるユーザだけである。
395 .TP  12n
396 \fB\-u\fP \fIuser\fP, \fB\-\-user\fP=\fIuser\fP
397 コマンドをデフォルトの変身対象ユーザ (通常は \fIroot\fP)
398 以外のユーザとして実行する。\fIuser\fP に指定するのは、ユーザ名でもよく、
399 \&'#' 記号を頭に付けたユーザ ID 番号 (UID) でもよい
400 (たとえば、UID が 0 なら、#0 と指定する)。多くのシェルでは、
401 UID の資格でコマンドを実行するには、
402 \&'#' をバックスラッシュ ('\e') でエスケープしなければならない。
403 セキュリティポリシーによっては、使用できる UID
404 をパスワード・データベースに登録されているものに限定していることもある。
405 \fIsudoers\fP ポリシーでは、\fItargetpw\fP オプションが設定されていないかぎり、
406 パスワード・データベースに存在しない UID も認めている。
407 他のセキュリティポリシーでは、それは許されないかもしれない。
408 .TP  12n
409 \fB\-V\fP, \fB\-\-version\fP
410 \fBsudo\fP のバージョン文字列を、セキュリティポリシー・プラグインや
411 入出力プラグインのバージョン文字列とともに表示する。
412 \fBsudo\fP を実行するユーザがあらかじめ root になっている場合は、
413 \fBsudo\fP がビルドされたときに configure スクリプトに渡された引き数が表示される。
414 プラグインについては、
415 デフォルト・オプションのようなより詳細な情報が表示されるかもしれない。
416 .TP  12n
417 \fB\-v\fP, \fB\-\-validate\fP
418 ユーザの保存された認証情報を更新する。このとき、必要ならば、
419 ユーザの認証を行う。\fIsudoers\fP プラグインでは、このオプションによって
420 \fBsudo\fP のタイムアウト時間がもう 5 分間 (これがデフォルトのタイムアウト時間)
421 伸びるが、このオプションがコマンドを実行することはない。
422 すべてのセキュリティポリシーが認証情報の一時保存に対応しているわけではない。
423 .TP  12n
424 \fB\-\-\fP
425 \fB\-\-\fP オプションがあると、
426 \fBsudo\fP はそこでコマンドライン引き数の処理をやめる。
427 .PP
428 さらに、コマンドのために設定したい環境変数も、\fIVAR\fP=\fIvalue\fP、たとえば
429 LD_LIBRARY_PATH=\fI/usr/local/pkg/lib\fP
430 といった形でコマンドラインで渡すことができる。コマンドラインで渡す環境変数は、
431 セキュリティポリシー・プラグインによって課される制限の対象になる。
432 \fIsudoers\fP ポリシーの場合、コマンドラインで渡される環境変数は、
433 通常の環境変数と同じ制限の対象になるが、一つだけ重要な相違がある。
434 \fIsudoers\fP で \fIsetenv\fP オプションが設定されているか、実行するコマンドに
435 SETENV タグが付いているか、あるいは、マッチするコマンドが ALL である場合は、
436 ユーザは他の状況なら禁じられているような環境変数を設定することができるのだ。
437 詳細については、sudoers(5) のマニュアルを参照していただきたい。
438 .SH コマンドの実行
439 \fBsudo\fP がコマンドを実行するとき、
440 セキュリティポリシーによってコマンドの実行環境が設定される。たいていの場合、
441 実ユーザ、実効ユーザ、実グループ、実効グループ、及びその ID 番号が、変身対象ユーザの、
442 パスワード・データベースに記載されているものと同一になるようにセットされる。
443 所属グループのリストも、(\fB\-P\fP オプションが指定されていないかぎり)
444 グループ・データベースに基づいて、初期化される。
445 .PP
446 セキュリティポリシーは、以下のパラメータを設定することができる。
447 .TP  4n
448 \fB\(bu\fP
449 実ユーザ ID と実効ユーザ ID
450 .TP  4n
451 \fB\(bu\fP
452 実グループ ID と実効グループ ID
453 .TP  4n
454 \fB\(bu\fP
455 補助グループ ID
456 .TP  4n
457 \fB\(bu\fP
458 環境のリスト
459 .TP  4n
460 \fB\(bu\fP
461 カレント・ワーキング・ディレクトリ
462 .TP  4n
463 \fB\(bu\fP
464 ファイル作成時のモード・マスク (umask)
465 .TP  4n
466 \fB\(bu\fP
467 SELinux の role と type
468 .TP  4n
469 \fB\(bu\fP
470 Solaris の project
471 .TP  4n
472 \fB\(bu\fP
473 Solaris の privilege
474 .TP  4n
475 \fB\(bu\fP
476 BSD のログインクラス (login class)
477 .TP  4n
478 \fB\(bu\fP
479 スケジューリング優先度 (nice value とも言う)
480 .SS プロセス・モデル
481 \fBsudo\fP は、コマンドを実行するとき、まず fork(2) を呼び、
482 実行環境を上記のように設定してから、子プロセスで execve システムコールを呼び出す。
483 メインの \fBsudo\fP プロセスは、コマンドが完了するまで wait し、完了したら、
484 コマンドの終了ステータスをセキュリティポリシーの close 関数に渡してから、
485 終了する。入出力ロギング・プラグインが設定されている場合や、
486 セキュリティポリシーが明示的にそれを要求している場合は、
487 擬似端末 ("pty") が新規に作成され、二つ目の \fBsudo\fP プロセスが、
488 既に存在しているユーザの pty と、コマンドがそこで実行されている新しい pty との間で、
489 ジョブ制御シグナルを中継するために使用される。
490 この二つ目の \fBsudo\fP プロセスによって、たとえば、
491 コマンドのサスペンドやレジュームといったことが可能になるのである。
492 この仕組みがなければ、コマンドは、POSIX で "orphaned process group"
493 と言われる状態に陥り、どんなジョブ制御シグナルも受け取れないことになってしまうだろう。
494 なお、特殊ケースとして次のことがある。ポリシー・プラグインが
495 close 関数を定義していず、しかも、pty が要求されていない場合は、
496 \fBsudo\fP は fork(2) を最初に呼ぶことをせず、直接コマンドを実行する。
497 \fIsudoers\fP ポリシー・プラグインで close 関数が定義されることになるのは、
498 入出力ロギングが有効か、pty が要求されているか、\fIpam_session\fP または
499 \fIpam_setcred\fP が有効な場合だけである。PAM を使用しているシステムでは、
500 デフォルトで \fIpam_session\fP と \fIpam_setcred\fP
501 が有効になることに注意していただきたい。
502 (訳注: 上記の「特殊ケースとして」以下についてだが、最近の \fBsudo\fP では、
503 \fIsudoers\fP ポリシーにおける \fIpam_session\fP や \fIpam_setcred\fP
504 の有効/無効に関係なく、pty が要求されていない場合は、
505 fork せずに直接コマンドを実行するようである。)
506 .SS シグナルの処理
507 コマンドが \fBsudo\fP プロセスの子プロセスとして実行されているとき、
508 \fBsudo\fP は自分が受け取ったシグナルをそのコマンドに中継する。
509 ただし、SIGINT や SIGQUIT シグナルが中継されるのは、
510 そのコマンドが新たに開いた pty で実行されているときか、
511 シグナルがカーネルではなく、ユーザ・プロセスによって送出されたときだけである。
512 そうなっていることで、ユーザが control\-C を入力するたびに、
513 コマンドが SIGINT シグナルを二重に受け取らないようにしているのだ。
514 SIGSTOP や SIGKILL のようないくつかのシグナルは、
515 捕獲できないので、コマンドに中継されることもない。
516 だから、\fBsudo\fP によって実行されているコマンドをサスペンドしたかったら、
517 原則として、SIGSTOP ではなく、SIGTSTP コマンドを使用するべきである。
518 .PP
519 \fBsudo\fP は原則として、自分が受け取ったシグナルを子プロセスに中継するわけだが、
520 自分が実行しているコマンドから来たシグナルは、中継しないという例外がある。
521 コマンドが意図に反して自分自身を殺してしまわないようにしているのだ。
522 システムによっては、reboot(8) コマンドが、システムをリブートする前に、
523 自分自身を除くすべてのノン・システム・プロセスに SIGTERM を送るものがある。
524 そうした場合も、中継の抑制があるため、\fBsudo\fP は自分が受け取った
525 SIGTERM シグナルを reboot(8) に送り返さない。もし送り返すようになっていたら、
526 システムが実際にリブートする前に reboot(8) が終了して、
527 システムがシングルユーザ・モードによく似た半分死んだ状態 (half\-dead state)
528 に陥ってしまうだろう。とは言え、注意していただきたいが、
529 この中継の抑制が行われるのは、\fBsudo\fP によって直接実行されるコマンドに対してのみであり、
530 そのコマンドが生成するかもしれない他のどんなプロセスに対しても当てはまらない。
531 それ故、reboot(8) や shutdown(8) を呼び出すスクリプトを
532 \fBsudo\fP 経由で実行すると、システムがそうしたわけのわからない状態に陥ることがある。
533 reboot(8) や shutdown(8) の実行に \fBexec\fP() ファミリーの関数ではなく、
534 \fBsystem\fP() 関数を使用していると、
535 (\fBsystem\fP() は、呼び出しプロセスとコマンドの間にシェルを挟むため)
536 そうしたことが起こりかねないのだ。
537 .PP
538 入出力ロギング・プラグインがロードされていない場合に、
539 ポリシー・プラグインが \fBclose\fP() 関数を定義してもいず、
540 コマンドのタイムアウトを設定していることもなく、コマンドを新たに開いた pty
541 で実行することを要求してもいなかったならば、\fBsudo\fP は、
542 コマンドを子プロセスとしてではなく、直接実行するかもしれない。
543 .SS プラグイン
544 プラグインは、sudo.conf(5) ファイルの Plugin 命令 (directive)
545 で指定することができる。プラグインは、(システムがサポートしていれば)
546 動的な共有オブジェクト (dynamic shared object) としてロードすることもできるし、
547 また、\fBsudo\fP のバイナリに直接組み込むこともできる。sudo.conf(5)
548 ファイルが存在しない場合や、sudo.conf(5) ファイルに Plugin の行がない場合は、
549 \fBsudo\fP は従来どおり、\fIsudoers\fP のセキュリティポリシーと入出力ロギングを使用することになる。
550 \fI/etc/sudo.conf\fP ファイルの詳細については、
551 sudo.conf(5) のマニュアルを参照していただきたい。
552 \fBsudo\fP プラグインの設計についての詳しい情報は、
553 sudo_plugin(5) のマニュアルにある。
554 .SH 終了ステータス
555 コマンドの実行に成功した場合、\fBsudo\fP が返す終了ステータスは、
556 実行したプログラムの終了ステータスである。
557 コマンドがシグナルを受け取ることによって終了した場合は、
558 \fBsudo\fP はコマンドを終了させたシグナルを自分自身に送るようになっている。
559 .PP
560 それ以外の場合、設定やパーミッションに問題があったり、
561 \fBsudo\fP が指定されたコマンドを実行できなかったりしたときは、
562 \fBsudo\fP は終了ステータス 1 で終了する。後者の場合は、
563 エラーメッセージが標準エラーに表示される。\fBsudo\fP がユーザの
564 PATH にある一つ以上のエントリを stat(2) できなかったときも、
565 エラーが標準エラーに表示される (ただし、PATH
566 中のディレクトリが存在しなかったときや、実際にはディレクトリでなかったときは、
567 そのエントリは無視され、エラーは表示されない)。そういったことは、
568 通常の状態では起きるはずがないことである。stat(2) が "permission denied"
569 を返す理由で一番よくあるのは、ユーザがオートマウンターを使用していて、
570 PATH 中のディレクトリの一つが目下到達不可能なマシンにある場合だ。
571 .SH セキュリティに関するメモ
572 \fBsudo\fP は、外部のコマンドをできるだけ安全に実行しようとする。
573 .PP
574 偽コマンドの実行 (command spoofing) を防止するため、\fBsudo\fP
575 はコマンドを捜してユーザの PATH を検索する際に、"." や ""
576 (どちらもカレント・ディレクトリを意味する) を最後に調べる (そのどちらか、
577 あるいは両方が、PATH 中に存在すればだが)。とは言え、環境変数 PATH そのものは変更されずに、
578 そのまま \fBsudo\fP が実行するプログラムに渡されることに注意していただきたい。
579 .PP
580 次のようなファイルを実行する \fBsudo\fP 権限を、絶対にユーザに許可してはいけない。
581 すなわち、そのユーザに書き込みできるファイルや、
582 そのユーザに書き込みできるディレクトリにあるファイルを実行する権限である。
583 もし、ユーザがコマンドを書き換えたり、別のコマンドと置き換えたりできるならば、
584 そのユーザは自分が実行できるコマンドに何でも追加できるわけで、
585 それを制限する方法はまったくないのだ。
586 .PP
587 \fBsudo\fP は通常、自分が明示的に実行するコマンドしかログに記録しないことに注意していただきたい。
588 ユーザが sudo su や sudo sh といったコマンドを実行した場合、
589 そのシェルからさらに実行されるコマンドは、
590 \fBsudo\fP のセキュリティポリシーの対象にはならないのだ。
591 同じことが、シェル・エスケープを提供するコマンド (たいていのエディターが、
592 それに含まれる) についても言える。確かに、入出力ロギングが有効になっている場合は、
593 シェルからさらに実行されるコマンドも、その入力や出力を記録されることになるが、
594 従来からあるログファイルに記録されるわけではないのである。従って、
595 ユーザに \fBsudo\fP 経由で、あるコマンドを実行する権限を与えるときは、
596 そのコマンドが事実上ルート・シェルをユーザにうっかり与えていないことを、
597 念には念を入れて確認しなければならない。もっと詳しいことをお知りになりたかったら、
598 sudoers(5) のマニュアルの「シェル・エスケープを防止する」というセクションをご覧になるとよい。
599 .PP
600 セキュリティ上問題になりかねない情報を漏洩しないように、
601 \fBsudo\fP はデフォルトでは、自己を実行中のコアダンプを抑止している
602 (指定されたコマンドを実行するときに、コアダンプを有効にし直すのだ)。
603 この動作は昔からのものであり、たいていのオペレーティングシステムが
604 setuid プロセスにデフォルトではコアダンプを許していた時代からそうなっていた。
605 \fBsudo\fP 自体のクラッシュをデバッグするためにコアダンプを有効に戻したいならば、
606 以下のように、sudo.conf(5) ファイルで "disable_coredump" を
607 false にすればよい。
608 .nf
609 .sp
610 .RS 6n
611 Set disable_coredump false
612 .RE
613 .fi
614 .PP
615 詳細については、sudo.conf(5) のマニュアルを参照していただきたい。
616 .SH 環境変数
617 \fBsudo\fP は以下の環境変数を利用する。
618 実行するコマンドの環境が実際にどうなるかは、セキュリティポリシー次第である。
619 .TP  17n
620 EDITOR
621 環境変数 SUDO_EDITOR や VISUAL が設定されていないとき、
622 \fB\-e\fP (sudoedit) モードで使用するデフォルトのエディタ。
623 .TP  17n
624 MAIL
625 \fB\-i\fP オプションが指定された場合や、\fIsudoers\fP で \fIenv_reset\fP
626 が有効になっている場合には (\fIenv_keep\fP のリストに
627 MAIL が存在しないかぎり)、変身対象ユーザのメールスプールにセットされる。
628 .TP  17n
629 HOME
630 次の場合には、変身対象ユーザのホームディレクトリにセットされる。
631 \fB\-i\fP や \fB\-H\fP オプションが指定された場合、
632 \fB\-s\fP オプションが指定され、かつ \fIsudoers\fP で \fIset_home\fP が設定されている場合、
633 \fIalways_set_home\fP が \fIsudoers\fP で有効になっている場合、
634 あるいは、\fIenv_reset\fP が \fIsudoers\fP で有効になっていて、
635 しかも \fIHOME\fP が \fIenv_keep\fP のリストに存在しない場合。
636 .TP  17n
637 LOGNAME
638 次の場合には、変身対象ユーザのログイン名にセットされる。
639 \fB\-i\fP オプションが指定された場合、
640 \fIset_logname\fP オプションが \fIsudoers\fP で有効になっている場合、
641 あるいは、\fIenv_reset\fP オプションが \fIsudoers\fP で有効になっていて、
642 LOGNAME が \fIenv_keep\fP のリストに存在しない場合。
643 .TP  17n
644 PATH
645 セキュリティポリシーによって上書きされるかもしれない。
646 .TP  17n
647 SHELL
648 \fB\-s\fP オプションで起動するシェルを決めるのに使用する。
649 .TP  17n
650 SUDO_ASKPASS
651 ターミナルが利用できない場合や、\fB\-A\fP オプションが指定された場合に、
652 パスワードを読み込むのに使用するヘルパー・プログラムのパスを指定する。
653 .TP  17n
654 SUDO_COMMAND
655 sudo が実行するコマンドにセットされる。
656 .TP  17n
657 SUDO_EDITOR
658 \fB\-e\fP (sudoedit) モードで使用するデフォルトのエディタ。
659 .TP  17n
660 SUDO_GID
661 sudo を起動したユーザのグループ ID にセットされる。
662 .TP  17n
663 SUDO_PROMPT
664 デフォルトのパスワード・プロンプトとして使用する。
665 .TP  17n
666 SUDO_PS1
667 設定すると、実行されるプログラムの PS1 がこの変数の値にセットされる。
668 .TP  17n
669 SUDO_UID
670 sudo を起動したユーザのユーザ ID にセットされる。
671 .TP  17n
672 SUDO_USER
673 sudo を起動したユーザのログイン名にセットされる。
674 .TP  17n
675 USER
676 上で述べた LOGNAME と同じ値にセットされる。
677 .TP  17n
678 USERNAME
679 USER と同じ。
680 .TP  17n
681 VISUAL
682 SUDO_EDITOR が設定されていない場合に、\fB\-e\fP (sudoedit)
683 モードで使用するデフォルトのエディタ。
684 .SH ファイル
685 .TP  26n
686 \fI/etc/sudo.conf\fP
687 \fBsudo\fP フロントエンドの設定ファイル
688 .SH 用例
689 注意: 以下の例は、セキュリティポリシーが適切に設定されていることを前提にしている。
690 .PP
691 読み取り不可のディレクトリのファイル一覧を取得する。
692 .nf
693 .sp
694 .RS 6n
695 $ sudo ls /usr/local/protected
696 .RE
697 .fi
698 .PP
699 ユーザ yaz のホームディレクトリのファイル一覧を取得する。
700 ただし、~yaz を含むファイルシステムが、別のマシンにあって、
701 root でアクセスできるようにエクスポートされていない場合。
702 .nf
703 .sp
704 .RS 6n
705 $ sudo \-u yaz ls ~yaz
706 .RE
707 .fi
708 .PP
709 ユーザ www として \fIindex.html\fP ファイルを編集する。
710 .nf
711 .sp
712 .RS 6n
713 $ sudo \-u www vi ~www/htdocs/index.html
714 .RE
715 .fi
716 .PP
717 root と adm グループのユーザだけがアクセスできるシステムログを閲覧する。
718 .nf
719 .sp
720 .RS 6n
721 $ sudo \-g adm view /var/log/syslog
722 .RE
723 .fi
724 .PP
725 jim に変身してエディタを実行する。プライマリグループには別のグループを指定する。
726 .nf
727 .sp
728 .RS 6n
729 $ sudo \-u jim \-g audio vi ~jim/sound.txt
730 .RE
731 .fi
732 .PP
733 マシンをリブートする。
734 .nf
735 .sp
736 .RS 6n
737 $ sudo shutdown \-r +15 "quick reboot"
738 .RE
739 .fi
740 .PP
741 /home パーティションに存在するディレクトリのディスク使用量リストを作成する。
742 cd やファイル・リダイレクションがきちんと動作するように、
743 コマンドをサブシェルで実行している点に注目していただきたい。
744 .nf
745 .sp
746 .RS 6n
747 $ sudo sh \-c "cd /home ; du \-s * | sort \-rn > USAGE"
748 .RE
749 .fi
750 .SH 参照項目
751 su(1), stat(2), passwd(5), sudo.conf(5), sudoers(5), sudo_plugin(5),
752 sudoreplay(8), visudo(8)
753 .SH 履歴
754 sudo の簡単な履歴については、\fBsudo\fP の配布に含まれている
755 HISTORY ファイルをご覧いただきたい。
756 (https://www.sudo.ws/history.html)
757 .SH 作者
758 多数の人々が長年に渡って \fBsudo\fP の開発に携わってきた。
759 当バージョンは主として次の者が書いたコードからできている。
760 .sp
761 .RS 6n
762 Todd C. Miller
763 .RE
764 .PP
765 \fBsudo\fP の開発に貢献してくださった方々の詳細なリストについては、
766 配布物中の CONTRIBUTORS ファイルをご覧になっていただきたい。
767 (https://www.sudo.ws/contributors.html)
768 .SH 警告
769 もし、ユーザが \fBsudo\fP 経由で任意のコマンドを実行することを許可されているなら、
770 そのユーザがルート・シェルを手に入れるのを防止する簡単な方法は存在しない。
771 また、(エディタをはじめとする) 多くのプログラムが、
772 シェル・エスケープを通してユーザがコマンドを実行できるようにしており、
773 この方法でユーザは \fBsudo\fP によるチェックをすり抜けることができる。
774 とは言え、たいていのシステムでは、sudoers(5) プラグインの \fInoexec\fP
775 機能を使用することでシェルエスケープを抑止することが可能だ。
776 .PP
777 下記のように \fBsudo\fP 中で直に \fBcd\fP コマンドを実行しても意味がない。
778 .nf
779 .sp
780 .RS 6n
781 $ sudo cd /usr/local/protected
782 .RE
783 .fi
784 .PP
785 なぜなら、このコマンドが終了したとき、その親プロセス (すなわち、\fBsudo\fP
786 を実行したシェル) は、\fBsudo\fP を実行する前と同じ状態に戻るからだ。
787 \fBcd\fP については、「用例」セクションもご覧になっていただきたい。
788 .PP
789 \fBsudo\fP を介してシェルスクリプトを実行すると、ある種のオペレーティング・システムで
790 setuid シェルスクリプトを危険なものにしているのと同一の、
791 カーネルのバグが表面化するおそれがある (使用している OS に /dev/fd/
792 ディレクトリがあれば、setuid シェルスクリプトはたいてい安全である)。
793 .SH バグ
794 \fBsudo\fP にバグを発見したと思ったら、https://bugzilla.sudo.ws/
795 にアクセスして、バグレポートを提出していただきたい。
796 .SH サポート
797 ある程度の無料サポートが sudo\-users メーリングリストを通して利用できる。
798 購読やアーカイブの検索には、下記 URL を御覧になるとよい。
799 https://www.sudo.ws/mailman/listinfo/sudo\-users
800 .SH 免責
801 \fBsudo\fP は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、
802 商品性や特定目的への適合性についての黙示的な保証を含め、
803 またそれのみに止まらず、これを否認する。詳細な全文については、
804 \fBsudo\fP と一緒に配布されている LICENSE ファイルや、
805 下記 Web ページをご覧いただきたい。
806 https://www.sudo.ws/license.html