8
12

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 5 years have passed since last update.

Chefでsudoersをいじったらsudoできなくなったの巻

Posted at

結論を先に。根本的な原因はsudoersファイルの構文エラー。

元の状態。

file '/etc/sudoers.d/dev' do
  owner 'root'
  group 'root'
  mode 0440
  content '%dev ALL=(ALL) NOPASSWD: ALL'
end

opsを追加したかったので、コードを追加してこんな感じ。で、cook。

file '/etc/sudoers.d/dev' do
  owner 'root'
  group 'root'
  mode 0440
  content '%dev ALL=(ALL) NOPASSWD: ALL'
end

file '/etc/sudoers.d/ops' do
  owner 'root'
  group 'root'
  mode 0440
  content '%ops ALL=(ALL) NOPASSWD: ALL'
end

そしたらsudoできなくなりました。

$ sudo su -
sudo: >>> /etc/sudoers.d/dev: syntax error near line 1 <<<
sudo: parse error in /etc/sudoers.d/dev near line 1
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
$

sudoersは終端に改行がないとエラーになるみたいです。有名みたいです。というわけでそれぞれ

content "%ops ALL=(ALL) NOPASSWD: ALL\n"

みたいに改行を入れておけばOK。

おまけのvisudo -cf

 visudo -cf ファイル

で、構文チェックできる。しらなかた。でも、今回の問題は指摘されない。

おまけのpkexec

一旦、シンタックスエラーのまま保存するともうsudoできないので素直にシングルユーザなんとかでごにょごにょしたりすればいいんですが、このサイトによると pkexec visudo とかやってなんとかなるそうです。

全部ちゃんと読んでないし、入ってなかったし。未検証。
pkexecは、polkitってパッケージらしいのであらかじめ入れといたらいいかも。

おまけの/etc/sudoers

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

includedirの左の#はコメントアウトじゃないのね。すぐ上に書いてあった。
難しいYO!

Chefはあんまり関係ないね。

8
12
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
8
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?