Geralmente, o problema é causado pela ativação de um dos seguintes itens:
-
map archive
(usa unix execute bit for owner) -
map system
(usa o unix execute bit for group) -
map hidden
(usa o unix execute bit para outro) -
inherit permissions
faz com que o samba ignorecreate mask
, etc - também há
inherit acls
, que deve ser padronizado para
"Permissões e Atributos de Arquivos no MS-DOS e Unix" em Capítulo 8. Compartilhamentos de Disco Avançados explica o acima bem.
No entanto, os produtos de escritório da Microsoft causam comportamento estranho e disparam um bug / comportamento inesperado. Mesmo com create mask
e / ou force create mode
definido e evitando a opção de mapear ou herdar acima, vi permissões de execução de grupo configuradas ao editar documentos usando aplicativos do Microsoft Office. Isso não acontece com outros programas, por exemplo edite um arquivo .txt com o bloco de notas e as permissões permanecem normais. O Office não cria apenas arquivos, também mexe um pouco com arquivos temporários, renomeação e permissões.
Depois de muita pesquisa, também pode ser confundido com um tipo de bug Samba POSIX ACL:
- Antigo relatório de erros debian 2007 "samba: interpreta erroneamente o modo de criação com POSIX acls"
- " Comportamento incorreto das ACLs padrão " parece ser o relatório de erros mais recente do samba, mas está tristemente fechado 'RESOLVIDO INVÁLIDO' (prematuramente?).
Comportamento observado no lado do Linux
As ACLs estendidas para um arquivo docx de palavra vazia criado através do menu de contexto do Windows Explorer (ainda não aberto e salvo por palavra)
$ getfacl test.docx
# file: test.docx
# owner: tester
# group: tester
user::rw-
group::rw-
other::---
Depois de salvar via MS word 2016
$ getfacl test.docx
# file: test.docx
# owner: tester
# group: tester
user::rw-
user:tester:rw-
group::rw-
group:tester:rw-
mask::rwx
Ao verificar a configuração do samba, no Ubuntu 16.04 LTS, parece que map archive
está habilitado por padrão, mas isso deve usar o bit de execução do proprietário, não o bit de execução do grupo, então essa não foi a causa no meu caso
$ testparm -s -v 2>&1 | grep 'map archive'
map archive = Yes
Comportamento observado no lado do Windows
Usando o SysInternals Process Monitor e comparando a edição de um arquivo .txt com o notepad.exe em comparação com um arquivo .docx com WINWORD.EXE, a suíte de escritório faz muitos trabalhos criativos criando arquivos temporários, renomeando, etc. notepad.exe, WINWORD.EXE parece mexer nas listas de controle de acesso. Como visto pelo procmon
SetSecurityFile
Information: Group, DACL
Por isso, suspeito que seja por isso que a permissão do grupo UNIX é usada pelos aplicativos do Microsoft Office.
Uma investigação mais profunda exigia a ativação da auditoria de segurança do objeto de arquivo do Windows para ver exatamente o que foi alterado. A ID de evento 4670 mostra as alterações de permissão ~WRD0000.tmp
aplicadas (acho que a palavra usa isso para salvar e recuperar periodicamente se ele falhar).
Object:
Object Server: Security
Object Type: File
Object Name: C:\Users\<user>\Desktop\TestAudit\~WRD0000.tmp
Handle ID: 0xfd0
Process:
Process ID: 0x1ae4
Process Name: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE
Permissions Change:
Original Security Descriptor:
D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-<SID>-1001)
New Security Descriptor:
D:(A;;0x1200a9;;;WD)(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-21-<SID>-1001)
A alteração de permissão em SDDL (Security Descriptor Definition Language) é uma DACL (parte da lista de controle de acesso discricionária) onde aparece uma entrada ACE (Access Control Entry) adicional. ACE (A;;0x1200a9;;;WD)
é adicionado diretamente na frente. Foi assim que interpretei:
-
A;
significa permitir acesso, permaneceu o mesmo -
;
no inheritance -
0x1200a9;
significaFILE_GENERIC_READ | FILE_EXECUTE
ler & executar acesso -
WD
significa o fiduciário "todos"
Posteriormente, o ~WRD0000.tmp
é renomeado para test.docx
, que vi no monitor de processo como uma operação SetRenameInformationFile
. Então, no final test.docx
acaba com algumas das mudanças na ACE que a palavra fez por qualquer motivo.