ファイル権限と保存

ファイル権限と保存

書き込み権限を持つファイルを開くとしましょう。同時に権限を変更して書き込み権限を削除した後も、一部のエディタでファイルを開きます。

編集して保存するとどうなりますか?

答え1

ファイルを開くときにファイル権限を確認してください。権限を変更しても、ファイルが開いているプロセスがファイルで実行できる操作には影響しません。場合によっては、これは追加の権限で始まり、ファイルを開き、その追加の権限を削除するプロセスで機能します。ファイルにはまだアクセスできますが、再度開くことはできません。

ただし、編集者はファイルを開いたままにしないことがよくあります。エディタがドキュメントを開くときに何が起こるのかは、エディタがファイルの内容をメモリにロードしてファイルを閉じることです。文書を保存すると、編集者はファイルを開き、新しい内容を作成します。

編集者は、ファイルを保存する際に、2つの戦略のうちの1つに従うことができます。新しいファイルを作成し、その場所に移動できます。または、既存のファイルを開いて古いコンテンツを上書きすることもできます。上書きの利点は、ファイルの権限と所有権が変更されず、読み取り専用ディレクトリでも機能することです。上書きの主な欠点は、保存が途中で失敗した場合(エディターのクラッシュ、システムのクラッシュ、ディスクがいっぱいです...)、最終的に文書が切り捨てられることです。他の編集者は異なる戦略を選択します。良いエディタは最初に新しく作成し、可能であれば移動し、読み取り専用ディレクトリにのみ上書きします(他の場所にバックアップした後)。

編集者が移動前に新しいポリシーに従う場合、ファイルの権限は重要ではありません。エディタは新しいファイルを作成し、このディレクトリへの書き込み権限のみが必要です。 2つの例外があります。粘り強いビット、ファイルの所有権(権限ではない)を変更すると、プロセスは新しいファイルを所定の場所に移動できない可能性があります。別の例外は、削除権限をサポートするシステムです。ACL(例:OSX):ファイルに対する削除権限を取り消すと、移動できなくなる可能性があります。

エディタが上書きポリシーに従うと、書き込み権限を取り消すと保存できなくなります。 (ただし、デフォルトでオーバーライドされたエディタの中には、New Then Moveに置き換えることができます。)

Vimでは閉じてこれを行うことができます。backupcopyオプション;あなたはまた見ることができます「vi」エディタで編集すると、inode値が変更されるのはなぜですか?。 Emacsでは、以下を設定して上書きポリシーを強制できます。backup-by-copying変える到着するt

答え2

必要に応じて編集できますが、保存しようとすると、編集者はファイルを書き込めないと文句を言います。エディタがバックアップファイルを作成すると、変更内容は明らかにバックアップファイルに保存されます。

編集者に応じてそれを上書きできます。たとえば、ファイルが所有者である場合、またはコマンド(書き込み操作を強制する方法)を入力して、書き込みvim不可能なファイルに保存できます。たとえば、他のエディタではファイルを保存できませんが、代わりにオプションを提供します。root:w!!geditSave As...

修正する

ありがとう社会福祉部からのコメント以下では、この動作は実際にエディタが設計された方法で発生することに注意してください。実際にバッファをファイルに書き込むことを決定するまで、一時ファイル(バッファ)を使用してすべての編集内容を保持します。

関連情報