
私たちにはポータルがあり、各ユーザーにはアカウントとそれに応じたファイルストアがあります。
ユーザーがフォームを使用してファイルをアップロードするたびに、PHPアプリケーションは最初にファイルの内容をハッシュし、そのファイルがシステムにすでに存在することを確認します(他のユーザーがアップロードした場合も同様)。
ファイルが存在する場合、新しいファイルは保存されず、代わりにシステムはアップロードするユーザーの詳細と元のファイルへのリンクを含む行のみを保存します。この方法はファイルの重複を排除し、スペースを節約します。
しかし、今問題が発生しました。各ユーザーには、独自のストレージファイルをダウンロードするために使用できるftpアカウントもあります。
一意のファイルのみが保存されるため、各ユーザーにリポジトリ内のすべてのファイルを表示する方法が必要です。
単なるftpフォルダではないので、修正が必要です。
私たちはシンボリックリンクとファイルマウントを見ました。前者は権限に基づいてアクセスをブロックしますが、後者は実行時に何千ものファイルを個別にマウントする必要があるため、どちらも非実用的です。
答え1
- ユーザーが所有者を知らないように公開ファイルを保存します。 (一部の
admin
ユーザー)。 - 一般ファイルをダウンロードする場合は、
userA
ファイルの所有権をからに変更してadmin
くださいuserA
。これはuserA
彼がファイルの所有者であると仮定します。 admin
ファイルをダウンロードしたら、ユーザーにファイル権限を復元します。