Não é possível obter bit de execução no compartilhamento do Samba que trabalha com o cliente Windows 7

4

Eu mantenho a maioria dos meus arquivos em uma caixa do Ubuntu 14.04 em compartilhamentos do Samba e os acesse de máquinas cliente do Windows 7. Eu tinha tudo isso funcionando com o Ubuntu 11.10 e de alguma forma quebrou isso quando se mudou para 14.04. Existe uma camada extra de indirecção dentro do servidor através do greyhole (jbod storage pooling via Samba), mas é apenas um plugin para o Samba e não altera as permissões.

Problema:

  1. Um EXE é salvo pelo cliente W7 para compartilhamento Samba.
  2. As permissões parecem corretas na linha de comando do servidor
  3. O cliente W7 não pode executar o arquivo (não consigo postar imagem devido à baixa reputação).
  

"O Windows não pode acessar \\ servidor \ Software \ Internet \ WinApps \ Multimídia \ SetupProg.exe. Você não tem permissões para acessar \\ servidor \ Software \ Internet \ WinApps \ Multimídia \ SetupProg.exe."

O Windows vê as seguintes permissões no EXE:

Everyone: Read
root (Unix User\root): Read & Execute, Read, Write, Special
sambashare (Unix Group\sambashare): Read, Write

Eu uso um grupo "sambashare" como um grupo comum para todos os usuários que acessam via compartilhamentos do Samba. Eu tenho bits fixos como visto aqui:

drwsrwsr-x 31 root     sambashare 12288 Apr 25 20:11 ../

Então, eu sempre recebo owner = root, group = sambashare. Não há problemas lá.

Olhando do lado do servidor, vejo:

$ ls -l /mnt/lsi11/shares/Software/Internet/WinApps/Multimedia
lrwxrwxrwx  1 root sambashare    69 Apr 25 16:14 SetupProg.exe -> /mnt/lsi4/gh/Software/Internet/WinApps/Multimedia/SetupProg.exe

$ ls -l /mnt/lsi4/gh/Software/Internet/WinApps/Multimedia
-rwxrw-r--  1 root sambashare 11800240 Apr 25 15:23 SetupProg.exe

O bit de execução do grupo não está sendo definido.

Olhando para o smb.conf para o compartilhamento que tenho (incluindo itens do @Terrance):

[Global]
   wide links = yes
   unix extensions = no
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   wins support = yes
   dns proxy = no
   name resolve order = lmhosts host wins bcast
   log file = /var/log/samba/log.%m
   max log size = 5000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = no
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   printing = bsd
   printcap name = /dev/null
   usershare allow guests = yes

   follow symlinks = yes
   ntlm auth = no
   lanman auth = no
   client ntlmv2 auth = yes
   usershare owner only = no

[Software]
   comment = Software files
   browsable = yes
   path = /mnt/lsi11/shares/Software
   read only = no
   valid users = user1 user2
   guest ok = no
   inherit owner = yes
   inherit permissions = yes
   dfree command = /usr/bin/greyhole-dfree
   vfs objects = greyhole

Eu posso definir manualmente o bit de execução do Linux e consertar os arquivos existentes. Qualquer sugestão para onde ir cutucando seria útil.

    
por Matthew Zaleski 26.04.2015 / 03:24

1 resposta

5

Na seção [global] do seu /etc/samba/smb.conf , adicione as seguintes linhas:

[global]

usershare owner only = false
unix extensions = no
follow symlinks = yes
wide links = yes

ntlm auth = no
lanman auth = no
client ntlmv2 auth = yes

Além disso, verifique a maneira como as partições NTFS são montadas no arquivo /etc/fstab . Eu tive que adicionar default 0 0 ao final das minhas montagens NTFS, dessa forma ele abriu todas as permissões para os arquivos serem acessíveis. Eu coloquei um exemplo de como minhas montarias são.

UUID=0A485DBF485DAA69 /media/500GB ntfs default 0 0
UUID=6AAA4323AA42EB61 /media/SGUSB ntfs default 0 0

Espero que isso ajude.

EDITAR: Eu esqueci completamente que este ainda estava aberto, e eu perdi alguma coisa. Como se constata, isso é um bug e pode ser corrigido pelas seguintes linhas:

Workaround:

-- /etc/samba/local.conf
[global]
  acl allow execute always = True
--

Informações podem ser encontradas no relatório de erros aqui .

    
por Terrance 26.04.2015 / 04:53