ユーザーはファイルへの書き込みアクセス権を持っていますが、読み取ることはできませんか?どうやってこれができますか?
次のコマンドを試しました。
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$
ここに示すように、ファイルに対する書き込み権限はありますが、読み取り権限はありません。どうやってこれができますか?これはバグと見なされますか?そうでなければ、どのような状況でこれが役に立ちますか?
答え1
書き込みアクセスは許可しますが読み取りアクセスは許可しない主な理由は、カーネルとユーザープログラムの両方で権限管理を簡素化するためです。権限には2種類あります。 1 つは読み取り、もう 1 つは書き込みであり、独立して管理されます。文書化されたアクションが実際のアクションと一致し、他のアクションを必要とする妥当な理由がないため、これはバグではありません。
一般ファイルの場合、書き込み権限はありますが読み取り権限はないことは意味がありません。あらゆる種類の特殊ファイルに適しています。
- 一部のシステムでは、ファイルの添付のみを許可します。たとえば、これはログファイルに役立ちます。多くのユーザーがログエントリを生成することを許可しますが、既存のエントリを削除または上書きすることを許可しない(つまり、書き込み権限はありますが属性の追加のみを許可)、他の人のエントリを読み取ることはできません(したがって許可されません)。権限を許可するのが合理的です。 )。
- プログラムは名前付きパイプに書き込むことができますが、読み取ることはできません。
- 一部のデバイスは書き込み専用です。たとえば、スピーカーに接続されているがマイクを持たないサウンド出力デバイスには書き込みアクセス権が必要ですが、読み取りアクセス権はありません。
- ストレージにデータを検索または追加する代わりに、ファイルの読み取りまたは書き込みがすぐに発生するさまざまな特殊なファイルシステムがあります。たとえば、Linuxには、ユーザースペースプログラムが特定のファイルに書き込み、カーネルにコマンドを送信できるようにする
/proc
さまざまなファイルがあります。/sys
コマンドがフィードバックを提供しない場合、特殊ファイルは書き込み専用になります。
答え2
これはバグではなく、機能です。TM(これは通常のUNIX権限アプローチの結果にすぎません)。
BillThorの説明に従って、ディレクトリのアーカイブボックスと同様の動作に加えて、以下の特殊な(擬似)ファイルへの書き込み専用アクセスが/proc
必要です/sys
。これらのファイルは、特定のドライバまたはカーネル属性を設定したり、システム操作をトリガーするために使用されます。一方向信号のみに使用されるため読み取れません。一部のテキスト/データのみを再エコーできます。そのようなファイルを見つけるには、次のものを使用できます。
find /proc/[^0-9]* /sys -perm /222 ! -perm /444
これらのファイルは高度なシステム構成(潜在的に危険)に使用されるため、root
そのファイルへの書き込みアクセスのみが可能です(ほとんどの場合)。
答え3
いいえ、これはバグではありません。しかし、通常はファイルには適用されないと思います。
私が最もよく見るのは、dropboxディレクトリへの書き込み専用アクセスです。ユーザーはディレクトリにファイルを追加できますが、どのファイルが存在するかを確認することはできません。
プレーンテキストファイルの場合、書き込み専用アクセスはドロップボックス形式のアクセスに適しています。
自分に書き込み専用アクセス権を設定することはあまり役に立ちませんが、それを許可しないと権限コードが複雑になります。
編集:Dropboxファイルは役に立たないようです。ただし、ログエントリを上書きするのが難しくなるため、ルート以外のログには便利です。ファイルを読み取ることができる場合は、代替ログエントリを書き込む場所を決定する方が簡単です。しかし、私はこのようなログを設定する人を知りません。リモートロギングは、ログエントリのローカル変更を防ぐためによく使用されます。
権限の組み合わせを許可するルールを設定すると、予期しない有用な権限がブロックされる可能性があります。多くの組み合わせは、所有者レベルよりもグループや世界レベルで意味があります。所有者のアクセスをブロックする試みは簡単に無視できます。しかし、第二者を強制的に目覚めさせるのに便利です。