Não consigo que o samba defina as permissões apropriadas nos diretórios criados

17

Eu tenho um servidor ubuntu compartilhando algumas pastas usando o samba. Quando um cliente cria uma nova pasta ou arquivo, as permissões não são definidas de acordo com as configurações no smb.conf.

Minhas configurações atuais para um compartilhamento específico:

[share]
    path = /mnt/share
    browsable = yes
    guest ok = no
    writable = yes
    read only = no
    create mask = 0774
    directory mask = 0774
    write list = netuser

Quando um cliente samba (uma caixa do Windows 7) usa a conta 'netuser' para criar um arquivo ou diretório, as permissões se tornam

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

O diretório pai possui o sinalizador de identificação do grupo definido, portanto, o proprietário do grupo sambashare. A idéia é que usuários do samba e usuários do servidor pertençam ao grupo sambashare e, portanto, possam editar, excluir e criar arquivos e diretórios. No entanto, como as pastas criadas não possuem o sinalizador de gravação para o grupo, os usuários do servidor não podem criar novos arquivos ou pastas nessas pastas sem o sudo.

Eu testei a adição e remoção da máscara de diretório, modo de diretório forçado, modo de segurança de diretório e modo de segurança de diretório de força, mas os comportamentos ainda permanecem. Arquivos e pastas recém-criados não recebem a permissão 774, mas sim 764 e 754, respectivamente.

o que estou perdendo? Por que o samba não define as permissões corretas?

Zaz
fonte

Respostas:

19

Eu acho que você precisa usar os seguintes parâmetros:

# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664

# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775

Eu estava procurando uma boa explicação de como essas configurações funcionam, mas não consegui encontrar nada melhor do que o man smb.conf

Você terá que rolar um pouco para baixo para essas opções.

Basicamente, em poucas palavras, as permissões do Windows não são iguais ao unix (linux) e é um pouco estranho como o samba mapeia as permissões.

Pantera
fonte
11
Sim, isso parece ser aproximadamente a mesma página de manual que samba.org/samba/docs/man/manpages-3/smb.conf.5.html que eu olhei, o problema é que não parece importar o que octal valores definidos, ainda recebo as mesmas permissões definidas no arquivo ou na pasta criada.
Zaz
Você definiu todas as opções que eu lhe dei? Nesse caso, atualize sua primeira postagem e, nesse ponto, sugiro que você envie um relatório de bug.
Pantera
11
Ele já dizia .. mas, com inspeção e teste mais detalhados, a adição de 2 às máscaras de diretório corrigia o problema. Muito Obrigado. : D
Zaz 23/01
Fantástico, obrigado por marcar isso como a resposta aceita, pois ajuda outras pessoas com um problema semelhante.
Pantera
A configuração do Samba é excessivamente complexa e muito difícil de entender. Por exemplo, qual é a diferença lógica entre criar força e apenas criar ... não faz sentido. Sua dica é salva-vidas - obrigado!
Matthias Hryniszak 27/02
8

Após várias tentativas e erros, este é o código correto para compartilhar o samba dir usando grupos SGID e unix. Se o usuário se conectar anonimamente, ele recebe R / O, se ele efetua login e é membro do grupo designado, ele recebe R / W.

Eu tenho o grupo 'admin' definido como grupo principal para usuários com privilégios de gravação, todos os outros obtêm direitos somente leitura.

Eu forço o usuário a ninguém, para que pessoas diferentes trabalhando nos mesmos arquivos não interfiram entre si.

Defino o chmod 2755 no diretório compartilhado, para que ele herda os diretórios criados com o mesmo grupo 'admin'

$ chmod -R 2755 /home/shares/test

Verificando se está tudo bem:

$ stat /home/shares/test
Access: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

Parte relevante do /etc/samba/smb.conf:

[test]
        comment = test
        path = /home/shares/test
        force user = nobody
        read only = No
        create mask = 0664
        force create mode = 0664
        directory mask = 02775
        force directory mode = 02775

Este post me colocou no caminho certo, mas o testparm revelou 4 diretivas incorretas, então estou compartilhando configurações fixas aqui. No samba, quanto menos diretivas você especificar, melhor funcionará.

Andrius K
fonte
6

Eu tive o mesmo problema, mas tudo, como diretivas de máscara , não funcionou para mim (Samba 4.3.11):

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

A única opção que funcionou estava na seção [global] ou compartilhamento:

 inherit permissions = yes

Basta alterar todas as permissões de pasta e arquivo conforme sua necessidade, para que futuras pastas e arquivos herdem as mesmas permissões.

Medox
fonte
Estou usando o Samba versão 4.7.6-Ubuntu. E isso está funcionando para mim também.
Andi S.
verdadeira resposta para 4.8.11on freebsd, também :)
jitter
3

Há um problema muito semelhante ao conectar-se a outros dispositivos Unix / Linux / OSX / MacOS: todas as configurações são ignoradas, a menos que você especifique

[global]

unix extensions = no

E conecte-se com em smb://<serverhost>vez de cifs://<serverhost>.

Erik Carlseen
fonte
0
 Here add this code to the sudo nano smb.conf
 and restart sudo service smbd restart  and access from another local PC/computer using connect with smb://<serverhost>  to create or edit files/folder   html is folder name 

 [html]
   comment = admin access
   path = /var/www/html
   browsable = yes
   guest ok = no
   writable = yes
   valid users = @admin
   create mask = 664
   force create mode = 664
   security mask = 664
   force security mode = 664
   directory mask = 2775
   force directory mode = 2775
   directory security mask = 2775
   force directory security mode = 2775
Ghanshyam Nakiya
fonte