Содержание

Skip to end of metadata
Go to start of metadata

В пакет autofs внесены существенные изменения, в частности опции монтирования "user" и "pass" более не поддерживаются, вместо них следует использовать "username" и "password"

.

Данная статья применима к:

  • ОС ОН Орёл 2.12;
  • ОС СН Смоленск 1.6;
  • ОС СН Ленинград 8.1.

Autofs - пакет, позволяющий автоматически подключать различные ресурсы (переносные устройства, жесткие диски, сетевые устройства, RAM-диск)
при их использовании, и автоматически их отключать при прекращении использования.

Установка

Пакет autofs входит в стандартные дистирибутивы ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6,
и может быть установлен с помощью графического менеджера пакетов, или из командной строки командой:

sudo apt install autofs

Настройка

Основная конфигурация пакета autofs хранится в файле /etc/auto.master.

Каждая стройка файла состоит из указания точки монтирования и параметров монтирования.

Далее приведены примеры типовых настроек, подробно формат файла конфигурации описан в

man auto.master
После внесения изменений в конфигурационные файлы для того, чтобы они вступили в силу необходимо перезапустить сервис:
sudo systemctl restart autofs

Для проверки успешности настройки можно перейти в точку монтирования, например, командой 

cd /mnt/share

При этом настроенный ресурс должен примонтироваться автоматически.

Автоматическое монтирование ресурсов NFS

Пример монтирования ресурса из статьи про NFS.

Монтируем с использованием autofs ресурс из предыдущего примера 192.168.1.10:/srv/nfsshare/ в ранее созданную точку монтирования /mnt/share. 

Добавим в конец файла /etc/auto.master строку: 

/mnt /etc/auto.nfs --timeout=60

При этом

  • /mnt указывает кореневой каталог для монтирования ресурсов;
  • /etc/auto.nfs указывает файл с описанием правил монтирования ресурсов NFS;
  • timeout указывает время неактивности, после которого ресурс  будет отмонтирован автоматически. Этот параметр указывать не обязательно, таймаут в autofs по умолчанию 300 секунд (5 минут), то есть ресурс будет автоматически отмонтирован после 5 минут бездействия.

Далее, создадим файл /etc/auto.nfs с описанием правил монтирования ресурсов NFS.
Этот файл должен содержать отдельную строку для каждого ресурса NFS
Формат строки:  {точка_монтирования} [{опции_монитирования}] {адрес_ресурса}.
Точки монтирования будут размещаться в корневом каталоге для монтирования ресурсов, указанном в /etc/auto.master:

share -fstype=nfs4,rw,soft,intr 192.168.1.10:/srv/nfsshare

Где

  • share – точка монтирования в кореневом каталоге монтирования (/mnt/share)
  • -fstype=nfs4,rw,soft,intr – опции монтирования
  • 192.168.1.10:/nfsshare– адрес ресурса

Это создаст новую точку автоматического монтирования /mnt/share/  для ресурса /srv/nfsshare/, экспортируемого сервером с IP-адресом “192.168.1.10”

Автоматическое монтирование ресурсов Samba

Добавить в файл /etc/auto.master:

 /media/smb    /etc/auto.smb   --timeout=60        # ресурсы samba (windows)

Файл /etc/auto.smb создавать не требуется, это стандартный сценарий, входящий в состав пакета autofs
После перезапуска autofs для автоматического подключения ресурсов достаточно обратиться к ресурсу по имени хоста, например:

ls /media/smb/<имя_хоста>

или

ls /media/smb/<IP_адрес_хоста>

Данный способ может не работать с некоторыми серверами Windows.  В таком случае возможно использовать монтирование ресурсов как ресурсов CIFS.

Автоматическое монтирование ресурсов CIFS


Данный способ монтирования может быть неприемлем с точки зрения безопасности
в связи с тем, что пароли хранятся в файле в открытом виде .

Вместе с тем описываемое подключение позволяет использовать ресурсы samba в доверенной локальной сети всем пользователям локальной машины с авторизацией от имени выделенного (непривилегированного) пользователя.

В качестве основы для создания скрипта /etc/auto.cifs использован скрипт auto.smb поставляемый с пакетом autofs5 с небольшими доработками.

Для использования этого способа в дополнение к собственно samba должен быть установлен пакет cifs-utils:

sudo apt install cifs-utils
Добавляем в /etc/auto.master строку:

/media/cifs /etc/auto.cifs --timeout=60

Создаем файл /etc/auto.cifs:

#!/bin/bash
# This file must be executable to work! chmod 755!
#set -x
key="$1"
key=$(echo $key | awk -F "/" '{print $1}')

credfile="/etc/user-cifs"
username=$(cat $credfile | grep "$key" | awk -F ":" '{print $2}' | awk -F "%" '{print $1}')
password=$(cat $credfile | grep "$key" | awk -F ":" '{print $2}' | awk -F "%" '{print $2}')
opts="-fstype=cifs,file_mode=0644,username=$username,password=$password,uid=$username,gid=$username"
for P in /bin /sbin /usr/bin /usr/sbin ; do
    if [ -x $P/smbclient ] ; then
       SMBCLIENT=$P/smbclient
       break
    fi
done

[ -x $SMBCLIENT ] || exit 1

$SMBCLIENT --user=$username%$password -gL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
BEGIN { ORS=""; first=1 }
/Disk/ {
    if (first) { print opts; first=0 }
    dir = $2
    loc = $2
# Enclose mount dir and location in quotes
# Double quote "$" in location as it is special
    gsub(/\$$/, "\\$", loc);
    print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
}
END { if (!first) print "\n"; else exit 1 }
'

#share -fstype=cifs,rw,credentials=/root/.cifs_credentials ://localhost/share
#public -fstype=cifs,rw,noperm,guest ://localhost/public

Комментарии к файлу

  • < opts="-fstype=cifs,file_mode=0644,dir_mode=0755,codepage=866,iocharset=utf8,user=$user_password" > : строка для обеспечения просмотра русских букв на ресурсах windows
  • < $SMBCLIENT --user=$user_password -gL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- ' >  : строка <$SMBCLIENT ...> изменена для обеспечения возможности подключения к samba-ресурсам windows
  • < user_password=$(cat $credfile | grep "$key" | awk -F ":" '{print $2}') > : строка добавлена для получения из файла пароля доступа к ресурсу cifs

Для монтирования ресурсов Windows следует использовать более простую строчку опций монтирования, например для Windows Server 2012:

opts="-fstype=cifs,rw,noperm,username=$username,password=$password"

Для более старых версий Windows Server может понадобиться ограничить версию используемого протокола:

opts="-fstype=cifs,rw,username=$username,password=$password,vers=1.0"

Делаем скрипт auto.cifs исполняемым:

sudo chmod 755 /etc/auto.cifs

Создаем файл с паролями доступа к ресурсу cifs /etc/user-cifs со строчками вида:

ХОСТ1:ПОЛЬЗОВАТЕЛЬ%ПАРОЛЬ
ХОСТ2:ПОЛЬЗОВАТЕЛЬ%ПАРОЛЬ
Имя пользователя следует указывать без имени домена или рабочей группы.


И в целях безопасности устанавливаем права к файлу /etc/user-cifs только для root:

sudo chmod 600 /etc/user-cifs

Перезапускаем autofs:
sudo systemctl restart autofs

Обращаемся в командной строке к ресурсу samba:
ls /media/cifs/ХОСТ1

Монтирование CIFS ресурсов c авторизацией через Kerberos

Если монтирование выполняется на компьютере с настроенной авторизацией через Kerberos, то монтровать ресурсы можно с помощью принципала Kerberos.

Для этого:

Убедиться, что служба CIFS правильно настроена на работу с Kerberos, для чего убедиться, что в файле /etc/request-key.d/cifs.spnego.conf пристутвует опция -t, а если её нет - то добавить её.
В итоге содержимое файла должно быть следующее:

create cifs.spnego * * /usr/sbin/cifs.upcall -t %k

Получить/обновить принципала Kerberos (если монтирование делается от имени суперпользователя, то и принципал должен быть получен от того же пользователя):

kinit username
Убедиться, что принципал получен:
klist
И команда монтирования (для примера монтируем ресурс //server.windomain.ru/share в каталог /mnt):
mount -t cifs //server.windomain.ru/share /mnt -o sec=krb5

  • No labels