Provided by: manpages-ja_0.5.0.0.20110915-1_all bug

SUDOERS のオプション
       すでに説明したように、sudo の動作は Default_Entry 行によって変更するこ
       とができる。 Defaults に与えることのできるパラメータについて、サポート
       されているも ののすべてを、タイプ別にまとめて以下に列挙する。

       フラグ:

       always_set_home これをセットすると、sudo は環境変数 HOME を 変身対象
                       ユーザのホームディレクトリに設定する (-u オプションが
                       使用されないかぎり、それは root である)。事実上、暗黙の
                       うちに sudo-H オプションが常に指定されることになる
                       わけだ。このフラグは デフォルトでは off である。

       authenticate    これをセットすると、ユーザはコマンドの実行を許可される
                       前に、パスワードで (あるいは、ほかの認証方法で) 認証を
                       しなければならない。このデフォルト値は PASSWD や
                       NOPASSWD タグで変更できる。 このフラグはデフォルトでは
                       on である。

       closefrom_override
                       これをセットすると、ユーザが sudo-C オプションを 使
                       用できるようになる。-C オプションというのは、sudo が 開
                       いたファイルを閉じていくとき、どのファイル・ディスクリ
                       プタから クローズしていくかというデフォルトの始点を変更
                       するものだ。このフラグは デフォルトでは off である。

       env_editor      これをセットすると、visudo はデフォルトのエディタ・リス
                       トを 利用する前に、環境変数 EDITOR や VISUAL の値を 使
                       用するようになる。これがセキュリティホールになりかねな
                       いことに 注意してほしい。ユーザが root として任意のコマ
                       ンドをログに記録されることなく 実行できるようになるから
                       だ。こうした環境変数を利用するときの、 env_editor を有
                       効にするよりも安全な方法は、 sudoers ファイルの editor
                       オプションに コロンで区切ったエディタのリストを書いてお
                       くことだ。そうすれば、 visudo が EDITOR や VISUAL を使
                       うのは、 それが editor オプションに指定した値とマッチし
                       たときだけに なる。このフラグはデフォルトでは off であ
                       る。

       env_reset       これをセットすると、sudo は環境を以下の変数のみを含むよ
                       うに 設定し直す。すなわち、LOGNAME, SHELL, USER,
                       USERNAME それに SUDO_* である。その後で さらに、sudo を
                       起動するユーザの環境にある変数のうち、 env_keep や
                       env_check のリストに マッチするものが追加される。
                       env_keep や env_check のリストにデフォルトでどんな変数
                       が 含まれているかは、root ユーザが sudo-V オプショ
                       ン付きで 実行すれば、見ることができる。なお、sudoers
                       ファイルの secure_path オプションが設定されているとき
                       は、その値が 環境変数 PATH として使用されることになる。
                       このフラグはデフォルトでは on である。

       fqdn            sudoers ファイルで完全修飾ホスト名を使用したかったら、
                       このフラグをセットするとよい。すなわち、myhost ではな
                       く、 myhost.mydomain.edu を使いたい場合だ。そのときで
                       も、そうしたければ、 短縮形も使える (両方を混ぜて使うこ
                       とだってできる)。気を付けて ほしいのは、fqdn を 有効に
                       すると、sudo は DNS へ 問い合わせをしなければならないの
                       で、DNS サービスが 稼働していない場合、sudo が使えなく
                       なるかもしれないということだ (たとえば、マシンがネット
                       ワークに接続していない場合)。 もう一つ気を付けるべきこ
                       とがある。 DNS が知っているホストの正式名を使わなければ
                       ならないということだ。 言い換えれば、ホストのエイリアス
                       (CNAME のエントリ) を 使ってはいけない。パフォーマンス
                       の問題もあるし、DNS からエイリアスを すべて取得する方法
                       はないからでもある。マシンのホスト名が (hostname コマン
                       ドで返ってくるものが) すでに 完全修飾名になっているなら
                       ば、fqdn をセットする必要はないだろう。 このフラグはデ
                       フォルトでは off である。

       ignore_dot      これをセットすると、環境変数 PATH 中に '.' や '' (カレ
                       ントディレクトリ) があっても、sudo はそれを無視する。
                       PATH そのものは変更されない。このフラグは デフォルトで
                       は off である。

       ignore_local_sudoers
                       LDAP の方でこのフラグをセットすると、/etc/sudoers の 解
                       析がスキップされる。このフラグは、ローカルにある
                       sudoers ファイルの 使用を禁じて、LDAP のみを使うように
                       したい企業のためにある。 たちの悪いオペレータが
                       /etc/sudoers に手を加えて自分の権限を 増やそうとして
                       も、そうした悪だくみは阻止されるわけだ。このオプション
                       が 設定されているときは、/etc/sudoers ファイルは存在す
                       る必要すらない。 このオプションは、マッチする LDAP の具
                       体的なエントリが 一つもなかったときに、どう振舞うべきか
                       を sudo に指示するものだから、 これを指定した
                       sudoOption は cn=defaults のセクションに なければ意味が
                       ない。このフラグはデフォルトでは off である。

       insults         これをセットすると、不正なパスワードが入力されたとき、
                       sudo がユーザに悪態をつく。このフラグはデフォルトでは
                       off である。

       log_host        これをセットすると、ホスト名が (syslog 経由ではない)
                       sudo の ログファイルに記録されることになる。このフラグ
                       はデフォルトでは off である。

       log_year        これをセットすると、四桁の年が (syslog 経由ではない)
                       sudo の ログファイルに記入されることになる。このフラグ
                       はデフォルトでは off である。

       long_otp_prompt S/KeyOPIE のような One Time Password (OTP) スキーム
                       を採用しているときにこれを有効にすると、チャレンジを
                       ローカルウィンドウにカット・アンド・ペーストしやすいよ
                       うに、 二行のプロンプトが使用される。デフォルトのプロン
                       プトほど見栄えはよくないが、 こちらの方が便利だと思う人
                       もいる。デフォルトではこのフラグは off である。

       mail_always     ユーザが sudo を実行するたびに、mailto ユーザにメールを
                       送る。 このフラグはデフォルトでは off である。

       mail_badpass    sudo を実行するユーザが正しいパスワードを入力しないと、
                       mailto ユーザにメールを送る。このフラグはデフォルトでは
                       off である。

       mail_no_host    これをセットすると、sudo を起動したユーザが sudoers
                       ファイルに 存在するものの、使用中のホストでコマンドの実
                       行を許可されていない場合、 mailto ユーザにメールを送付
                       する。このフラグはデフォルトでは off である。

       mail_no_perms   これをセットすると、sudo を起動したユーザが sudo の使用
                       を 許可されているが、実行しようとしているコマンドが
                       sudoers ファイルの そのユーザのエントリに登録されていな
                       いか、明示的に禁止されている場合、 mailto ユーザにメー
                       ルを送付する。このフラグはデフォルトでは off である。

       mail_no_user    これをセットすると、sudo を起動したユーザが sudoers
                       ファイルに 記載されていない場合、mailto ユーザにメール
                       を送付する。 このフラグはデフォルトでは on である。

       noexec          これをセットすると、sudo を通して実行されるすべてのコマ
                       ンドが、 EXEC タグで無効にされないかぎり、あたかも
                       NOEXEC タグが設定されているかのごとく振舞うようになる。
                       上述の「NOEXEC  EXEC」の説明、および、このマニュアル
                       の 終わりの方にある「シェル・エスケープを防止する」とい
                       うセクションを 参照してほしい。このフラグはデフォルトで
                       は off である。

       path_info       通常 sudo は、環境変数 PATH 中にコマンドが 見付からない
                       と、ユーザにそのことを知らせる。これを利用すれば、 一般
                       ユーザにアクセス権のない実行ファイルのありかについて情
                       報を 収集できるという理由から、この動作を無効にしたいサ
                       イトもあるかもしれない。 その場合の欠点は、実行ファイル
                       が単にユーザの PATH 中に なかっただけの場合でも、実行の
                       許可がないと sudo がユーザに告げる ことになって、実情が
                       わかりにくいかもしれないことである。このフラグは デフォ
                       ルトでは on である。

       passprompt_override
                       通常、passprompt オプションによって指定されたパスワード
                       プロンプトが 使用されるのは、PAM のようなシステムが用意
                       している パスワードプロンプトが "Password:" という文字
                       列にマッチしている ときだけである。passprompt_override
                       をセットすると、 passprompt が無条件で使われることにな
                       る。このフラグは デフォルトでは off である。

       preserve_groups デフォルトでは、sudo は所属グループの初期値として、変身
                       対象ユーザが 所属しているグループのリストを設定する。
                       preserve_groups を セットすると、sudo を実行するユーザ
                       の所属グループのリストが、 変更されずにそのまま維持され
                       る。とは言え、実グループ ID や 実効グループ ID が変身対
                       象ユーザのそれに設定されることに変わりはない。 このフラ
                       グはデフォルトでは off である。

       pwfeedback      ほかのたいていの Unix プログラムと同様、sudo はパスワー
                       ドを 読み込むとき、デフォルトでは、ユーザが Return (ま
                       たは Enter) キーを 押すまで、エコーを off にする。この
                       動作にとまどうユーザが存在する。 彼らには sudo が急に反
                       応しなくなったように見えるのだ。 pwfeedback をセットす
                       ると、ユーザがキーを押すたびに、sudo が 目に見える反応
                       を返すようになる。これには、セキュリティ上の問題が ある
                       ことに注意してほしい。横で見ている人が、打ち込まれたパ
                       スワードの 文字数を特定することができるかもしれないの
                       だ。このフラグはデフォルトでは off である。

       requiretty      これをセットすると、sudo が実行されるのは、ユーザが実際
                       の tty に ログインしたときだけになる。すなわち、sudo を
                       実行できるのは、 ログイン・セッションからだけであって、
                       cron(8) や cgi-bin スクリプトといった、ほかの方法を介し
                       て実行する ことはできないということだ。このフラグは、デ
                       フォルトでは off である。

       root_sudo       これをセットすると、root も sudo を実行できるようにな
                       る。 このフラグを無効にすると、ユーザがたとえば "sudo
                       sudo /bin/sh" と いったように sudo コマンドを連鎖的に
                       使って、ルートシェルを 獲得することができなくなる。とこ
                       ろで、 root_sudo が off だと、root が sudoedit まで実行
                       できなくなる ことに注意してほしい。 root_sudo を無効に
                       しても、セキュリティが実際に向上するわけではない。 この
                       フラグが存在しているのは、もっぱら歴史的な理由からなの
                       だ。 このフラグはデフォルトでは on である。

       rootpw          これをセットすると、sudo はプロンプトで、起動したユーザ
                       の パスワードではなく、root のパスワードを要求するよう
                       になる。 このフラグはデフォルトでは off である。

       runaspw         これをセットすると、sudo はプロンプトで、起動したユーザ
                       の パスワードではなく、sudoers ファイルの runas_default
                       オプションが 定義しているユーザーの (デフォルトでは
                       root である) パスワードを要求する。このフラグはデフォル
                       トでは off である。

       set_home        これがセットされているとき、sudo-s オプション付きで
                       起動すると、環境変数 HOME が変身対象ユーザの (-u オプ
                       ションが使用されないかぎり、それは root である) ホーム
                       ディレクトリに設定される。すなわち、 -s オプションが -H
                       オプションを事実上兼ねることになるわけだ。このフラグは
                       デフォルトでは off である。

       set_logname     通常 sudo は環境変数 LOGNAME, USER, USERNAME を 変身対
                       象ユーザの名前 (-u オプションが指定されていない場合、
                       普通は root) にセットする。しかし、プログラムによっては
                       (たとえば、 RCS リビジョンコントロールシステムがその一
                       つだが) ユーザが 実際には誰であるかを判定するのに
                       LOGNAME を 使用していることがあるので、この振舞いを変更
                       することが望ましい場合もある。 set_logname オプションに
                       '!' を付けて否定することで、それができる。 なお
                       env_reset オプションを無効にしていない場合、 env_keep
                       リストの項目が set_logname による値を 上書きすることに
                       なるので、注意してほしい。このフラグはデフォルトでは on
                       である。

       setenv          これをセットすると、ユーザがコマンドラインから
                       env_reset オプションを 無効にできるようになる。さら
                       に、コマンドラインから設定する環境変数が env_check,
                       env_delete, env_keep による制限を 受けなくなる。それ
                       故、そのようなやり方で変数を設定することを 許可するの
                       は、信用できるユーザのみに限るべきだ。このフラグは デ
                       フォルトでは off である。

       shell_noargs    これがセットされているとき、sudo を引き数なしで起動する
                       と、 sudo-s オプションが指定されたかのように振舞
                       う。 すなわち、root ユーザとしてシェルを実行するわけだ
                       (シェルは、 環境変数 SHELL がセットされていれば、それに
                       よって決まるし、 セットされていなければ、sudo を起動し
                       たユーザの /etc/passwd エントリに 登録されたものにな
                       る)。このフラグはデフォルトでは off である。

       fast_glob       通常 sudo はパス名のマッチングをするとき、glob(3) 関数
                       を 使用して、シェル・スタイルのワイルドカード展開
                       (glob) を行う。しかし、 glob(3) はファイルシステムにア
                       クセスするので、指定パターンに よっては、作業を完了する
                       までに時間がかかることがある。 必要な時にマウントするよ
                       うになっている (つまりオートマウントの) ネットワーク・
                       ファイル・システムを参照するときは、とりわけ時間がかか
                       る。 fast_glob オプションを指定すると、sudofnmatch(3) 関数を使うようになるが、こちらの関数はマッチ
                       ングの際に ファイルシステムにアクセスしない。fast_glob
                       の欠点は、 ./ls../bin/ls のような相対パスに対する
                       マッチが できないことである。このフラグはデフォルトでは
                       off である。

       stay_setuid     通常 sudo がコマンドを実行するとき、実 UID と実効 UID
                       は 変身対象ユーザ (デフォルトでは root) のものにセット
                       される。このオプションは その振舞いを変更して、sudo を
                       起動したユーザの UID が、 そのまま実 UID として残るよう
                       にする。言い換えると、sudo が setuid ラッパーとして動作
                       するようになるわけだ。プログラムを setuid で 動かす
                       と、危険をもたらしかねないという理由から、ある種の機能
                       を 使えないようにしているシステムでは、このオプションが
                       役に立つかもしれない。 このオプションは、 setreuid() 関
                       数なり setresuid() 関数なりを 持っているシステムでのみ
                       有効である。 このフラグはデフォルトでは off である。

       targetpw        これをセットすると、sudo はプロンプトで、起動したユーザ
                       のパスワード ではなく、-u オプションで指定されたユーザ
                       (デフォルトでは root) の パスワードを要求する。この設定
                       をすると、-u オプションの引き数として、 passwd データ
                       ベースに登録されていない uid が使えなくなることに注意し
                       てほしい。 このフラグはデフォルトでは off である。

       tty_tickets     これをセットすると、ユーザは tty ごとに認証をしなければ
                       ならなくなる。 sudo は通常、チケットディレクトリ (訳
                       注:たとえば /var/run/sudo) にある、sudo を実行している
                       ユーザと同じ名前のディ レクトリを認証に使用する。しか
                       し、このフラグが有効になっている場合は、 そのディレクト
                       リにある、ユーザがログインしている tty に対応する名前の
                       ファイルを使用することになるのだ。このフラグはデフォル
                       トでは off である。

       umask_override  これをセットすると、sudo は umask を sudoers の umask
                       オプションで指定されたとおりの値に、変更を加えることな
                       く設定する。 このことによって、ユーザ自身の umask 値よ
                       りもっと緩やかな umask 値を sudoers で指定することが可
                       能になる。sudo の昔の動作と 同じになるわけだ。
                       umask_override をセットしない場合、現在の sudo は umask
                       を、 ユーザの umask 値と sudoers で指定した umask 値と
                       のビット和に 設定することになっている。このフラグはデ
                       フォルトでは off である。

       visiblepw       デフォルトでは、ユーザがパスワードを入力しなければなら
                       ないときに、 使用しているターミナルでエコーの抑制ができ
                       なかったら、 sudo は実行を拒否するようになっている。こ
                       れに対し、 visiblepw フラグが設定されていると、パスワー
                       ドがスクリーンに 表示されてしまう場合でも、sudo はプロ
                       ンプトを出して、パスワードを 求める。この動作によって、
                       rsh(1) は tty を割り当てないにもかかわらず、 "rsh
                       somehost sudo ls" といった操作の実行が可能になるわけ
                       だ。 このフラグはデフォルトでは off である。

       整数:

       closefrom       sudo はコマンドを実行する前に、標準入力、標準出力、標準
                       エラー (すなわち、ファイルディスクリプタ 0-2 である) を
                       除いて、 オープンしたすべてのファイル・ディスクリプタを
                       クローズする。 closefrom オプションを使用すると、0-2 以
                       外の どのファイル・ディスクリプタからクローズして行くか
                       を指定することができる。 デフォルトは 3 である。

       passwd_tries    sudo が「失敗」をログに記録して終了する前に、ユーザがパ
                       スワードを 入力できる回数。デフォルトは 3。

       真偽値としても使用できる整数:

       loglinelen      sudo 用ログファイルの一行あたりの文字数。この値は、ログ
                       ファイルを 見やすくするために改行する位置を決めるのに使
                       用される。この値は、 syslog 経由のログファイルには影響
                       せず、直接ファイルにログを書き出すときのみ 効果があ
                       る。デフォルトは 80 である (改行をしないように するに
                       は、値を 0 にするか、頭に '!' を付けて、このオプション
                       を否定する)。

       passwd_timeout  sudo のパスワードプロンプトが時間切れになるまでの分単位
                       の時間。 デフォルトは 5 である。これを 0 にセットする
                       と、パスワードプロンプトが時間切れなしになる。

       timestamp_timeout
                       sudo がパスワードを再び要求するようになるまでの時間を分
                       単位で 指定する。デフォルトでは 5 である。これを 0 に
                       セットすると、毎回パスワードを要求するようになる。0 よ
                       り小さい値に セットした場合は、ユーザのタイムスタンプが
                       期限切れになることがない。 ユーザが sudo -v と sudo -k
                       を 実行することによって、タイムスタンプを自分で作った
                       り、消したりできるように したかったら、この手を使えばよ
                       い。

       umask           コマンドを実行しているときに使用する umask 値。ユーザの
                       umask 値をそのまま 使いたかったら、'!' を頭に付けて、こ
                       のオプションを否定するか、0777 に セットする。このオプ
                       ションの値が 0777 以外の場合、実際に使用される umask 値
                       は、ユーザの umask 値と umask オプションで指定する
                       umask 値との ビット和になる。そのことによって、sudo が
                       コマンドを実行するときの umask 値が、ユーザの umask 値
                       より低くならないようになっているわけだ。 なお、umask オ
                       プションのデフォルトの値は、0022 である。 PAM を使用し
                       ているシステムでは、 PAM のデフォルト設定で umask 値を
                       指定することができるが、その場合は、それが sudoers で
                       指定した値を上書きすることに注意してほしい。

       文字列:

       badpass_message ユーザが不正なパスワードを入力したときに表示するメッ
                       セージ。 insults フラグが有効になっていないかぎり、デ
                       フォルトは 「Sorry, try again.」である。

       editor          visudo で使用できるエディタをコロン (':') で区切ったリ
                       スト。 visudo は、可能ならば、ユーザの EDITOR 環境変数
                       と一致し たエディタを選択する。それができないときは、こ
                       のリストにあるエディタで、 実際に存在し、かつ実行可能な
                       最初のエディタを使用する。デフォルトは使用 システムにお
                       ける vi のパスである。

       mailsub         mailto ユーザに送付するメールの件名。エスケープ文字 %h
                       はマシンのホスト名に展開される。デフォルトは「***
                       SECURITY information for %h ***」。

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

       passprompt      パスワードを要求するときに使用するデフォルトのプロンプ
                       ト。-p オ プションや環境変数 SUDO_PROMPT によって変更す
                       ること ができる。以下のパーセント (`%') エスケープが使
                       用で きる。

                       %H  ドメイン名付きのローカルホスト名に展開 (マシンのホ
                           スト名が完全修飾名か、 fqdn オプションがセットされ
                           ている場合に有効)

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

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

                       %U  変身対象ユーザの (デフォルトでは root) ログイン名に
                           展開

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

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

                       デフォルトの値は「Password:」である。

       runas_default   コマンドラインで -u オプションが指定されていないとき
                       の、デフォルトの 変身対象ユーザ。デフォルトでは root に
                       なっている。 runas_default をセットするな
                       ら、Runas_Alias を 指定するよりも前にやらなければならな
                       いことに注意すること。

       syslog_badpri   ユーザが認証に失敗したときに使用する syslog の優先順位
                       (priority)。デ フォルトでは alert になっている。

       syslog_goodpri  ユーザが認証に成功したときに使用する syslog の優先順位
                       (priority)。デ フォルトでは notice になっている。

       sudoers_locale  sudoers ファイルを解析するときに使用するロケール。ロ
                       ケールの変更は、 sudoers の解釈に影響があるかもしれない
                       ので、注意してほしい。 デフォルトでは "C" になってい
                       る。

       timestampdir    sudo がタイムスタンプ・ファイルを置くディレクトリ。デ
                       フォルト は /var/run/sudo である。

       timestampowner  タイムスタンプ・ディレクトリとそこに置かれるタイムスタ
                       ンプの所有者。デ フォルトは root である。

       真偽値としても使用できる文字列:

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

       env_file    env_file オプションでファイルの絶対パスを指定すると、 実行
                   するプログラムの環境として設定する変数をそのファイルに格納
                   して おくことができる。このファイルのエントリは
                   VARIABLE=value か export VARIABLE=value の形でなければなら
                   ない。 変数の値をシングルクォートやダブルクォートで囲んでも
                   よい。 このファイルに含まれる変数は、env_keepenv_check
                   のような sudo のほかの環境設定の影響を受ける。

       exempt_group
                   このグループのユーザはパスワードの入力や secure_path による
                   PATH の限定を免除されている。このオプションはデフォルトでは
                   セットされていない。

       lecture     sudo はパスワードプロンプトに添えて簡単な訓戒を表示すること
                   が できる。このオプションはその訓戒をいつ表示するかを決定す
                   る。以下の値が 可能である。

                   always  いつでも必ず訓戒を表示する

                   never   訓戒を一切表示しない。

                   once    ユーザがはじめて sudo を実行したときだけ表示する。

                   値を指定しないと、once を指定したことになる。頭に '!' を付
                   けて、 このオプションを否定すると、値に never が使用され
                   る。 デフォルトの値は once である。

       lecture_file
                   標準の訓戒の代わりに使用する sudo の訓戒を書き込んだファイ
                   ルがあるなら、 lecture_file でそのパスを指定する。sudo はデ
                   フォルトでは、 プログラムに埋め込まれた訓戒を使用する。

       listpw      このオプションは、sudo-l オプション付きで実行したとき、
                   ユーザがパスワードを要求されるのは、どんな場合かを決定す
                   る。 以下のような値が可能である。

                   all     パスワードを入力しないですむためには、sudoers ファ
                           イルの使用中の ホストに対する当該ユーザのエントリの
                           すべてに NOPASSWD タグが設定されていなければならな
                           い。

                   always  ユーザは -l オプションを使用する際に必ずパスワード
                           を入力しなければ ならない。

                   any     パスワードを入力しないですむためには、sudoers ファ
                           イルの使用中の ホストに対する当該ユーザのエントリの
                           少なくとも一つに NOPASSWD タグが設定されていなけれ
                           ばならない。

                   never   ユーザは -l オプションを使用する際にパスワードを入
                           力する必要が まったくない。

                   値を指定しないと、値は any だと見なされる。'!' を頭に付け
                   て、 このオプションを否定すると、値に never が使われること
                   になる。 デフォルトは any である。

       logfile     sudo のログファイルのパス (syslog 経由のログファイルではな
                   い)。 パスを指定すると、ファイルへのロギングが on になり、
                   '!' を頭に付けて、 このオプションを否定すると、off にな
                   る。デフォルトでは、sudo は syslog 経由でログを取る。

       mailerflags メーラを起動するときに使用するフラグ。デフォルトは -t に
                   なっている。

       mailerpath  警告メールの送信に使うメール・プログラムのパス。デフォルト
                   は configure したときに見つかった sendmail のパス。

       mailfrom    警告メールやエラー・メールを送るとき、差出人として使用する
                   アドレス。 sudo が @ 記号を解釈しないようにするため、 アド
                   レスはダブルクォート (") で囲むべきである。 デフォルト
                   は、sudo を実行するユーザの名前。

       mailto      警告メールやエラー・メールを送付する宛先のアドレス。sudo が
                   @ 記号を解釈しないようにするため、アドレスは ダブルクォート
                   (") で囲むべきである。デフォルトは root に なっている。

       secure_path sudo から実行されるあらゆるコマンドが使用するパス。 sudo を
                   実行するユーザが、無難な環境変数 PATH を 使っているかどうか
                   確信が持てないなら、このオプションを使用するとよいだろう。
                   もう一つの使用法は、「root のパス」と「一般ユーザのパス」を
                   別のものに しておきたい場合だ。ユーザが exempt_group オプ
                   ションで指定した グループに属していると、そのユーザは
                   secure_path の影響を受けない。 このオプションは、デフォルト
                   ではセットされていない。

       syslog      syslog を使ってログを取っている場合の syslog のファシリティ
                   (syslog 経由で ログを取らない場合は、'!' を頭に付けて、この
                   オプションを否定する)。 デフォルトは local2 になっている。

       verifypw    このオプションは、sudo-v オプション付きで実行したとき、
                   ユーザがパスワードを要求されるのは、どんな場合かを決定す
                   る。次のような 値が可能である。

                   all     パスワードを入力しないですむためには、sudoers ファ
                           イルの使用中の ホストに対する当該ユーザのエントリの
                           すべてに NOPASSWD タグが設定されていなければならな
                           い。

                   always  ユーザは -v オプションを使用する際に必ずパスワード
                           を入力しなければ ならない。

                   any     パスワードを入力しないですむためには、sudoers ファ
                           イルの使用中の ホストに対する当該ユーザのエントリの
                           少なくとも一つに NOPASSWD タグが設定されていなけれ
                           ばならない。

                   never   ユーザは -v オプションを使用する際にパスワードを入
                           力する必要が まったくない。

                   値を指定しないと、値は all だと見なされる。'!' を頭に付け
                   て、 このオプションを否定すると、値に never が使われること
                   になる。 デフォルトは all である。

       真偽値としても使用できるリスト:

       env_check       変数の値に % や / が含まれる場合に、 ユーザの環境から取
                       り除かれる環境変数。 この機能は、出来のよくないプログラ
                       ムに見られる printf 形式のフォーマットの 脆弱性に対処す
                       るために利用できる。このオプションの引き数は、 ダブル
                       クォートで囲まれ、スペースで区切られたリストでもよく、
                       ダブルクォートなしの単一の値でもよい。リストは、=, +=,
                       -=, ! 演算子を 使って、それぞれ置き換えたり、追加した
                       り、削除したり、無効にしたり することができ
                       る。env_check で指定された変数は、 env_reset オプショの
                       有効・無効にかかわらず、上記のチェックに パスすれば、環
                       境に保存されることになる。チェックされる環境変数の デ
                       フォルトのリストは、root ユーザが sudo-V オプション
                       を 付けて実行したときに表示される。

       env_delete      env_reset オプションが無効になっているときに、ユーザの
                       環境から 取り除かれる環境変数。このオプションの引き数
                       は、ダブルクォートで囲まれ、 スペースで区切られたリスト
                       でもよく、ダブルクォートなしの単一の値でもよい。 リスト
                       は、=, +=, -=, ! 演算子を使って、それぞれ置き換えた
                       り、追加したり、 削除したり、無効にしたりすることができ
                       る。取り除かれる環境変数の デフォルトのリストは、root
                       ユーザが sudo-V オプションを 付けて実行したときに表
                       示される。留意すべきは、オペレーティングシステムには、
                       危険をもたらしかねない変数をいかなる setuid プロセス
                       (sudo も その一つ) の環境からも取り除くことにしているも
                       のが多いということである。

       env_keep        env_reset オプションが有効になっているときでも、ユーザ
                       の環境に そのまま保存される環境変数。このオプションに
                       よって、sudo から 生み出されるプロセスが受け取る環境
                       を、きめ細かく制御することが可能になる。 このオプション
                       の引き数は、ダブルクォートで囲まれ、スペースで区切られ
                       たリ ストでもよく、ダブルクォートなしの単一の値でもよ
                       い。リストは、 =, +=, -=, ! 演算子を使って、それぞれ置
                       き換えたり、 追加したり、削除したり、無効にしたりするこ
                       とができる。保存される変数の デフォルトのリストは、root
                       ユーザが sudo-V オプションを 付けて実行したときに表
                       示される。

       syslog(3) 経由でログを記録する場合、sudo は syslog のファ シリティ
       (facility: syslog パラメータの値) として次の値を受け付 ける。authpriv
       (ただし、OS がサポートしているならばだが)、 auth, daemon, user, local0,
       local1, local2, local3, local4, local5, local6, local7。syslog の優先順
       位 (priority) については、 次のものに対応している。alert, crit, debug,
       emerg, err, info, notice, warning。

ファイル
       /etc/sudoers            誰が何を実行できるかのリスト

       /etc/group              ローカルのグループファイル

       /etc/netgroup           ネットワークグループのリスト

用例
       以下は sudoers エントリの見本である。正直なところ、いささか 凝りすぎの
       部分もある。まず最初にエイリアスを定義する。

        # User alias の指定
        User_Alias     FULLTIMERS = millert, mikef, dowdy
        User_Alias     PARTTIMERS = bostley, jwfox, crawl
        User_Alias     WEBMASTERS = will, wendy, wim

        # Runas alias の指定
        Runas_Alias    OP = root, operator
        Runas_Alias    DB = oracle, sybase
        Runas_Alias    ADMINGRP = adm, oper

        # Host alias の指定
        Host_Alias     SPARC = bigtime, eclipse, moet, anchor :\
                       SGI = grolsch, dandelion, black :\
                       ALPHA = widget, thalamus, foobar :\
                       HPPA = boa, nag, python
        Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
        Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
        Host_Alias     SERVERS = master, mail, www, ns
        Host_Alias     CDROM = orion, perseus, hercules

        # Cmnd alias の指定
        Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
                               /usr/sbin/restore, /usr/sbin/rrestore
        Cmnd_Alias     KILL = /usr/bin/kill
        Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
        Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
        Cmnd_Alias     HALT = /usr/sbin/halt
        Cmnd_Alias     REBOOT = /usr/sbin/reboot
        Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
                                /usr/local/bin/tcsh, /usr/bin/rsh, \
                                /usr/local/bin/zsh
        Cmnd_Alias     SU = /usr/bin/su
        Cmnd_Alias     PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

       以下では、コンパイル時に埋め込まれたデフォルト値のいくつかを変更してい
       る。 sudo には syslog(3) 経由でログを記録し、ファシリティには すべての
       場合に auth を使用させたい。フルタイムのスタッフには sudo の訓戒を出さ
       ないようにしたい。ユーザ millert は パスワードを入力しないでよい。コマ
       ンドを root として実行するときは、 環境変数 LOGNAME, USER, USERNAME を
       変更したくない。さらに、 SERVERS という Host_Alias に属する マシンで
       は、ローカルなログファイルを副本として作り、ログの記入事項は 数年に渡っ
       て保存されるので、ログの各行に間違いなく年度が入るようにする。 最後に
       PAGERS という Cmnd_Alias に属する コマンド (/usr/bin/more, /usr/bin/pg,
       /usr/bin/less) については、シェル・エスケープを無効にする。

        # built-in defaults の変更
        Defaults               syslog=auth
        Defaults>root          !set_logname
        Defaults:FULLTIMERS    !lecture
        Defaults:millert       !authenticate
        Defaults@SERVERS       log_year, logfile=/var/log/sudo.log
        Defaults!PAGERS        noexec

       ユーザ設定が、誰が何を実行できるかを実際に決めている部分だ。

        root           ALL = (ALL) ALL
        %wheel         ALL = (ALL) ALL

       rootwheel グループのすべてのユーザには、どのホストでも 任意のユーザ
       としていかなるコマンドでも実行することを認める。

        FULLTIMERS     ALL = NOPASSWD: ALL

       フルタイムのシステム管理者 (millert, mikef, dowdy) は、どのホストでも任
       意のコマンドを認証なしで実行できる。

        PARTTIMERS     ALL = ALL

       パートタイムのシステム管理者 ((bostley, jwfox, crawl) は、どのホストで
       も任意のコマンドを実行できるが、 その際に認証をしなければならない (この
       エントリには NOPASSWD タグが指定されていないので)。

        jack           CSNETS = ALL

       ユーザ jack は、CSNETS というエイリアスに属するマシンで 任意のコマンド
       を実行できる (すなわち、ネットワークが 128.138.243.0, 128.138.204.0,
       128.138.242.0 のマシンだ)。この内、 128.138.204.0 にのみ class C のネッ
       トワークであることを示す 明示的な (CIDR 表記の) netmask がある。CSNETS
       の ほかのネットワークについては、ローカルマシンの netmask がマッチング
       の際に 使われることになる。

        lisa           CUNETS = ALL

       ユーザ lisa はエイリアスが CUNETS のいかなるホストでも 任意のコマンドを
       実行することができる (すなわち、 128.138.0.0 という class B ネットワー
       クのマシンだ)。

        operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\
                       sudoedit /etc/printcap, /usr/oper/bin/

       ユーザ operator は、用途が簡単な保守管理に限定されたコマンドを 実行でき
       る。この場合それは、バックアップしたり、プロセスを kill したり、 印刷シ
       ステムを操作したり、システムをシャットダウンしたりするのに 関係するコマ
       ンドと、/usr/oper/bin/ ディレクトリにある任意のコマンド である。

        joe            ALL = /usr/bin/su operator

       ユーザ joesu(1) を使って operator になることしか できない。

        %opers         ALL = (: ADMINGRP) /usr/sbin/

       opers グループのユーザは、/usr/sbin/ にあるコマンドを 自分自身の資格
       で、 Runas_Alias ADMINGRP に属する 任意のグループ (すなわち、admoper グループ) として 実行できる。(訳注: 実のところ、sudo-1.7.2p1 で
       は、 /etc/sudoers で変身可能グループに Runas_Alias を まだ指定できない
       ようだ。今のところ、この例で言うなら、ADMINGRP ではなく、admoper を
       直接指定しなければならない。)

        pete           HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

       ユーザ peteHPPA に属するマシンで root 以外なら 誰のパスワードでも変
       更することを許されている。上記の指定は、 passwd(1) がコマンドラインで複
       数のユーザ名を受け付けないことを 前提としている点に注意してほしい。

        bob            SPARC = (OP) ALL : SGI = (OP) ALL

       ユーザ bobSPARCSGI に属する マシンで Runas_Alias OP に登録され
       ている 任意のユーザとして (rootoperator である) どんなコマンドでも
       実行できる。

        jim            +biglab = ALL

       ユーザ jimbiglab ネットグループに属するマシンで どんなコマンドでも
       実行できる。sudo は、"biglab" に '+' の 接頭辞が付いているので、それを
       ネットグループだと認識する。

        +secretaries   ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser

       secretaries ネットグループのユーザは、ユーザの追加や削除は もちろん、プ
       リンタの管理にも協力する必要がある。そこで、すべてのマシンで その種のコ
       マンドの実行を認められている。

        fred           ALL = (DB) NOPASSWD: ALL

       ユーザ fred は Runas_Alias DB の 任意のユーザとして (oraclesybase
       だ) パスワードを 入力しないでもコマンドを実行することができる。

        john           ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*

       ユーザ johnALPHA に属するマシンで su(1) を 使って root 以外の誰にで
       もなることができるが、su にオプションを 指定することは許されていない。

        jen            ALL, !SERVERS = ALL

       ユーザ jen は Host_Alias SERVERS に 属するマシン (master, mail, www,
       ns) を除くいかなるマシンでも 任意のコマンドを実行できる。

        jill           SERVERS = /usr/bin/, !SU, !SHELLS

       jill は Host_Alias SERVERS の いかなるマシンでも /usr/bin/ ディレクトリ
       にある任意のコマンドを 実行できるが、SUSHELLS という Cmnd_Aliases
       に属するコマンドは実行できない。

        steve          CSNETS = (operator) /usr/local/op_commands/

       ユーザ steve はディレクトリ /usr/local/op_commands/ にある 任意のコマン
       ドを実行できるが、operator というユーザとして実行できるだけだ。

        matt           valkyrie = KILL

       matt も自分用のワークステーション valkyrie で ハングしたプロセスの kill
       ぐらいはできる必要がある。

        WEBMASTERS     www = (www) ALL, (root) /usr/bin/su www

       ホスト www で User_Alias WEBMASTERS に 属するいかなるユーザも (will,
       wendy, wim だ)、ユーザ www (web ページの 所有者) として任意のコマンドを
       実行することができる。 単に su(1) で www になってもよい。

        ALL            CDROM = NOPASSWD: /sbin/umount /CDROM,\
                       /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM

       いかなるユーザも Host_Alias が CDROM の マシンで (orion, perseus,
       hercules)、パスワードを入力することなく CD-ROM をマウント、アンマウント
       できる。上記のコマンドを打ち込むのは ユーザにとっていささか面倒なの
       で、シェルスクリプトとして カプセル化してしまうのがよいだろう。

       [訳注]: 当然と言えば当然だが、sudo は自ホストの /etc/sudoers しか読まな
               い。 そこで、こういうことになる。AAA というホストに aaa という
               ユーザが いるとしよう。ホスト AAA の /etc/sudoers に「ホスト
               BBB でユーザ aaa は sudo を介して /bin/ls を実行できる」という
               記述があったとしても、 ユーザ aaa がホスト AAA から telnet や
               ssh を使ったとき、ホスト BBB 上で sudo 経由で ls を実行できるわ
               けではない。それができるためには、 ホスト BBB の /etc/sudoers
               に「BBB でユーザ aaa は sudo を介して /bin/ls を 実行できる」と
               いう記述がなければならないのだ。ホスト BBB で実行する sudo は
               BBB の sudo であり、BBB の sudo は BBB の /etc/sudoers しか 読
               まないのだから。

               それでは、何故、上記の「用例」で自ホスト以外の設定が行われて い
               るのか? そもそも、sudoers の書式で自ホスト以外のホストを 指定
               できるのは、何故なのか? それは、管理しているサイトの すべての
               ホストの設定を記した sudoers ファイルを一つ作って、それを すべ
               てのホストにコピーして使う、そういった使い方を想定しているから
               だ。 もし、サイト中のすべてのホストの設定を一ヶ所にまとめて置
               き、 それをすべてのホストに共有させたいのなら (すなわち、sudo
               の設定の 集中管理がしたいのなら)、LDAP の採用を考えるべきであ
               る。

セキュリティに関する注意点
       一般的に言って、演算子 '!' を使用して ALL から コマンドの「引き算」をす
       ることは、あまり効果がない。ユーザは実行したい コマンドを名前を変えてコ
       ピーし、それからそれを実行するするといった ちょっとした手段で、裏をかく
       ことができるからだ。たとえば、

           bill        ALL = ALL, !SU, !SHELLS

       という行は、SUSHELLS に列記されている コマンドの bill による実行を
       本当に阻止することにはならない。 なぜなら、bill としては、そうしたコマ
       ンドを単に名前を変えて コピーすればよいし、エディタやほかのプログラムか
       らシェル・エスケープを 利用することもできるからだ。だから、この種の制限
       はやった方がまし程度に 考えておくべきだ (そして、しっかりした運用方針に
       よって制限の実効力を 上げるべきである)。

シェル・エスケープを防止する
       sudo があるプログラムを実行してしまうと、そのプログラムは、 ほかのプロ
       グラムの実行も含めて、何でも自由に好きなことができる。 このことがセキュ
       リティ上の問題になりかねないのは、プログラムが シェル・エスケープを許し
       ているのは珍しいことではなく、そのために ユーザが sudo のアクセス制御や
       ロギングをすり抜けることが 可能になるからだ。よく使うプログラムでシェ
       ル・エスケープを 許しているものには、次のようなものがある。 (当然なが
       ら) シェル、エディタ、ページャ、メーラ、ターミナル。

       この問題に対処するには、基本的に二つの方法がある。

       制限      ユーザに任意のコマンドの実行を許すようなコマンドに対し
                 て、ユーザが アクセスできないようにする。エディタの場合は、制
                 限モードと称して、 シェル・エスケープが使えないモードを持って
                 いるものも多い。 もっとも、sudo 経由でエディタを使うのなら、
                 sudoedit を使用する方がよりすぐれた対策である。 シェル・エス
                 ケープを提供するプログラムはたくさんあるので、 それを提供しな
                 いプログラムのみを使用するようにユーザを制限するのは、 たいて
                 い実現不可能である。

       noexec    共有ライブラリをサポートしている多くのシステムには、環境変数
                 (たいていは LD_PRELOAD) で別の共有ライブラリを指定することに
                 よって、 デフォルトのライブラリ関数を置き換える能力がある。
                 そういったシステムでは、sudonoexec 機能を使えば、 sudo か
                 ら実行されるプログラムが、何かほかのプログラムを実行するのを
                 防ぐことができる。とは言え、これが当てはまるのは、動的にリン
                 クされた ネイティブなプログラムだけだということに気を付けてほ
                 しい。 静的にリンクされたプログラムや、バイナリ・エミュレー
                 ションのもとで 動くほかの OS のプログラムには効果がない。

                 sudonoexec に対応しているかどうかを知りたかったら、 root
                 ユーザになって次のように実行してみればよい。

                     sudo -V | grep "dummy exec"

                 その出力にこんなふうに始まる行があれば、

                     File containing dummy exec functions:

                 そのときは、たぶん sudo が標準ライブラリにある exec ファミ
                 リーの関数を、 単にエラーを返すだけの自分自身の関数で置き換え
                 られるということだ。 残念ながら、noexec が有効かどうか、コン
                 パイル時に確かめる 絶対確実な方法はない。noexec は SunOS,
                 Solaris, *BSD, Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x
                 で使えるはずだ。 AIX と UnixWare では使えないことがわかってい
                 る。環境変数 LD_PRELOAD をサポートしているたいていの OS な
                 ら、 noexec が使えると思う。使用しているオペレーティングシス
                 テムの マニュアルページを調べて、ダイナミック・リンカについて
                 (通例 ld.so, ld.so.1, dyld, dld.sl, rld, loader といった名前
                 になっている) LD_PRELOAD がサポートされているかどうか確認して
                 ほしい。

                 あるコマンドに対して noexec を有効にするには、 上記「ユーザの
                 設定」セクションで述べたように、NOEXEC タグを 使用する。その
                 ときの例を再掲しよう。

                  aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi

                 この例では、ユーザ aaron 対して、noexec を有効にした上で、
                 /usr/bin/more/usr/bin/vi の実行を許可している。 このよう
                 にすれば、この二つのコマンドから (シェルのような) ほかのコマ
                 ンドを 実行することができなくなるわけだ。使用しているシステム
                 が noexec に 対応する能力があるかどうか、よくわからない場合
                 は、取りあえず noexec を試して、効果があるかどうか確かめてみ
                 ればよい。それなら いつだってできるはずだ。

       注意してほしいが、シェル・エスケープの禁止は万能薬ではない。ルートの権
       限で 動いているプログラムには、ほかにも、危険性のあるさまざまな作業
       (ファイルの 中身を入れ替えるとか、上書きするとか) が可能であり、思いが
       けずに 権限を拡大してしまうこともありえるのだ。特にエディタについて言う
       と、 ユーザには sudoedit を実行する許可を与えるのが、より安全な方法であ
       る。

関連項目
       rsh(1), su(1), fnmatch(3), glob(3), sudo(8), visudo(8)

警告
       sudoers ファイルの編集には、必ず visudo コマンドを 使うべきだ。そうすれ
       ば、visudo がファイルをロックし、文法のチェッ クをやってくれる。sudoers
       ファイルに文法的な間違いがあると、 sudo が動かないので、sudoers ファイ
       ルには文法エラーが絶 対にあってはならないのだ。

       ネットグループを (ユーザについてではなく) マシンについて使用し、
       netgroup ファイルに完全修飾ホスト名を記載する場合は (たいてい そうする
       ものだが)、そのマシンのホスト名を hostname コマンドが出力する通りの完全
       修飾名で書くか、さもなければ sudoers ファイルで fqdn オプションを使うか
       しなければなら ない。

バグ
       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