O que fez o “smbd” parar de funcionar na inicialização?

3

Recentemente eu me deparei com um problema estranho no meu servidor samba (Ubuntu 10.04 LTS am64) quando todos os compartilhamentos estavam "de repente" inacessíveis para os clientes. O rastreamento do erro revelou que smbd não foi iniciado na inicialização. Do syslog:

[...]
Dec  4 12:28:45 takkat-home dhclient: 
Dec  4 12:28:45 takkat-home NetworkManager: <info>  DHCP: device eth0 state changed (null) -> preinit
Dec  4 12:28:45 takkat-home init: smbd main process (1027) terminated with status 255
Dec  4 12:28:45 takkat-home init: smbd main process ended, respawning
Dec  4 12:28:45 takkat-home dhclient: Listening on LPF/eth0/00:24:1d:25:40:e4
Dec  4 12:28:45 takkat-home dhclient: Sending on   LPF/eth0/00:24:1d:25:40:e4
Dec  4 12:28:45 takkat-home dhclient: Sending on   Socket/fallback
Dec  4 12:28:45 takkat-home avahi-daemon[917]: No service file found in /etc/avahi/services.
Dec  4 12:28:45 takkat-home init: smbd main process (1045) terminated with status 255
Dec  4 12:28:45 takkat-home init: smbd main process ended, respawning
Dec  4 12:28:45 takkat-home init: smbd main process (1050) terminated with status 255
Dec  4 12:28:45 takkat-home init: smbd main process ended, respawning
[...]

e smbd.log:

[...]
[2010/12/04 12:28:45,  0] smbd/server.c:1069(main)
  smbd version 3.4.7 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2009
[2010/12/04 12:28:45,  0] printing/print_cups.c:103(cups_connect)
  Unable to connect to CUPS server localhost:631 - Connection refused
[2010/12/04 12:28:45,  0] printing/print_cups.c:103(cups_connect)
  Unable to connect to CUPS server localhost:631 - Connection refused
[2010/12/04 12:28:45,  0] smbd/server.c:1115(main)
  standard input is not a socket, assuming -D option
[2010/12/04 12:28:45,  0] passdb/pdb_interface.c:253(guest_user_info)
  guest_user_info: Unable to locate guest account [guest]!
[2010/12/04 12:28:45,  0] smbd/server.c:1201(main)
  ERROR: failed to setup guest info.
[2010/12/04 12:28:45,  0] smbd/server.c:1069(main)
  smbd version 3.4.7 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2009
[...]

ficou claro que smbd caiu.

Antes disso, eu não alterei nada para a configuração do samba, não instalei nada além de atualizações de segurança e não criei nem excluí novos usuários. Hoje, tenho tudo reparado e funcionando como sempre, simplesmente rodando

sudo smbd restart

As falhas na inicialização desapareceram e os compartilhamentos estão disponíveis novamente para os clientes.

Ainda assim, não tenho idéia do processo responsável por esse comportamento e estou preocupado em como evitar isso no futuro. Qualquer idéia de qual processo poderia ser responsabilizado por falhas smbd seria muito apreciada. Também gostaria de saber o que o smbd de reinicialização poderia possivelmente ter reparado e se isso era uma boa idéia para fazer.

    
por Takkat 04.12.2010 / 17:57

6 respostas

1

Se, de fato, é um problema de tempo, provavelmente significa que algo (eu estou supondo um serviço de rede) que é requerido que a inicialização do pré-smbd não está acontecendo a tempo. O fato de você poder iniciá-lo sem problemas após a inicialização significa que você pode configurá-lo com uma prioridade de inicialização realmente baixa (ou seja, no final, pois não parece ser uma dependência de qualquer outro serviço).

Você faz isso usando o script update-rc.d.

Para um pouco de fundo, confira /etc/rc2.d (ou qualquer um dos /etc/rc2.d através de /etc/rc5.d) que são os serviços que são configurados para iniciar automaticamente quando o sistema entra em nível de execução 2 - 5 (para este exercício vamos supor que eles sejam iguais). Você provavelmente notará que há um S20smbd que significa auto start smbd (links para o script de inicialização /etc/init.d/smbd ) com uma prioridade de 20, onde as coisas com prioridade baixa são iniciados primeiro até que tudo no diretório de nível de execução tenha sido processado.

Normalmente, uma inicialização no nível do usuário usaria uma prioridade baixa (começa por último) de 99, portanto, a partir dos documentos update-rc.d, usaremos 98:

  • update-rc.d smbd padrões 98 02

Isto significa simplesmente atualizar o auto start para smbd para níveis de execução padrão (2-5) para prioridade 98, então é praticamente a última coisa que inicia (dependendo de como seu sistema está configurado).

    
por kwiksand 11.12.2010 / 10:23
3

Tenha cuidado, se você tiver várias placas de rede, o samba pode nem mesmo tentar iniciar (nenhum rastro de smbd no sys.log) porque ele aguarda que a interface de rede errada esteja ativa.

  1. verifique ifconfig para descobrir qual interface você deseja usar.
  2. Em seguida, verifique em /etc/samba/smb.conf que o samba está usando a interface correta
  3. Em seguida, verifique em /etc/config/smbd.conf que a interface correta está aguardando para ser ativada antes de iniciar o samba. Por exemplo, a linha abaixo só iniciará o smbd se a interface eth0 estiver ativa:

start on (local-filesystems and net-device-up IFACE=eth0 and started udev-finish)

    
por William Ledoux 03.12.2013 / 10:09
1

Eu dei uma olhada rápida na Web e parece que há um problema ou um momento de permissão. Por exemplo, eu corro docky e geralmente aparece com uma notificação após o login dizendo que o compiz não está habilitado e algumas das funções não estarão habilitadas, mas no momento em que realmente parece que o compiz teve tempo para iniciar e docky está bem. O Docky tem a capacidade de retornar a uma forma mais básica se o compiz ainda não tiver iniciado. No entanto, o AWN (avant window navigator) não faz isso e apenas não carregará se o compiz não estiver presente, mesmo que ele consiga colocá-lo em marcha lenta em uma data posterior. Embora todas as minhas divagações sejam sobre elementos visuais de gui, a teoria também deveria se aplicar a programas de serviço. Uma solução possível é um script para verificar a execução bem-sucedida do serviço smbd e, se ele não estiver em execução, tente iniciá-lo novamente.

Espero que isso ajude ou pelo menos lhe dê uma ideia.

    
por Allan 04.12.2010 / 22:39
1

Há mais um problema no Ubuntu 11.04 (natty, amd64). A partir do bootlog:

Em vez de invocar scripts de inicialização por meio de /etc/init.d, use o serviço (8) utilidade, e. serviço S20smbd start

Como o script que você está tentando invocar foi convertido em um Trabalho de arranque, você também pode usar o utilitário start (8), por ex. começar S20smbd início: trabalho desconhecido: S20smbd

Então, parece que o smbd tenta ser iniciado como "S20smbd", portanto não é reconhecido por "serviço". Novamente, reiniciar o smbd assim que o sistema estiver pronto, corrige-o.

Não consigo descobrir onde está o problema nos scripts iniciantes. Qualquer ajuda seria apreciada, obrigado.

    
por tommaso 10.05.2011 / 22:55
1

Eu estava tendo o mesmo problema. Eu descobri a solução ao ler um tutorial sobre como instalar o sendmail no servidor da minha empresa.

Instale os pacotes sysv-rc-conf e sysvinit-utils digitando o seguinte em um terminal.

sudo apt-get install sysv-rc-conf sysvinit-utils

Então você digita isto para configurar seu sistema (Ubuntu 10.04) para carregar nmbd na inicialização:

sudo sysv-rc-conf nmbd on
    
por Alek Silver 02.03.2012 / 16:15
1

Acho que esse problema se deve a uma corrida entre dhclient , que traz a interface de rede de forma assíncrona e outros serviços que precisam da interface de rede.

Eu tive o Samba esporadicamente não começando no meu sistema Debian por um longo tempo, e agora essencialmente o mesmo aconteceu com o mysqld (necessário pelo backend do MythTV), o que finalmente me motivou a cavar mais fundo nele.

Se o DHCPACK chegar a tempo e o dhclient ativar a interface antes do início do Samba / mysql, tudo está OK; caso contrário, os serviços não serão iniciados:

mysqld: 120520 11:38:02 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address

May 20 12:50:38 piano smbd[1763]:   WARNING: no network interfaces found 

Eu consertei isso com o hack feio de adicionar um atraso de 15 segundos após o início do gerenciador de rede em seu script de inicialização e mover os dois scripts de inicialização após o gerenciador de rede na ordem de inicialização.

Uma maneira melhor seria adicionar uma dependência adequada para a interface de rede, mas isso não parece ser possível com sysvinit .

Eu considerei outras soluções muito arriscadas (por exemplo, usando upstart ).

    
por starblue 21.05.2012 / 16:26