Подробный гайд: Монтирование CIFS/SMB через systemd в ALT Linux
Монтирование сетевых ресурсов CIFS/SMB через systemd — это наиболее современный и надежный способ в ALT Linux (и других systemd-ориентированных дистрибутивах). Он позволяет корректно обрабатывать задержки сети при загрузке и использовать автоматическое монтирование по обращению (automount).
Ниже представлен подробный пошаговый гайд.
Шаг 1. Установка необходимых пакетов
Для работы с CIFS в ALT Linux необходимо установить утилиты cifs-utils.
Откройте терминал и выполните:
sudo apt-get update
sudo apt-get install cifs-utils
Шаг 2. Подготовка точки монтирования и файла учетных данных
1. Создайте директорию, куда будет монтироваться ресурс:
sudo mkdir -p /mnt/smb_share
(Важно: имя директории не должно содержать пробелов, либо их нужно будет экранировать в имени юнита systemd, но лучше избегать пробелов).
2. Создайте файл с учетными данными (credentials):
Хранить логин и пароль прямо в конфиге systemd небезопасно.
Создадим отдельный файл:
sudo mkdir -p /etc/samba/credentials
sudo nano /etc/samba/credentials/smb_share
Внесите в него следующие строки:
username=ваш_логин
password=ваш_пароль
# domain=ВАШ_ДОМЕН (если используется доменная авторизация Active Directory)
Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano).
3. Ограничьте права доступа к файлу с паролями:
sudo chmod 600 /etc/samba/credentials/smb_share
sudo chown root:root /etc/samba/credentials/smb_share
Шаг 3. Создание systemd .mount юнита
Systemd использует строгое правило именования для mount-юнитов: путь монтирования /mnt/smb_share превращается в имя файла mnt-smb_share.mount (слэши заменяются на дефисы).
Создайте файл юнита:
sudo nano /etc/systemd/system/mnt-smb_share.mount
Вставьте следующий контент:
[Unit]
Description=Mount SMB Share via systemd
# Ждем полной инициализации сети, а не просто поднятия интерфейса
After=network-online.target
Wants=network-online.target
[Mount]
What=//192.168.1.100/shared_folder
Where=/mnt/smb_share
Type=cifs
# Опции монтирования
Options=credentials=/etc/samba/credentials/smb_share,iocharset=utf8,file_mode=0777,dir_mode=0777,uid=1000,gid=1000,_netdev,vers=3.0
# Таймаут, чтобы не вешать загрузку системы, если сервер недоступен
TimeoutSec=30
[Install]
WantedBy=multi-user.target
Разбор важных параметров Options:
credentials=...— путь к файлу с логином/паролем.iocharset=utf8— корректное отображение кириллицы.file_mode=0777,dir_mode=0777— права доступа к файлам и папкам (можно поставить0755для безопасности).uid=1000,gid=1000— назначает владельцем файлов вашего пользователя (узнайте свой UID/GID командойid). Без этого файлы будут принадлежатьroot._netdev— критически важный параметр. Указывает systemd, что это сетевое устройство.vers=3.0(или2.1,3.1.1) — явное указание версии SMB. Рекомендуется, так как новые версии Samba/Windows отключают старые протоколы (SMB1), и автоматические переговоры иногда дают сбой.
Шаг 4. Создание systemd .automount юнита (Рекомендуется)
Чтобы ресурс монтировался только тогда, когда вы к нему обращаетесь (экономит ресурсы и ускоряет загрузку, если сервер недоступен), создайте automount-юнит.
sudo nano /etc/systemd/system/mnt-smb_share.automount
Вставьте следующий контент:
[Unit]
Description=Automount SMB Share
After=network-online.target
[Automount]
Where=/mnt/smb_share
# Отмонтирует ресурс автоматически, если к нему нет обращений 10 минут (600 сек)
TimeoutIdleSec=600
[Install]
WantedBy=multi-user.target
Шаг 5. Активация и запуск
Теперь нужно перечитать конфигурацию systemd и включить автомонтирование.
Важно:
Если вы используете .automount, вам не нужно включать сам .mount юнит, включается только .automount.
# Перечитываем конфиги systemd
sudo systemctl daemon-reload
# Включаем и сразу запускаем автомонтирование
sudo systemctl enable --now mnt-smb_share.automount
Если вы решили не использовать automount, а монтировать сразу при загрузке, используйте команду:
sudo systemctl enable --now mnt-smb_share.mount
Шаг 6. Проверка и диагностика
1. Проверка статуса:
# Если используете automount:
systemctl status mnt-smb_share.automount
# Статус самого монтирования (покажет, примонтировано ли оно в данный момент):
systemctl status mnt-smb_share.mount
2. Проверка доступа:
Попробуйте зайти в папку:
ls -l /mnt/smb_share
При первом обращении automount автоматически запустит .mount юнит и подключит шару.
3. Просмотр логов (если что-то пошло не так):
journalctl -u mnt-smb_share.mount -e
Частые проблемы и их решение (Troubleshooting)
1. Ошибка mount error(112): Host is down
Решение:
Сервер не поддерживает запрошенную версию SMB. Попробуйте добавить в Options параметр vers=2.0 или vers=1.0 (для очень старых NAS/роутеров).
2. Ошибка mount error(13): Permission denied
Решение:
Проверьте логин/пароль в файле credentials. Если используется домен AD, убедитесь, что добавили domain=DOMAIN в файл credentials. Также проверьте, не заблокирован ли доступ на самом сетевом хранилище (права на стороне Windows/Samba).
3. Монтирование не происходит при загрузке, но работает вручную
Решение:
Сетевой интерфейс поднимается дольше, чем systemd пытается смонтировать шару. Убедитесь, что в [Unit] указано After=network-online.target и Wants=network-online.target. В некоторых случаях (например, при использовании NetworkManager) может потребоваться добавить After=NetworkManager-wait-online.service.
4. Кириллические имена файлов отображаются как "кракозябры"
Решение:
Убедитесь, что в Options прописано iocharset=utf8. Если на сервере используется старая кодировка, попробуйте iocharset=cp866 или iocharset=koi8-r.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.