HowTo: Общий каталог на Linux десктопе
Представим ситуацию, на домашнем компьютере установлен Linux. Данным компьютером пользуетесь Вы и Ваша жена. Для этого в системе создано два пользователя, у каждого свои настройки почтовика, свои закладки, свой WM и наконец свои обои. Вроде бы все хорошо и все всех устраивает, но вот есть некий контент, свойственный для десктопа, для которого необходимо организовать общий и главное полный доступ для обоих пользователей. Что тут можно сделать? В голову сразу приходят несколько решений:
1. Установить для общего каталога соответствующий umask;
2. Установить соответствующий default acl;
3. Установить бит SGID.
Хорошо, применили одно из решений, или все сразу. Вроде все работает. Оба пользователя имеют полный доступ ко всему содержимому общего каталога, новый файлы в этом каталоге наследуют его права, но вот Вы скинули в этот каталог фотографии с фотоаппарата. В систему под своим пользователем заходит Ваша жена и решает немного изменить эти фотографии, только вот при сохранении появляется сообщение о недостаточных правах. Оказывается скопированные Вами файлы не наследовали права общего каталога. Почему? Да потому, что утилите cp пофигу на Ваши umask’и и acl’ы. Она копирует файлы с сохранением исходных прав, либо права уменьшаются, все зависит от прав на каталог, куда копируем.
В этой статье я предложу свой способ решения данной проблемы. Нет, способ не красивый и не изящный, потому, вместе с описанием способа, предлагаю Хабрасообществу обсудить этот вопрос и предложить свои решения для организации общего каталога на Linux десктопе.
Необходимые инструменты
Этих инструментов всего два:
1) fam или gamin — сервис мониторинга файловой системы. Что использовать, выбирать Вам, но я рекомендую gamin, потому как fam сам по себе устарел, да и gamin работает стабильней.
2) fileschanged — маленькая консольная утилита, которая по сути является клиентской программой fam или gamin.
Пример использования
Пусть наш подопытный каталог будет ~/Фото. Все действия будем проводить с ним.
Для начала нам нужно создать скрипт/usr/local/bin/script следующего содержания
#!/bin/bash
if [ -d "$2" ]; then
chmod 774 “$2″
elif [ -f "$2" ]; then
chmod 664 “$2″
fi
Этот скрипт будет изменять права на все новые элементы в каталоге ~/Фото. Для файлов rw-rw-r–, для каталогов rwxrwxr-x. Если используете fam, не забудьте запустить fam daemon
/etc/rc.d/fam start
Теперь при помощи fileschanged нужно этот скрипт выполнить.
fileschanged -cCfr -x /usr/local/bin/script ~/Фото &
Вот собственно и все. Теперь fileschsnged будет слушать что говорит fam (gamin) по поводу изменений в каталоге ~/Фото и ко всему новому применять скрипт/usr/local/bin/script.
А как Вы организуете общий каталог?
Написано по мотивам статьи из моего блога
UPD: Еще одно решение подсказал khim . Суть заключается в следующем:
1. Оба пользователя должны быть в разных первичных группах. Так вроде сделано у RedHat. При создании нового пользователя создается одноименная группа.
2. Создаем для обоих пользователей группу family (например).
3. Владельцем общего каталога делаем группу family и устанавливаем права на него 2775.
4. Для gnome, запускаем gconf-editor и в разделе /system/storage/default_options/vfat устанавливаем umask 002. Это значит, что на всех монтируемых устройствах с ФС fat права на файлы будут 664. Как это сделать в kde пока не могу сказать, нет его под рукой.
5. Теперь смело копируем контент в общий каталог. Владельцем этого контента станет группа family (унаследует от каталога), а права останутся 664.
PS. Первый пункт для того, чтобы скопированные файлы с носителя fat в личный каталог были доступны только Вам.
PSS. Все это хорошо, но как быть с CD. Там файлы только для чтнения и umask установить не получиться.
Взято с http://habrahabr.ru

Leave a Reply