Caracteres especiais em nomes de arquivos do Samba

14

Ao veicular arquivos contendo caracteres especiais como "() ?:" no nome do arquivo por meio do Samba, os nomes são transformados em um formato irreconhecível. Por exemplo, um arquivo

my_file:_(important).txt

é exibido como

M43J1E~0.TXT

Existe uma maneira de evitar esse comportamento (sem renomear os arquivos, obviamente)? Estou assumindo que a codificação de caracteres não é a culpada porque vários caracteres UTF-8 parecem funcionar bem.

    
por Matti 20.03.2010 / 21:23

4 respostas

10

O Windows não permite alguns caracteres em nomes de arquivos permitidos pelo Unix. O Samba "manipula" os nomes de arquivos para torná-los compatíveis com as restrições do Windows. Você pode verificar o arquivo /etc/smb.conf ou /etc/samba/smb.conf para ver quais configurações estão em vigor. Para mostrar essas configurações mais os padrões, use este comando:

testparm -vs | less

Para diminuir um pouco:

testparm -vs|grep "case\|mangl"

Veja esta página para mais informações. Além disso, veja a metade da página (as mesmas informações do link anterior).

    
por 21.03.2010 / 00:05
7

Eu uso uma pasta compartilhada no OS-X e no Windows. Alguns arquivos têm o mesmo problema, porque se enquadram no seguinte: Eles usam caracteres no nome do arquivo, não suportados pelo Windows.

Consulte: link

Relaciona os caracteres não suportados pelo Windows em arquivos ou diretórios. Eu acho que o Samba usa a mesma lista de caracteres ao listar arquivos e diretórios.

A filename cannot contain any of the following characters:
\ / : * ? " < > |

Um pouco mais abaixo, eles escreveram:

Characters that are valid for naming files, folders, or shortcuts include any combination of letters (A-Z) and numbers (0-9), plus the following special characters:

^   Accent circumflex (caret)
&   Ampersand
'   Apostrophe (single quotation mark)
@   At sign
{   Brace left
}   Brace right
[   Bracket opening
]   Bracket closing
,   Comma
$   Dollar sign
=   Equal sign
!   Exclamation point
-   Hyphen
#   Number sign
(   Parenthesis opening
)   Parenthesis closing
%   Percent
.   Period
+   Plus
~   Tilde
_   Underscore

Mas eu, pessoalmente, tomei a lista de caracteres não permitidos como referência para informar alguns clientes aqui;)

    
por 08.12.2014 / 18:13
6
  • Eu possuo um laptop Apple Macbook Pro com OS X 10.11 "El Capitan" de 64 bits executando o Samba 3 que eu instalei por meio de Macports .

  • Eu também possuo um laptop Dell Inspiron com XUbuntu 16.04 "Xenial Xerus" do 64-bit GNU / Linux rodando o Samba 3 que eu instalei através do APT.

Ambas as máquinas possuem pastas compartilhadas na rede e usam o Samba para se comunicarem na minha WLAN (rede local sem fio).

Ambos os meus sistemas estão em português brasileiro. Assim, eu uso caracteres especiais como ç , á , ã , , ô , é , ó et cetera.

Quando uso meu laptop Linux para acessar meus compartilhamentos do OS X Samba, todas as strings são exibidas corretamente: palavras como , ônus e bênção são mostrados corretamente. Arquivos e pastas com nomes longos também são mostrados e seus nomes são mostrados corretamente. Assim, o servidor Samba em execução no OS X já está configurado corretamente ...

... mas as coisas não estavam funcionando ao contrário: se eu usasse o aplicativo Finder no OS X para acessar meus compartilhamentos Linux Samba, todos os arquivos e pastas com pelo menos um desses caracteres especiais não eram mostrados (eles permaneceu invisível para mim), e os nomes longos de arquivos e pastas foram convertidos em nomes curtos estranhos. Assim, havia algo errado com o servidor Samba em execução na minha máquina Linux.

= > No meu caso, o que resolveu esse problema foi adicionar as seguintes linhas à seção [global] dentro do arquivo smb.conf em minha máquina Linux:

mangled names = no
dos charset = CP850
unix charset = UTF-8

Depois disso, eu abri uma janela de terminal do shell e reiniciei o servidor Linux Samba com este comando:

sudo service smbd restart

... que pode ser substituído por este outro comando (caso o comando acima não funcione na sua distribuição Linux):

sudo systemctl restart smbd.service

Depois que reiniciei o servidor Linux Samba, o aplicativo Finder no OS X finalmente mostrou corretamente todos os arquivos e pastas que estavam ocultos anteriormente por causa de seus nomes terem um ou mais caracteres especiais. Os nomes mutilados ("encurtados") também eram "não-manipulados".

Notas de rodapé :

  1. Nos sistemas GNU / Linux, o local padrão do arquivo smb.conf é /etc/samba/smb.conf
  2. Presumindo que seu sistema Linux tenha o arquivo smb.conf armazenado no local padrão /etc/samba/ : existem várias maneiras diferentes de editar o arquivo smb.conf . Por exemplo, se você não estiver usando um ambiente de desktop (por exemplo, seu sistema tem apenas um terminal de shell, sem janelas) você pode instalar o editor de texto Nano , emitindo um comando como sudo apt-get install nano -y ou sudo dnf -b -y install nano ou outra coisa (dependendo de qual distribuição Linux você está usando) e, em seguida, execute sudo nano /etc/samba/smb.conf . Caso você esteja usando um Desktop Environment, você pode instalar um editor de texto gráfico como o GNOME Edit , emitindo um comando como sudo apt-get install gedit -y ou sudo dnf -b -y install gedit ou outra coisa (dependendo de qual Linux distro que você está usando) e, em seguida, execute sudo gedit /etc/samba/smb.conf .
  3. No Samba 3+, o parâmetro display charset está obsoleto.
  4. O parâmetro dos charset não suporta o argumento UTF-8 . Assim, deve usar o argumento padrão CP850 .
  5. mangled names = no instrui o servidor Samba a não encurtar nomes longos de arquivos e pastas. Portanto, como o cliente Samba apenas replica para o usuário o que o servidor Samba forneceu ao cliente, assim que o servidor estiver configurado adequadamente, o cliente não mostrará mais ao usuário qualquer nome abreviado.
por 24.03.2016 / 19:54
3

da documentação do samba você pode usar estes:

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1
    
por 04.06.2014 / 14:12

Tags