воскресенье, 25 сентября 2011 г.

Linux: общие каталоги для локальных пользователей, используем bindfs

Продолжение темы,  рассмотренной в посте:
http://noteasyway.blogspot.com/2011/09/linux.html 

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

Использование bindfs:

Для установки в debian подобных дистрибутивах:

#apt-cache search bindfs

bindfs - mirrors or overlays a local directory with altered permissions

#apt-get install bindfs

Подробная документация по bindfs:

%man bindfs

Замечание. В случае, когда требуются права пользователя root в примерах в начале командной строки используется - #, когда обычный пользователь - %. Для логина суперпользователем:

%su root

или, например для пользователей Ubuntu:

%sudo -i

и для переключения между пользователями:

%su - userA или %su - userB

Создадим общую директорию для нескольких пользователей, например в домашнем каталоге пользователя:

userA%mkdir share

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

userB%mkdir share

Добавим группу groupAB и пользователей userA и userB в эту группу:

#addgroup --system groupAB
#adduser userA groupAB
#adduser userB groupAB

Далее, любым текстовым редактором произведем необходимые настройки в файле /etc/fstab:

bindfs#/home/userA/share  /home/userB/share fuse    \ perms=0775,mirror=@groupAB,group=groupAB  0   0

perm=0775 - права доступа rwxrwxr-x на директории и rw-rw-r-- на файлы;
mirror=@groupAB - владельцем файлов будет являться пользователи из группы groupAB;
group=groupAB - группа для файлов будет groupAB

Для доступа к файлам в каталоге share пользователем userB необходимо выполнить:

#mount /home/userB/share

Для проверки разрешений можно воспользоваться командой:

userB%ls -l share

Как будет видно из вывода, владельцем файлов будет являться пользователь userB и группа установлена в groupAB, что в принципе не очень удобно и можно настройки изменить следующим образом:

#umount /home/userB/share

В файле /etc/fstab, произвести следующие изменения:

bindfs#/home/userA/share  /home/userB/share fuse    \ perms=0755,mirror=@groupAB,group=userB  0   0

perm=0755 - получим права доступа rwxr-xr-x на директории и rw-r--r-- на файлы;
group=userB - группа для файлов будет group, первичная группа пользователя userB;

#mount /home/userB/share

Теперь владелец и группа в общем каталоге будут совпадать. Так же не будет никаких проблем с изменением разрешений на файлы при копировании и перемещении в данный каталог разными пользователями и с разных файловых систем. Пользователь userB сможет читать и изменять файлы в каталоге, который на самом деле находится в домашнем каталоге пользователя userA.

1 комментарий:

  1. Все таки отличительная способность данного метода - не использовать лишних костылей. Нет нужды отслеживать изменения в файловой системе и применять какой-либо скрипт.

    ОтветитьУдалить