У меня есть сервер 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) использует учетную запись «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
Родительский каталог имеет установленный флаг идентификатора группы, таким образом, владелец группы 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 executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664
# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775
я искал хорошее объяснение того, как эти настройки работают, но ничего не могли найти лучше тогда человек smb.conf
, необходимо будет прокрутить немного вниз для тех опций.
В основном, короче говоря полномочия окон не являются тем же как Unix (Linux), и это немного нечетно, как самба отображает полномочия.
После большого метода проб и ошибок это - корректный код для совместного использования dir самбы с помощью групп Unix и SGID. Если пользователь соединяется анонимно, он получает r/o, если он входит в систему и является членом присвоенной группы, он получает r/w.
у меня есть группа, названная 'администраторским' набором как основная группа пользователям с полномочиями записи, все остальные получают права только для чтения.
я вынуждаю пользователя никому, таким образом, различные люди, работающие над теми же файлами, не вмешиваются друг в друга.
я установил chmod 2755 на общем каталоге, таким образом, это наследовало созданные каталоги с той же группой 'администратор'
$ chmod -R 2755 /home/shares/test
Проверка, если все хорошо:
$ stat /home/shares/test
Access: (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 неправильных директивы, таким образом, я совместно использую зафиксированную конфигурацию здесь. В самбе, чем меньше директив Вы определяете, тем лучше она работает.
Существует очень похожая проблема при соединении от другого Unix / Linux / OSX / устройства MacOS: все настройки проигнорированы, если Вы не указываете
[global]
unix extensions = no
И подключение с smb://<serverhost>
вместо cifs://<serverhost>
.
У меня была та же проблема, но все как директивы маски не сделало работа для меня (Samba 4.3.11):
create mask = 0664
force create mode = 0664
directory mask = 02775
force directory mode = 02775
единственная опция, которая работала, находилась под [глобальным] разделом или разделом доли:
inherit permissions = yes
Просто изменение вся папка и полномочия файла к Вашей потребности, таким образом, будущие папки и файлы наследуют те же полномочия.
Here add this code to the sudo nano smb.conf
and restart sudo service smbd restart and access from another local PC/computer using connect with smb://<serverhost> to create or edit files/folder html is folder name
[html]
comment = admin access
path = /var/www/html
browsable = yes
guest ok = no
writable = yes
valid users = @admin
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775