Я не могу заставить samba установить надлежащие разрешения для созданных каталогов

У меня есть сервер ubuntu, который совместно использует некоторые папки с помощью samba. Когда клиент создает новую папку или файл, разрешения не устанавливаются в соответствии с настройками в smb.conf.

Мои текущие настройки для определенного общего ресурса:

[share]    path = /mnt/share    browsable = yes    guest ok = no    writable = yes    read only = no    create mask = 0774    directory mask = 0774    write list = netuser

Когда клиент samba (Windows 7 box) использует учетную запись netuser для создания файла или каталога, разрешения становятся

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

Родительский каталог имеет флаг set group id, таким образом, владелец группы sambashare. Идея заключается в том, что как пользователи samba, так и пользователи сервера принадлежат к группе sambashare и, следовательно, должны иметь возможность редактировать, удалять и создавать файлы и каталоги. Однако, поскольку для созданных папок не установлен флаг записи для группы, пользователи сервера не могут создавать новые файлы или папки в этих папках без sudo.

я протестировал добавление и удаление маски каталога, принудительный режим каталога, режим безопасности каталога и принудительный режим безопасности каталога, но поведение по-прежнему остается неизменным. Вновь созданные файлы и папки получают не предполагаемое разрешение 774, а 764 и 754 соответственно.

Что я упускаю из виду? Почему samba не устанавливает правильные разрешения?

Я думаю, вам нужно использовать следующие параметры:

# I changes the permissions to rw-rw-r--# You should be able to change them to 775 if you need the files to# be executablecreate mask = 664force create mode = 664security mask = 664force security mode = 664# I set the SGID flag here as I thought this is what you wanted# You could change to 0775directory mask = 2775force directory mode = 2775directory security mask = 2775force directory security mode = 2775

Я искал хорошее объяснение того, как работают эти настройки, но тогда не смог найти ничего лучшего man smb.conf

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

В принципе, в двух словах, разрешения Windows не совпадают с разрешениями unix (linux), и немного странно, как samba сопоставляет разрешения.

У меня была такая же проблема, но все, как директивы mask не сделал работай на меня (Samba 4.3.11):

 create mask = 0664 force create mode = 0664 directory mask = 02775 force directory mode = 02775

Единственный вариант, который работал, был в разделе [глобальный] или общий доступ:

 inherit permissions = yes

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

После долгих проб и ошибок это правильный код для совместного использования каталога samba с использованием SGID и unix-групп. Если пользователь подключается анонимно, он получает r / o, если он входит в систему и является членом назначенной группы, он получает r / w.

У меня есть группа с именем "admin", установленная в качестве основной группы для пользователей с правами на запись, все остальные получают права только на чтение.

Я никому не навязываю пользователя, поэтому разные люди, работающие с одними и теми же файлами, не мешают друг другу.

Я установил chmod 2755 в общий каталог, поэтому он наследует созданные каталоги с той же группой "admin"

$ chmod -R 2755 /home/shares/test

Проверка, все ли в порядке:

$ stat /home/shares/testAccess: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

Соответствующая часть /etc/samba/smb.conf:

[test]        comment = test        path = /home/shares/test        force user = nobody        read only = No        create mask = 0664        force create mode = 0664        directory mask = 02775        force directory mode = 02775

Этот пост навел меня на правильный путь, но testparm выявил 4 неправильные директивы, поэтому я делюсь здесь исправленной конфигурацией. В samba, чем меньше директив вы указываете, тем лучше это работает.

Существует очень похожая проблема при подключении с других устройств Unix / Linux / OSX / macOS: все настройки игнорируются, если вы не укажете

[global]unix extensions = no

И соединитесь с smb://<serverhost> вместо cifs://<serverhost>.

 Здесь добавьте этот код в sudo nano smb.conf
и перезапустите службу sudo smbd перезагрузите и получите доступ с другого локального ПК / компьютера, используя connect with smb://<serverhost> для создания или редактирования файлов / папок html - это имя папки 

 [html]
   комментарий = доступ администратора
   путь = /var/www/html
   доступен для просмотра = да
гость в порядке = нет
доступен для записи = да
действительные пользователи = @admin
   создать маску = 664
   принудительный режим создания = 664
   защитная маска = 664
   принудительный режим безопасности = 664
   маска каталога = 2775
   принудительный режим каталога = 2775
   маска безопасности каталога = 2775
   принудительный режим безопасности каталога = 2775