Récemment, j'ai été confronté à un problème étrange sur mon serveur samba (Ubuntu 10.04 LTS am64) lorsque tous les partages étaient "soudainement" inaccessibles aux clients. Le suivi de l'erreur a révélé que smbd
n'avait pas été démarré au démarrage. Du 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
[...]
et 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
[...]
il était clair que smbd s'était écrasé.
Avant cela, je n’ai rien changé à la configuration de samba, n’ai rien installé à part des mises à jour de sécurité et n’a pas créé ou supprimé de nouveaux utilisateurs. Aujourd'hui, tout est réparé et fonctionne comme d'habitude, simplement en courant
Sudo smbd restart
Les accidents au démarrage ont disparu et les partages sont à nouveau disponibles pour les clients.
Pourtant, je ne sais pas quel processus était responsable de ce comportement et je suis inquiet de savoir comment éviter cela à l'avenir. Toute idée du processus qui pourrait être rendu responsable de la destruction de smbd serait très appréciée. De plus, je serais intéressé d’entendre ce que le redémarrage de smbd aurait pu réparer et si c’était une bonne idée de le faire.
S'il s'agit bien d'un problème de synchronisation, cela signifie probablement quelque chose (je suppose que c'est un service réseau) qui est requis avant le démarrage de smbd ne se produit pas à temps. Le fait que vous puissiez le démarrer sans problème après le démarrage signifie que vous pouvez probablement le définir avec une priorité de démarrage très basse (c'est-à-dire juste à la fin car cela ne semble pas dépendre d'un autre service).
Pour cela, vous utilisez le script update-rc.d.
Pour un peu d’arrière-plan, consultez /etc/rc2.d (ou l’un des fichiers /etc/rc2.d à /etc/rc5.d), qui sont les services configurés pour démarrer automatiquement lorsque le système passe au niveau d’exécution 2 - 5. (pour cet exercice, supposons qu'ils sont les mêmes). Vous remarquerez probablement qu’il existe un S20smbd qui signifie smbd (démarrage automatique) (liens vers le script de démarrage / etc/init.d/smbd) avec une priorité de 20, où avec une priorité basse sont démarrés en premier jusqu'à ce que tout le répertoire du niveau d'exécution ait été traité.
En règle générale, un démarrage au niveau utilisateur utilise une priorité basse (la dernière commence) sur 99. Ainsi, à partir de la documentation update-rc.d, nous utiliserons 98:
Cela signifie simplement que vous devez mettre à jour le démarrage automatique de smbd pour les niveaux d’exécution par défaut (2-5) sur la priorité 98. Il s’agit donc du dernier démarrage (en fonction de la configuration de votre système).
Attention, si vous avez plusieurs cartes réseau, samba peut même ne pas essayer de démarrer (aucune trace de smbd dans sys.log) car il attend que la mauvaise interface réseau soit opérationnelle.
ifconfig
pour trouver l'interface que vous voulez utiliser./etc/samba/smb.conf
que Samba utilise la bonne interface/etc/config/smbd.conf
que la bonne interface est attendue avant de lancer samba. Par exemple, la ligne ci-dessous ne démarrera smbd que si l'interface eth0 est active:start on (local-filesystems and net-device-up IFACE=eth0 and started udev-finish)
J'ai jeté un coup d'œil rapide sur le Web et cela ressemble à un problème d'autorisations ou à un problème de synchronisation. Par exemple, je lance docky et généralement, une notification apparaît après la connexion, indiquant que Compiz n'est pas activé et que certaines fonctions ne le seront pas. Cependant, au moment où il apparaît réellement, Compiz a eu le temps de démarrer et docky va bien. Docky a la possibilité de revenir à une forme plus basique si compiz n'a pas encore commencé. Cependant, AWN (avant window navigator) ne le fait pas et ne se chargera pas si compiz n’est pas présent, même s’il parvient à avoir un cran fainéant à une "date" ultérieure. Bien que toutes mes discussions portent sur des éléments d'interface visuelle, la théorie devrait également s'appliquer aux programmes de service. Une solution possible consiste à utiliser un script pour vérifier le bon fonctionnement du service smbd et s’il n’est pas en cours d’exécution, essayez de le redémarrer.
J'espère que cela vous aide ou au moins vous donne une idée.
J'avais le même problème. J'ai compris la solution en lisant un tutoriel sur l'installation de sendmail sur le serveur de mon entreprise.
Installez les packages sysv-rc-conf et sysvinit-utils en tapant ce qui suit dans un terminal.
Sudo apt-get install sysv-rc-conf sysvinit-utils
Ensuite, vous tapez ceci pour configurer votre système (Ubuntu 10.04) afin qu’il charge nmbd au démarrage:
Sudo sysv-rc-conf nmbd on
Il y a un autre problème sur Ubuntu 11.04 (natty, AMD64). À partir du journal de démarrage:
Plutôt que d'appeler des scripts d'initialisation via /etc/init.d, utilisez l'utilitaire service (8), par exemple. service S20smbd start
Le script que vous tentez d'appeler ayant été converti en tâche Upstart, vous pouvez également utiliser l'utilitaire start (8), par exemple. start S20smbd start: Emploi inconnu: S20smbd
Donc, il semble que smbd essaie de démarrer en tant que "S20smbd", il n'est donc pas reconnu par "service". Encore une fois, le redémarrage de smbd une fois le système installé corrige le problème.
Je ne peux pas comprendre où est le problème dans les scripts upstart. Toute aide serait appréciée Merci.
Je pense que ce problème est dû à une course entre dhclient
, qui fait apparaître l'interface réseau de manière asynchrone, et d'autres services qui nécessitent l'interface réseau.
Cela fait longtemps que Samba ne démarre pas sur mon système Debian de manière sporadique, et maintenant, il en va de même pour mysqld (nécessaire pour le back-end de MythTV), ce qui m'a finalement motivé à creuser davantage.
Si le DHCPACK arrive à temps et que dhclient affiche l'interface avant le démarrage de Samba/mysql, tout se passe bien, sinon les services ne parviennent pas à démarrer:
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
J'ai résolu le problème en ajoutant un délai de 15 secondes après le démarrage de network-manager dans son script init et en déplaçant les deux scripts init après network-manager dans l'ordre de démarrage.
Un meilleur moyen serait d’ajouter une dépendance appropriée à l’interface réseau, mais cela ne semble pas possible avec sysvinit
.
J'ai considéré d'autres solutions trop risquées (par exemple, en utilisant upstart
).