TL;DR

  • sudoでNOPASSWD設定しても有効にならない場合は、最終行に記述するとうまくいく。なぜ…

経緯

sudo時に毎回パスワードを入力するのが手間なため、visudoコマンドでNOPASSWDを設定してもなぜか反映されない。 ユーザー名がt-tack41のようにハイフンが含まれているのだが、vimのシンタックスハイライトでハイフンの前のtまでしかユーザー名として認識されていないように見えたため、ダブルクォーテーション、シングルクォーテーションで囲ったり、ハイフンの前にバックスラッシュでエスケープしてもダメ。

  • "t-tack41"
  • 't-tack41'
  • t\-tack41
  • "t\-tack41"

そこで色々調べている最中にhilotter氏のブログ記事を発見。

sudoでNOPASSWD設定しても反映されない現象に遭遇

この記事は2015年7月の記事で、この記事自身も馬場氏の2010年1月のブログ記事 sudoでNOPASSWDが効かない時の対応方法にある内容を実行したらなぜか直ったとある。

その方法は、NOPASSWDの設定行を設定ファイルの一番後ろに書けばよいということ。理由に関する記載はない。

いや、まさかね~、そんな古い記事だし、そんな理由で直るわけが…. と思ってやってみたら見事に直った!!!

その後、上記記事のタイトルなどでググると同様の記事が多数あり、その中のteratailの記事で原因が判明。sudoersの設定は最終行に近い方が優先されるので、所属するグループでパスワードを有効にしない設定が下にあればそちらが優先されてしまうとのこと。

sudo をパスワードなしで実行できるようにしたい

実際、今回記載した下の方にグループに対するパスワード有効の設定があったため、そのグループから抜けたうえで再度試したところパスワードなしの設定が有効になった。ユーザー名のハイフンは関係なかったです。