誤ってファイルを削除しないようにしてください

誤ってファイルを削除しないようにしてください

私はRHELサーバーのユーザーです(rootではありません)。私のホームディレクトリでファイルを編集し続けたいのですが、誤って削除しないように権限を設定します。可能ですか?削除する前に、セカンダリメッセージ(「本当ですか?y / n」など)が必要になりますか?

答え1

以下からファイルを削除できます。解くこれは自分が参照するディレクトリを指します(ファイルは複数のディレクトリで参照することも、ディレクトリを複数回(別名で)参照することもできます。これは通常ハードリンクと呼ばれます)。

重要な権限は、ファイルの権限ではなく、ファイルが関連付けられているディレクトリの権限です。

したがって、書き込み権限がないディレクトリに入れると、次のようになります。

mkdir important-files
echo test > important-files/myfile
chmod a-w important-files # make the directory not writable

その後、削除することはできませんが、myfileファイルが書き込み可能な限りファイルを変更できます。

答え2

サブディレクトリを作成して独自の書き込み権限を削除すると、そのディレクトリのファイルを削除することはできませんが、変更できます。

$ mkdir dir ; echo something > dir/foo ; chmod a-w dir
$ $EDITOR dir/foo
$ rm -rf dir/
rm: cannot remove 'dir/foo': Permission denied

コンテンツの編集中にコンテンツが壊れたり切れたりする可能性がありますが、より良いオプションはバックアップを作成することです。システム管理者は削除できないディレクトリにバックアップを保存できますが(必要ですか?)、基本的に上記と同じアイデアを使用して安価なシミュレーションを実行できます。ディレクトリを作成し、書き込み権限を復元する一時ディレクトリを作成します。そのディレクトリにバックアップコピーを作成し、書き込み権限を再度クリアします。

答え3

私のホームディレクトリでファイルを編集し続けたいのですが、誤って削除しないように権限を設定します。可能ですか?

つまり、すべてのファイルが一般的なUnix権限を持っているわけではありません。おそらくACLこのように細かい制御が可能でしょうか?

削除する前に、セカンダリプロンプト(「本当ですか?y / n」など)が必要になりますか?

rm一般的な回避策は、in(ディストリビューションでサポートされている場合)またはグローバルに(パッケージの更新で上書きされる可能性があるため、このオプションを使用しないことをお勧めします)rm -iなど、toにエイリアスを設定することです。~/.bash_aliases~/.bashrc/etc/bashrcbash

$ cat .bash_aliases 
alias rm='rm -i'
...

答え4

これは myFile 変数で指定した 1 つのファイルに対してのみ機能します。

#
# Wrapper around /bin/rm to prevent accidental `rm myFile`
#
rm (){
local rm=$(which rm)

myFile="important.txt"

if [ -f "$myFile" ]; then
  $rm -iv "$myFile"
else
  $rm "$@"
fi

}

/etc/profileに追加してから./etc/profile

関連情報