У меня есть сервер 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 сопоставляет разрешения.
После долгих проб и ошибок это правильный код для совместного использования каталога samba с использованием SGID и unix-групп. Если пользователь подключается анонимно, он получает r / o, если он входит в систему и является членом назначенной группы, он получает r / w.
У меня есть группа с именем "admin", установленная в качестве основной группы для пользователей с правами на запись, все остальные получают права только на чтение.
Я никому не навязываю пользователя, поэтому разные люди, работающие с одними и теми же файлами, не мешают друг другу.
Я установил chmod 2755 в общий каталог, поэтому он наследует созданные каталоги с той же группой "admin"
[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, чем меньше директив вы указываете, тем лучше это работает.
Здесь добавьте этот код в sudo nano smb.conf
и перезапустите службу sudo smbd перезагрузите и получите доступ с другого локального ПК / компьютера, используя connect with smb://<serverhost> для создания или редактирования файлов / папок html - это имя папки
[html]
комментарий = доступ администратора
путь = /var/www/html
доступен для просмотра = да
гость в порядке = нет
доступен для записи = да
действительные пользователи = @admin
создать маску = 664
принудительный режим создания = 664
защитная маска = 664
принудительный режим безопасности = 664
маска каталога = 2775
принудительный режим каталога = 2775
маска безопасности каталога = 2775
принудительный режим безопасности каталога = 2775