Непростая задачка (разграничение прав по папкам)

Статус
В этой теме нельзя размещать новые ответы.

RobbeR

Guest
Непростая задачка (разграничение прав по папкам)

Задача заключается в следующем:
Есть пользователи, параметры которых храняться в БД.
Есть много директорий.
Надо разграничить доступ пользователей к директориям.
Т.е. разрешить, одним пользователям зайти, например, в директории
http://site.ru/lib/a/
http://site.ru/lib/b/
http://site.ru/lib/c/
другим в
http://site.ru/lib/c/
http://site.ru/lib/d/
http://site.ru/lib/e/
третьим в
http://site.ru/lib/a/
http://site.ru/lib/e/
http://site.ru/lib/f/
http://site.ru/lib/g/
http://site.ru/lib/h/
четвёртым в
http://site.ru/lib/i/
http://site.ru/lib/j/
и т.п.
 

Фанат

oncle terrible
Команда форума
php не имеет никакого контроля над файловой системой сервера.
т.е. средствами PHP ограничить доступ к директории невозможно
 

RobbeR

Guest
Может сам PHP не имеет средст, но возможно у него есть средства взаимодействия с сервером (апачи), который как раз имеет возможности контроля над доступом из вне, например с помощью .htaccess (.htpasword)...
 

Фанат

oncle terrible
Команда форума
есть.
файл .htaccess (.htpasword) - это обычный текстовый файл.
ты можешь записать туда всё, что хочешь, с помощью команд fopen и fwrite
 

RobbeR

Guest
У меня была идея решить эту задачу следующим образом (незнаю насколько это реально) :
Для каждой папки завести логин и пароль (с помощью .htaccess и .htpasword),
Разместить за пределами этих директорий скрипт,
И потом, когда пользователь заходит в скрипт (указывая желание перейти в какую либо директорию) PHP в соответствие с параметрами пользователя решает пускать его туда или нет.
Если пускать, то PHP должен какимто образом сообщить серверу чтоб он его пустил.
Например, сменив имя пользователя, на другое имя, которое имеет доступ (прописано в .htpassword'e).
Возможно ли такое?
 

Фанат

oncle terrible
Команда форума
имя и пароль ввести за пользователя невозможно
 

Фанат

oncle terrible
Команда форума
файл .htaccess (.htpasword) - это обычный текстовый файл.
ты можешь записать туда всё, что хочешь, с помощью команд fopen и fwrite

-~{}~ 13.11.05 17:42:

только пароль и логин ему всё равно придётся вводить.
я думаю, это небольшая проблема
 

Popoff

popoff.donetsk.ua
php не имеет никакого контроля над файловой системой сервера.
т.е. средствами PHP ограничить доступ к директории невозможно
Тю %) А я, вообще, подумал, что те ссылки, которые автор привел в своем вопросе, являются ЧПУ и все ссылаются на один скрипт, в который путь передается параметром :)
 

alekciy

Новичок
RobbeR
Деведись это делать мне, я бы пожалуй сделал web интерфейс и скрипт который бы производил листинг директорий, создавал ссылки на файлы/папки, а так же отслеживал права доступа. У пользователя нет прав не доступ в данную директорию, то ссылка на неё не работа бы.

Хотя смотря для чего тебе нужно это разграничение прав. Может быть окажеться так, что мой способ окажеться не оптимальным.
 

RobbeR

Guest
Автор оригинала: alekciy
У пользователя нет прав не доступ в данную директорию, то ссылка на неё не работа бы.
А как бы ты её (ссылку) закрыл?
 

Фанат

oncle terrible
Команда форума
он имеет в виду не выводить ссылку вовсе
что, конечно же, не решает проблему совершенно.

ты скажи - что у тебя за контент в этих каталогах?
 

RobbeR

Guest
Это электронная библиотека. Создавалась не мной.
Просто набот html'ок (с картинками) связанных между собой, или html'ка со ссылкой на архив (в этой же директории).
Архир уже с помощью пхп просто не спрячешь.
Переделывать всю библиотеку тоже не хочется.
Писать заумные скрипты, которые позволяют спрятать библиотеку за пределом видимости и с помощью пхп выдавать страницу по запросу тоже не хочется.

Была надежна на средства сервера, но она чувствую обламалась...
 

alekciy

Новичок
>>он имеет в виду не выводить ссылку вовсе
В точку. Директория, к которой у данной учетной записи нет права на доступ просто будет выводиться просто как тест, а не как сслылка.

>>что, конечно же, не решает проблему совершенно.
Я не говорю, что это идеальное решение. Но есть лучше?
(кстати, почему это не решит проблему?)
 

RobbeR

Guest
>>кстати, почему это не решит проблему?
Потому что любой пользователь, который имеет доступ к этой директории может запомнить ссылку и передать другому (кто не имеет доступа).
 

alekciy

Новичок
RobbeR
Ну это как реализовать ;-)

Просто перед началом работы пользователю необходимо авторизоваться через скрипт ОДИН раз. Потом он уже будет работать спокойно с этими директориями. В директорию к которой у него нет права доступа он попасть не сможет.
В общем получиться что то вроде настроек Безопастность для NTFS.
В принципе лично я не вижу в задаче ни чего не выполнимого. Кстати уточнение. В директории лежат HTML страницы ссылки которых между собой связаны? А связаны ли страницы ссылками из разных директорий?
 

Фанат

oncle terrible
Команда форума
Просто перед началом работы пользователю необходимо авторизоваться через скрипт ОДИН раз.
именно ЭТО и хочет автор топика.
он И СПРАШИВАЛ - как авторизоваться через скрипт.

RobbeR
делать для каждой папки логин и пароль не получится.
но какая проблема для каждой папки прописать список юзеров?
 

alekciy

Новичок
Фанат
он И СПРАШИВАЛ - как авторизоваться через скрипт.
Учитывая, что скрипта ещё нет, то вопрос конретной реализации ещё рано поднимать. Вот сразу возникает вопрос в каком формате у него БД?
А с авторизацией вообще проблем не вижу. Создал HTML форму с полями имя и пароль, послал запрос скрипту, он сверил полученные данные с теми, что храняться в БД. Если аккаунт верен, поддвердил вход и открыл сессию для пользователя. Ну и все.
А права доступа на директорию можно хранить в обычном текстовом файле (ну например acl.txt, аналогию думаю ясны )) ) в котором указан список допущенных пользователей. Скрип прежде чем откроет директорию для пользователя произведет чтение из того файла.
Таким макаром вполне можно даже организовать доступ не только для конкретных учеток, но даже по группам (Administrator, Power User, User, All).
 

Фанат

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

я запрашиваю файл http://site.ru/lib/h/her.jpg
каким образом твоя суперсистема авторизации помешает его мне вытянуть?
перед вытягиванием я, видимо, должен скачать файл acl.txt, увидеть, что меня в нём не перечислено, и отказаться от своего намерения.
 

crocodile2u

http://vbolshov.org.ru
RobbeR
Почитай доку по Apache. Там есть возможности авторизации, и допуска в определенную папку определенных пользователей или даже определенных групп пользователей.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху