Vimは許可なくファイルを作成しています。

Vimは許可なくファイルを作成しています。
$ ls sess.vim -lh              
-rw-r--r-- 1 root root 11K Feb 26 18:52 sess.vim

私はこのファイルを誰でも読むことができますが、root以外の誰も書き込めないようにしたいと思います。だから644権限と所有権をroot:root

$ echo "text" >> sess.vim      
zsh: permission denied: sess.vim

よさそうだねvimでいくつかの変更を行った後に実行:w!(強制書き込み)を行ったところ、ファイルは正常に保存されました。今:

$ ls sess.vim -lh
-rw-r--r-- 1 MY_USERNAME users 11K Feb 26 19:06 sess.vim

重量..なぜ?どのように?

答え1

vimで次のように使用します:w!

echo 'test' > sess.vim.temp
mv sess.vim.temp sess.vim

このmvコマンドは、ファイル権限ではなくディレクトリ権限にのみ関心があります。これは、ファイルに書き込むのではなく、ディレクトリを変更するためです。目標を達成するには、ファイルがあるディレクトリの権限も調整する必要があります。

答え2

これは、親ディレクトリのユーザーとグループの所有権がyour-username:your-group-nameであるために機能します。

ユーザーがディレクトリの所有者であり、ディレクトリへの書き込み権限がある場合、そのユーザーはファイル権限に関係なく、その中に含まれるすべてのファイルを削除できます。私はvimが編集したファイルのリンクを解除(削除)して:wq!与えられた。

関連情報