Я искал около 6 часов, пытаясь настроить сервер samba (версия 4.6.7), но застрял там, где мои пользователи не могут создавать файлы с разрешениями -rw-rw----
.
Во-первых, позвольте мне объяснить мою конечную цель ( может быть, есть более простые решения, чем то, над чем я сейчас работаю, если так, скажите мне ): я хочу иметь 1 общий ресурс, который доступен без аутентификации, 1 общий доступ доступен только пользователю "foo", а 1 общий доступ доступен только пользователю "bar".
Вот что я сделал до сих пор: я создал пользователей UNIX "main", "foo" и "bar", и все они в группе UNIX "smbusers". Я также добавил пользователя "nobody" в группу "smbusers". Затем я создал ресурсы в /tmp/testshare
со следующими разрешениями:
> ls -la /tmp/testshare
drwxrws--- 5 main smbusers 4096 Dec 24 17:29 .
drwxrwxrwt 12 root root 4096 Dec 24 17:28 ..
drwxrws--- 2 main smbusers 4096 Dec 24 17:29 bar
drwxrws--- 2 main smbusers 4096 Dec 24 17:29 foo
drwxrws--- 2 main smbusers 4096 Dec 24 17:28 Public
Вот мои конфиги в smb.conf
:
[global]
server string = %h server (Samba, Ubuntu)
server role = standalone server
os level = 20
workgroup = WORKGROUP
writeable = yes
security = user
map to guest = bad password
force user = main
force group = smbusers
create mask = 0660
force create mode = 0660
directory mask = 0770
force directory mode = 0770
encrypt passwords = yes
unix password sync = yes
passdb backend = tdbsam
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
pam password change = yes
obey pam restrictions = yes
panic action = /usr/share/samba/panic-action %d
max log size = 1000
log file = /var/log/samba/log.%m
dns proxy = no
socket options = TCP_NODELAY
[Public]
path = /tmp/testshare/public
guest ok = yes
[bar]
path = /tmp/testshare/bar
valid users = bar
[foo]
path = /tmp/testshare/foo
valid users = foo
ОБНОВЛЕНИЕ : сейчас из Windows, если я создаю файлы в качестве гостя (так называемый "nobody: nogroup"), файлам присваиваются правильные разрешения, как я их установил, но как только я подключаюсь к любой учетной записи, "foo" или "bar" , он отказывается устанавливать права на запись для группы (или даже для кого-либо, как я пытался позже с create mask = 0222
):
#I created these two without authenticating myself
> ls -lA /tmp/testshare/public
-rw-rw---- 1 main smbusers 0 Dec 24 19:43 New Text Document.txt
drwxrwx--- 2 main smbusers 4096 Dec 24 19:43 New Folder
#I created these two after I succesfully authenticated myself as "foo".
> ls -lA /tmp/testshare/public
-rw-r----- 1 main smbusers 0 Dec 24 19:43 New Text Document.txt
drwxr-x--- 2 main smbusers 4096 Dec 24 19:43 New Folder
Как вы можете видеть, как только я аутентифицировался, он отказывается дать разрешение на запись для группы, поэтому я не могу редактировать файлы из Windows.
Что мне нужно изменить, чтобы заставить его работать как положено? Я подозреваю, что учетные записи настроены неправильно, но я не вижу, что я делаю неправильно.
Примечание: я должен также упомянуть, что папка testshare
, которую я использовал для своих тестов, находится на диске, на котором работает мой Ubuntu Server 17.10 , и моя реальная установка будет использовать внешний диск, смонтированный в NTFS-3g.
ОБНОВЛЕНИЕ2 : я попробовал ту же самую настройку на моем внешнем диске, установленном в ntfs-3g, и все работает как ожидалось. Хотя мне все еще любопытно узнать, почему он не работал в моей папке /tmp/testshare
...