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?

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.


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


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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.