Я пишу сценарий загрузки php-файлов для проекта – я видел все прекрасные источники с открытым исходным кодом там, но я решил сделать свое, поскольку у меня есть уровень прав доступа пользователей, которые я не могу найти в любом месте.
Так вот что я пытаюсь сделать:
Первоначально я решил сделать решение mysql, где каждая папка имеет идентификатор, а при создании папки вы указываете группы, которым разрешено просматривать эту папку, – но это не похоже на самое изящное решение.
Может ли кто-нибудь предложить теоретический способ сделать это? Я рад кодировать все это на PHP, но я просто не могу понять, как это сделать.
Есть ли какой-то способ (не говоря уже об именах папок по-разному), что у папок и файлов есть свойства, которые я могу использовать здесь?
Поскольку у вас есть требовательные требования к разрешению, вы можете реализовать структуру, похожую на унифицированный подход UNIX к разрешениям на файлы. Каждый файл или папка должен иметь владельца, группу и строку разрешений, которая выглядит как «755».
Первая позиция строки разрешения относится к владельцу файла или каталога. Число 4 соответствует привилегиям чтения, 2 означает права на запись, а 1 означает права на выполнение. Разрешение является кумулятивным, поэтому разрешение 7 в первом столбце (4 + 2 + 1) означает, что владелец имеет права на чтение, запись и выполнение.
Второй столбец относится к группе. В этом случае члены группы могут читать (4) и выполнять (1) (4 + 1 = 5).
Третья колонка относится ко всем, кто не является владельцем или членом группы. Эта позиция известна как «мир» или «другой». В этом примере «другие» пользователи также имеют права на чтение (4) и execute (1).
После создания столбцов владельца, группы и разрешений для каждого файла / каталога вам нужно будет создать таблицу «groups» и таблицу для сопоставления пользователей с группами («user_groups»). Затем назначьте каждого пользователя одной или нескольким группам и назначьте владельцам, группе и другим разрешениям каждую папку (и файл, если необходимо).
Для получения дополнительной информации о файловых системах Unix см. Этот учебник .
Как насчет создания каких-то базовых unix-подобных разрешений для каждого файла. Я предполагаю, что когда пользователь загружает файлы, они хранятся в базе данных, а не просто свободно загружают в папку и позволяют людям напрямую перейти к ней для загрузки. Добавьте следующие таблицы базы данных:
Затем каждый пользователь может быть добавлен в любую группу, которую вы указали, и, следовательно, имеет права доступа к файлам соответственно. Вы также можете сделать это так, чтобы никто не мог видеть файлы, установив права группы на 0.