Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Samba, ZFS - разобраться с правами  (Прочитано 2269 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Samba, ZFS - разобраться с правами
« : 23 Октябрь 2014, 16:02:21 »
День добрый.
Давненько откладывал этот вопрос на потом, меняя права каждый раз через консоль, но надоело.
Проблема следующая - при заданных правах в smb.conf:
cat /etc/samba/smb.conf | grep mask
directory mask = 0770
create mask = 0770
вновь созданные/отредактированные файлы получают неправильные(?) права для groups:
ls -l
total 12
drwxr-x--- 2 admin tps 2 окт.  23 17:49 123
-rwxrw---- 1 admin tps 0 окт.  23 17:49 123.txt
То есть:
directory mask = 0770 - drwxr-x---
create mask = 0770 - -rwxrw----

Полный конфиг под спойлером:
cat /etc/samba/smb.conf
(Нажмите, чтобы показать/скрыть)

ЗЫ:
Возможна ли более гибкая настройка прав для следующей ситуации?:
- Существует одна общедоступная папка - DATA
- Существуют несколько SMB-пользователей (admin, tps, ivanov), но у всех них одна группа - tps
- Иерархия папок следующая:
В папке DATA лежат еще 2:
ls -l
drwxr-xr-x 17 admin tps 17 окт.  11 11:46 distr
drwxr-xr-x 32 admin tps 32 окт.  23 17:48 tranzit

- DISTR (в эту папку пользователь admin кладет различный дистрибутив, права внутри этой папки должны быть на чтение/выполнение для его группы tps, но с текущими настройками Samba выдаются на чтение/запись)
ls -l distr
drwxr-xr-x 4 admin    tps       4 окт.  11 11:34 Antivirus
drwxr-xr-x 2 admin    tps       8 окт.  11 11:35 Archiver
drwxr-xr-x 6 admin    tps      16 окт.  11 11:35 Backup
.. etc

- TRANZIT (в этой папке лежат с Фамилией (например) пользователей, но пользователь для всех единый - tps)
ls -l tranzit/
drwxrwxr-x 42 tps tps 139 окт.  22 09:30 Иванов
drwxrwxr-x  3 tps tps   6 окт.  23 18:03 Петров
drwxrwxr-x  4 tps tps  17 окт.  22 18:19 Сидоров
Тут Иванов подходит и говорит:
- "Слушай, я там файлик в своей папки положил - буду его обновлять постоянно, нужно, чтобы остальные могли открывать его, но не могли изменять."
Я говорю "ОК", и создаю ему пользователя - ivanov, группу оставляю ту же, на его файл ставлю права на чтение/выполнение для группы, остальные файлы в его папке остаются с правами на чтение/запись.
Но вот каждый раз, как он обновляет файл, права для группы сбрасываются на чтение/запись, и другие сотрудники, открывающие этот файл под пользователем tps могут вносить изменения..
В других папках все пользователи группы tps должны спокойно добавлять/изменять файлы.
« Последнее редактирование: 24 Октябрь 2014, 14:45:25 от insiki »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Samba - разобраться с правами
« Ответ #1 : 23 Октябрь 2014, 18:37:55 »
man smb.conf
force create mode
force directory mode
inherit acls
inherit owner
inherit permissions
« Последнее редактирование: 23 Октябрь 2014, 18:42:34 от ArcFi »

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba - разобраться с правами
« Ответ #2 : 24 Октябрь 2014, 09:36:00 »

inherit acls
inherit owner
inherit permissions
Кажется, то, что нужно! Наследуются списки ACL, создатель и права.
Включил эти опции в smb.conf
cat /etc/samba/smb.conf | grep inherit
inherit acls = yes
inherit owner = yes
inherit permissions = yes
Создаю папку "test" с правами 755 и владельцем admin:tps:
ls -l | grep test
drwxr-xr-x  3 admin tps   4 окт.  24 11:29 test
захожу через SMB под этим пользователем, создаю папку и файл, проверяю:
ls -l test
total 12
drwxr-xr-x 2 admin tps 2 окт.  24 11:29 Безымянная папка
-rwxr--r-- 1 admin tps 0 окт.  24 11:29 Безымянный документ
Владелец унаследован, папка права унаследовала, а документ почему-то нет.

Еще не понял, зачем, если права наследуются от родительского каталога (inherit permissions = yes), нам нужны:
force directory mode (S)
Цитировать
Этот параметр определяет набор разрешений UNIX, которые будут устанавливаться на каталоге, созданном Самбой. Это операция поразрядного ‘ИЛИ’ к битами прав доступа создаваемого каталога. Значение по умолчанию для этого параметра – (восьмеричное) 0000, не будет добавлять никаких дополнительных битов разрешения к созданному каталогу. Эта операция выполняется после того, как к директории применена маска параметра.
Пример ниже для всех созданных каталогов установит разрешения read для ‘group’ и ‘other’, и read/write/execute для ‘user’.

По умолчанию:
force directory mode = 000
 
Пример:
force directory mode = 0755
force create mode (S)
Цитировать
Этот параметр определяет набор разрешений UNIX, которые будут всегда устанавливаться на файле, созданном Samba. При активации параметра будет выполнена операция поразрядного ‘ИЛИ’ ко всем битам прав доступа: к файлу при его создании или изменении прав доступа к нему. По умолчанию этот параметр (восьмеричный) 000.
Настройка этого параметра применит поразрядное ‘ИЛИ’ к файлу после установки маски. Пример данный ниже вынудит для всех созданных файлов установить маску read и execute для ‘group’ и ‘other’, и read/write/execute набор битов для ‘user’.

По умолчанию:
force create mode = 000
 
Пример:
force create mode = 0755
« Последнее редактирование: 24 Октябрь 2014, 09:50:30 от insiki »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Samba - разобраться с правами
« Ответ #3 : 24 Октябрь 2014, 11:37:12 »
insiki, емнип, можно заставить работать, используя перечисленные выше параметры, поиграйте ими.

Если так не получится сделать, то 100% можно реализовать через ACL:
http://help.ubuntu.ru/wiki/access_control_list
У меня сейчас именно так и работает.

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba - разобраться с правами
« Ответ #4 : 24 Октябрь 2014, 14:01:17 »
ArcFi,
Благодарю!

В jabber-конференции задали наводящий вопрос - какая ФС?
Вот похоже в ней-то все и дело, ZFS использую.  :)

Ищу ответ на свой вопрос по связке слов в гугле ZFS Samba ACL, кажется что-то нашел:
$ zfs set aclmode=passthrough vol0/data0
 $ zfs set aclinherit=passthrough vol0/data0
« Последнее редактирование: 24 Октябрь 2014, 14:33:01 от insiki »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14855
  • Я не слышу.
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #5 : 24 Октябрь 2014, 14:56:31 »
insiki,
Цитировать
Вот похоже в ней-то все и дело, ZFS использую.  :)
(Нажмите, чтобы показать/скрыть)
~.o

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #6 : 24 Октябрь 2014, 16:19:33 »
(Нажмите, чтобы показать/скрыть)
У меня программный рейд на ZFS из трёх дисков по 2ТБ, шара забитая на 600 гиг и ежедневные бэкапы в виде снапшотов аж с весны.. =/
« Последнее редактирование: 24 Октябрь 2014, 16:21:36 от insiki »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14855
  • Я не слышу.
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #7 : 24 Октябрь 2014, 17:32:05 »
~.o

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #8 : 25 Октябрь 2014, 12:26:36 »
Вот такая штука сыпится в лог:
[2014/10/25 14:08:56.256499,  0] ../lib/util/modules.c:48(load_module)
  Error loading module '/usr/lib/x86_64-linux-gnu/samba/vfs/zfsacl.so': /usr/lib/x86_64-linux-gnu/samba/vfs/zfsacl.so: cannot open shared object file: No such file or directory
Ну и у Samb'ы отсутствует ACL, вывод smbd -b
--with Options:
   WITH_ADS
   WITH_AUTOMOUNT
   WITH_DNS_UPDATES
   WITH_PAM
   WITH_PAM_MODULES
   WITH_PTHREADPOOL
   WITH_QUOTAS
   WITH_SENDFILE
   WITH_SYSLOG
   WITH_WINBIND
Буду мозговать, чего делать.

« Последнее редактирование: 25 Октябрь 2014, 12:35:15 от insiki »

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #9 : 28 Октябрь 2014, 13:20:57 »
insiki, емнип, можно заставить работать, используя перечисленные выше параметры, поиграйте ими.

Если так не получится сделать, то 100% можно реализовать через ACL:
http://help.ubuntu.ru/wiki/access_control_list
У меня сейчас именно так и работает.
В итоге пришел к предложенной вами реализации через ACL.
sudo apt-get install aclДля ZFS так же необходимо было включить поддержку ACL, ибо без неё "Operation not supported":
sudo zfs set acltype=posixacl poolname

Возник новый вопрос:
Допустим, в папке distr (права rwx,r-x,r-x) мне необходимо обновить версию ПО, старую удаляю, копирую новую (всё через SMB), а права присваиваются те, что указаны в smb.conf (в частности force create mode, force directory mode).
Опять возвращаюсь к тому, что каждый раз нужно права через консоль переназначать?
setfacl -R срабатывает только для папок.

« Последнее редактирование: 28 Октябрь 2014, 13:24:10 от insiki »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #11 : 29 Октябрь 2014, 08:44:44 »
LESS='-p -d,' man setfacl
https://forum.ubuntu.ru/index.php?topic=251982.msg1990542#msg1990542
Да, я забыл указать ключи выше в сообщении, а так - вчера весь день экспериментировал.

Меня смутило следующее:
Установил рекурсивно права по умолчанию для директории distr/test:
sudo setfacl -dR -m u:admin:rwx,g::rx distr/test
Создал через SMB папку и файл в директории distr/test:
ls -l distr/test/
total 12
drwxrwxr-x+ 2 admin tps 2 окт.  29 10:03 123
-rwxrwxr-x+ 1 admin tps 0 окт.  29 10:03 123.txt
В smb.conf указано:
force create mode = 775
force directory mode = 775
Проверил ACL для папки - все ОК, права по умолчанию присутствуют:
getfacl distr/test/123
# file: distr/test/123
# owner: admin
# group: tps
user::rwx
user:admin:rwx
group::r-x
group:tps:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:tps:r-x
default:mask::rwx
default:other::r-x[/spoiler]

Проверил ACL для файла - права по умолчанию отсутствуют (нет записи вида default:...), группе разрешено rwx.
getfacl distr/test/123.txt
[code]# file: distr/test/123.txt
# owner: admin
# group: tps
user::rwx
user:admin:rwx
group::rwx
mask::rwx
other::r-x
Если группу указать явно:
sudo setfacl -bR distr
sudo setfacl -dR -m u:admin:rwx,g:tps:rx,o::rx distr
То вывод в случае с папкой не поменяется:
getfacl distr/test/123
# file: distr/test/123
# owner: admin
# group: tps
user::rwx
user:admin:rwx
group::r-x
group:tps:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:tps:r-x
default:mask::rwx
default:other::r-x
А для файла конкретно для группы "tps" права изменятся на r-x, но просто для group - останутся rwx
getfacl distr/test/123.txt
# file: distr/test/123.txt
# owner: admin
# group: tps
user::rwx
user:admin:rwx
group::rwx
group:tps:r-x
mask::rwx
other::r-x
Если я правильно понял, виновник сему - mask, маска максимальных полномочий, либо включенные force create mode/force directory mode в smb.conf
В принципе, оно работает. Кроме пользователя admin никто переименовать/удалить файл не может.
« Последнее редактирование: 30 Октябрь 2014, 09:13:47 от insiki »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Samba, ZFS - разобраться с правами
« Ответ #12 : 29 Октябрь 2014, 16:21:59 »
Честно говоря, у меня работает нормально и без "force create/directory mode".

Оффлайн insiki

  • Автор темы
  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
Re: Samba, ZFS - разобраться с правами
« Ответ #13 : 30 Октябрь 2014, 09:19:34 »
Честно говоря, у меня работает нормально и без "force create/directory mode".
Мне "force create/directory mode" нужен для того, чтобы файлы создаваемые пользователями одной группы имели по умолчанию права 775. А вот setfacl буду использовать для частных случаев :)

 ls -l "0.ПРОЕКТ"/ | grep Con*
drwxrwxr-x+   4 admin tps        5 окт.  27 15:22 0.Consultant
getfacl "0.ПРОЕКТ/0.Consultant"/
# file: 0.ПРОЕКТ/0.Consultant/
# owner: admin
# group: tps
user::rwx
user:admin:rwx
group::r-x
group:tps:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:tps:r-x
default:mask::rwx
default:other::r-x

 

Страница сгенерирована за 0.061 секунд. Запросов: 24.