Разрешения папки для загрузки файлов PHP – частные / общедоступные / общие представления?

Я пишу сценарий загрузки php-файлов для проекта – я видел все прекрасные источники с открытым исходным кодом там, но я решил сделать свое, поскольку у меня есть уровень прав доступа пользователей, которые я не могу найти в любом месте.

Так вот что я пытаюсь сделать:

  1. Нормальная загрузка файлов, точно так же, как elFinder
  2. Некоторые способы ограничить определенные пользователи для просмотра папок и / или файлов, в зависимости от того, к какой группе они принадлежат. Мне нужно сделать это, поскольку это для организации, в которой я работаю, когда некоторые пользователи могут видеть только те документы, которые они должны

Первоначально я решил сделать решение mysql, где каждая папка имеет идентификатор, а при создании папки вы указываете группы, которым разрешено просматривать эту папку, – но это не похоже на самое изящное решение.

Может ли кто-нибудь предложить теоретический способ сделать это? Я рад кодировать все это на PHP, но я просто не могу понять, как это сделать.

Есть ли какой-то способ (не говоря уже об именах папок по-разному), что у папок и файлов есть свойства, которые я могу использовать здесь?

    Поскольку у вас есть требовательные требования к разрешению, вы можете реализовать структуру, похожую на унифицированный подход UNIX к разрешениям на файлы. Каждый файл или папка должен иметь владельца, группу и строку разрешений, которая выглядит как «755».

    Первая позиция строки разрешения относится к владельцу файла или каталога. Число 4 соответствует привилегиям чтения, 2 означает права на запись, а 1 означает права на выполнение. Разрешение является кумулятивным, поэтому разрешение 7 в первом столбце (4 + 2 + 1) означает, что владелец имеет права на чтение, запись и выполнение.

    Второй столбец относится к группе. В этом случае члены группы могут читать (4) и выполнять (1) (4 + 1 = 5).

    Третья колонка относится ко всем, кто не является владельцем или членом группы. Эта позиция известна как «мир» или «другой». В этом примере «другие» пользователи также имеют права на чтение (4) и execute (1).

    После создания столбцов владельца, группы и разрешений для каждого файла / каталога вам нужно будет создать таблицу «groups» и таблицу для сопоставления пользователей с группами («user_groups»). Затем назначьте каждого пользователя одной или нескольким группам и назначьте владельцам, группе и другим разрешениям каждую папку (и файл, если необходимо).

    Для получения дополнительной информации о файловых системах Unix см. Этот учебник .

    Как насчет создания каких-то базовых unix-подобных разрешений для каждого файла. Я предполагаю, что когда пользователь загружает файлы, они хранятся в базе данных, а не просто свободно загружают в папку и позволяют людям напрямую перейти к ней для загрузки. Добавьте следующие таблицы базы данных:

    • Пользователи. Каждый пользователь получает одну запись и имеет user_id, а также информацию для аутентификации пользователя с паролем, полным именем, электронной почтой и т. Д.
    • Группы – содержит два столбца: group_id и group_name
    • UserGroups – содержит два столбца: user_id и group_id. Чтобы добавить пользователя в группу, просто добавьте их user_id и соответствующий group_id в качестве записи в эту таблицу.
    • Файлы – содержит всю информацию, содержащуюся в файле, плюс группу (которая будет доступна группе для доступа к файлам), групповое разрешение и другое разрешение. Эти последние два будут иметь или нет, если у группы есть доступ для просмотра файла и есть ли у каждого разрешение на доступ к нему, соответственно.

    Затем каждый пользователь может быть добавлен в любую группу, которую вы указали, и, следовательно, имеет права доступа к файлам соответственно. Вы также можете сделать это так, чтобы никто не мог видеть файлы, установив права группы на 0.