ファイルの書き込みビットがオフになっていても、ユーザーがファイルを編集するにはどうすればよいですか?

ファイルの書き込みビットがオフになっていても、ユーザーがファイルを編集するにはどうすればよいですか?

これは私がトレーニングマシンにumaskを使用するようにインスピレーションを与えたものです。

テストユーザーjohnを作成し、johnとしてログインしました。そしてumaskを0200に設定し、vimでテストファイルを生成して保存します。このテストファイルの権限は次のとおりです。

-r--rw-rw-. 1 john john 26 Jun 28 12:25 testfile

これでファイルを再編集しようとしましたが、横説説が出ました。

「:wq」を使って保存しようとすると、エディタはファイルが読み取り専用なので保存できないというメッセージが表示されます。しかし、最後に感嘆符「:wq!」を追加すると、ファイルが保存されます。

何が起こったのですか? ?テストファイルの書き込みビットがオフになっていても

ホストOS = RedHat(rhel)7.2

ベストアンサー1

"wq" を使用すると、 "!" は Vim に読み取り専用属性を無視するように要求します。 ~から文書:

:wq [++opt] 現在のファイルに書き込んで終了します。ファイルが読み取り専用であるか、バッファーに名前がない場合、書き込みは失敗します。パラメータリストの最後のファイルが編集されていないと、シャットダウンは失敗します。

:うわー! [++opt] 現在のファイルに書き込んで終了します。現在のバッファに名前がない場合、書き込みは失敗します。

違いに注意してください。 「!」がない場合、「ファイルが読み取り専用のときに失敗しました...」は、もはや「!」には適用されません。

技術的にこれが起こる理由は、あなたがファイルの所有者であるため、Vimはその権限を事実上無視する可能性があるためです(最悪の場合、変更して復元できます。)。実際、Vimは読み取り専用ファイルを作成するいくつかの方法をサポートしています。

  • ディレクトリが書き込み可能な場合は、既存のファイルの名前を変更し(~名前に追加)、新しいファイルを作成し、ファイルに新しいコンテンツを書き込み、元のファイルの権限を復元します(Vimを実行しているユーザーがVimでない場合も同様)。 。ファイル所有者のユーザー)
  • ディレクトリが書き込み可能でない場合は、ファイルを書き込み可能ディレクトリにバックアップし(~/tmp通常は)ファイルの権限を書き込み可能に変更し、ファイルに新しいコンテンツを書き込み、元の権限を復元します(Vimを実行しているユーザーが次の場合のみ動作します)。ファイルの所有者)。

おすすめ記事