Como chmodar um arquivo em um link simbólico?

Como chmodar um arquivo em um link simbólico?

Ao criar um link simbólico em um compartilhamento samba de um ponto a outro (na mesma unidade), o arquivo que contém o link simbólico fica confuso em outros clientes, mas não no cliente original.

Por exemplo, no cliente que faz o link, os links simbólicos funcionam perfeitamente e são reconhecidos pelo SO original, mesmo após a remontagem:

lrwxrwxrwx 1 g g       38 Mar 17 11:15 npm2 -> ../lib/node_modules/npm/bin/npm-cli.js

Mas, no servidor ou em outros clientes, o link é um arquivo com conteúdo como este:

XSym
0038
36c91a46c3a5a86837deff259c6d0874
../lib/node_modules/npm/bin/npm-cli.js

... com permissões:

-rwxrw-r-- 1 z z     1067 Mar 17 11:15 npm2

Então... basicamente... isso é algum tipo de erro de montagem, ou algo assim, mas existe alguma maneira de usar o chmod para "meep" no link simbólico original pretendido? Isso ajudaria muito.

Responder1

Não, você não pode usar chmod para alterar o tipo fundamental do arquivo. Mas é um arquivo não por causa de algum bug – é um arquivo porque o servidor Samba o criou como um arquivo, e isso pode ser simplesmente porque o cliente realmenteperguntadopara criar um arquivo com esses conteúdos específicos.

O SMB normal não sabe nada sobre links simbólicos, e o servidor SMB mais comum (Windows) também não oferece suporte a links simbólicos há muito tempo. Como resultado, vários clientes SMB inventaram maneiras de armazenar links simbólicos como arquivos regulares de formato estranho.

O formato específico que você tem é chamadoMinshall + Francêslinks simbólicos, usados ​​pelo macOS e pelo módulo do kernel "cifs" do Linux - se o compartilhamento for montado com a mfsymlinksopção, o Linux reconhece o marcador "XSym" efingeque é um link simbólico para aplicativos do lado do cliente. Portanto, se um cliente usar isso, todos os outros clientes também deverão usar a mesma opção.

Infelizmente, se você quiser terreallinks simbólicos no servidor, você precisará usar SMBv1(também conhecido como "NT1") e certifique-se de que o servidor e o cliente suportem "Extensões CIFS Unix". E observe que isso énãoplanejado para trabalhar com as próximas extensões POSIX SMBv3 - os desenvolvedores do Samba declararam explicitamente que não querem mais que exista a capacidade de criar links simbólicos no lado do servidor (devido a grandes problemas de segurança), e que quando o Samba obtiver suporte para recursos POSIX no SMBv3 ele continuará criando esses "arquivos especiais".


Como uma resposta diferente da pergunta original, pode sertecnicamenteé possível usar ferramentas do tipo "debugfs" para transformar um arquivo em um link simbólico e vice-versa, mas isso depende muito dos componentes internos desse sistema de arquivos específico. (Alguns deles podem armazenar links simbólicos exatamente como arquivos normais, diferindo apenas em bits de tipo... mas outros, como NTFS, podem ter um formato totalmente incompatível.)

Mas isso geralmente é feito apenas ao reparar um sistema de arquivos altamente corrompido, e não como parte da operação normal. E é claro que não adiantará nada se o arquivo "pseudo-link simbólico" original contiver dados no formato MF, já que isso énãoo mesmo formato que seu sistema de arquivos usaria internamente.

informação relacionada