Provided by: manpages-ja_0.5.0.0.20140515+dfsg-2_all bug

名前

       sudo, sudoedit - コマンドを他のユーザとして実行する

書式

       sudo -h | -K | -k | -V

       sudo -v [-AknS] [-g group name|#gid] [-p prompt] [-u user name|#uid]

       sudo -l[l] [-AknS] [-g group name|#gid] [-p prompt] [-U user name] [-u user name|#uid]
       [command]

       sudo [-AbEHnPS] [-C fd] [-g group name|#gid] [-p prompt] [-u user name|#uid] [VAR=value]
       [-i | -s] [command]

       sudoedit [-AnS] [-C fd] [-g group name|#gid] [-p prompt] [-u user name|#uid] file ...

説明

       sudo を使用すると、許可されたユーザーが、 スーパーユーザや他のユーザに変身して、コマンドを
       実行することが可能になる。 許可の範囲については、セキュリティ・ポリシーの指定するところに
       従う。 実 uid と gid、実効 uid と gid は、変身の対象になるユーザの、 パスワード・データ
       ベースに記載されているものと同一になるようにセットされる。 所属するグループについても (-P
       オプションが指定されていないかぎり)、 グループ・データベースに基づいて初期化される。

       sudo はセキュリティ・ポリシーと入出力のロギングについて、 プラグイン方式をサポートしてい
       る。このため、sudo フロントエンドとシームレスに共動するポリシー・モジュールや I/O ロギン
       グ・モジュールを、サードパーティが独自に開発して配布することが可能である。 デフォルトのセ
       キュリティ・ポリシーは sudoers であり、その設定は、 /etc/sudoers ファイル、もしくは LDAP
       を通して行われる。 詳細については、「プラグイン」セクションを参照してほしい。

       セキュリティ・ポリシーによって、あるユーザに sudo を使用する権限があるかどうか、 あるとす
       れば、どんな権限を持っているかが決定される。 セキュリティ・ポリシーは、ユーザにパスワード
       や他の認証方法を使って、 本人であることを証明するように要求してもよい。認証が必要な場合、
       ユーザがパスワードを (設定によって変更可能な) 制限時間内に入力しないと、 sudo は時間切れで
       終了する。この制限時間はポリシー次第であり、 sudoers セキュリティ・ポリシーの場合、 パス
       ワード・プロンプトがタイムアウトするまでのデフォルトの時間は、 5 分間である.

       セキュリティ・ポリシーは、一定時間内ならユーザが認証なしで sudo を何度も実行できるよう
       に、認証情報の一時保存 (credential caching) をサポートしてもよい。sudoers ポリシーで
       は、sudoers(5) で変更されないかぎり、認証情報を 5 分間保持する。 ユーザは sudo-v を付
       けて実行することで、 command を実行しないでも、保存された認証情報を更新することができる。

       sudoedit というコマンド名で起動するのは、sudo-e オプション (下記参照) を付けて実行する
       のと同じである。

       セキュリティ・ポリシーは、ユーザが sudo を使おうとして 成功した場合も失敗した場合も、それ
       をログに記録することができる。 I/O プラグインが設定によって組み込まれている場合は、 実行し
       ているコマンドの入出力もログに残すことができる。

オプション

       sudo では以下のコマンドライン・オプションが使用できる。

       -A          通常 sudo がパスワードを要求するとき、 パスワードはユーザが使用している端末か
                   ら読み込まれる。 -A (askpass) オプションを指定すると、 ヘルパー・プログラム
                   (グラフィカルなものでもよい) が実行され、ユーザのパスワードを読み込んで、それ
                   を標準出力に書き出す。 環境変数 SUDO_ASKPASS が設定されているときは、 それがヘ
                   ルパー・プログラムのパスになる。それ以外の場合は、 /etc/sudo.conf に askpass
                   プログラムを指定している行が存在すれば、 その値が使用される。一例を挙げよう。

                       # askpass ヘルパー・プログラムのパス
                       Path askpass /usr/X11R6/bin/ssh-askpass

                   利用できる askpass プログラムがないと、sudo はエラーメッセージを出して、終了す
                   る。

       -b          -b (background) オプションを付けると、sudo は指定されたコマンドをバックグラウ
                   ンドで実行する。 -b オプションを使用すると、 シェルのジョブ制御を使ってプロセ
                   スを操作できなくなるので、注意してほしい。 バックグラウンドモードでは、対話的
                   なコマンドのほとんどがまともに動かないだろう。

       -C fd       通常、sudo は、(コマンドを実行する前に) 標準入力、標準出力、 標準エラーを除い
                   て、 開いているファイル・ディスクリプタをすべて閉じることになっている。 -C
                   (close from) オプションを使えば、 標準エラーより番号が大きい (すなわち、ファイ
                   ル・ディスクリプタ 3 以上の) どのファイル・ディスクリプタから閉じていくか
                   を、ユーザが指定することができる。 3 未満の値は指定できない。セキュリティ・ポ
                   リシーによっては、ユーザが -C オプションを使用するのを制限していることがある。
                   sudoers ポリシーが -C オプションの使用を許可するのは、 管理者が
                   closefrom_override オプションを有効にしているときのみである。

       -E          -E (preserve environment) オプションを指定すると、 現在の環境変数をそのまま保
                   持するのがユーザの意向だと、 セキュリティ・ポリシーに伝えることになる。 -E を
                   指定しても、ユーザが環境を保持する許可を持っていない場合は、 セキュリティ・ポ
                   リシーがたぶんエラーを返すだろう。

       -e          -e (edit) オプションを指定するのは、 ユーザがコマンドの実行ではなく、 一個以上
                   のファイルを編集しようとしていることを意味する。 セキュリティ・ポリシーの参照
                   では、 コマンド名として文字列 "sudoedit" が使用される。 セキュリティ・ポリシー
                   によってユーザに権限があることが認められると、 次のようなことが順番に行われ
                   る。

                   1.  編集対象のファイルのコピーをテンポラリファイルとして作成する。 テンポラリ
                       ファイルのオーナーは sudo を起動したユーザである。

                   2.  セキュリティ・ポリシーによって指定されたエディタを起動して、 テンポラリ
                       ファイルを編集する。sudoers ポリシーでは、環境変数の SUDO_EDITOR, VISUAL,
                       EDITOR を (この順番で) 使用する。 SUDO_EDITOR, VISUAL, EDITOR のどれも設定
                       されていない場合は、sudoers(5) の editor オプションにリストされたプログラ
                       ムのうち、 最初のものが使われる。

                   3.  編集作業がすむと、テンポラリファイルをオリジナルのファイルに書き戻して、
                       テンポラリファイルを消去する。

                   指定されたファイルが存在しない場合は作成する。ここで注意すべきは、 sudo によっ
                   て実行されるコマンドの大部分と違って、 -e でエディタが実行されるときは、sudo
                   を起動したユーザの環境が、変更を受けずにそのまま使われるということだ。 何らか
                   の理由で sudo が編集した内容でファイルを更新できないときは、 ユーザに警告を発
                   し、編集した内容をテンポラリファイルに保存することになる。

       -g group    通常 sudo はコマンドを実行するとき、プライマリ・グループを、 パスワード・デー
                   タベースで変身対象ユーザ (デフォルトでは root である) のプライマリ・グループと
                   して指定されているグループに設定する。これに対して、 -g (group) オプションを使
                   用すると、 sudo はプライマリ・グループを group に設定して、 コマンドを実行する
                   ことになる。グループ名の代わりに gid を指定するときは、 #gid という書き方をす
                   る。gid としてコマンドを実行する場合、 多くのシェルでは '#' をバックスラッシュ
                   ('\') でエスケープしなければならない。 なお、-u オプションが同時に指定されてい
                   ない場合、コマンドは (root としてではなく) sudo を起動したユーザの資格で実行さ
                   れる。 いづれにしろ、プライマリ・グループが group に設定されることに変わりはな
                   い。 (訳注: -g オプションを使用するには、 sudoers ポリシーの場合なら、sudoers
                   ファイルのユーザ設定で、 変身対象となるグループを設定しておく必要がある。詳細
                   については、 sudoers(5) のマニュアルの該当個所を参照してほしい。)

       -H          -H (HOME) オプションを指定すると、 セキュリティ・ポリシーは、環境変数 HOME
                   を、パスワード・データベースで変身対象ユーザ (デフォルトでは root) のホーム
                   ディレクトリとして指定されているディレクトリに設定することになる。 ポリシーに
                   よっては、それがデフォルトの動作になっていることもある。

       -h          -h (help) オプションを指定すると、 sudo は簡単なヘルプメッセージを標準出力に表
                   示して、終了する。

       -i [command]
                   -i (simulate initial login) オプションを指定すると、 パスワード・データベース
                   の変身対象ユーザのエントリで指定されてているシェルが、 ログイン・シェルとして
                   実行される。すなわち、.profile や .login といった、ログイン用のリソースファイ
                   ルが、 シェルによって読み込まれるわけだ。コマンドを指定すると、 それがシェルに
                   渡され、シェルの  -c オプションを使って実行される。 コマンドを指定しない場合
                   は、対話的シェルが起動されることになる。sudo は、 シェルを実行する前に、変身対
                   象ユーザのホームディレクトリに移動しようとする。 セキュリティ・ポリシーは、環
                   境変数が最小限になるように、すなわち、 ユーザが普通にログインしたときの環境と
                   同様になるように、 環境を初期化すべきである。 sudoers ポリシーを使用している場
                   合に、 -i オプションがコマンドの実行環境にどんな影響を与えるかについては、
                   sudoers(5) のマニュアルの「コマンド環境」セクションに説明がある。

       -K          -K (sure kill) オプションは -k オプションに似ているが、 ユーザの保存された認証
                   情報を完全に消去してしまう点と、 コマンドや他のオプションと組み合わせて使用で
                   きない点で異なっている。 このオプションはパスワードを要求しない。 すべてのセ
                   キュリティ・ポリシーが 認証情報の一時保存をサポートしているわけではない。

       -k [command]
                   -k (kill) オプションを単独で使うと、 sudo はユーザの保存された認証情報を無効に
                   する。 次回 sudo を実行するとき、パスワードが要求されることになるわけだ。 この
                   オプション自体はパスワードを必要としない。 なお、このオプションが追加されたの
                   は、ユーザが .logout ファイルで、sudo をパスワードなしで実行できる期間を終了さ
                   せることができるようにするためである。 すべてのセキュリティ・ポリシーが認証情
                   報の一時保存をサポートしているわけではない。

                   -k オプションをコマンドや、 パスワードを必要とするような他のオプションと組み合
                   わせて使用すると、 sudo はユーザの保存された認証情報を無視することになる。 そ
                   の結果、sudo は (セキュリティ・ポリシーでパスワードを要求するようになっている
                   ならば) プロンプトを出してパスワードを要求する。このとき、 ユーザの保存された
                   認証情報の更新は行わない。

       -l[l] [command]
                   command を指定しない場合、-l (list) オプションは、 sudo を実行しているユーザ
                   (あるいは、-U で指定したユーザ) が、 現在ログインしているホストで許可されてい
                   る (及び、禁じられている) コマンドを列挙する。command を指定した場合は、 セ
                   キュリティ・ポリシーで許可されているコマンドならば、その絶対パスを表示する。
                   指定する command に引数を付けると、それも一緒に表示される (訳注: セキュリ
                   ティ・ポリシーで、許可するコマンドに引数まで指定している場合は、 それにマッチ
                   する引数を -l に続く command にも必ず付けなければならない)。 指定したコマンド
                   が許可されていない場合は、 sudo がステータス 1 で終了する。-l オプションに l
                   という引数を付けた場合や (すなわち -ll)、 -l を複数回指定した場合は、長い方の
                   リスト形式が使用される。

       -n          -n (non-interactive) オプションがあると、 sudo は ユーザにパスワードを要求する
                   プロンプトを出さない。 実行するコマンドにパスワードが必要な場合、 sudo はエ
                   ラーメッセージを表示して、終了する。

       -P          -P (preserve group vector) オプションを指定すると、 sudo は、sudo を実行する
                   ユーザが所属するグループのリストを、 変更せずにそのまま使用する。sudoers ポリ
                   シーの場合、デフォルトでは、 所属グループの初期値として、 変身対象となるユーザ
                   が所属するグループのリストを設定するのである。とは言え、 実 gid や 実効 gid が
                   変身対象ユーザと同一になるようにセットされる点には、 変わりがない。

       -p prompt   -p (prompt) オプションを使うと、 デフォルトのパスワードプロンプトを変更し
                   て、好きな文句にすることができる。 sudoers ポリシーでは以下のパーセント (`%')
                   エスケープが使用できる。

                   %H  ドメイン名を含むホスト名に展開される (マシンのホスト名が完全修飾名である
                       か、 sudoers(5) で fqdn オプションがセットされている場合に有効)

                   %h  ドメイン名なしのローカルホスト名に展開

                   %p  パスワードを要求されるユーザ名に展開 (sudoers(5) の rootpw, targetpw,
                       runaspw フラグを尊重する)

                   %U  変身対象になるユーザ (-u オプションが同時に指定されていない場合は、root が
                       デフォルト) のログイン名に展開される

                   %u  sudo を起動するユーザのログイン名に展開される

                   %%  連続した二つの % は、一個の % 文字そのものを意味する

                   -p で指定したプロンプトが、PAM をサポートしているシステムで、システムのパス
                   ワードプロンプトを上書きするのは、 sudoerspassprompt_override が有効になっ
                   ている場合である (訳注: 実際にはもうすこし複雑なので、sudoers(5) の
                   passprompt_override の項も参照してほしい)。

       -S          -S (stdin) オプションを指定すると、 sudo はパスワードをターミナルデバイスから
                   ではなく、 標準入力から読み込む。パスワードは末尾に改行を付けなければならな
                   い。

       -s [command]
                   -s (shell) は、環境変数 SHELL が設定されていれば、 そのシェルを、さもなけれ
                   ば、 パスワード・データベースで指定されているシェルを実行する。 コマンドが指定
                   されている場合には、それをシェルに渡し、シェルの -c オプションを通じて実行させ
                   る。 コマンドが指定されていなければ、対話的シェルを開く。

       -U user     -U (other user) オプションは、-l と組み合わせて使用し、 誰の権限の一覧を表示す
                   るかを指定する。自分以外のユーザの権限の表示は、 セキュリティ・ポリシーによっ
                   て禁止されているかもしれない。 sudoers ポリシーでこのオプションの使用が認めら
                   れているのは、 root ユーザを別にすると、現在使用中のホストで許可するコマンドに
                   ALL が指定してあるユーザだけである。

       -u user     -u (user) オプションを指定すると、sudo は指定されたコマンドを root 以外のユー
                   ザとして実行する。 ユーザ名の代わりに uid を指定するときは、#uid という書き方
                   をする。 多くのシェルでは、uid の資格でコマンドを実行するときは、 '#' をバック
                   スラッシュ ('\') でエスケープしなければならない。 セキュリティ・ポリシーによっ
                   ては、使用できる uid をパスワード・データベースに記載されているものに限定して
                   いることもある。 sudoers ポリシーでは、 targetpw オプションが設定されていない
                   かぎり、 パスワード・データベースに存在しない uid も認めている。 他のセキュリ
                   ティ・ポリシーでは、これは許されないかもしれない。

       -V          -V (version) オプションを指定すると、 sudo はそのバージョン文字列を、セキュリ
                   ティ・ポリシー・プラグインや I/O プラグインのバージョン文字列とともに表示す
                   る。 sudo -V を実行するユーザがあらかじめ root になっている場合は、 sudo がビ
                   ルドされたときに configure スクリプトに渡された引数が表示される。また、プラグ
                   インについても、 デフォルト・オプションのようなより詳細な情報が表示されるかも
                   しれない。

       -v          -v (validate) オプションを指定すると、sudo は ユーザの保存された認証情報を更新
                   する。このとき、必要ならば、 パスワードによる認証を行う。sudoers プラグインで
                   は、 このオプションによって sudo のタイムアウト時間がもう 5 分間 (あるいは、何
                   分であれ、sudoers で設定されたタイムアウト時間) 伸びるが、 このオプションがコ
                   マンドを実行することはない。 すべてのセキュリティ・ポリシーが認証情報の一時保
                   存に対応しているわけではない。

       --          -- オプションがあると、 sudo はそこでコマンドライン引き数の処理をやめる。

       [訳注]: このほか、sudo-1.8.4 では使用できなくなくなったが、sudo-1.8.3 には -D というオプ
               ションも存在した。ご参考のため挙げておくと、 次のようなものである。

               -D level    sudo そのもの、及び sudo プラグインのデバッグを有効にする。 level には
                           1 から 9 までの値を指定できる。

       さらに、コマンドのためにセットしたい環境変数も、VAR=value、 たとえば
       LD_LIBRARY_PATH=/usr/local/pkg/lib といった形でコマンドラインから渡すことができる。 コマン
       ドラインから渡される変数は、通常の環境変数と同じ制限の対象になるが、 一つだけ重要な違いが
       ある。sudoerssetenv オプションが設定されているか、実行されるコマンドに SETENV タグがつ
       いているか、 あるいは、マッチするコマンドが ALL である場合は、 ユーザがほかの状況でなら禁
       じられているような変数をセットすることができるのだ。 詳細については sudoers(5) を参照して
       ほしい。

プラグイン

       プラグインは /etc/sudo.conf の内容に基づいて、動的にロードされる。 /etc/sudo.conf が存在し
       ない場合や、存在しても Plugin の行がない場合は、 sudo はこれまでどおり、 sudoers のセキュ
       リティ・ポリシーと I/O ロギングを使用する。 それは、次のように /etc/sudo.conf ファイルに記
       述するのと同じことである。

        #
        # Default /etc/sudo.conf file
        #
        # 書式:
        #   Plugin plugin_name plugin_path
        #   Path askpass /path/to/askpass
        #   Path noexec /path/to/noexec.so
        #   Debug sudo /var/log/sudo_debug all@warn
        #   Set disable_coredump true
        #
        # The plugin_path が絶対パスでない場合は、 /usr/local/libexec からの
        # 相対パスである。、
        # plugin_name は、プラグイン中の、プラグインのインターフェース構造を
        # 含むグローバルシンボルと同じものである。
        #
        Plugin sudoers_policy sudoers.so
        Plugin sudoers_io sudoers.so

       Plugin 行は、キーワード Plugin に始まり、 symbol_namepath が続く。 path は、プラグイン
       を含む共有オブジェクト・ファイルへのパスである。 symbol_name はプラグイン共有オブジェクト
       中の policy_plugin 構造体や io_plugin 構造体の名前である。 path は絶対パスでも相対パスでも
       よい。 相対パスの場合は、 /usr/local/libexec ディレクトリを基点にした相対パスである。 path
       の後ろに他のパラメータを付けても、無視される。 Plugin や Path で始まらない行は、 ただ単に
       無視される。

       [訳注]: sudo-1.8.3 までは、上記の説明どおり、キーワードに Plugin と Path しか使用できな
               かった。

               sudo-1.8.4 以上では、上記の書式にもあるように、Debug や Set で始まる行も有効であ
               る。「デバッグ・フラグ」や 「セキュリティに関する注意点」セクションも参照していた
               だきたい。

               また、sudo-1.8.5 以上では、path の後ろにパラメータを続けて書くことで (複数個あると
               きは空白で区切る)、 それをオプションとしてプラグインに渡すことが可能になっている。
               たとえば、以下のようにだ。

                 Plugin sudoers_policy sudoers.so sudoers_file=/etc/sudoers sudoers_uid=0
               sudoers_gid=0 sudoers_mode=0440

       詳細については、sudo_plugin(8) のマニュアルをご覧になること。

パス

       Path 行は、キーワード Path に始まり、 設定するパスの名前とその値が続く。一例を挙げる。

        Path noexec /usr/local/libexec/sudo_noexec.so
        Path askpass /usr/X11R6/bin/ssh-askpass

       次のようなプラグインではないプログラムやライブラリのパスを /etc/sudo.conf ファイルで設定す
       ることができる。

       askpass         端末が利用できないときに、 ユーザのパスワードを読み込むのに使用するヘル
                       パー・プログラムの絶対パス。 たとえば、 sudo がグラフィカルな (つまり、テ
                       キストベースではない) アプリケーションから実行される場合がこれに当たる。
                       askpass で指定されたプログラムは、 自分に渡された引数をプロンプトとして表
                       示し、 ユーザのパスワードを標準出力に書き出すべきである。 askpass の値
                       は、環境変数 SUDO_ASKPASS によって上書きすることができる。

       noexec          ライブラリ関数 execv(), execve(), fexecve() のダミー版 (単にエラーを返すだ
                       けの関数) が入っている共有ライブラリの絶対パス。 これは LD_PRELOAD やそれ
                       に相当するものをサポートしているシステムで noexec 機能を実現するために使用
                       される。 デフォルトでは  /usr/local/libexec/sudo_noexec.so になっている。

デバッグ・フラグ (sudo-1.8.4 の新機能)

       バージョン 1.8.4 以上の sudo は、 デバッグのための柔軟な枠組みに対応しており、 問題が発生
       したとき、sudo の内部で何が起きているかを突き止めるために、 それを利用することができる。

       Debug 行の構成は、Debug というキーワードに始まり、それに、デバッグ対象のプログラム名
       (sudo, visudo, sudoreplay) とデバッグファイル名が続き、 最後にコンマで区切ったデバッグ・フ
       ラグのリストが来るという形になっている (訳注: Debug 行も /etc/sudo.conf に記載する)。 デ
       バッグフラグのシンタクスは、sudosudoers プラグインでは、 subsystem@priority という書式
       を用いるが、 「,」というコマンドを含まないかぎり、 プラグインが別の書式を使っても構わな
       い。

       一例を挙げよう。

        Debug sudo /var/log/sudo_debug all@warn,plugin@info

       上記のように指定すれば、warn レベル以上のすべてのデバッグメッセージを ログに記録することに
       なる。さらに、plugin サブシステムに関しては、 info レベルのメッセージも記録する。

       現在のところ、一プログラムあたり一行の Debug エントリしか使用できない。 プログラム名が
       sudo の Debug 行は、 sudo フロントエンド、sudoedit、及び sudo のプラグインによって共有され
       る。将来のリリースでは、プラグインごとの Debug 行をサポートするかもしれない。 また、一つの
       プログラムに対する複数のデバッグファイルをサポートするかもしれない。

       sudo フロントエンドが使用する priority (重大度) を 深刻なものから挙げると、crit, err,
       warn, notice, diag, info, trace, debug である。 ある  priority を指定すると、 それよりも深
       刻なすべての priority も同時に指定したことになる。 たとえば、notice という priority を指定
       すれば、 notice レベル以上のデバッグメッセージがログに記録されるわけである。

       sudo では以下のサブシステムが使用できる。

       all       あらゆるサブシステムにマッチする

       args      コマンドライン引数の処理

       conv      ユーザとのやりとり

       edit      sudoedit

       exec      コマンドの実行

       main      sudo のメイン関数

       netif     ネットワーク・インターフェースの取扱い

       pcomm     プラグインとのやりとり

       plugin    プラグインの設定

       pty       擬似 tty に関連したコード

       selinux   SELinux に特有の取扱い

       util      ユーティリティ関数群

       utmp      utmp の取扱い

返り値

       プログラムの実行に成功した場合、sudo が返す終了ステータスは、 実行したプログラムの終了ス
       テータスそのものである。

       そうでない場合、設定やパーミッションに問題があったり、 sudo が指定されたコマンドを実行でき
       なかったりしたときは、 sudo は返り値 1 で終了する。 後者の場合は、エラーメッセージが標準エ
       ラーに表示される。 また、sudo がユーザの PATH にある一つ以上のエントリを stat(2) できな
       かったときも、 エラーが標準エラーに出力される (ただし、そのディレクトリが存在しなかった
       り、 実際にはディレクトリでなかったりした場合は、 そのエントリは無視され、エラーは表示され
       ない)。そうしたことは、 正常な環境では起きないはずのことである。stat(2) が "permission
       denied" を返す理由で一番よくあるのは、 ユーザーがオートマウントを使用していて、PATH にある
       ディレクトリの一つが目下到達不可能なマシンにある場合だ。

セキュリティに関する注意点

       sudo は外部のコマンドをできるだけ安全に実行しようとする。

       偽コマンドの実行 (command spoofing) を防止するため、 sudo はコマンドを捜してユーザの PATH
       を検索する際に、 "." と "" (どちらもカレントディレクトリを意味する) を最後に調べる (そのど
       ちらか、あるいは両方が PATH 中に存在すればだが)。 とは言え、環境変数 PATH そのものは変更さ
       れずに、 そのまま sudo が実行するプログラムに渡されることに注意してほしい。

       sudo は通常、 自分が明示的に実行したコマンドしかログに記録しないことに気を付けてほしい。
       ユーザが sudo su や sudo sh といったコマンドを実行した場合、そのシェルから続いて実行される
       コマンドは sudo のセキュリティ・ポリシーの対象にならない。 シェル・エスケープを提供するコ
       マンドについても (たいていのエディタが それに含まれる) 同じことが言える。 確かに、I/O ロギ
       ングが有効になっている場合は、 シェルから続いて実行されるコマンドも、その入力や出力を記録
       されることになるが、 従来からあるログに記録されるわけではないのである。 こうしたことか
       ら、ユーザに sudo 経由でコマンドの使用を許すときは、 そのコマンドが事実上ルート・シェルを
       うっかりユーザに与えていないかを、 念には念を入れて確認しなければならない。もっと詳しいこ
       とが知りたかったら、 sudoers(5) の「シェル・エスケープを防止する」 のセクションを御覧にな
       るとよい。

       セキュリティ上問題になりかねない情報を漏洩しないように、 sudo はデフォルトでは、自己を実行
       中のコアダンプを抑止している (指定されたコマンドを実行するときには、コアダンプを有効にし直
       すのである)。 sudo そのもののクラッシュをデバッグするために、 コアダンプを有効に戻したいな
       らば、 /etc/sudo.conf ファイルで "disable_coredump" を false にすればよい。(訳注: キーワー
       ド Set は sudo-1.8.4 以上でなければ、 使用できない。)

        Set disable_coredump false

       注意してほしいのは、たいていのオペレーティングシステムが、 デフォルトでは setuid プログラ
       ムのコアダンプを抑止していることだ。 sudo もそうしたプログラムの一つである。 そこで、実際
       に sudo のコアダンプ・ファイルを取得するには、 setuid プロセスに対するコアダンプを有効にす
       る必要があるかもしれない。 BSD や Linux のシステムでは、これは sysctl コマンドによって行わ
       れる。 Solaris では coreadm コマンドが使用できる。

環境変数

       sudo は以下の環境変数を利用する。実行するコマンドの環境の内容は、 セキュリティ・ポリシーに
       よる制御の対象になる。

       EDITOR          環境変数 SUDO_EDITOR や VISUAL が設定されていないとき、 -e (sudoedit) モー
                       ドで使用するデフォルトのエディタ

       MAIL            -i オプションが指定された場合や、 sudoersenv_reset が有効になっている
                       場合に、 変身対象ユーザのメールスプールにセットされる

       HOME            -i-H オプションが指定された場合や、 sudoersenv_resetalways_set_home が設定されている場合、あるいは sudoersset_home が設定
                       され、 かつ -s オプションが指定された場合に、 変身対象ユーザのホームディレ
                       クトリにセットされる

       PATH            セキュリティ・ポリシーによって上書きされるかもしれない

       SHELL           -s オプションで起動するシェルを決めるのに使用する

       SUDO_ASKPASS    ターミナルが利用できない場合や、 -A オプションが指定されている場合に、 パ
                       スワードを読み込むのに使用するヘルパープログラムのパスを指定する

       SUDO_COMMAND    sudo が実行するコマンドにセットされる

       SUDO_EDITOR     -e (sudoedit) モードで使用するデフォルトのエディタ

       SUDO_GID        sudo を起動したユーザのグループ ID にセットされる

       SUDO_PROMPT     デフォルトのパスワード・プロンプトとして使用する

       SUDO_PS1        設定すると、 実行されるプログラムの PS1 がこの変数の値にセットされる

       SUDO_UID        sudo を起動したユーザのユーザ ID にセットされる

       SUDO_USER       sudo を起動したユーザのログイン名にセットされる

       USER            変身対象ユーザにセットされる (オプション -u が指定されていなければ、 root
                       になる)

       VISUAL          変数 SUDO_EDITOR が設定されていない場合に、 -e (sudoedit) モードで使用する
                       デフォルトのエディタ

ファイル

       /etc/sudo.conf          sudo フロントエンドの設定ファイル

       [訳注]: 念のため、次の二つを追加しておく。詳細については sudoers(5) をご覧いただきたい。

           /etc/sudoers        誰が何を実行できるかを設定するファイル

           /var/lib/sudo       sudo が認証情報の保存に使用するタイムスタンプを置く、 デフォルトの
                               ディレクトリ

用例

       注意: 以下の例は、 セキュリティ・ポリシーが適切に設定されていることを前提にしている。

       読み取り不可のディレクトリのファイル一覧を取得する。

        $ sudo ls /usr/local/protected

       ユーザ yaz のホームディレクトリのファイル一覧を取得したいのだが、 ~yaz を含むファイルシス
       テムが別のマシンにあって、 root でアクセスできるようにエクスポートされていない場合。

        $ sudo -u yaz ls ~yaz

       ユーザ www として index.html ファイルを編集する。

        $ sudo -u www vi ~www/htdocs/index.html

       root と adm グループのユーザだけがアクセスできるシステムログを閲覧する。

        $ sudo -g adm view /var/log/syslog

       jim に変身してエディタを実行する。 プライマリグループには別のグループを指定する。

        $ sudo -u jim -g audio vi ~jim/sound.txt

       マシンをリブートする。

        $ sudo shutdown -r +15 "quick reboot"

       /home パーティションに存在するディレクトリのディスク使用量リストを作成する。 cd やファイ
       ル・リダイレクションがきちんと動作するように、 コマンドをサブシェルで実行していることに注
       目してほしい。

        $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

関連項目

       grep(1), su(1), stat(2), passwd(5), sudoers(5), sudo_plugin(8), sudoreplay(8), visudo(8)

作者

       多数の人々が長年に渡って sudo の開発に取り組んできた。当バージョ ンは主として次の者が書い
       たコードからできている。

               Todd C. Miller

       sudo の開発に貢献してくださった方々のリストについては、 sudo の配布に含まれる CONTRIBUTORS
       ファイルをご覧いただきたい (http://www.sudo.ws/sudo/contributors.html)。

履歴

       sudo の簡単な履歴については、 配布物中の HISTORY ファイルをご覧いただきたい
       (http://www.sudo.ws/sudo/history.html)。

警告

       ユーザが sudo 経由で任意のコマンドを実行することを許可されているならば、 そのユーザがルー
       ト・シェルを獲得するのを防止する簡単な方法はない。 また、(エディタを含む) 多くのプログラム
       が、 シェル・エスケープを通してユーザがコマンドを実行できるようにしており、 この方法でユー
       ザは sudo のチェックを回避することができる。 とは言え、たいていのシステムでは、 sudoers(5)
       モジュールの noexec 機能を用いて、 シェル・エスケープを抑止することが可能である。

       下記のように sudo の中で直に cd コマンドを実行しても意味がない。

        $ sudo cd /usr/local/protected

       なぜなら、このコマンドが終了したとき、その親プロセス (つまり、 sudo を実行したシェル) は相
       変わらず元の状態のままだからだ。 より詳しく知りたかったら、「用例」セクションを御覧になっ
       てほしい。

       sudo を介してシェルスクリプトを実行すると、 ある種のオペレーティングシステムで setuid シェ
       ルスクリプトを危険なものにしているのと同一の、 カーネルのバグが表面化するおそれがある (使
       用している OS に /dev/fd/ ディレクトリがあれば、setuid シェルスクリプトはたいてい安全であ
       る)。

バグ

       sudo にバクを発見したと思ったら、下記のページにアクセスして、 バグレポートを提出していただ
       きたい。
       http://www.sudo.ws/sudo/bugs/

サポート

       ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。 購読やアーカイブ
       の検索には下記 URL を御覧になること。
       http://www.sudo.ws/mailman/listinfo/sudo-users

免責

       sudo は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、 商品性や特定
       目的への適合性についての黙示的な保証を含め、 またそれのみに止まらず、これを否認する。詳細
       な全文については、 sudo と一緒に配布されている LICENSE ファイルや、 下記 Web ページを御覧
       いただきたい。
       http://www.sudo.ws/sudo/license.html