権限を 440 に設定して、root が sudoers ファイルに書き込むことができるのはなぜですか?

権限を 440 に設定して、root が sudoers ファイルに書き込むことができるのはなぜですか?

/etc/sudoersファイルの権限を見ると、次のようになっています

-r--r----- 1 root root 705 Nov  2 19:57 /etc/sudoers

さて、これは書き込み可能ではないということではないでしょうか? では、root ユーザーはどうやって書き込みを行うのでしょうか?

答え1

ルート ユーザーは、モードに関係なく、常にすべてのファイルへの完全な書き込みアクセス権を持ちます。

おそらく最も良い例は です/etc/shadow。これはモード 000 ですが、もちろんルートによって変更できます。

[root@centos7 ~]# ls -pl /etc/shadow
----------. 1 root root 1353 Oct 26 07:40 /etc/shadow

答え2

コメントに書かれているように、元の回答は少々不明瞭でした。

ファイルの所有者は、自分が所有するファイルの権限をいつでも変更できます (一方、root は既存のすべてのファイルに対してこれを行うことができます)。

通常ユーザーの場合は、読み取り専用ファイルを変更する方法によって異なります。

  • vi でファイルを開いて変更します -> 「:w!」で変更を書き込むことができます。
  • try #echo "test" >> read-only-file 権限が拒否されました。

ルート ユーザーの場合は、任意のファイルを上書きしたり変更したりできますが、プログラム vi は読み取り専用権限を考慮し、確認を求めます。

ファイル /etc/sudoers は、常に「visudo」コマンドで変更する必要があります。このコマンドは、実際のファイルの内容を一時ファイルで開き、変更を保存する前にいくつかのチェックを行います。root ユーザーの場合は、読み取り専用権限にもかかわらず、変更を書き込むことができます。

答え3

viの代わりにvisudoを使ってみてください

sudo visudo

関連情報