環境
Ubuntu 22.04(Dockerコンテナ)
Docker version 27.2.0
経緯
Dockerコンテナ内のUbuntuで、一時的にsudo
コマンドをパスワードなしで使用する必要があったのでvisudo
コマンドを使用して1/etc/sudoers.d/foo.bar
ファイルを作成した。
内容は以下の通り(本当はもう少し権限を限定している)。
foo.bar ALL=(ALL) NOPASSWD: ALL
しかしこれを行ってもなおsudo時にパスワードが要求されて頭を抱えていた。
対処
タイトルの通り、ピリオドを使うのをやめればよい。
sudo は /etc/sudoers.d にあるファイルを一つづつ読み込む。 ただし、末尾が '~' だったり、'.' 文字を含んでいたりするファイル名はスキップするが、 これは、パッケージマネージャやエディタが作った、 テンポラリファイルやバックアップファイルを読み込むような問題を起こさないためである。
https://manpages.debian.org/testing/manpages-ja/sudoers.5.ja.html
上述の例でいえば、foo.bar
ではなくfoo-bar
のようなファイル名なら問題ない。
参考
-
visudo
コマンドを使うと普通のエディタと違って構文エラーを検出できる。https://qiita.com/buntafujikawa/items/0083b8aa1bd0e97748aa ↩