
SO: Windows Server 2016
Se eu tiver uma pasta X contendo um ponto de junção para outra pasta Y (na mesma máquina e no mesmo volume). Então, se eu compartilhar X pela rede, um usuário remoto conectado a X será redirecionado para Y?
O caso de uso é que o local/nome da pasta Y muda de vez em quando após a execução de uma tarefa agendada. Mas eu gostaria que os usuários remotos sempre usassem o mesmo nome de compartilhamento de rede (X). Eu poderia atualizar o ponto de junção durante a execução da tarefa.
Existe alguma outra tecnologia com a qual eu possa conseguir isso? Tive algum sucesso com o seguinte método: recrio ou atualizo um compartilhamento de rede chamado X e faço com que ele aponte diretamente para Y. Mas isso só funciona se X for um compartilhamento de nível superior.
Estou procurando uma solução que também funcione no seguinte caso: Seja X um compartilhamento para Y. Então, se Y contiver uma subpasta A, os usuários remotos poderão acessá-la através do caminho de rede X\A. Mas também preciso do caso em que, por meio de um caminho de rede, digamos X\B, os usuários remotos possam acessar um caminho completamente diferente na máquina. Daí a minha ideia de criar um ponto de junção de Y\B para outro caminho. (que usuários remotos acessariam via X\B)
É possível?
Responder1
Sim, o servidor de arquivos SMB seguirá automaticamente as junções de diretório ( mklink /j
) de forma transparente, mesmo se o destino apontar para fora de uma pasta compartilhada. (Testado experimentalmente.)
Por outro lado, o servidor não seguirá links simbólicos ( mklink /d
) – eles serão deixados para o cliente, que também não os seguirá por padrão (e se você habilitar esta opção, o alvo obviamente deverá ser outra pasta compartilhada). Veja a postagem de harrymc para mais informações.
Como terceira opção, no Windows Server você pode criar um compartilhamento como umNamespace DFS, sob o qual você pode ter arquivos regulares e diretórios especiais de "referência" que podem apontar para outro compartilhamento – até mesmo em outro servidor. (Essas referências são sempre seguidas no lado do cliente e são reconhecidas por todas as versões do Windows; libsmbclient; e até mesmo pelo Linux cifs.ko.)
O DFS é provavelmente a opção preferida se a pasta Y precisar ser movida para uma máquina diferente. (Não requer Active Directory, embora a autenticação comum em todos os servidores de arquivos facilite as coisas.)
Responder2
O cliente padrão do Windows é proibir cadeias de links simbólicos.
O comando que controla esse comportamento é fsutil, documentado posteriormente no artigo Comportamento útil.
O comportamento específico que você está procurando é denominado SymlinkEvaluation
. Você pode ver seu valor atual inserindo o comando em um prompt de comando
fsutil behavior query SymlinkEvaluation
. A seguir estão os padrões no meu Windows 10:
Os códigos de comportamento SymlinkEvaluation
têm os nomes
L2L
, L2R
, R2L
e R2R
, significando o seguinte:
L
significa "Local" eR
"Remoto"- O PRIMEIRO
L
ouR
-anteso2
- refere-se à localização do link em si (não ao seu destino)relativo à máquina ACESSO ao link. - O SEGUNDO
L
ouR
-depoisthe2
- refere-se à localização do linkalvo relativo à máquina onde o próprio LINK está localizado.
Por exemplo, configuração SymlinkEvaluation R2L
significa que você pode controlar o acesso aos links:
- localizado em uma máquina remota (
R
) - que apontam para alvos na mesma máquina remota (
L
)
Assim as possibilidades são:
- Links simbólicos locais para locais,
L2L:{0|1}
- Links simbólicos locais para remotos,
L2R:{0|1}
- Links simbólicos remotos para locais,
R2R:{0|1}
- Links simbólicos remotos para remotos,
R2L:{0|1}
onde 0
significa desabilitado e 1
significa habilitado.
O comando que você pode estar procurando é:
fsutil behavior set SymlinkEvaluation R2L:1
Lembre-se de que isso deve ser feito no cliente e não no servidor.
Responder3
Setembro de 2022: As junções no compartilhamento de rede parecem ter parado de funcionar.
https://learn.microsoft.com/en-us/sysinternals/downloads/junction
Última atualização: 19/07/2022
Observação
O Windows não oferece suporte a junções para diretórios em compartilhamentos remotos.
No passado, criei junções no meu servidor de compartilhamento de rede, apontando para uma unidade diferente. Tudo funcionou bem. Faz um tempo que não uso, mas as coisas quebraram.
- No lado do cliente, clicar duas vezes no ícone de junção não produz nenhuma reação – nada aparece ou muda.
- No lado do cliente, "Propriedades" mostra a junção como uma pasta, mas possui 0 bytes e 0 arquivos.
- Clicar com o botão direito no ícone e selecionar "Abrir em uma nova janela" não gera nenhuma reação.
- Nem "Mapear unidade de rede" ou ir diretamente para \server\share funcionou
No lado do servidor, fazer o seguinte não ajudou:
- Configurando um novo compartilhamento para o destino da junção.
- Recomeçando, criando nova junção, novo compartilhamento, resetando aba "Segurança"
Windows 10 Pro 21H2 19044.1889 Pacote de experiência de recursos do Windows 120.2212.4180.0
Parabéns à Grande Microsoft por quebrar outro recurso de produtividade.