Eu pesquisei por aproximadamente 6 horas tentando configurar meu servidor de samba (versão 4.6.7), mas estou preso onde não posso fazer meus usuários criarem arquivos com -rw-rw----
permissões.
Primeiro, deixe-me explicar meu objetivo final ( talvez existam soluções mais simples do que as que estou trabalhando atualmente, se for o caso ): desejo ter 1 compartilhamento disponível sem autenticação, 1 partilha apenas acessível pelo utilizador "foo" e 1 partilha apenas acessível pelo utilizador "bar".
Aqui está o que eu fiz até agora:
Eu criei usuários UNIX "main", "foo" e "bar", e eles estão todos no grupo UNIX "smbusers". Eu também adicionei o usuário "nobody" ao grupo "smbusers". Eu criei compartilhamentos em /tmp/testshare
com essas permissões:
> 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
Aqui estão minhas configurações em 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
UPDATE : Agora, no Windows, se eu criar arquivos como convidado (também conhecido como "nobody: nogroup"), os arquivos receberão as permissões corretas que defini, mas assim que Eu me conecto a qualquer conta, "foo" ou "bar", ele se recusa a definir as permissões de gravação para o grupo (ou mesmo para qualquer pessoa, como tentei mais tarde com 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
Como você pode ver, uma vez que eu me autentiquei, ele se recusa a dar permissão de gravação ao grupo, portanto não posso editar arquivos do Windows.
O que eu preciso mudar para que funcione como esperado? Suspeito que as contas não estão configuradas corretamente, mas não vejo o que estou fazendo de errado.
Nota: Eu também devo mencionar que a pasta testshare
que eu estava usando para meus testes está no drive rodando meu Ubuntu Server 17.10 , e minha configuração real vai usar uma unidade externa montada em ntfs-3g.
UPDATE2 : Eu tentei a mesma configuração na minha unidade externa montada no ntfs-3g, e tudo funciona como esperado. Embora ainda esteja curioso para saber por que ele não estava funcionando na minha pasta /tmp/testshare
...