Вопрос или проблема
У меня проблема с Samba на сервере Ubuntu 24.04. Чтобы сократить длинную и мучительную историю, у меня была версия 22, работающая довольно счастливо, но я решил обновить ее в начале этого года. Именно тогда начались мои проблемы — система не могла подключиться к интернету. Затем у меня начались проблемы с массивом RAID mdadm. За последние несколько дней я решил начать с нуля с чистой установкой, используя последнее загруженное iso. (Здесь я обнаружил, что, вероятно, не следовало делать прямое обновление с 22 до 24!)
Сейчас, по крайней мере, интернет-соединение работает нормально, RAID восстановлен (думаю, проблема была в плохом SATA-кабеле!), и большинство из нужных мне сервисов работают. Среди них Lyrion Music Server и ssh. Но я не могу получить доступ к папкам, которые хочу открыть для общего доступа (в основном на массиве RAID) — и даже не могу заставить хост появиться — в Проводнике на любом из моих компьютеров с Windows. (У меня есть настольный компьютер под управлением Win 10 и ноутбук с Win 11.)
Запуск testparm дает следующую информацию:
Загрузка конфигурационных файлов smb из /etc/samba/smb.conf
ПРЕДУПРЕЖДЕНИЕ: Нет пути в службе shares – делает ее недоступной!
ЗАМЕТКА: Служба shares помечена как недоступная.
Файл служб загружен успешно.
Обратите внимание на текст, выделенный жирным шрифтом. Я не понимаю, почему пути к различным ресурсам, которые я указал в файле smb.conf, “недоступны”! (Они отлично работают на стороне Unix: я предполагаю, что можно использовать символические ссылки в путях??). Это проблема с правами доступа??? Я открыл все папки верхнего уровня в каждом пути, обычно используя 775, и они все принадлежат root:root.
Я могу принудительно заставить Проводник Windows найти сервер Ubuntu (“HostName“), введя имя машины (или статический IP-адрес) в строку поиска как \\HostName.local (хотя я не уверен, что .local необходимо). Windows выводит запрос на ввод моих учетных данных. Когда я это делаю, появляется диалоговое окно, которое сообщает:
“\\HostName недоступен. У вас может не быть разрешения на использование
этого сетевого ресурса…. бла бла бла”
что (я предполагаю) является следствием условия, вызывающего предупреждающее сообщение, выданное testparm?
Конечно, я уже предоставил себе разрешение! Или все-таки нет??? Когда я запускаю
sudo systemctl status smbd
кажется, что smbd работает нормально — но мой выделенный текст показывает, что есть проблема:
smbd.service – демон Samba SMB
Loaded: загружен (/usr/lib/systemd/system/smbd.service; enabled; preset: enabled)
Active: активен (работает) с Вск 2024-12-29 16:40:53 PST; прошло 20 мин
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Process: 108179 ExecCondition=/usr/share/samba/is-configured smb (code=exited, status=0/SUCCESS)
Main PID: 108182 (smbd)
Status: “smbd: готов принимать соединения…”
Tasks: 4 (limit: 14253)
Memory: 15.0M (peak: 37.6M)
CPU: 1.025s
CGroup: /system.slice/smbd.service
├─108182 /usr/sbin/smbd –foreground –no-process-group
├─108185 “smbd: notifyd” .
├─108186 “smbd: cleanupd “
└─151954 “smbd: client [fe80::a887:d154:c2b4:423e%enp9s0]”Дек 29 16:40:53 systemd[1]: Запуск smbd.service – Samba
SMB Daemon…
Дек 29 16:40:53 (smbd)[108182]: smbd.service: Переменная окружения, на которую ссылаются, но не установлена, оценивается как пустая строка: SMBDOPTIONS
Дек 29 16:40:53 systemd[1]: smbd.service – демон Samba SMB запущен.
Дек 29 16:49:43 smbd[151954]: pam_unix(samba:session): сеанс открыт для пользователя norman(uid=1000) (uid=0)
Что это за “неустановленная переменная окружения”? Где она находится и что нужно сделать, чтобы установить SMBDOPTIONS?
Я гуглил многочисленные наборы инструкций, как письменных, так и на YouTube, и пробовал множество предложений, но без большого успеха. (Есть довольно много похожих отчетов, уходящих вглубь 20-летней давности — но немногие из них решены.)
Я только что пересмотрел предложение, где упоминалось о необходимости пароля пользователя Samba, используя
sudo smbpasswd -a Usernamehere
Я уже установил пароль, как для себя, так и для общего пользователя smb.
Я не помню, чтобы у меня было столько проблем, когда я впервые настроил Samba несколько лет назад (вероятно, в Ubuntu 20 или 21). Я уверен, что это что-то очевидное, на что я просто никогда не обращал внимания. Я надеюсь, что кто-то сможет увидеть это как простое исправление.
Спасибо.
Норман
Ответ или решение
Проблемы с Samba smbd и предупреждение “No path in service shares”
Ситуация: После обновления с версии Ubuntu 22.04 до 24.04 на вашем сервере возникли трудности с конфигурацией Samba. Несмотря на успешное восстановление интернет-соединения и RAID массива, вы не можете настроить общий доступ к папкам через Samba, и получаете предупреждение: “No path in service shares”.
Разбор проблемы
-
Предупреждение testparm:
- Когда вы видите "WARNING: No path in service shares – making it unavailable", это значит, что в конфигурационном файле
/etc/samba/smb.conf
для одной из ваших настроек отсутствует корректный путь к директории. Это может быть связано с тем, что каталоги не существуют, являются символическими ссылками без соответствующих прав доступа или неправильно указаны в конфигурации.
- Когда вы видите "WARNING: No path in service shares – making it unavailable", это значит, что в конфигурационном файле
-
Пути и символические ссылки:
- Хотя Unix символические ссылки могут нормально работать в системе, Samba может иметь проблемы с правильным нахождением целевых директорий, если они неправильно настроены или имеют недостаточные права доступа. Проверьте, что все указанные пути в конфигурации существуют и имеют соответствующие разрешения, позволяющие Samba доступ к ним.
-
Права доступа:
- Рекомендуется проверить права доступа к каталогам, которые вы хотите расшаривать. Если все владельцы имеют доступ 775, это может быть недостаточно. Попробуйте назначить более открытые разрешения временно, например, 777, чтобы понять, решает ли это проблему. Но при этом убедитесь, что у вас есть точный учет безопасности данных.
Проверка и решение
-
Редактирование конфигурационного файла:
- Откройте
/etc/samba/smb.conf
и проверьте каждый блок share (делаемые общими) на наличие строкиpath = /path/to/directory
. Убедитесь, что путь указан корректно и существует на файловой системе.
- Откройте
-
Перезагрузка службы Samba:
- После исправления конфигурации выполните:
sudo systemctl restart smbd
- После исправления конфигурации выполните:
-
Проверка прав пользователя Samba:
- Убедитесь, что все пользователи, которые должны иметь доступ, добавлены через
sudo smbpasswd -a username
и могут авторизоваться в системе.
- Убедитесь, что все пользователи, которые должны иметь доступ, добавлены через
-
Проверка переменной окружения SMBDOPTIONS:
- Хотя это может не являться основной причиной вашей проблемы, рекомендуем просмотреть системные скрипты или глобальные переменные системных служб, чтобы определить, не отсутствует ли какая-либо необходимая конфигурационная деталь.
-
Тестирование подключения:
- Протестируйте подключение с Windows, используя путевое указание IP-адреса сервера и share, например,
\\192.168.1.100\share_name
.
- Протестируйте подключение с Windows, используя путевое указание IP-адреса сервера и share, например,
Заключение
Чтобы решить данную проблему, нужно сосредоточиться на корректной настройке путей в smb.conf
, проверке прав доступа и обеспечении соответствующей аутентификации пользователей. Регулярно применяя исправления конфигурации и перезагружая службу Samba, вы сможете получить доступ к общим ресурсам Ubuntu-сервера из сред Windows. Если проблема сохраняется, рекомендуется более детальная диагностика, включая просмотр системных логов и дополнительные проверки прав доступа.