Как получить разрешение на групповую запись с помощью 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
,