web-dev-qa-db-ja.com

ファイルを削除できないようにロックしながら、書き込み可能にする方法は?

ファイルを削除できないようにロックしたいが、まだ書き込み可能にしたい。どうすればよいですか?

問題のファイルは、NAS SMBネットワーク共有上のファイルとしてのTruecryptボリュームなので、誤って削除したくありません。

34
therobyouknow

Windowsの場合:

  1. ファイルの「削除」権限を拒否します。
  2. 親ディレクトリの「子アイテムの削除」権限を削除または拒否します。

Unix(OS Xを含む)の場合:

  1. 親ディレクトリの「書き込み」権限を削除します。

これにより、ファイルの削除(削除)が防止されるだけで、誤って切り捨てられたり、ゴミで上書きされたりすることはありません。ファイルが書き込み可能である場合は、ピリオドであれば何でも書き込むことができます。

また、オペレーティングシステム間でファイルのアクセス許可を変換することはほぼ不可能です。 NASがLinuxを実行していて、Windows内から権限を設定しようとすると、最終結果が予想と異なる場合があります。

35
user1686

Linuxでは、ハードリンクを作成できます。その後、それを書き込んで「削除」できますが、ディレクトリ内の参照のみを削除します。他のハードリンクはファイルのコンテンツを指しているため、削除されません。

Unixの世界では、ファイルを「削除」することはありません。あなたはそれへのハードリンクの数を減らすだけです。他に何も指していない場合、そのスペースは自由と見なされ、使用できます…

26
woliveirajr

Btrfsのような牛のファイルシステムでは、サブボリューム+スナップショットまたは--reflink = alwaysを使用したcpを使用してこれを実現できます。これにより、必要な数のファイルが実質的に生成され、1つ+オーバーヘッドと同じ量のスペースを消費します(ただし、非常に多くのコピーやスナップショットがなければ、特に小さなファイルサイズと組み合わせると、これは目立たないはずです)。これらが変更されるまで、変更された部分だけが個別に保存され、残りは引き続き共有されます。次に、それぞれに権限を個別に設定します(読み取り専用の権限で定期的にスナップショットまたはコピーを作成したい場合は、それを実現します(オプションで、スナップショットの場合はroまたはallをマウントせず、ファイルの場合はchattr + iを使用します(ユーザーは書き込み権限がある場合でも、ファイルを書き込んだり変更したりしないでください)。

0

以前の回答に加えて、selinuxを確認することを検討します。そこで、かなり細かい制限を定義できます。

0
Niels Basjes

「標準」UNIXでは、ディレクトリが書き込み可能である場合、単一のファイルを削除から保護することは不可能のようです。直感的には、「chmod」を使用してモードビットからw保護をクリアすると削除から保護できると期待できますが、これはIS NOT THE CASEです。同様に、AFSでは単一ファイルをACLエントリ(関連する「d」権限の欠落または拒否)はディレクトリ全体にのみ適用されるため、削除されます。

0