Условные таблицы и их поля:
users: id,username
files: id, user_owner_id, filename, path
file_accesses: file_id, user_id, share_url, permission_level
Владелец у файла должен быть всегда, а доп.доступы могут быть, могут не быть (таблица file_accesses). Когда хотите расшарить - генерите ссылку share_url для file_id, задаете права доступа (permission_level), указываете, кому в системе расшарить - вот строка в базе для идентификации прав к файлам у не-владельца. Уровни прав доступа пишете уже на уровне бекенда