it-swarm-pt.tech

Como você faz o samba seguir o link simbólico fora do caminho compartilhado

Este é o servidor Ubuntu 10.04 64 e o samba 3.4.7.

Eu tenho um diretório compartilhado /home/mit/share e um outro /home/temp que eu vinculo ao compartilhado:

ln -s /home/temp /home/mit/share/temp

Mas no Windows, depois de usar a Internet, não consigo abrir S:/temp, mas no Linux é possível acessar /home/mit/share/temp como esperado.

Isso funciona se eu vincular diretórios dentro de /home/mit/share/temp, então acho que o samba está restringindo o salto com um link fora/acima do diretório compartilhado.

EDIT:

Veja também esta pergunta intitulada buntu + versão mais recente do samba, os links simbólicos não funcionam mais no compartilhamento montado no Windows .

Parece melhor colocar unix extensions = no na seção global e follow symlinks = yes e wide links = yes apenas na seção de compartilhamentos, onde você realmente precisa.

O unix extension A flag deve estar na seção global e não nas seções de ações individuais. Mas, por razões de segurança, é melhor usar as outras opções somente onde você precisar, e não globalmente.

65
mit

Editar smb.conf

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Nota: Se você estiver usando uma versão mais recente do samba, o seguinte poderá funcionar para você:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

documentação em follow symlinks e wide links flags: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1

102
Mahesh

Alternativamente às outras respostas, para manter as extensões unix ativadas, é possível usar:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes
11
user1182474

Saudações, tentei colocar isso na configuração para corrigir links simbólicos para Windows na minha instalação, mas não tenho certeza se isso afetará o cliente Windows, caso contrário, segue links simbólicos quando eu me conecto a esta caixa.

[global]                                                                        
unix extensions = no
11
Qiqi

Para permitir que os clientes Samba sigam links simbólicos fora do caminho compartilhado, tudo que você precisa na configuração do Samba é:

[global]
allow insecure wide links = yes
unix extensions = no

[myShare]
wide links = yes

(além do próprio Samba compartilha as definições, é claro). Teoricamente, isso é suficiente para clientes * nix.

NB: A diretiva "follow symlinks" não é necessária, pois o padrão é "yes"

Quanto aos clientes Windows, ainda falta uma configuração para permitir que eles sigam esses links. Para fazer isso:

  1. abrir um Shell do Windows com privilégios de administrador
  2. corre :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. reinicie para recarregar as configurações

Nota: o mesmo resultado pode ser obtido editando o registro do Windows. Veja os links abaixo

fontes :

4
Httqm

Pode ser necessário endereçar mais do que apenas o arquivo de configuração do Samba, se você estiver executando o AppArmor.

Você precisa das seguintes diretrizes em seu smb.conf:

follow symlinks = yes
wide links = yes
unix extensions = no
# No need for "allow insecure wide links" unless you want "unix extensions = yes"

Porém, o AppArmor bloqueia o acesso a partes do sistema de arquivos de acordo com sua própria semântica do conjunto de regras. Portanto, se seu link simbólico no Samba apontasse para um local que o AppArmor iria bloquear, o Samba negaria o acesso.

No meu sistema, o Samba atualiza os perfis do AppArmor no início/parada do serviço, para que eu possa alterar um perfil do AppArmor, mas arrisco o Samba ou outro programa substituí-lo. Em vez disso, decidi criar um compartilhamento inacessível no Samba referenciando o local que continha o destino do link simbólico que eu queria acessar (ainda em smb.conf):

# The following is a hack for AppArmor to allow the path
[share1 for AppArmor] # Or whichever name you choose
    browseable = no
    path = /home # Point to directory or parent directory of the location to access
    read only = yes
    guest ok = no
    valid users = none
0
palswim