Provided by:
manpages-ja_0.5.0.0.20100315-1_all 
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/Key や OPIE のような 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
オプションを指定すると、sudo が fnmatch(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_keep や env_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
root と wheel グループのすべてのユーザには、どのホストでも
任意のユーザとしていかなるコマンドでも実行することを認める。
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
ユーザ joe は su(1) を使って operator になることしか でい覆ぁ
%opers ALL = (: ADMINGRP) /usr/sbin/
opers グループのユーザは、/usr/sbin/ にあるコマンドを
自分自身の資格で、 Runas_Alias ADMINGRP に属する 任意のグループ
(すなわち、adm か oper グループ) として 実行でい襦(訳注:
実のところ、sudo-1.7.2p1 では、 /etc/sudoers で変身可能グループに
Runas_Alias を まだ指定で-
ないようだ。今のところ、この例で言うなら、ADMINGRP ではなく、adm や
oper を直接指定しなければならない。)
pete HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
ユーザ pete は HPPA に属するマシンで root 以外なら
誰のパスワードでも変更することを許されている。上気了慊蠅蓮 passwd(1)
がコマンドラインで複数のユーザ名を受け付けないことを
前提としている点に注意してほしい。
bob SPARC = (OP) ALL : SGI = (OP) ALL
ユーザ bob は SPARC や SGI に属する マシンで Runas_Alias OP
に登録されている 任意のユーザとして (root と operator である)
どんなコマンドでも 実行でい襦
jim +biglab = ALL
ユーザ jim は biglab ネットグループに属するマシンで
どんなコマンドでも実行でい襦sudo は、"biglab" に '+' の 接頭-
が付いているので、それをネットグループだと認識する。
+secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
secretaries ネットグループのユーザは、ユーザの追加や削除は
もちろん、プリンタの管理にも協力する必要がある。そこで、すべてのマシンで
その種のコマンドの実行を認められている。
fred ALL = (DB) NOPASSWD: ALL
ユーザ fred は Runas_Alias DB の 任意のユーザとして (oracle か sybase
だ) パスワードを 入力しないでもコマンドを実行することがでい襦
john ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
ユーザ john は ALPHA に属するマシンで 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/
ディレクトリにある任意のコマンドを 実行でい襪、SU や SHELLS という
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
という行は、SU や SHELLS に列気気譴討い コマンドの bill
による実行を本当に阻止することにはならない。 なぜなら、bill
としては、そうしたコマンドを単に名前を変えて
コピーすればよいし、エディタやほかのプログラムからシェル・エスケープを
利用することもでい襪らだ。だから、この種の制限はやった方がまし程度に
考えておくべい (そして、しっかりした運用方針によって制限の実効力を
上げるべい任△)。
る
sudo があるプログラムを実行してしまうと、そのプログラムは、
ほかのプログラムの実行も含めて、何でも自由に好い覆海箸でい襦
このことがセゥ絅螢謄上の問題になりかねないのは、プログラムが
シェル・エスケープを許しているのは珍しいことではなく、そのために
ユーザが sudo のアクセス制御やロギングをすり抜けることが
可能になるからだ。よく使うプログラムでシェル・エスケープを
許しているものには、次のようなものがある。 (当然ながら)
シェル、エディタ、ページャ、メーラ、ターミナル。
この問題に対処するには、基本的に二つの方法がある。
制限 ユーザに任意のコマンドの実行を許すようなコマンドに対して、ユーザが
アクセスで-
ないようにする。エディタの場合は、制限モードと称して、
シェル・エスケープが使えないモードを持っているものも多い。
もっとも、sudo 経由でエディタを使うのなら、 sudoedit
を使用する方がよりすぐれた対策である。
シェル・エスケープを提供するプログラムはたくさんあるので、
それを提供しないプログラムのみを使用するようにユーザを制限するのは、
たいてい実現不可能である。
noexec 共優薀ぅ屮薀蠅鬟汽檗璽箸靴討い訛燭のシステムには、環曲竸
(たいていは LD_PRELOAD) で別の共-
ライブラリを指定することによって、
デフォルトのライブラリ関数を置ご垢┐詛塾呂ある。
そういったシステムでは、sudo の noexec 機能を使えば、 sudo
から実行されるプログラムが、何かほかのプログラムを実行するのを
防ぐことがで-
る。とは言え、これが当てはまるのは、動的にリンクされた
ネイティブなプログラムだけだということに気を付けてほしい。
静的にリンクされたプログラムや、バイナリ・エミュレーションのもとで
動くほかの OS のプログラムには効果がない。
sudo が noexec に対応しているかどうかを知りたかったら、 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