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

9

Eu tenho um compartilhamento Samba contendo muitas pastas como esta:

share
  - folderA
  - folderB
  - folderC
  - folderD

Existem cerca de 20 usuários acessando esses compartilhamentos. Todo usuário pode ter acesso individual a alguns dos diretórios, por exemplo, Ben pode acessar a pasta A e a pasta C, mas não a pasta B e a pasta D. Jenny pode acessar as pastas B e 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 linux.

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, é negado a todos os outros usuários com permissão para acesso de leitura / gravação nesse diretório. Para resolver isso, brinquei com o mascaramento do samba, mas não consigo fazê-lo funcionar.

Meu conf Samba é assim:

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 de todos, para que eles possam montar o compartilhamento com os subdiretórios. O acesso para cada subdiretório está funcionando perfeitamente. 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 para as pastas individuais não funcionam porque tentei definir gravável = não e somente leitura = sim para testá-lo. Reinicie o smbd e o nmbd e remonte o compartilhamento de rede (no Windows 10). Os usuários foram capazes de criar arquivos e modificar seus próprios.

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

soner
fonte
Para forçar os direitos de acesso desejados aos arquivos, use a force create mode = 770instrução na folderCseção de sua configuração.
precisa saber é o seguinte
Obrigado, isso realmente não resolveu o problema, mas notei que havia espaços nos caminhos do meu smb.conf real: [folderA] path = / var / samba / alguma pasta com espaços. Resolvi isso encerrando o caminho com "(" / var / samba / alguma pasta com espaços "). As configurações no parágrafo [folderA] só são usadas quando o usuário monta [folderA] diretamente, mas as configurações não são usado quando as montagens de usuários [share] e navega em folderA as configurações do [share] são usados para folderA Como posso ignorar as configurações [share] para folderA sem montar folderA diretamente, mas acessá-lo a partir de [share]..?
soner

Respostas:

5

Experimente esta configuração (para seções de compartilhamento):

[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 se esqueça de verificar a configuração e reiniciar o samba:

# testparm
# service smbd restart
# service nmbd restart

Defina 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

Dessa forma, o acesso direto às 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.

Oleg Bolden
fonte
Obrigado, isso funcionou. Agora, temos outro problema: o Excel 2016 não pode salvar arquivos maiores que 13 KB no Samba. Mas esse é outro tópico. Muito obrigado por ajudar!
soner