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

13

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 tem o sinalizador set group id, assim o proprietário do grupo sambashare. A idéia é que tanto os usuários do samba quanto os usuários do servidor pertençam ao grupo sambashare e, assim, possam editar, excluir e criar arquivos e diretórios. No entanto, como as pastas criadas não têm 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 a remoção da máscara de diretório, force o modo de diretório, o modo de segurança de diretório e o modo de segurança do diretório force, mas os comportamentos ainda permanecem. Arquivos e pastas recém-criados não têm 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?

    
por Zaz 22.01.2012 / 21:20

4 respostas

17

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 man smb.conf

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

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

    
por Panther 23.01.2012 / 07:04
7

Depois de muita tentativa e erro, este é o código correto para compartilhar o samba dir usando grupos SGID e unix. Se o usuário se conectar anonimamente, ele recebe o r / o, se ele entrar e for um membro do grupo designado, ele receberá r / w.

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

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

Eu configurei o chmod 2755 no diretório compartilhado, então ele herda os diretórios criados com o mesmo grupo 'admin'

$ chmod -R 2755 /home/shares/test

Verificando se tudo está bom:

$ 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 a configuração fixa aqui. No samba, quanto menos diretivas você especificar, melhor funcionará.

    
por Andrius K 17.05.2014 / 06:46
2

Há um problema muito semelhante ao se conectar de 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 smb://<serverhost> em vez de cifs://<serverhost> .

    
por Erik Carlseen 17.08.2016 / 03:55
1

Eu tive o mesmo problema, mas tudo como as diretivas de máscara não funcionaram 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 foi na seção [global] ou de compartilhamento:

 inherit permissions = yes

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

    
por Medox 06.03.2017 / 18:22