LINUX.ORG.RU
ФорумAdmin

[proftpd] хитрое разграничение доступа к каталогам

 


0

2

Имеется proftpd с кучей виртуальных пользователей, которые авторизуются через БД. У каждого юзера на диске есть домашний каталог вида /path/to/home/vasya. В конфиге юзерам разрешен доступ только в свой домашний каталог, остальное закрыто.

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

Нужно пользователям давать читать эти данные, причем каждому юзеру - индивидуальный набор прав на каталоги. Например:
Васе дать доступ в dir1, dir2, dir3 (ко всем файлам в этих каталогах);
Пете - к каталогам dir2 и dir5;
Мише доступа не давать совсем.

Права доступа меняются по запросу + раз в сутки по крону.

Пока вижу два подхода, оба светят нехилым геморроем:
1) разруливать права через конфиг proftpd. Не особо сложно, но я не знаю, как он будет себя вести с конфигом на несколько мегабайт.
Еще проблема обновлять права на лету: если рестартовать сервер, то подключенные юзеры отвалятся, что не есть красиво; если сигналить ему перечитать конфиг, то уже подключенные юзеры будут продолжать работать со старыми правами, тоже сильно нехорошо.

2) разруливать права через ACL. Придется перенести данные из tmpfs, не смертельно, но неприятно. Кроме того, насколько я знаю, ACL на каталоги не применяются к существующим файлам, придется назначать маску на каталог и обходить все тысячи уже существующих файлов и проставлять каждому права. Еще светят грабли в виде ограничения числа записей в ACL, для ext3 вроде бы 32 штуки максимум. Насчет ext4 не знаю, да и не хочу ее использовать на этой задаче по ряду причин.

Какие еще пути могут предложить уважаемые аналитики ЛОРа?

★★★★★

если всё понял правильно,то можно на баше скрипт набросать. туда вводить юзернэйм и название папки и дать доступ.
например
сккрипт.sh
петя,вася
дир1,дир6

alikhantara
()
Ответ на: комментарий от alikhantara

:) круто

А внутри скрипта, видимо, магия :) Я не спрашиваю про обертки и скрипты, меня интересуют сами механизмы разделения прав. Скриптов у меня уже вагон, их как раз нужно доделать под новую задачу.

nu11 ★★★★★
() автор топика

>Придется перенести данные из tmpfs

Включи в ядре CONFIG_TMPFS_POSIX_ACL - и не надо никуда ничего переносить.

Кроме того, насколько я знаю, ACL на каталоги не применяются к существующим файлам


а inherit не поможет?

Еще светят грабли в виде ограничения числа записей в ACL, для ext3 вроде бы 32 штуки максимум


тут хз, ибо сам ACL не внедрял, только видел уже рабочие решения

Pinkbyte ★★★★★
()

и все-таки я считаю что в твоем случае(особенно если рестартить proftpd не хочется) лучше таки внедрить ACL

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

>Включи в ядре CONFIG_TMPFS_POSIX_ACL - и не надо никуда ничего переносить.

и сколько записей оно держит? Мне в перспективе может понадобится до 10к, боюсь, не вытянет ни одна ФС :)

а inherit не поможет?

ну так он только на новые файлы подействует, все равно для уже существующих тысяч файлов придется проставлять индивидуально

anonymous
()
Ответ на: комментарий от Pinkbyte

>особенно если рестартить proftpd не хочется

рестартовать придется только раз в сутки, не смертельно

лучше таки внедрить ACL

меня несколько пугает перспектива прописывать права на десятки тысяч файлов и поддерживать их в актуальном состоянии :) В случае tmpfs еще и непонятно, сколько дополнительной памяти это потребует

Кроме того, известные мне ФС в плане количества записей в ACL сильно ограничены. Если подскажешь ФС, держащую хотя бы 10к записей (или лучше 100к) - буду благодарен.

Пока пожалуй остановлюсь на варианте с конфигом фтп-сервера. Сэмулирую несколько тысяч пользователей, посмотрю, как будет себя вести с таким толстым конфигом. Если будет шибко тупить, поковыряю ACL

anonymous
()
30 декабря 2011 г.

{v yfhbcjdfkfcm ghj,ktvrf Есть каталоги a, b, c владельцы соответвующие a,b,c. К каталогам и файлам через aclданы доступы user1 user2 они могут заливать удалять файлы но есть проблема пользователь user1 не может переписать файл user2 , даже если есть acl rwx для пользователя user1, но может удалить. И я не пойму уже куда копать

disel
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.