Scroll to navigation

VISUDO(8) MAINTENANCE COMMANDS VISUDO(8)

名前

visudo - sudoers ファイルを編集する

書式

visudo [-c] [-q] [-s] [-V] [-f sudoers]

説明

visudovipw(8) によく似た安全なやり方で sudoers ファイルを編集する。 visudosudoers ファイルをロックして、重複した編集が同時に行われないようにするとともに、 整合性をざっと調べ、文法エラーのチェックを行う。 sudoers ファイル が現在編集中だった場合は、「try again later」というメッセージを端末に 表示する。

visudo が使用するエディタについては、コンパイル時に設定された エディタのリストがプログラムに埋め込まれているが、sudoers ファイルの Defaults 行で editor オプションを使えば、 それを変更することができる。このリストはデフォルトでは、 使用しているシステムにおける vi(1) のパスであり、 configure スクリプトによって割り出されたものだ。 通常 visudo は、環境変数 VISUALEDITOR の値が上述のエディタ・リストに含まれる エディタでないかぎり、そうした環境変数を使用しない。とは言え、visudo--with-env-editor オプションを付けて configure されている場合や、 sudoeres ファイルの Defaults 行で env_editor オプションがセットされている場合は、visudoVISUALEDITOR によって指定された どんなエディタでも使用することになる。これがセキュリティホールに なりかねないことに注意してほしい。単に VISUALEDITOR を設定するだけで、ユーザが任意のプログラムを 実行できるようになってしまうからだ。

visudo は編集が終わると、sudoers ファイルの文法解析を行い、 文法エラーがあれば、変更を保存しない。visudo はエラーを発見すると、 エラーが起きた行番号を知らせるメッセージを表示し、"What now?" と いうプロンプトを出す。このとき、"e" を押せば、 sudoers ファイルを再編集できる。"x" を押せば、 変更を保存せず終了だし、"Q" を押せば、変更を保存して終了だ。 "Q" の選択は、くれぐれも慎重にやってほしい。なぜなら、 visudo が文法エラーがあると考えるのなら、sudo も 同様に考えるはずであり、エラーが訂正されるまで、もう誰にも sudo が 使えなくなってしまうからだ。文法エラーが発見されたとき、"e" を 押して sudoers ファイルを編集しようとすると、カーソルがファイルの エラーが起きた行に飛ぶ (エディタにその機能があればだが)。

オプション

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

check-only モードを有効にする。現在の sudoers ファイルの 文法をチェックし、メッセージを標準出力に表示して、 sudoers の状態を詳細に報告する。文法チェックが成功裡に終わった場合、 visudo は返り値 0 で終了する。文法エラーに出会った場合の 返り値は 1 である。
sudoers ファイルの位置を指定・変更する。このオプションを 付けると、 visudo はデフォルトの /etc/sudoers ではなく、 ユーザが選んだ sudoers ファイルを編集 (あるいは、チェック) する ことになる。ロックファイルとしては、指定された sudoers ファイルの 名前の末尾に ".tmp" を付けたものが使われる。
quiet モードを有効にする。このモードでは、文法エラーの詳細情報は 表示されない。このオプションに意味があるのは、-c オプションと 組み合わせたときだけである。
sudoers ファイルの厳密 (strict) チェックを有効にする。 エイリアスを定義する前に使用すると、visudo がそれを文法エラーと 見なすようになるわけだ。ホスト名やユーザ名がアルファベットの大文字、 数字、アンダースコア ('_') だけから構成されている場合、そうしたものと エイリアスとの区別は付かないことに注意してほしい。
オプションに -V (version) を付けると、visudo は バージョンナンバーを表示して、終了する。

環境変数

以下の環境変数が参照されるかどうかは、sudoerseditorenv_editor オプションの値次第である。

visudo が起動するエディタ
VISUAL が設定されていないとき visudo が使用するエディタ

ファイル

/etc/sudoers
誰が何を実行できるかのリスト
/etc/sudoers.tmp
visudo が使うロックファイル

メッセージによる診断

現在、ほかの誰かが sudoers ファイルを編集中だ。
/etc/sudoers.tmp: Permission denied
visudo を root として実行しなかった。
あなたのユーザ ID はシステムの passwd ファイルに載っていない。
User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias のどれかを、 定義しないまま使用しようとしている。 あるいは、記載したユーザ名かホスト名の中に、アルファベットの大文字、 数字、アンダースコア ('_') のみからなるものがある。後者の場合は、 この warning を無視して構わない (sudo は警告を出さないないだろう)。 -s (strict) モードでは、warning ではなく、error になる。
指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は 定義されているが、一度も使用されていない。そうした使用しないエイリアスは、 コメントアウトするなり、消去するなりしてもよいだろう。 -s (strict) モードでは、warning ではなく、error になる。

関連項目

vi(1), sudoers(5), sudo(8), vipw(8)

作者

sudo の製作には、多数の人々が長年に渡って取り組んできた。 visudo の当バージョンを書いたのは、

 Todd Miller

である。詳細については、配布物中の HISTORY ファイルか、 http://www.sudo.ws/sudo/history.html を御覧になっていただきたい。

警告

visudo が使用するエディタでシェル・エスケープが可能なかぎり、 ユーザがルート・シェルを獲得するのを防止する簡単な方法はない。

バグ

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

サポート

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

免責

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

June 11, 2009 1.7.2p1