Как получить разрешение на групповую запись с помощью Samba 4?

У меня есть общий сервер Samba под управлением Ubuntu. После обновления до 14.04 у меня была обновлена ​​Samba с 3 до 4. С тех пор я не могу получить разрешение на групповую запись для моего недавно созданного каталога или файлов.

То, что раньше работало в Samba3, использовало следующие настройки:

security mask = 000
force security mode = 660
directory security mask = 000
force directory security mode = 770
force user = nobody
force group = Domain Users

Эти настройки были удалены в Samba 4 (см. https://wiki.samba.org/index.php/Samba_4.0_Features_added/changed).

Но теперь мои каталоги создаются "drwxr-x--- 2 nobody Domain Users", а мои новые файлы "-rwxr-x--- 1 nobody Domain Users".

Так как же в Samba 4 разрешить моим пользователям создавать и предоставлять с правами на запись новые каталоги и файлы?

Вот мой полный конфиг самбы:

[global]
    workgroup = WORKGROUP
    server string = %h server (Samba, Ubuntu)
    interfaces = 127.0.0.0/8, eth0
    map to guest = Bad User
    obey pam restrictions = Yes
    passdb backend = ldapsam:ldap://ldap
    pam password change = Yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    syslog = 0
    log file = /var/log/samba/log.%m
    max log size = 1000
    load printers = No
    domain master = Yes
    dns proxy = No
    ldap admin dn = cn=root,dc=example,dc=com
    ldap group suffix = ou=Groups
    ldap idmap suffix = ou=Idmap
    ldap machine suffix = ou=Computers
    ldap passwd sync = yes
    ldap suffix = dc=example,dc=com
    ldap ssl = no
    ldap user suffix = ou=People
    usershare allow guests = Yes
    panic action = /usr/share/samba/panic-action %d
    idmap config * : backend = tdb

[CommonShare]
    comment = Common share
    path = /srv/samba/common
    valid users = @myusers
    read only = No
    create mask = 0660
    force create mode = 0770
    directory mask = 0770
    force directory mode = 0770
    inherit permissions = Yes
    inherit owner = Yes

6 ответов

Решение

Чтобы решить проблему, вы можете добавить force user имя пользователя в списке valid users за долю.

В твоем случае:

[Myshare]
...
valid users = @bureau
...

должно быть:

[Myshare]
...
valid users = nobody @bureau
...

Та же самая проблема случилась со мной.

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

sudo setfacl -R -m d:g:family:rwx /mnt/backup

-R = recursive
-m = modify
d: = defaults
g: = group name ("family" in my case) or gid number
rwx = default permissions read write execute for all in group

/mnt/backup каталог (и подкаталоги) для изменения.

Я знаю, что это старая тема, но это может кому-то помочь. Я решил это, установив setgid бит до 2 (вместо 0), поэтому каталоги / файлы создаются с правами записи группы, например

force create mode = 2777 force directory mode = 2777

От: https://linuxconfig.org/how-to-use-special-permissions-the-setuid-setgid-and-sticky-bits

Исследуя эту проблему, я наткнулся на это сообщение списка рассылки Samba:

https://www.spinics.net/lists/samba/msg169260.html

В нем разработчик подразумевает, что Samba полностью игнорирует традиционные разрешения файлов Unix, когда клиент запрашивает разрешения файла. Поэтому, если вы щелкните правой кнопкой мыши файл в Windows и посмотрите его разрешения, он будет отображаться как не имеющий разрешения на групповую запись. Хотя в большинстве случаев это нормально (Windows оставляет за Samba принудительное применение разрешений), он делает файл фактически недоступным для групповой записи, если он в формате Word, поскольку Word проверяет разрешение и переключается в специальный режим только для чтения. если он считает (в данном случае неправильно), что файл недоступен для записи. OpenOffice делает то же самое.

Чтобы обойти эту проблему, вы должны добавить ACL к любому файлу, который вы хотите сделать доступным для групповой записи с помощью определенных программ Windows:

      apt-get install acl # Not installed by default on Debian
setfacl -m 'group:<group-name> :rw' <filename>

Если вы ошиблись в названии группы, setfaclсообщит об этом, как если бы это была синтаксическая ошибка. Пространство перед :rwтребуется для. После успешного выполнения этой команды разрешение на групповую запись будет отображаться для программ Windows, которые его проверяют.

Параметры маски ничего не меняют, даже принудительные параметры не меняют поведения с помощью групповых битов. У меня работал только этот конфиг:

[global]
store dos attributes = yes  (for correct office hidden files)

obey pam restrictions = no  (!!!!)

[shares]
create mask = 7770
directory mask = 7770
force group = [one_group_for_all_shares] 

(ничего критичного, есть параметр valid users, где я группирую пользователей по долям)

Первые четыре параметра были удалены, а не два последних (см.: https://www.samba.org/samba/docs/man/manpages/smb.conf.5.html).

Итак, просто поместите их обратно в файл конфигурации, и это должно решить проблему. Если вы хотите разрешения на запись для пользователей в определенной группе, добавьте write list параметр. Он предоставляет возможность предоставлять разрешения на запись конкретным пользователям или группам.

Вот пример конфигурации, которую я использую, чтобы разрешить создание / изменение файлов всем пользователям, принадлежащим к определенной группе (и только этим пользователям):

[Myshare] writeable = yes path = /shares/office force directory mode = 770 force create mode = 770 force group = bureau valid users = @bureau write list = @bureau,

Другие вопросы по тегам