ログイン中に、次のことができます。
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
次にroot
、(ではなく)vimを開き、編集しbar
、で強制的に書き込みw!
、ファイルが変更されます。
オペレーティングシステムでファイルの変更を禁止するにはどうすればよいですか?
2017年3月2日更新
chmod 500 foo
赤いニシンです。ディレクトリに対する書き込み権限は、ファイルの内容を変更する機能とは関係ありません。ファイルを作成および削除する機能のみです。chmod 400 foo/bar
実際、ファイルの内容が変更されるのを防ぎます。ただし、ファイルのアクセス許可が変更されるのを防ぐことはできません -ファイルの所有者は、常にファイルのアクセス許可を変更できます(ファイルにアクセスできる場合、つまりすべての祖先ディレクトリでアクセス許可を実行できる場合)。実際、strace(1)は、これがvim(7.4.576 Debian Jessie)が行っていることを明らかにしています-vimはchmod(2)を呼び出してファイルの所有者に書き込み許可を一時的に追加し、ファイルを変更してからchmod( 2)再度書き込み許可を削除します。それが、chattr +i
works を使用する理由です。root のみがを呼び出すことができますchattr -i
。理論的には、vim(または任意のプログラム)は、rootとして実行された場合、不変ファイルでchmodを使用するのと同じことをchattrで実行できます。
root
か?
vim
は、実際に権限を変更してから元に戻していると思います。