Файлоловушка (хитрая настройка файл-сервера)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Terek
Сообщения: 10
ОС: Slackware Linux

Файлоловушка

Сообщение Terek »

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

Средствами Linux делается это не просто, а очень просто с использованием флага режима доступа sticky bit (он же - бит закрепления в памяти). Символическое и восьмеричное представление соответственно t и 1000. Права доступа к файлу с использованием sticky bit выглядят как rwxrwsrwt или 1777.

Правим конфиг smb.conf:

[priem_galob_ot_naselenya]
comment = Priem galob ot naselenya
path = /u04/priem_galob_ot_naselenya
force create mode = 1777
force directory mode = 1777

writeable = yes
guest ok = yes
browseable = yes
printable = no


Значения force create mode и force directory mode установят нужные нам права доступа к файлам rwxrwxrwt, то есть удалить их сможет только владелец.
Поскольку в современных UNIX-системах sticky bit больше не используется для файлов, а только для каталогов, то самым важным значением является именно force directory mode.

Но фишка в том, что все юзеры в сетке являются nobody, файлы и каталоги создаются с атрибутами владельца nobody:nogroup, и опять же все являются владельцами любого созданного файла.

Поэтому, меняем владельца всех каталогов и файлов каждые 20 минут в папке /u04/priem_galob_ot_naselenya, добавив в /etc/crontab строчку:

*/20 * * * * root /etc/priem_galob_ot_naselenya

в файле /etc/priem_galob_ot_naselenya пишем:

/bin/chown -R root.root /u04/priem_galob_ot_naselenya


Все! Теперь можно в эту папку записывать и редактировать как угодно любую жалобу от населения, но удалить ее сможет только админ :)
Спасибо сказали:
Аватара пользователя
guglez
Сообщения: 394
ОС: GNU/Linux

Re: Файлоловушка

Сообщение guglez »

А что - обнулить содержимое файла не получится?
Спасибо сказали:
Аватара пользователя
Terek
Сообщения: 10
ОС: Slackware Linux

Re: Файлоловушка

Сообщение Terek »

Важно не содержимое жалоб, а количество :drinks:
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Файлоловушка

Сообщение watashiwa_daredeska »

20 минут? Да за 20 минут можно систему снести и поставить заново, не то что файлы какие-то погрохать. find /mnt/server/priem_galob_ot_naselenya -type f |xargs rm -f отработает в локальной сети за секунды и погрохает все, до чего сможет дотянуться. Ставится на ежеминутный запуск в cron и вуаля -- останетесь без жалоб.
Спасибо сказали:
Аватара пользователя
guglez
Сообщения: 394
ОС: GNU/Linux

Re: Файлоловушка

Сообщение guglez »

Может быть будет проще отслеживать создание новых файлов через средства, описанные тут - http://www.ibm.com/developerworks/ru/libra...tify/index.html ? Как только файл создадут, отредактируют и закроют автоматически дать права только на чтение?
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Файлоловушка

Сообщение Ленивая Бестолочь »

можно с помощью vfs файл вместо удаления куда-нибудь перемещать.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Файлоловушка

Сообщение watashiwa_daredeska »

Чем изобретать страшные костыли, не проще ли ticketing system какую-нибудь поднять? Их навалом всяких разных.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Файлоловушка

Сообщение drBatty »

у меня что-то похожее на proftpd. ИМХО юзеры прекрасно могут качать и с FTP.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

Re: Файлоловушка

Сообщение TuLiss »

Terek писал(а):
20.04.2009 08:51
Поэтому, меняем владельца всех каталогов и файлов каждые 20 минут в папке /u04/priem_galob_ot_naselenya, добавив в /etc/crontab строчку:

*/20 * * * * root /etc/priem_galob_ot_naselenya

в файле /etc/priem_galob_ot_naselenya пишем:

/bin/chown -R root.root /u04/priem_galob_ot_naselenya


Все! Теперь можно в эту папку записывать и редактировать как угодно любую жалобу от населения, но удалить ее сможет только админ :)


Поэтому нужно использовать параметр force group и force user с указанием на что менять и не заниматься велосепедостроением.
P.S А да так в дагонку, стики тут явно то же не нужен, можно использовать нормально ACL, тольк о надо помнить различие между POSIX и WINDOWS ACL.
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:
Аватара пользователя
Terek
Сообщения: 10
ОС: Slackware Linux

Re: Файлоловушка

Сообщение Terek »

TuLiss писал(а):
22.04.2009 13:45
Поэтому нужно использовать параметр force group и force user с указанием на что менять и не заниматься велосепедостроением.


Пишем в smb.conf:
force group = root
force user = root

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

Снова здорово! :crazy:
Спасибо сказали:
Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

Re: Файлоловушка

Сообщение TuLiss »

Terek писал(а):
05.05.2009 14:26
TuLiss писал(а):
22.04.2009 13:45
Поэтому нужно использовать параметр force group и force user с указанием на что менять и не заниматься велосепедостроением.


Пишем в smb.conf:
force group = root
force user = root

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

Снова здорово! :crazy:


У вас, явно что то не то.
Пользователь должен и будет иметь те права, с какими он вошел в систему.
Если он вошел как nobody, он не откроет root.
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:
Аватара пользователя
Terek
Сообщения: 10
ОС: Slackware Linux

Re: Файлоловушка

Сообщение Terek »

TuLiss писал(а):
06.05.2009 13:01
У вас, явно что то не то.
Пользователь должен и будет иметь те права, с какими он вошел в систему.
Если он вошел как nobody, он не откроет root.


Как nobody юзер открывает сетевую папку по умолчанию. Установка параметров force group = root и force user = root на сетевую папку приведет к тому, что юзер будет в этой папке как root.
Спасибо сказали: