Настройка autofs для CIFS-монтирований

В этой статье подробно разберёмся, как настроить службу autofs для автоматического монтирования CIFS-шаров (SMB) в Linux. Мы рассмотрим установку пакетов, структуру конфигурационных файлов, ключевые опции монтирования и типичные проблемы, с которыми можно столкнуться.

Служба autofs (automount) позволяет автоматически монтировать файловые системы по требованию. Это экономит ресурсы системы, так как шары подключаются только при первом обращении к конкретной папке и размонтируются, если они не используются.

Установка пакетов

RHEL-подобные (CentOS, Fedora, RHEL)

				
					sudo yum install autofs cifs-utils -y
				
			

Debian-подобные (Debian, Ubuntu, Kali)

				
					sudo apt install autofs cifs-utils -y
				
			

Важно!: Убедитесь, что пакет cifs-utils установлен — без него служба не сможет понять опции монтирования CIFS.

Структура конфигурационных файлов

Для работы autofs необходимо создать три файла:

Файл Назначение Пример строки
/etc/auto.master
Главный конфиг, где объявляются точки монтирования
/mnt/cifs /etc/auto.cifs —timeout=300 —ghost
/etc/auto.cifs
Карта ресурсов (список шаров)
share -fstype=cifs,opts ://server/share
/etc/smb.creds
Файл с учётными данными (опционально)
username=user\npassword=pass

Формат записи в /etc/auto.cifs

Базовый синтаксис:

				
					имя_папки    -fstype=cifs,опции    ://сервер/шар
				
			

Полный формат с расширенными опциями:

				
					share_name    -fstype=cifs,credentials=/etc/smb.creds,uid=1000,gid=1000,file_mode=0755,dir_mode=0755,rw,nounix,iocharset=utf8,vers=3.0    ://192.168.1.10/share
				
			

Совет: Опция nounix отключает UNIX-расширения (gid/mode), что часто помогает при работе с Windows-серверами. Опция iocharset=utf8 обязательна для корректного отображения кириллических имён файлов.

Основные опции монтирования

Таблица опций

Опция Значение Пример
username=user
Имя пользователя
username=admin
password=pass
Пароль (небезопасно)
password=123
credentials=/path
Файл с учёткой (безопасно)
credentials=/etc/smb.creds
uid=1000
Владелец (локальный)
uid=1000
gid=1000
Группа (локальная)
gid=1000
file_mode=0644
Права для файлов
file_mode=0644
dir_mode=0755
Права для папок
dir_mode=0755
rw / ro
Чтение-запись / только чтение
rw
vers=3.0
Протокол SMB
vers=2.0 или vers=3.0
iocharset=utf8
Кодировка имен
iocharset=utf8
nounix
Отключить UNIX-расширения
nounix
guest
Гостевой доступ
guest

Файл учётных данных

Создание файла:

				
					sudo nano /etc/smb.creds
				
			

Содержимое файла:

				
					username=ivanov
password=MySecret123
domain=WORKGROUP
				
			

Настройка прав доступа:

				
					sudo chmod 600 /etc/smb.creds
sudo chown root:root /etc/smb.creds
				
			

Внимание!: Пароль в открытом виде в строке монтирования легко просматривается в логах. Используйте файл /etc/smb.creds с правами 600 для безопасности.

Примеры конфигурации

Пример 1: Базовый с паролем в строке

				
					docs    -fstype=cifs,username=admin,password=12345,rw,vers=3.0    ://192.168.1.10/docs
				
			

Пример 2: С файлом учётных данных (рекомендуется)

				
					backup    -fstype=cifs,credentials=/etc/smb.creds,rw,uid=1000,gid=1000,vers=3.0    ://192.168.1.10/backup
				
			

Пример 3: Только чтение для публичного доступа

				
					public    -fstype=cifs,guest,ro,iocharset=utf8,vers=2.0    ://192.168.1.10/public
				
			

Пример 4: Группа шаров с одного сервера

				
					share1    -fstype=cifs,credentials=/etc/smb.creds,vers=3.0    ://server.local/share1
share2    -fstype=cifs,credentials=/etc/smb.creds,vers=3.0    ://server.local/share2
share3    -fstype=cifs,credentials=/etc/smb.creds,vers=3.0    ://server.local/share3
				
			

Пример 5: Динамическое имя (подпапка = имя шара)

				
					&    -fstype=cifs,credentials=/etc/smb.creds    ://server/&
				
			

Полный пример конфигурации

/etc/auto.master:

				
					/mnt/cifs    /etc/auto.cifs    --timeout=300 --ghost
				
			

/etc/auto.cifs:

				
					backup    -fstype=cifs,credentials=/etc/smb.creds,rw,uid=1000,gid=1000,file_mode=0644,dir_mode=0755,iocharset=utf8,nounix,vers=3.0    ://192.168.1.10/Backup
docs      -fstype=cifs,credentials=/etc/smb.creds,rw,uid=1000,gid=1000,file_mode=0644,dir_mode=0755,iocharset=utf8,nounix,vers=3.0    ://192.168.1.10/Documents
public    -fstype=cifs,guest,ro,iocharset=utf8,vers=2.0    ://192.168.1.10/Public
				
			

/etc/smb.creds:

				
					username=ivanov
password=P@ssw0rd123
domain=WORKGROUP
				
			

Финальная проверка:

				
					sudo chmod 600 /etc/smb.creds
sudo systemctl restart autofs
cd /mnt/cifs/backup && ls -la
				
			

Запуск и проверка службы

Команды управления службой:

				
					# Запуск службы
sudo systemctl start autofs
sudo systemctl enable autofs   # автозапуск при старте системы

# Статус службы
sudo systemctl status autofs

# Перезапуск после изменений
sudo systemctl restart autofs
				
			

Проверка работы:

				
					# Проверка корневой папки
ls -la /mnt/cifs

# Автоматическое монтирование при входе
cd /mnt/cifs/backup && ls -la

# Просмотр смонтированных CIFS
mount -t cifs

# Проверка точки монтирования
mountpoint /mnt/cifs/backup

# Просмотр всех CIFS-монтирований
findmnt -t cifs
				
			

Типичные ошибки и их решение

Таблица ошибок

Ошибка Причина Решение
Permission denied (13)
Неверный логин/пароль
Проверить credentials
No such file or directory (2)
Неверный путь к шару
Проверить имя шара
Host is down (112)
Сервер недоступен
Проверить сеть, ping
Operation now in progress (115)
Таймаут
Проверить порт 445
mount error(2) с vers=3.0
Нет поддержки SMB3
Указать vers=2.0
???????? в именах файлов
Проблемы с кодировкой
Добавить iocharset=utf8,nounix
Не видно папки до входа
Нет опции —ghost
Добавить в auto.master

Диагностика и отладка

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

				
					sudo automount -t
				
			

Логи службы в реальном времени:

				
					sudo journalctl -u autofs -f

# ИЛИ для старых систем
sudo tail -f /var/log/messages | grep -i autofs
				
			

Принудительный сброс монтирований:

				
					sudo systemctl stop autofs
sudo umount -l /mnt/cifs/* 2>/dev/null
sudo systemctl start autofs
				
			

Ключевые моменты

  1. Безопасность: всегда использовать credentials=/path/file вместо username/password в строке монтирования.
  2. Права доступа: файл с учёткой должен иметь права 600 (chmod 600), чтобы другие пользователи не могли его прочитать.
  3. Версия SMB: если не работает с vers=3.0 — пробовать vers=2.0 или vers=1.0.
  4. Кодировка: для кириллицы обязательно добавить iocharset=utf8,nounix.
  5. Автозапуск: не забыть sudo systemctl enable autofs.
  6. Опция --ghost: позволяет видеть папки до монтирования (удобно для навигации).
  7. Опция --timeout: авторазмонтирование через N секунд бездействия (по умолчанию 300 сек).

Полезные команды

Посмотреть текущие CIFS-монтирования:

				
					mount -t cifs
				
			

Проверить доступность шары:

				
					smbclient -L //192.168.1.10 -U username
				
			

Показать дерево дисков:

				
					lsblk
				
			

Принудительно размонтировать всё:

				
					sudo umount -a -t cifs -l
				
			

Проверить права на файл учётки:

				
					ls -la /etc/smb.creds