Назад | Перейти на главную страницу

Samba, списки управления доступом Windows и нежелательный исполняемый бит

Я настраиваю Samba с поддержкой ACL на сервере Ubuntu 18.04 LTS, и я столкнулся со следующей ситуацией.

Вот smb.conf содержание:

[global]
   # naming
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)

   # networking
   disable netbios = yes
   local master = no
   domain master = no
   preferred master = no

   # domain accounts
   security = ADS
   realm = EXAMPLE.COM
   encrypt passwords = yes
   invalid users = root

   idmap config *:backend = tdb
   idmap config *:range = 70001-80000

   template shell = /bin/bash

   winbind nss info = rfc2307
   winbind use default domain = yes
   winbind rpc only = yes
   winbind cache time = 10

   vfs objects = acl_xattr
   map acl inherit = yes
   acl group control = yes
   store dos attributes = no

   # logging
   log file = /var/log/samba/log.%m
   max log size = 1000

   # permissions
   create mode = 0644
   directory mode = 0755
   inherit acls = yes
   map archive = no

   # printers
   load printers = no

   # veto files
   veto files = /._*/.DS_Store/

[All Users]
   comment = All Home Directories
   path = /home/EXAMPLE
   browseable = yes
   read only = no
   valid users = @dl_acc_ro @dl_acc_rw

Из macOS Sierra я подключаюсь к общему ресурсу samba с помощью smb://myserver.com/test. Затем я открываю терминал и $ cd /Volumes/test и я наконец создаю файл с $ touch xxx.

Вот результат $ ls -l на моем Mac:

$ ls -l
-rwx------  1 gregory  staff  0 Sep 26 20:00 xxx

А теперь на самом сервере:

$ ls -l
-rwxrwxr-x+ 1 gregory utilisa. du domaine 0 Sep 26 18:00 xxx

И ACL:

$ getfacl /home/EXAMPLE/gregory
getfacl: Removing leading '/' from absolute path names
# file: home/EXAMPLE/gregory
# owner: gregory
# group: utilisa.\040du\040domaine
user::rwx
group::r-x
other::r-x


$ getfacl /home/EXAMPLE/gregory/xxx
getfacl: Removing leading '/' from absolute path names
# file: home/EXAMPLE/gregory/xxx
# owner: gregory
# group: utilisa.\040du\040domaine
user::rwx
user:gregory:rwx
group::r-x
group:utilisa.\040du\040domaine:r-x
mask::rwx
other::r-x

Как видите, обычный файл, созданный touch установлен исполняемый бит. Есть ли способ избежать такого поведения? Я бы хотел, чтобы обычные файлы, созданные с помощью Samba, имели 0644 разрешения.

Для справки, я тестировал на рабочей станции Linux, и она демонстрирует такое же поведение, что заставляет меня поверить, что все это происходит на стороне сервера Samba.

Из Руководство по Samba:

Следовательно, ни один из трех исполняемых битов Unix, присутствующих в файле на общем диске Samba, бесполезен. Однако файлы DOS имеют свои собственные атрибуты, которые необходимо сохранять, когда они хранятся в среде Unix: архив, система и скрытые биты. Samba может сохранить эти биты, повторно используя биты прав доступа к исполняемым файлам на стороне Unix, если это будет предписано. Однако сопоставление этих битов имеет неприятный побочный эффект: если пользователь Windows хранит файл в общей папке Samba, а вы просматриваете его в Unix с помощью команды ls -al, некоторые из исполняемых битов не будут означать то, что вы хотели бы ожидайте от них.

Как это отключить? Следуя инструкции:

Три варианта Samba решают, отображаются ли биты: архив карты, система отображения и скрытая карта. Эти параметры сопоставляют атрибуты архива, системы и скрытия с битами владельца, группы и общего выполнения файла соответственно. Вы можете добавить эти параметры в общий ресурс [data], задав для каждого из них следующие значения:

 [data]
    map archive = no
    map system = no
    map hidden = no

Вы также вызываете отключить исполняемый бит, используя store dos attributes флаг.

Взгляните на различные mask настройки в smb.conf. Например. create mask, directory mask, ...

Далее эти masks могут зависеть от параметров монтирования на клиенте, что также может быть полезно при рассмотрении деталей.