LINUX.ORG.RU
решено ФорумAdmin

и снова права доступа [acl]

 


0

0

Помогите советом, совсем запутался уже...

Поставил ACL + eiciel на Ubuntu 9.10 , настроил права доступа, научил новые файлы наследовать права папки благодаря:

find /path/to/directory -type d -exec chmod g+s '{}' \;

Но вот теперь встал вопрос, как выкрутится в таком случае, если юзер заливает файл в папку, НО потом не должен иметь возможности его удалить или изменить. (пойдет вариант и с не возможностью его открыть, после загрузки)

ЗЫ: Гугл изрыл на вопросы наследования и распределения прав доступа. Понял, что Selinux лучше чем acl, но не осилил пока.

Если в рамках классического unix - завести пользователя uploader с доступом в каталог назначения, дать поработать простому пользователю в контексте uploader для заливки файлов в этот каталог (например через sudo). Сам пользователь може не иметь туда прав. Всё это можно автоматизировать через самописный скрипт заливки - внутри с использованием sudo -u uploader действие и раздачу прав на этот скрипт в /etc/sudoers. Чисто acl|posixправами это не сделать за исключением варианта когда пользователь имеет права на запись в каталог, но работает с umask 777, тогда созданный им файл доступен только root.

tux2002
()

ЗЫ: Гугл изрыл на вопросы наследования и распределения прав доступа. Понял, что Selinux лучше чем acl, но не осилил пока.

Грустный вывод.

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

Хм..Принципе то решение, но опять костыли.. =( буду думать, спасибо.

ЗЫ: если подскажешь по selinux будет радостней :) я просто сколько не копал, под убунту все банально - apt-get install selinux, а дальше никто не разжевал как его настраивать... на ночь глядя покурил маны, но как-то безрезультатно. =\

alexrett
() автор топика
Ответ на: комментарий от tux2002

хех, да не, решение то нормальное! :) Просто в рамках поставленной серверу задачи это выглядит как костыль (для конечного пользователя) Там просто картина такая, что есть некий терминальный сервер, с файло помойкой, жестко ограниченной по доступам внутри себя. И вот вроде ACL все смог разрулить, но вот с удалением и изменением файлов встал вопрос. А писать, какие либо, скрипты - будет уже лишний геморой для админа. Конечно, если решения другого не найдется, то он мягко пойдет на те слова, что на заборах пишут :) Но все же хочется в рамках более простого решения решить...

Хотя вот кстати по совету AnyKey, почти годный результат вышел, правда с флагом:

chattr -a /path/to/directory

сейчас попробую с нуля все развернуть, надеюсь заработает.

alexrett
() автор топика

Вообщем я не понял ПОЧЕМУ, НО работает после таких манипуляций:

Создаю папку. Чрез ACL выставляю нужные её атрибуты. Далее:

sudo chattr +i /path/to/directory
sudo chattr -i /path/to/directory
sudo chattr +a /path/to/directory
sudo chattr -a /path/to/directory
sudo chattr +a /path/to/directory

Да-да, бред какой-то, НО после этих команд, разрешенным пользователям можно загрузить файл в папку, он открывается только для чтения и не удаляется!

alexrett
() автор топика
Ответ на: комментарий от bigbit

ругается на не корректный синтаксис использования команды chattr вообще я не совсем понял, что будет результирующим использования этой команды... =(

alexrett
() автор топика
Ответ на: комментарий от sprutos

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

alexrett
() автор топика

не уж то совсем нет решения, кроме как selinux?

перечитал ман про chattr, там ясно написанно:

Для файла с установленным атрибутом `a' разрешено лишь добавлять записи. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.

Но после добавления этого атрибута я таке не могу ничего записать в папку...

Что я не так делаю? =(

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

> вообще я не совсем понял, что будет результирующим использования этой команды... =(

immutable на каждый файл по крону.

Но после добавления этого атрибута я таке не могу ничего записать в папку...

Вообще логично - immutable на директорию запрещает запись в директорию.

А вот в винде дроп-фолдер просто делается - там есть специальный ACL CREATOR-OWNER, которому можно назначить какие угодно права, даже запретить чтение файла после того, как юзер его запишет...

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

Спасибо. Но нашел другое решение на хабре - http://m.habrahabr.ru/post/64868/ подправил скрипт, чтобы менялся владелец и права на запись и получил то, что и нужно было! :)

Всем спасибо, проблема решена!

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