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

УСТАНОВКА

bash
# RHEL-подобные
sudo yum install autofs cifs-utils -y

# Debian-подобные
sudo apt install autofs cifs-utils -y

📂 СТРУКТУРА ФАЙЛОВ

 
 
ФайлНазначениеПример строки
/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

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

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

Полный формат:

text
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.100/share

⚙️ ОСНОВНЫЕ ОПЦИИ

 
 
ОпцияЗначениеПример
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Протокол SMBvers=2.0 или vers=3.0
iocharset=utf8Кодировка именiocharset=utf8
nounixОтключить UNIX-расширенияnounix
guestГостевой доступguest

🔐 ФАЙЛ УЧЕТНЫХ ДАННЫХ

Создание:

bash
sudo nano /etc/smb.creds

Содержимое:

text
username=ivanov
password=MySecret123
domain=WORKGROUP

Права:

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

📋 ПРИМЕРЫ КОНФИГУРАЦИИ

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

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

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

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

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

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

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

text
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: Динамическое имя (подпапка = имя шара)

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

🚀 ЗАПУСК И ПРОВЕРКА

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

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

# Статус
sudo systemctl status autofs

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

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

bash
# Проверка корневой папки
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

🛠️ ДИАГНОСТИКА

Проверка синтаксиса:

bash
sudo automount -t

Логи в реальном времени:

bash
sudo journalctl -u autofs -f

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

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

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

📁 ПОЛНЫЙ ПРИМЕР КОНФИГУРАЦИИ

/etc/auto.master:

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

/etc/auto.cifs:

text
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:

text
username=ivanov
password=P@ssw0rd123
domain=WORKGROUP

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

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

📌 КЛЮЧЕВЫЕ МОМЕНТЫ

  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 секунд бездействия


✅ ПОЛЕЗНЫЕ КОМАНДЫ

bash
# Посмотреть текущие CIFS-монтирования
mount -t cifs

# Проверить доступность шары
smbclient -L //192.168.1.10 -U username

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

# Принудительно размонтировать всё
sudo umount -a -t cifs -l

# Проверить права на файл учетки
ls -la /etc/smb.creds