Cálculo de máscara de criação de arquivo padrão do Samba

3

Oi eu tenho uma pergunta que eu não pareço encontrar uma resposta relevante. A situação é que eu configurei o servidor samba e tentei criar uma máquina Windows para arquivos e pastas. Tudo funciona como esperado, mas há o pequeno problema que o samba remove x bits do grupo e de outros arquivos. Um código de exemplo simples:

drwx--x--x.   4 root root  4096 Dec 13 20:01 smb
drwxrwx--x. 2 root amikon 4096 Dec 15 22:17 pokus

[pokus]
path = /smb/pokus
public = no
writable = yes
valid users = @amikon

[root@wserver pokus]# ls -l
drwxr-xr-x. 2 vanek amikon 4096 Dec 21 10:14 dir
-rwxr--r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

De muitos experimentos que fiz, entendi que, ao criar uma entrada (arquivo ou dir) do Windows, o samba executa o AND lógico da máscara padrão e os direitos que vêm da máquina do Windows. Esse comportamento pode ser mais ou menos influente usando a criação de máscara e o modo de criação de força (e o outro conjunto para dirs) - funciona como esperado sem nenhum problema.

Eu descobri que o problema de falta de 0011 persiste, usando create mask 755 - os x bits ainda são removidos do arquivo. A única opção é usar o modo de criação de força 755. Depois disso, os bits permanecerão porque os anúncios são exibidos.

Eu v testei outras opções de máscara de criação e parece ser que 0011 do arquivo é removido toda vez. 755, 777, 333 ... então parece que pode ser algum mecanismo de proteção removendo x do grupo e outros impedindo que scripts sejam executados bo nobody mas owner ????

Mas minha pergunta é sobre o exemplo exato acima. Por que há d755 mas -744 como resultado. Onde exatamente a magia de perder 0011 surgiu?

Muito obrigado por quaisquer sugestões.

    
por user203267 21.12.2013 / 11:46

1 resposta

3

A mágica de perder 0011 acontece porque é o comportamento padrão do Samba.

Extrair do documento:

Create mask : The default value of this parameter removes the group and other write and execute bits from the UNIX modes

Default: create mask = 0744

Este é o link: link

Pesquise create mask (S)

Neste doc, a equipe do Samba não explica por que eles escolhem implementar esse comportamento padrão, mas para mim é fácil pensar em um mecanismo de segurança (como você mencionou).

Você pode usar a diretiva inherit permissions = yes para que um novo arquivo herde sua permissão de pasta pai, mas isso não afetará o bit x. Então, no seu caso, isso irá renderizar:

-rwxrw-r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

Além disso, como você disse, para alterar esse comportamento, você terá que definir explicitamente sua própria máscara. Agora, a principal diferença entre "criar" e "forçar criar" é isso:

  • create mask retira as permissões (uma máscara AND)
  • force create mode adiciona-os depois disso (uma máscara OR)

Além disso, create mask não é capaz de lidar com x bits para grupos e outros.

Então, você pode precisar lidar com ambas as diretrizes para alcançar algumas metas.

Vamos tentar algumas amostras:

1) Se você quiser apenas o bit x para o grupo e outros, você terá que combinar:

create mask = 0700 #Remove r bit from group and others 
force create mode = 0711 #Add x bit only to group and others

Resultado: -rwx--x--x 1 kris kris 0 Dec 21 14:20 file.txt

2) Se você quiser os bits rex para o grupo e outros, remova a diretiva create mask (porque o padrão já é 0744) e apenas adicione:

    ;create mask = 0700 #remove r bit from group and others (commented)
    force create mode = 0711 #Add x bit only to group and others

Resultado: -rwxr-xr-x 1 kris kris 0 Dec 21 14:17 file.txt

E assim por diante ...

Espero que ajude você um pouco a entender os comportamentos do Samba.

    
por 05.11.2018 / 22:32