ユーザーAとユーザーBにroot権限がないとします。仮定:
X
ユーザーAは権限777を使用してディレクトリを作成します。- その後、ユーザーBは755権限を持つディレクトリを作成します
X/Y
。 - その後、ユーザーBは
X/Y/troll
755権限を持つファイルを作成します。
ユーザーAが次のコマンドを実行しようとすると、正しい動作は何ですか?
rm -rf X/Y
「トロール」ファイルはどうですか?私はコンピュータでテストしましたが、ユーザーAはユーザーBのファイルを削除できませんでした。そうですか?
それでは、ユーザーBがAのディレクトリにAが削除できない非常に大きなファイルを生成して、Aのクォータを超える可能性があるということですか?
答え1
はい、これは予想される動作であり、指摘したように、他のユーザーに自分のディレクトリへの書き込み権限を付与した他のユーザーをだますために使用できます。正しく示されているように、「トロール」ユーザーがコンテンツと共に作成した書き込み権限を持たないディレクトリは、そのユーザーとルートのみを削除できます。
空でないディレクトリは削除できず、他のユーザーのディレクトリを許可なく変更できないためです。
通常、これによりリソース制限の問題は発生しません。(割り当て量)通常、ディレクトリの場所ではなくファイルの所有権に基づいて計算されます。これchown
これが、一般ユーザーが自分のファイルを他のユーザーに提供できない理由の1つです。それ以外の場合は、chown
ファイルの削除権限がないユーザーにファイルを渡すことができます。
これを使用してクォータを制御する方法もあります。X
: ユーザー B がファイルを追加した後、ユーザー A が権限を変更する場合:
chmod 700 X
ユーザー B はファイルを削除できません。ファイルへのハードリンクがない場合は、そのファイルを表示または書き換えることもできません。ディレクトリを移動することはできませんが、親ディレクトリへの書き込み権限がある場合は、他のユーザーのファイルを移動できます。したがって、世界的に書き込み可能なディレクトリは通常賢明ではありません。
対照的に、Linuxでは、ファイルを他のユーザーに渡すときは、常にファイルを自分のディレクトリに保存し、読み取り権限を付与します。他のユーザーは、自分や他のユーザーに危険を与えることなく自分でファイルをコピーできます。
ほとんどすべての場合において、このタイプの行動に対する答えは、トロールユーザーに停止を慎重に要求し、ユーザーがそうでない場合はシステム管理者に報告することです。。
答え2
スティックビット、ACL、ファイル機能などの他の素晴らしい機能がないとします。
AはYに書き込めないため、Aはトロールファイルのリンクを解除できず、Yは空ではないため削除できず、最終的に何も起こりません。
FSUID = AのプロセスがBを所有するファイルのリンクを解除できるかどうかは、さまざまな条件によって異なります。常にユーザー名について話すのではなく、プロセスの資格情報に集中してください。
最後の質問にも同じです。 Linuxには本当に多くのアドオンがあります。その一部を実行する権限がありますか?条件によって大きく異なります...