Como definir permissão de escrita com o Samba?

0

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 ...

    
por Amine Kchouk 25.12.2017 / 01:59

0 respostas