Samba - Crie compartilhamentos de subdiretório com suas próprias permissões

8

Eu tenho um compartilhamento Samba contendo muitas pastas como esta:

share
  - folderA
  - folderB
  - folderC
  - folderD

Existem cerca de 20 usuários acessando esses compartilhamentos. Cada usuário pode ter acesso individual a alguns dos diretórios, por exemplo, Ben pode acessar folderA e folderC, mas não folderB e folderD. Jenny pode acessar a pasta B e a pasta C e assim por diante.

Não quero que os usuários montem cada pasta de que precisam. Eu quero que eles montem a pasta "share", que contém todas as subpastas. O acesso é limitado, definindo as permissões do linux.

Eu criei um grupo para cada subdiretório e adicionei os usuários a esses grupos. O controle de acesso funciona perfeitamente para arquivos existentes. Mas sempre que um usuário cria um arquivo em um subdiretório, ele é negado para qualquer outro usuário que tenha permissão para acesso de leitura / gravação nesse diretório. Para resolver isso, eu brinquei com o mascaramento do samba, mas não consigo fazê-lo funcionar.

Meu Samba conf tem esta aparência:

guest ok = no

[global]
workgroup = WORKGROUP
security  = user
encrypt passwords = yes

[Share]
path        = /var/samba
valid users = @everybody
read only   = no
writeable   = yes

[folderA]
path        = /var/samba/folderA
valid users = @users_folderA
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderA

[folderB]
path        = /var/samba/folderB
valid users = @users_folderB
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderB

[folderC]
path        = /var/samba/folderC
valid users = @users_folderC
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderC

[folderD]
path        = /var/samba/folderD
valid users = @users_folderD
read only   = no
writeable   = yes

create mask          = 770
directory mask       = 770
force directory mode = 770

force group = users_folderD

Então, obviamente, todo usuário está no grupo todo mundo, então eles podem montar o compartilhamento com os subdiretórios. O acesso para cada subdiretório está funcionando perfeitamente bem. Mas sempre que Ben cria um arquivo na pasta C, o arquivo obtém as permissões de arquivo -rwxr - r-- mas deve ser -rwxrwx ---

Acho que os compartilhamentos das pastas individuais não funcionam, pois tentei definir writeable = no e read only = yes para testá-lo. Reiniciei o smbd e o nmbd e remontou o compartilhamento de rede (no Windows 10). Os usuários conseguiram criar arquivos e modificar os próprios.

Isso é executado em um pi de framboesa com raspbian. O disco rígido com os arquivos é formatado como ext4 e montado via fstab.

    
por soner 11.04.2016 / 21:43

1 resposta

5

Tente esta configuração (para seções compartilhadas):

[Share]
path        = /var/samba
valid users = @everybody
force group = +everybody
writeable   = yes
create mask = 0660
force create mode = 0110
directory mask = 0770

[folderA]
path        = /var/samba/folderA
valid users = @users_folderA
force group = +users_folderA
browseable = no

[folderB]
path        = /var/samba/folderB
valid users = @users_folderB
force group = +users_folderB
browseable = no

[folderC]
path        = /var/samba/folderC
valid users = @users_folderC
force group = +users_folderC
browseable = no

[folderD]
path        = /var/samba/folderD
valid users = @users_folderD
force group = +users_folderD
browseable = no

Não esqueça de verificar a configuração e reiniciar o samba:

# testparm
# service smbd restart
# service nmbd restart

Definir permissões:

chown root:everybody /var/samba
chmod 770 /var/samba
chown root:users_folderA /var/samba/folderA
chmod 2770 /var/samba/folderA
chown root:users_folderB /var/samba/folderB
chmod 2770 /var/samba/folderB
chown root:users_folderC /var/samba/folderC
chmod 2770 /var/samba/folderC
chown root:users_folderD /var/samba/folderD
chmod 2770 /var/samba/folderD

Desta forma, o acesso direto a pastas internas não é permitido. Além disso, eles não são visíveis e só podem ser acessados através da pasta pai.

    
por 14.04.2016 / 23:45