web-dev-qa-db-ja.com

読み取りアクセスなしの書き込みアクセス

ユーザーがファイルへの書き込みアクセス権を持ち、それを読み取ることができない可能性はありますか?どのようにして可能ですか?

私は次のコマンドを試しました:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

ここに表示されているように、このファイルには書き込みアクセス権がありますが、読み取りアクセス権はありません。これはどのようにして可能ですか?これはバグと見なされますか?そうでない場合、これはどのような状況で役立ちますか?

16
Dimitri

これはバグではなく、機能ですTM (また、パーミッションへの普遍的なUNIXアプローチの結果)。

(BillThorで説明されている)ディレクトリの場合のドロップボックスのような動作とは別に、/procおよび/sysの下の一部の特別な(疑似)ファイルには書き込み専用アクセスが必要です。このようなファイルは、いくつかのドライバーまたはカーネルのプロパティを設定したり、システムアクションをトリガーしたりするために使用されます。これらは一方向のシグナリングにのみ使用されるため、読み取ることができません。エコーできるのは一部のテキスト/データのみです。そのようなファイルを見つけるために、あなたは使うことができます

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

これらのファイルは高度なシステム構成(潜在的に危険)に使用されるため、rootのみが(ほとんどの場合)書き込み権限を持っていることに注意してください。

18
rozcietrzewiacz

読み取りアクセスなしで書き込みアクセスを許可する主な理由は、カーネル内とユーザープログラムの両方で、アクセス許可の管理が簡略化されるためです。読み取り用と書き込み用の2つのアクセス許可があり、それらは個別に管理されます。文書化された動作は実際の動作と一致し、別の動作を要求する正当な理由がないため、これはバグではありません。

読み取り権限なしで書き込み権限を持つことは、通常のファイルにはあま​​り意味がありません。さまざまな特殊ファイルには意味があります。

  • 一部のシステムでは、追加専用ファイルが許可されています。これは、たとえばログファイルに役立ちます。多くのユーザーがログエントリを作成できるようにすることはできますが、既存のエントリを消去または上書きすることはできません(したがって、書き込み権限ですが、追加のみの属性です)。また、他のユーザーのエントリを読み取ることもできます(したがって、読み取り許可)。
  • プログラムは、名前付きパイプからの読み取りを許可されずに、名前付きパイプへの書き込みを許可される場合があります。
  • 一部のデバイスは書き込み専用です。たとえば、スピーカーに接続されているがマイクが付いていない音声出力デバイスには、書き込み権限はあるが読み取り権限はないはずです。
  • ストレージへのデータの取得や追加の代わりに、ファイルの読み取りまたは書き込みが即時に影響するさまざまな特殊なファイルシステムがあります。たとえば、Linuxでは、/procおよび/sysの下にさまざまなファイルがあり、ユーザー空間プログラムが特定のファイルに書き込むことによってカーネルにコマンドを送信できるようにします。そのコマンドがフィードバックを提供しない場合、特殊ファイルは書き込み専用になります。

いいえ、これはバグではありません。ただし、一般的にファイルに適用されることはありません。

Dropboxディレクトリへの書き込み専用アクセスをよく見ました。ユーザーはディレクトリにファイルを追加できますが、どのファイルが存在するかはわかりません。

通常のテキストファイルの場合、ドロップボックスタイプのアクセスには書き込み専用アクセスが適切です。

自分だけに書き込み専用アクセスを設定しても、それほど有用ではありませんが、許可しないと、アクセス許可コードが複雑になります。

編集:Dropboxファイルは役に立たないでしょう。ただし、ログエントリを上書きすることがより困難になるため、ルート以外のログには役立ちます。ファイルを読み取れる場合は、置換ログエントリを書き込む場所を特定する方がはるかに簡単です。ただし、このようにログを設定した人は誰も知りません。ログエントリのローカルでの変更を防ぐために、リモートロギングを使用するのが一般的です。

許可の組み合わせが許可されるルールを設定すると、予期しない有用な許可の防止につながる可能性があります。多くの組み合わせは、オーナーレベルよりもグループレベルまたはワールドレベルでより意味があります。所有者によるアクセスを阻止しようとする試みは、簡単に無効にすることができます。ただし、それらは地味な秒を強制するのに役立ちます。

3
BillThor