Servidor: RHEL 5.9 / smbd 3.0.33 - Clientes: vários, embora todos usassem o mount.cifs atual (5.2)
Eu já resolvi esse problema, mas foi um pesadelo caçar esses códigos de erro e senti que ele precisava de documentação universal.
Sintomas : Falha imprevisível e intermitente na montagem de um cliente CIFS específico para o servidor Linux Samba. Todos os meus clientes linux pam_mount casas de usuários no login. Aleatoriamente, e esporadicamente, as montagens do diretório doméstico começaram a falhar em uma máquina. Logins e montagens continuaram funcionando perfeitamente em todos os outros clientes. Inicialmente, pensei que uma quantidade incomum de atividade no cliente danificado estava causando smbd, mas falhas intermitentes persistiam mesmo depois que o uso diminuía.
A tentativa de montar manualmente falha e relata:
Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Defina <debug enable="1"/>
em /etc/security/pam_mount.conf.xml para obter mais informações de pam_mount:
command: 'mount' '-t' 'cifs' '//my_server/watdo' '/home/watdo' '-o' 'user=watdo,uid=666,gid=666'
pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0)
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0)
pam_mount(mount.c:64): Errors from underlying mount program:
pam_mount(mount.c:68): mount error(12): Cannot allocate memory
pam_mount(mount.c:68): Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)`
/var/log/kern.log também informou sobre este evento:
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'echo 1> / proc / fs / CIFS / cifsFYI' manivelas até mount.cifs depuração (gravações em / var / log / debug). Aqui está a parte boa (parece familiar?):
CIFS Session Established successfully
For smb_command 117
Sending smb: total_len 88
cifs_sync_mid_result: cmd=117 mid=54307 state=4
Mapping smb error code 0xc0000205 to POSIX err -12
Neste ponto, literalmente, não há outras informações disponíveis no lado do cliente. A solicitação de montagem cifs sai e o cliente morre quase imediatamente. O erro mount.cifs (12) é bastante pouco informativo (a página de manual não ajuda, thx pessoal). A extensa pesquisa na Internet revela que este é um código de erro comum, e também o confirma como não informativo.
Hora de checar o servidor! Definido log level = 3
para smbd em /etc/samba/smb.conf (do livro Using Samba: "Níveis acima de 3 são para serem usados pelos desenvolvedores e despejam enormes quantidades de informações enigmáticas." Lol!). Aqui está a linha relevante:
[2013/02/08 10:18:03, 3] smbd/error.c:error_packet_set(106)
error packet at smbd/reply.c(514) cmd=117 (SMBtconX) NT_STATUS_INSUFF_SERVER_RESOURCES
Quase lá ... do arquivo da lista de mensagens SMB, encontrei alguém relatando um tipo de problema semelhante, identificado como um limite de compartilhamento vinculado em uma conexão SMB individual. Listar compartilhamentos abertos no servidor:
smbstatus -S | grep <serverIP> | wc -l
retornou 2048 . Muito conspícuo.
Examinando realmente a saída de milhares de entradas smbstatus -S
reveladas para 'IPC $'. Os documentos do Samba no IPC $ revelam que ele está envolvido com a navegação anônima por compartilhamento e acesso a "alguns outros recursos". Defino a negação de host no servidor em /etc/samba/smb.conf:
[IPC$]
hosts deny = 0.0.0.0/0
Funciona muito bem agora. OK, espero que algo aqui ajude uma pobre alma em algum momento no futuro.
Acho que, no espírito do site, farei uma pergunta: Por que o smbd não limparia as ações do IPC $? Por que estabelecer um IPC $ por conexão de usuário para um compartilhamento, em vez de um por conexão de cliente? Você pode desativar a criação de compartilhamento de IPC $ no lado do cliente? Existe uma maneira de aumentar o número máximo de conexões por compartilhamento (não que isso ajude nesse caso)? Eu não vi isso nos documentos.