
$ 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!与えられた。