Samba в systemd: почему smbd не запускается
Samba проверяет свой файл настроек при запуске отдельной командой, и это первое, что стоит выполнить при отказе. Остальные причины — занятые порты, недоступные каталоги ресурсов и конфликт со службой обнаружения имён.
О службе
Файл smb.conf проверяется командой testparm: она печатает ошибки и итоговый вид настроек со всеми значениями по умолчанию. Это заметно быстрее, чем перезапускать службу и читать журнал.
Служб две: обслуживание файлов и обслуживание имён. Вторая занимает порты обнаружения и часто конфликтует с другими службами в сети. Если обнаружение имён не нужно, её можно не включать.
Как устроена
| Файл настроек | /etc/samba/smb.conf; проверка — testparm -s |
|---|---|
| Связанные unit | smbd.service (файлы), nmbd.service (имена), winbind.service (домен) |
| Порты | 445 и 139 для файлов, 137 и 138 для обнаружения имён |
| Журнал | /var/log/samba/ и журнал systemd |
Частые ошибки
7 записей базы отмечены за этой службой.
Коды выхода
- status=1/FAILURE в systemdКод 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
Сообщения журнала
- Address already in use при запуске службыПорт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- No such file or directory в журнале службыСлужба не находит файл или каталог. Разбор: путь, момент запуска, изоляция unit-файла, символические ссылки, приватный /tmp.
Ошибки служб
- Samba: клиент не может записать в общий ресурсРесурс доступен для чтения, а запись отклоняется: права на файловой системе, параметры ресурса, отображение пользователей.
- Доступ к общим папкам по доменным учётным записям не работаетЛокальные учётные записи работают, доменные нет: служба сопоставления учётных записей не запущена или не в том порядке.
Таймеры, сокеты, монтирование
- Монтирование ресурса SMB не проходит: учётные данныеСетевой ресурс Windows не монтируется: пароль в fstab, права на файл учётных данных, версия протокола.
Коды выхода этой службы
Числа в status=N ниже 200 назначает сама программа, 200 и выше — systemd, когда не смог подготовить запуск.
| status | Что означает у этой службы | Куда смотреть |
|---|---|---|
1/FAILURE |
ошибка в файле настроек или занятый порт. | разбор |
Диагностика
Проверка настроек и итоговый вид параметров.
testparm -s 2>&1 | head -20Состояния обеих служб.
systemctl status smbd nmbd --no-pager | head -16Кто занимает порты обслуживания файлов.
sudo ss -tlnp | grep -E ":(445|139)\s"Подключённые клиенты при работающей службе.
sudo smbstatus -b 2>/dev/null | headПараметры unit, которые тут важны
- RequiresMountsFor=ресурсы на отдельных разделах требуют зависимости от монтирования
- LimitNOFILE=много открытых файлов при активных клиентах
- ExecReload=перезагрузка настроек без разрыва сессий
Источники
- smb.conf(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)