19
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

visudoコマンドでsudoersファイルを編集する

Last updated at Posted at 2018-07-11

visudoとは

visudoはsudoersファイルを安全に編集するコマンドです。
visudoは複数の同時編集に対してsudoersファイルをロックし、基本的な健全性チェックを提供し、解析エラーをチェックします。

sudoersとは

どのユーザーが何を実行できるかを記述した設定ファイルのことです。
/etc/sudoers に設定ファイルがあります。

ファイルのロック

$ ll /etc/ | grep sudoers
-r--r-----   1 root  wheel           2299  7 11 12:13 sudoers
$ sudo visudo

(編集中にもう一つの画面から下記を実行)

$ ll /etc/ | grep sudoers
-r--r-----   1 root  wheel           2299  7 11 12:13 sudoers
-rw-------   1 root  wheel           2299  7 11 12:13 sudoers.tmp
$ sudo visudo
visudo: /etc/sudoers busy, try again later

visudoを実行している間はロックファイルとして/etc/sudoers.tmpが作成されています。
この状態でもう一度visudoを実行するとエラーが出て編集ができない状態になっていたので、これでファイルがロックされていることがわかります。

解析エラーのチェック

manコマンドの日本語訳です。

visudoは編集後にsudoersファイルを解析し、構文エラーがあれば変更を保存しません。 エラーが見つかると、visudoはエラーが発生した行番号を示すメッセージを表示し、ユーザーは `` What now? ''プロンプトを受け取ります。 この時点で、ユーザはsudoersファイルを再編集するために e 'を、変更を保存せずに終了するために x'を、あるいは変更を終了して保存する `Q 'を入力することができます。 visudoが解析エラーがあると考えている場合は、sudoも同様にエラーが修正されるまで誰も再びsudoできないため、 `Q 'オプションは非常に注意して使用する必要があります。

実際にvisudo で適当にaを追記したところ下記の表示になりました。

$ sudo visudo
>>> /etc/sudoers: syntax error near line 31 <<<
What now?
Options are:
  (e)dit sudoers file again
  e(x)it without saving changes to sudoers file
  (Q)uit and save changes to sudoers file (DANGER!)

sudoが使えなくなっても大丈夫な環境なので、Qで保存をしてみるとsudoが使えなくなりました。

$ sudo visudo
>>> /etc/sudoers: syntax error near line 31 <<<
What now?
Options are:
  (e)dit sudoers file again
  e(x)it without saving changes to sudoers file
  (Q)uit and save changes to sudoers file (DANGER!)

What now? Q
$ sudo visudo
>>> /etc/sudoers: syntax error near line 31 <<<
sudo: parse error in /etc/sudoers near line 31
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
$ sudo ll
>>> /etc/sudoers: syntax error near line 31 <<<
sudo: parse error in /etc/sudoers near line 31
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

なるほど、sudoersの編集を行う場合にミスるとsudoが使えなくなるので、visudo以外でsudoersを修正するのは危ないということですね。
今回は検証のためにエラーがある状態でQを選択しましたが、使う場合には気をつけてください。

19
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?