vagrant up
時に毎回パスワードを尋ねられるのが煩わしかったのでsudoersを設定したのですが初歩的なことに嵌っていたのでその備忘録。
まとめ
-
/etc/sudoers
に追記するときはこれよりも後ろに記述すること!%admin ALL = (ALL) ALL
- もしくは
/etc/sudoers.d/
の下に個別にファイルを作る!
以下、失敗談込みの設定の流れ
0. 環境
- macOS Sierra 10.12.1
- Vagrant 1.8.6
1. sudoersに追記する
Macだとsudoersにこれを追加します。
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
編集にはsudo visudo
を使います。
sudoersを眺めていると"Cmnd alias specification"の項目があるので「ここに書けば良さそう」とここに上の4行を貼り付けました。
保存して意気揚々とvagrant up
!
パスワードを尋ねられました……orz
OSの違いなのかと数日悪戦苦闘しながらsudoersを眺めていると"Cmnd alias specification"の下に"%admin ALL = (ALL) ALL"を見つけました。
ひょっとして……と思いつつ設定を"%admin ALL = (ALL) ALL"の下に移動させるとvagrant upがすんなり起動しました。
"%admin ALL=(root) NOPASSWD: 〜"が打ち消されていたんですね……
2. sudoers.dにファイルを作る
sudoersファイルだとまた同じミスを行っていまいそう かつ 他にも設定を入れると長くなってしまうので/private/etc/sudoers.d/
にファイルを作ることにしました。
このディレクトリはsudoersの末尾で読み込まれます。
#includedir /private/etc/sudoers.d
←この部分です。
※先頭の#を消す必要はありません(コメントではありません)
$ cat /private/etc/sudoers.d/vagrant-nfs
# NFS - Synced Folders - Vagrant by HashiCorp
# https://www.vagrantup.com/docs/synced-folders/nfs.html
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
まとめ
-
/etc/sudoers
に追記するときはこれよりも後ろに記述すること!%admin ALL = (ALL) ALL
- もしくは
/etc/sudoers.d/
の下に個別にファイルを作る!
他の設定ファイルでもそうですが、記述順序には気をつけましょう……