samba не запускается из systemctl: таймаут

Вопрос или проблема

Я пытаюсь настроить сервер Samba на сервере Ubuntu (18.04). Мне пришлось собирать из источников, так как мне нужна специальная поддержка для Mac OS и Time Machine, которая доступна только в версиях 4.8 или выше.

Я пытался установить 4.9.2 и следовал инструкциям здесь, с тем исключением, что мне нужно было отключить поддержку LDAP и AD для конфигурации. Сборка и установка прошли нормально, поэтому я скопировал файлы systemctl в нужное место и попытался запустить всё.

super@fulton:~/samba/samba-samba-4.9.2$ sudo systemctl start {nmb,smb,winbind}.service
Работа для nmb.service завершилась неудачей из-за превышения времени ожидания.
Смотрите "systemctl status nmb.service" и "journalctl -xe" для деталей.
Работа для winbind.service завершилась неудачей из-за превышения времени ожидания.
Смотрите "systemctl status winbind.service" и "journalctl -xe" для деталей.
Работа для smb.service завершилась неудачей из-за превышения времени ожидания.
Смотрите "systemctl status smb.service" и "journalctl -xe" для деталей.

статус показывает:

● smb.service - Демон Samba SMB
   Загрузлено: загружено (/lib/systemd/system/smb.service; включен; предустановленный: включен)
   Активно: неудачно (Результат: превышение времени ожидания) с Чт 2019-01-31 14:46:34 NZDT; 13 мин. назад
     Документы: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
  Процесс: 12343 ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS (код=убит, сигнал=TERM)
 Основной PID: 12343 (код=убит, сигнал=TERM)

31 Янв 14:45:04 fulton.geek.nz systemd[1]: Запускается демон Samba SMB...
31 Янв 14:46:34 fulton.geek.nz systemd[1]: smb.service: операция запуска превысила время ожидания. Завершение.
31 Янв 14:46:34 fulton.geek.nz systemd[1]: smb.service: неудача с результатом 'timeout'.
31 Янв 14:46:34 fulton.geek.nz systemd[1]: Не удалось запустить демон Samba SMB.

Но /var/log/samba/log.smbd предполагает, что службы запустились.

[2019/01/31 14:45:04.465362,  0] ../lib/util/become_daemon.c:138(daemon_ready)
  daemon_ready: STATUS=демон 'smbd' закончил загрузку и готов обслуживать соединения

так что, похоже, что что-то не так со скриптом systemd, и он завершает процесс, когда не получает ожидаемый ответ.

Есть идеи, на что стоит обратить внимание?

обновление: Я успешно смог запустить smbd из командной строки и подключиться к общему ресурсу, что предполагает, что есть проблема со скриптом systemd. Я отмечаю, что smbd вызывается с параметром –foreground, это правильно? Я полагаю, что systemd намерен перевести процесс в фоновый режим, чтобы управлять им?

вот конфигурация:

[Unit]
Description=Демон Samba SMB
Documentation=man:smbd(8) man:samba(7) man:smb.conf(5)
Wants=network-online.target
After=network.target network-online.target nmb.service winbind.service

[Service]
Type=notify
NotifyAccess=all
PIDFile=/var/run/samba/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS
ExecReload=/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

Я столкнулся с этим, пытаясь запустить разные типы машин с последней версией Samba для использования с Time Machine.

Одно из решений – изменить Type=notify на Type=simple. Есть что-то в новых версиях Samba, что не работает хорошо с тем, как systemd обрабатывает коммуникацию процессов.

-Type=notify
+Type=simple

Затем выполните systemctl daemon-reload и попробуйте запустить снова.

Одна из причин, по которой Samba может не загрузиться, связана с неправильной конфигурацией сети.
Вы можете проверить, является ли это проблемой, следуя этому руководству, которое заставит Lambda загрузить настройки сети по умолчанию:

  1. Откройте файл настроек samba:

     sudo vi /etc/samba/smb.conf
    
  1. нажмите a один раз (это используется для включения режима редактирования в vi)
  1. Закомментируйте (добавьте решетку (#) в начале строки) interfaces = x.x.x.x/x

  2. Закомментируйте также bind interfaces only = x

Теперь это должно выглядеть так:

#    interfaces = x.x.x.x/x
# Здесь некоторый информационный текст
#    bind interfaces only = x

Это заставит Samba использовать настройки по умолчанию.

  1. Нажмите ESC, затем введите :wq и нажмите Enter (Если вы использовали nano, нажмите Ctrl+O, а затем Ctrl+X).
  1. Перезагрузите службу Samba, выполнив:

     sudo systemctl restart nmbd
    
  2. Проверьте статус Samba, выполнив следующую команду:

     systemctl status nmbd.service
    
  3. Теперь терминал должен напечатать active(running) зеленым цветом

Проблема больше не существует после удаления всех файлов systemd. Проблема может заключаться в том, что у вас есть файл systemd от более старой установки Samba. Эти файлы нужно удалить. В версии 4.10.10 она не поставляется с файлом systemd, они создаются автоматически из /etc/init.d/smbd. Проверьте вывод, он должен выглядеть так:

-> % sudo systemctl status smbd.service                                                              
● smbd.service - LSB: демон Samba SMB/CIFS (smbd)
   Загрузено: загружено (/etc/init.d/smbd; сгенерировано)

Ответ или решение

Ситуация, при которой Samba не запускается из-за тайм-аута в системе systemctl, может быть связана с различными конфигурационными и сетевыми проблемами. Рассмотрим шаги для диагностики и решения этой проблемы на примере установки Samba на Ubuntu 18.04.

1. Причина проблемы

Ваша проблема заключается в том, что службы Samba (smb, nmb и winbind) не могут запуститься должным образом, и в результате возникает тайм-аут. Исходя из предоставленной информации, сервисы запускаются в фоновом режиме с помощью флага --foreground, что вызывает недопонимание в том, как systemd отслеживает состояние этих процессов.

2. Изменение конфигурации сервиса

Один из вариантов решения данной проблемы — поменять тип сервиса в файле конфигурации systemd с Type=notify на Type=simple. Это полезно, когда новые версии Samba могут не корректно взаимодействовать с механизмами системного управления процессов. Выполните следующие шаги:

  1. Откройте файл конфигурации для службы Samba:

    sudo vi /lib/systemd/system/smb.service
  2. Измените строку Type=notify на Type=simple. В результате, секция [Service] должна выглядеть так:

    [Service]
    Type=simple
    NotifyAccess=all
    PIDFile=/var/run/samba/smbd.pid
    ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS
  3. Сохраните изменения и выйдите из редактора.

  4. Перезагрузите конфигурацию systemd:

    sudo systemctl daemon-reload
  5. Попробуйте снова запустить службы Samba:

    sudo systemctl start {nmb,smb,winbind}.service

3. Проверка конфигурации сети

Некорректная настройка сети может быть еще одной причиной, по которой Samba не запускается. Проверьте файл конфигурации Samba (/etc/samba/smb.conf) и временно отключите настройки интерфейса:

  1. Откройте файл:

    sudo vi /etc/samba/smb.conf
  2. Найдите строки, связанные с interfaces и bind interfaces only, и закомментируйте их, добавив символ # в начале, чтобы временно использовать настройки по умолчанию:

    # interfaces = х.х.х.х/х
    # bind interfaces only = yes
  3. Сохраните и закройте файл.

  4. Перезапустите службы Samba:

    sudo systemctl restart {nmb,smb,winbind}.service

4. Очистка файлов systemd

Если после всех изменений проблемы сохраняются, убедитесь, что у вас нет конфликтующих файлов systemd, созданных предыдущими установками Samba. Удалите устаревшие файлы и убедитесь, что ваши конфигурационные файлы актуальны.

5. Логи и диагностика

Не забудьте проверить логи Samba для получения дополнительной информации о проблемах:

tail -f /var/log/samba/log.smbd

Также просмотрите вывод команды:

journalctl -xe

Это поможет выявить возможные ошибки или конфликты.

Заключение

В большинстве случаев проблема, связанная с тайм-аутом при запуске служб Samba в systemd, может быть решена изменением конфигурации службы и проверкой сетевых настроек. Следуя указанным выше шагам, вы сможете устранить возникшие проблемы и успешно запустить сервер Samba.

Оцените материал
Добавить комментарий

Капча загружается...