web-dev-qa-db-ja.com

ファイルを「書き込み」権限で編集できますが、親ディレクトリでは編集できませんか?

所有者/ユーザーがディレクトリへの書き込み権限を持っていないが、その下のファイルに書き込み権限を持っているとします。ここのファイルは編集できますか?はいの場合、ファイルを編集できない状況はありますか?

6
h8pathak

はい、ファイルは編集できます。

ディレクトリに関する限り、ターゲット(所有者/グループ/その他)のディレクトリに対する実行権限を削除すると、ファイルを編集できません。

EDIT:所有者がディレクトリの権限を変更してファイルを編集できないようにする場合(同じユーザーがディレクトリとファイルを所有していると仮定)、実行権限を削除するだけです。所有者のディレクトリ。たとえば、所有者の権限をrw-、つまり6として作成できます。

5
heemayl

他の回答が述べているように:はい、ファイルは編集/変更できます。そして、髪を裂く危険を冒して、質問が言っていることを指摘させてください

…彼は[ディレクトリ]の下のファイルに対して[書き込み権限]を持っています。

また、Wordの従来の意味でファイルを編集するには、ユーザーはreadpermissionも必要であるという半明白なコメントを作成します。現在の内容を取得するために、ファイルに追加します。読み取り権限がない場合、ユーザーは既存のデータを上書きしたり、最後にデータを追加(追加)したりできますが、タイプミスの修正やテキストの挿入などの便利な編集を行うことはできません。

そして、私は「変更された」と言って、私たちがさまざまなシナリオについて話していることを強調し、上記のシナリオ(上書きまたは追加)と

  • ファイルデータをコピーして(たとえば、別のディレクトリのファイルに)、なんらかの方法で操作してから、コピーして戻す(ファイルを上書きする)、または
  • viなどの従来のテキストエディタ(または、該当する場合は16進エディタ)を使用します。

特に、viは、この状況でファイルを編集することに問題はありません。他の多くのエディターをテストしたことはありません。それらのほとんど(たとえば、emacspico、…)も問題ないと思います。

だが、

sed -i sed_command(s)ファイル名

_sed -i_はによって機能するため、機能しません

  • 同じディレクトリに一時ファイルを作成し、
  • 元のファイルから新しい(一時)ファイルにテキストをコピーし、プロセスで指定されたsed_command(s)を実行し、
  • 元のファイルを削除してから
  • 一時ファイルの名前を元の名前に変更します(元のファイルの元のモードと一致するようにchmodingします)。

ディレクトリが書き込み保護されている場合、これらの操作は失敗します。 (他のいくつかの編集者も同じように動作する可能性があると思いますが、例を引用することはできません。)

したがって、_sed -i_にはディレクトリへの書き込みアクセスが必要です。もちろん、ファイルへの読み取り権限も必要です。しかし、ダブルツイストのサプライズエンディングは次のとおりです。ファイルへの書き込みアクセスは必要ありません。結局のところ、ファイルを削除するためにファイルへの書き込みアクセス権は必要ありません。ディレクトリへの書き込みアクセスだけです。

3
Scott

ディレクトリへの書き込み権限は必要ありませんが、実行可能ファイルのxビットを設定する必要があります。

したがって、ファイルfooを含むディレクトリbarについて考えてみます。権限が次のように設定されている場合

 drwx--x--x   foo
 -rw-rw-rw-   foo/bar

たとえば、xビットが指定されている限り、書き込みアクセスは誰でも利用できます。ディレクトリへの読み取りアクセスrも必要ありません。

0
inVader