Provided by: manpages-ja_0.5.0.0.20210215+dfsg-1_all
名前
visudo - sudoers ファイルを編集する
書式
visudo [-chqsV] [-f sudoers] [-x output_file]
説明
visudo は vipw(8) によく似た安全なやり方で sudoers ファイルを編集する。 visudo は sudoers ファイルをロックして、 重複した編集が同時に行われないようにするとともに、 整合性をざっと調 べ、文法エラーのチェックを行う。 sudoers ファイルが現在編集中だった場合は、 「try again later」というメッセージを端末に表示する。 visudo が使用するエディタについては、 コンパイル時に設定された一つ以上のエディタからなるリ ストがプログラムに埋め込まれているが、 sudoers ファイルの Defaults 行で editor オプション を使えば、 それを変更することができる。このリストは、デフォルトでは vi になっている。 通常 visudo は、環境変数 VISUAL や EDITOR の値が上述のエディタ・リストに含まれるエディタでない かぎり、 そうした環境変数を使用しない。とは言え、 visudo が --with-env-editor オプションを 付けて configure されている場合や、 sudoeres ファイルの Defaults 行で env_editor オプショ ンがセットされている場合は、 visudo は VISUAL や EDITOR によって指定されたどんなエディタで も使用することになる。 これがセキュリティホールになりかねないことに注意していただきたい。 単に VISUAL や EDITOR を設定するだけで、 ユーザが任意のプログラムを実行できるようになって しまうからだ。 visudo は編集が終わると、sudoers ファイルの文法解析を行い、 文法エラーがあれば、変更を保存 しない。visudo はエラーを発見すると、 エラーが起きた行番号を知らせるメッセージを表示し、 "What now?" というプロンプトを出す。このとき、'e' を押せば、 sudoers ファイルを再編集でき る。'x' を押せば、 変更を保存せずに終了し、'Q' を押せば、変更を保存して終了する。 'Q' の選 択は、くれぐれも慎重になさっていただきたい。なぜなら、 visudo が文法エラーがあると考えるの なら、sudo も同様に考えるはずであり、 エラーが訂正されるまで、もう誰にも sudo を実行できな くなってしまうからだ。 文法エラーが発見されたとき、'e' を押して sudoers ファイルを編集しよ うとすると、カーソルがファイルのエラーが起きた行に飛ぶ (エディタにその機能があればだが)。 オプションとして以下のものが使用できる。 -c, --check check-only モードを有効にする。 現在の sudoers ファイルの文法エラー、所有 者、アクセス権をチェックする。 -q オプションが指定されていない場合は、メッセー ジを標準出力に表示して、 sudoers の状態を報告する。チェックが成功裡に終わった 場合、 visudo は返り値 0 で終了する。エラーに出会った場合の返り値は 1 である。 -f sudoers, --file=sudoers デフォルト以外の sudoers ファイルの位置を指定する。 このオプションを付ける と、visudo はデフォルトの /etc/sudoers ではなく、 ユーザが選んだ sudoers ファ イルを編集 (あるいは、チェック) することになる。 ロックファイルとしては、指定 された sudoers ファイルの名前の末尾に ".tmp" を付けたものが使われる。な お、check-only モードの場合だけは、 -f の引数に '-' を指定することができる。 これは、標準入力から sudoers を読み込むということである。 -h, --help 標準出力に簡単なヘルプメッセージを表示して終了する。 -q, --quiet quiet モードを有効にする。このモードでは、文法エラーの詳細は表示されない。 こ のオプションが役に立つのは、-c オプションと組み合わせたときだけである。 -s, --strict sudoers ファイルの厳密 (strict) チェックを有効にする。 エイリアスを定義する前 に使用すると、 visudo がそれを文法エラーと見なすようになる。 ホスト名やユーザ 名がアルファベットの大文字、数字、アンダースコア ('_') だけから構成されている 場合には、 そうしたものとエイリアスとの区別が付かないことに注意していただきた い。 -V, --version visudo のバージョンと sudoers の文法バージョンを表示して終了する。 -x output_file, --export=output_file sudoers を JSON フォーマットに変換 (export) して、 output_file に書き出 す。output_file が '-' の場合は、 変換された sudoers ポリシーが標準出力に書き 出されることになる。 デフォルトでは、/etc/sudoers (及び、それにインクルードさ れているすべてのファイル) が変換の対象になる。 -f を使用すれば、それ以外の sudoers ファイルを変換対象として指定することができる。 フォーマットを変換する のは、サードパーティのアプリケーションにとって、 従来の sudoers のフォーマット よりも解析しやすくするためである。 様々な値は明示的なタイプを持ち、そうするこ とで従来の sudoers フォーマットの持つ曖昧さの多くを排除している。 デバッグと sudoers プラグインへの引き数について バージョン 1.8.4 以上の visudo は、 柔軟なデバッグ用の枠組みをサポートしてお り、sudo.conf(5) ファイルの Debug 行で設定するようになっている。 sudo 1.8.12 以降の visudo は、 (訳注: /etc/sudo.conf で指定された) sudoers プラグインに対 する引き数も理解する。 そうした引き数は、sudoers ファイルのパス名、UID、GID、 ファイルの モードを、デフォルトのものから変更しているのである。 そうした引き数が存在する場合は、プラ グインのパスの後ろに (すなわち、sudoers.so の後ろに) 列挙することになっている。 複数の引き 数があるときは、ホワイトスペースで区切って指定すればよい。 一例を挙げる。 Plugin sudoers_policy sudoers.so sudoers_mode=0400 以下の引き数が使用できる。 sudoers_file=pathname sudoers_file 引き数を使用すると、 sudoers ファイルのパスをデフォルトのものから変 更することができる。 sudoers_uid=uid sudoers_uid 引き数を使用すると、 sudoers ファイルの所有者をデフォルトのものから 変更することができる。 指定には、ユーザ ID 番号を使うべきである。 sudoers_gid=gid sudoers_gid 引き数を使用すると、 sudoers ファイルのグループをデフォルトのものか ら変更することができる。 指定には、グループ ID 番号を使用しなければならない (グ ループ名ではない)。 sudoers_mode=mode sudoers_mode 引き数を使用すると、 sudoers ファイルのファイル・モードをデフォルト のものから変更することができる。 指定には、8 進数の値を使うべきである。 sudo.conf(5) の設定についてさらに詳しいことをお知りになりたかったら、 sudo.conf(5) のマ ニュアルをご覧になっていただきたい。
環境変数
以下の環境変数が参照されるかどうかは、sudoers における editor や env_editor の値次第であ る。 VISUAL visudo が起動するエディタ EDITOR VISUAL が設定されていないとき visudo が使用するエディタ
ファイル
/etc/sudo.conf sudo のフロントエンドの設定 /etc/sudoers 誰が何を実行できるかのリスト /etc/sudoers.tmp visudo が使うロックファイル
エラー (警告) メッセージ
sudoers file busy, try again later. 現在、ほかの誰かが sudoers ファイルを編集中である。 /etc/sudoers.tmp: Permission denied visudo を root として実行しなかった。 Can't find you in the passwd database あなたのユーザ ID はシステムの passwd ファイルに存在しない。 Warning: {User,Runas,Host,Cmnd}_Alias referenced but not defined User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) を、定義しないまま使用し ようとしている。 あるいは、記載したユーザ名かホスト名の中に、アルファベットの大文 字、 数字、アンダースコア ('_') のみからなるものがある。後者の場合は、 この warning を無視して構わない (sudo は文句を言わないだろう)。 -s (strict) モードでは、 warning ではなく、error になる。 Warning: unused {User,Runas,Host,Cmnd}_Alias 指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、 定義され ているが、一度も使用されていない。そうした使用しないエイリアスは、 コメントアウトす るなり、消去するなりしてもよい。 Warning: cycle in {User,Runas,Host,Cmnd}_Alias 指摘された User_Alias (あるいは、Runas_Alias, Host_Alias, Cmnd_Alias) は、 直接自分 自身を参照しているか、 構成要素のエイリアスを通して自分自身を参照している。 sudo は sudoers ファイルを解析するとき、 循環を無視するので、デフォルトでは単なる警告になっ ている。 visudo: /etc/sudoers: input and output files must be different -x オプションを使用する際に引数として指定した output_file ファイルのパス名が、 変換 対象である sudoers ファイルのパス名と同じである。
関連項目
vi(1), sudo.conf(5), sudoers(5), sudo(8), vipw(8)
作者
多数の人々が長年に渡って sudo の開発に取り組んできた。 このバージョンは、主として次の者が 書いたコードからなっている。 Todd C. Miller sudo の開発に貢献してくださった方々の詳細なリストについては、 配布物中の CONTRIBUTORS ファ イルをご覧になっていただきたい (https://www.sudo.ws/contributors.html)。
警告
visudo が使用するエディタでシェル・エスケープが可能なかぎり、 ユーザがルート・シェルを獲得 するのを防止する簡単な方法はない。
バグ
visudo にバグを発見したと思ったら、https://bugzilla.sudo.ws/ にアクセスして、バグレポート を提出していただきたい。
サポート
ある程度の無料サポートが sudo-users メーリングリストを通して利用できる。 購読やアーカイブ の検索には、次の URL を御覧になるとよい。 https://www.sudo.ws/mailman/listinfo/sudo-users
免責
visudo は「現状のまま」提供される。 明示的な、あるいは黙示的ないかなる保証も、 商品性や特 定目的への適合性についての黙示的な保証を含め、 またそれのみに止まらず、これを否認する。詳 細な全文については、 sudo と一緒に配布されている LICENSE ファイルや、 次の Web ページをご 覧いただきたい。 https://www.sudo.ws/license.html