ユーザーがファイルへの書き込みアクセス権を持ち、それを読み取ることができない可能性はありますか?どのようにして可能ですか?
私は次のコマンドを試しました:
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$
ここに表示されているように、このファイルには書き込みアクセス権がありますが、読み取りアクセス権はありません。これはどのようにして可能ですか?これはバグと見なされますか?そうでない場合、これはどのような状況で役立ちますか?
これはバグではなく、機能ですTM (また、パーミッションへの普遍的なUNIXアプローチの結果)。
(BillThorで説明されている)ディレクトリの場合のドロップボックスのような動作とは別に、/proc
および/sys
の下の一部の特別な(疑似)ファイルには書き込み専用アクセスが必要です。このようなファイルは、いくつかのドライバーまたはカーネルのプロパティを設定したり、システムアクションをトリガーしたりするために使用されます。これらは一方向のシグナリングにのみ使用されるため、読み取ることができません。エコーできるのは一部のテキスト/データのみです。そのようなファイルを見つけるために、あなたは使うことができます
find /proc/[^0-9]* /sys -perm /222 ! -perm /444
これらのファイルは高度なシステム構成(潜在的に危険)に使用されるため、root
のみが(ほとんどの場合)書き込み権限を持っていることに注意してください。
読み取りアクセスなしで書き込みアクセスを許可する主な理由は、カーネル内とユーザープログラムの両方で、アクセス許可の管理が簡略化されるためです。読み取り用と書き込み用の2つのアクセス許可があり、それらは個別に管理されます。文書化された動作は実際の動作と一致し、別の動作を要求する正当な理由がないため、これはバグではありません。
読み取り権限なしで書き込み権限を持つことは、通常のファイルにはあまり意味がありません。さまざまな特殊ファイルには意味があります。
/proc
および/sys
の下にさまざまなファイルがあり、ユーザー空間プログラムが特定のファイルに書き込むことによってカーネルにコマンドを送信できるようにします。そのコマンドがフィードバックを提供しない場合、特殊ファイルは書き込み専用になります。いいえ、これはバグではありません。ただし、一般的にファイルに適用されることはありません。
Dropboxディレクトリへの書き込み専用アクセスをよく見ました。ユーザーはディレクトリにファイルを追加できますが、どのファイルが存在するかはわかりません。
通常のテキストファイルの場合、ドロップボックスタイプのアクセスには書き込み専用アクセスが適切です。
自分だけに書き込み専用アクセスを設定しても、それほど有用ではありませんが、許可しないと、アクセス許可コードが複雑になります。
編集:Dropboxファイルは役に立たないでしょう。ただし、ログエントリを上書きすることがより困難になるため、ルート以外のログには役立ちます。ファイルを読み取れる場合は、置換ログエントリを書き込む場所を特定する方がはるかに簡単です。ただし、このようにログを設定した人は誰も知りません。ログエントリのローカルでの変更を防ぐために、リモートロギングを使用するのが一般的です。
許可の組み合わせが許可されるルールを設定すると、予期しない有用な許可の防止につながる可能性があります。多くの組み合わせは、オーナーレベルよりもグループレベルまたはワールドレベルでより意味があります。所有者によるアクセスを阻止しようとする試みは、簡単に無効にすることができます。ただし、それらは地味な秒を強制するのに役立ちます。