LoginSignup
6
4

More than 5 years have passed since last update.

visudoの魔のオプションxとは

Last updated at Posted at 2017-10-03

本当にあった怖い話です。

前提

ubuntu14, 16で動作検証しております。

visudoについて

visudoは/etc/sudoersを安全に編集する為のツールです。この/etc/sudoersはsudo周りの重要な設定が書かれたファイルです。編集を失敗すると最悪sudoする事ができなくなる場合があります。
なのでvimなどでは絶対に編集してはなりませぬ。

/etc/sudoers のパーミッション

vagrant@vagrant-ubuntu-trusty-64:/$ ll /etc/sudoers
-r--r----- 1 root root 755 Oct 14  2016 /etc/sudoers

とwrite権限がそもそも与えられてないので編集するためにchmod +wとするのもいけませぬ。
法をくぐり抜けるような悪い考えはやめましょう。

visudoを使えば、シンタックスエラー等がある場合は編集時に教えてくれます。

root@vagrant-ubuntu-trusty-64:/# visudo
>>> /etc/sudoers: syntax error near line 20 <<<
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?

ここで無理やり上書き保存やるような事は無いでしょう。

これで安全に扱える。と、思いきや。。

visudoでも事故るケース

visudoは-fオプションで編集対象ファイルを指定できます。もう一つファイルを指定するオプションが-xです。
ここで間違って以下のようなことをすると死にます。

sudo visudo -x <編集対象のsudoersファイル>

この後は、編集対象のsudoersファイルにjsonが吐き出されて、sudoersが壊れます。
ちなみに、この -xオプションは何かというと、

vagrant@vagrant-ubuntu-trusty-64:/$ sudo visudo -h
visudo - safely edit the sudoers file

usage: visudo [-chqsV] [-f sudoers] [-x file]

Options:
  -c, --check       check-only mode
  -f, --file=file   specify sudoers file location
  -h, --help        display help message and exit
  -q, --quiet       less verbose (quiet) syntax error messages
  -s, --strict      strict syntax checking
  -V, --version     display version information and exit
  -x, --export=file export sudoers in JSON format

jsonフォーマットでsudoersをエクスポートする。というものです。
つまり編集対象のsudoersファイルを有無を言わさず上書きします。
この時、パーミッションがrootのreadのみだったとしてもです!

sudoersという超重要なファイルを安全に編集する為のvisudoが凶器に変わります。
ちなみに私はこれで、AzureのとあるVM上で二度とsudoできなくなりました。。。

ご注意を!

6
4
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
6
4