上書き権限なしでファイルを編集する

上書き権限なしでファイルを編集する

編集は可能ですが、上書きは許可されないようにファイルの権限を設定できますか?

私は、テキストエディタを使用してファイルを編集できますが、上書きでファイルを置き換えようとすると拒否されます。ユーザーはですroot。これがUnixファイル権限の一般的な構造ではないことを知っていますが、これを行うには難しい方法を探しています。

一部のファイルは元のバージョンで編集/カスタマイズされているため、ファイルパッケージがあります。パッケージを新しいバージョンに更新すると、変更されていないファイルはすべて置き換えられますが、カスタムファイルは保護したいです(編集内容を見逃さないように)。現時点では、これを手動で行う必要があります。新しいアップデートでファイルを置き換えるのではなく、編集したファイルを作成する必要があります。

答え1

すべてのパッケージは構成ファイルを完全に上書きしようとするため、次のようにファイルを追加の専用モードに設定できます。

chattr +a bb

したがって、ファイルを削除または切り捨てることはできず、追加のみ可能です。

ただし、この場合、パッケージマネージャはシステムをアップグレードできません。

パッケージマネージャがカスタムファイルを上書きしたくない場合は、パッケージを保持するだけです。 debian/ubuntu では、次のことができます。

echo package-name hold | dpkg --set-selections

これにより、パッケージがアップグレードされずにファイルが保存されます。

答え2

これは、正確に「保証範囲」が何を意味するかによって異なります。これが既存のファイルのデータ変更を意味する場合、オペレーティングシステムは「編集」と「上書き」を区別できないため不可能です。どちらもファイルのデータを変更します。同じ名前の新しいファイルを削除して作成する(または新しいファイルの名前をその名前に変更する)ことを意味する場合は、ファイルを含むディレクトリから書き込み権限を削除するだけです。明らかに、これは特定のファイルではなく、ディレクトリ内のすべてのファイルに適用されます。

答え3

まず、パッケージの重要なファイルをtarに圧縮します。それからアップグレードしてください。新しいバージョンをインストールしたら、保存したファイルを解凍してください。別のディレクトリにをクリックして、編集したファイルを新しいパッケージのファイルと比較します。これにより、新しいファイルに追加/変更する重要な項目がないことを確認できます。つまり、開発者が編集したファイルに修正を追加した可能性があり、その変更もそのまま残す必要があります。新しいパッケージファイルは、新しいファイルに新しい重要な情報が含まれていないことを最初に確認せずに、以前の編集内容に置き換えられます。

答え4

ルートとして、次のことを行います。

chattr +i foo.txt

次に、次のことを試してください。

vim foo.txt

vimでファイルを変更して保存してみてください。

ユースケースの例は chattr +i /etc/resolv.conf です。これにより、迷惑なネットワーク管理者サービスが、誤って設定された家庭/オフィスルータからインポートされたいくつかのブーマファイルで上書きされません。

次の方法でキャンセルできます。

chattr -i foo.txt

Linuxファイルシステムモデルでは、これが最善の方法です。他の解決策はありません。

関連情報