Autofs (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Autofs
. Дата последней синхронизации: 17 января 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
AutoFS даёт возможность автоматического монтирования съёмных носителей и сетевых ресурсов при вставке или обращении к ним.
Установка
Установите
пакет
autofs
AUR
.
Примечание
Загружать модуль
autofs4
больше не нужно.
Настройка
AutoFS использует для конфигурирования шаблоны, расположенные в
/etc/autofs
. Основной шаблон называется
auto.master
, он может указывать на один или несколько других шаблонов для конкретных типов носителей.
Откройте
/etc/autofs/auto.master
своим любимым редактором. Вы увидите что-то подобное:
/etc/autofs/auto.master
#/media /etc/autofs/auto.media
Первое значение в каждой строке определяет базовый каталог, в который носители будут монтироваться, второе значение - шаблон который будет использован. По умолчанию базовый путь
/media
, но вы можете изменить путь на любое другое значение по вашему желанию. Например:
/etc/autofs/auto.master
/media/misc     /etc/autofs/auto.misc     --timeout=5
/media/net      /etc/autofs/auto.net      --timeout=60
Примечание
Убедитесь в наличии пустой строки в конце файла шаблона (нажмите
ENTER
после последнего слова). Если нет корректного EOF (end of file), демон AutoFS не загрузится корректно.
Совет
Дополнительный параметр
timeout
устанавливает количество секунд, после истечения которых каталоги будут размонтированы. Значение
0
отключает таймаут.
Базовый каталог будет создан, если он не существует. Он станет точкой монтирования, отображающей в себе динамически подключаемые носители, что означает, что существующее содержимое базового каталога будет недоступно, пока autofs работает. Однако это обратимо, так что если вы случайно настроили автомонтирование в непустой каталог, то можно просто прописать другой путь в
auto.master
и перезапустить AutoFS — содержимое существующего каталога вернётся на место.
Если вы всё равно хотите автомонтирование в непустой каталог и при этом иметь доступ к его содержимому даже во время работы autofs, вы можете настроить autofs на другой каталог (например, /var/autofs/net) и создать символические ссылки на неё:
# ln -s /var/autofs/net/share_name /media/share_name
В качестве альтернативы вы можете настроить монтирование носителей в конкретные каталоги вместо использования общего каталога:
/etc/autofs/auto.master
/-     /etc/autofs/auto.template
/etc/autofs/auto.template
/path/to/folder     -options :/device/path
/home/user/usbstick  -fstype=auto,async,nodev,nosuid,umask=000  :/dev/sdb1
Примечание
Это может вызвать проблемы с блокировкой ресурсов, если соединение до ресурса оказалось потеряно. При обращении к каталогу программы будут зависать в ожидании ответа, и придётся дожидаться возвращения соединения или убивать процесс, чтобы размонтирование стало возможным. Чтобы избежать этого, используйте только если вы всегда подключены к общему ресурсу, и не используйте домашний каталог или другие часто используемые каталоги, чтобы ваш файловый менеджер не пытался читать содержимое отключенного каталога.
Откройте файл
/etc/nsswitch.conf
и добавьте запись для автоматического монтирования:
automount: files
Когда вы закончите настраивать шаблоны (см. ниже),
запустите
и
включите
службу
autofs.service
.
Теперь устройства автоматически монтируются при обращении и остаются примонтированными всё то время, пока вы их используете.
Съёмные носители
Съемным устройствам назначаются имена блочных устройств в соответствии со следующим доступным местом, например если
/dev/sd{a,b,c}
уже заняты, съёмный носитель подключится как блочное устройство
/dev/sdd
. Вместо назначения точки монтирования на основе ненадежного пути к блочному устройству более надежным подходом является использование
UUID
или
PARTUUID
съемного носителя в качестве местоположения в map-файле.
Например, чтобы примонтировать определённый USB-диск в путь
/mnt/black
, настройте файл шаблона и map-файл:
/etc/autofs/auto.master
# основной шаблон
/mnt     /etc/autofs/auto.mnt   # [опции тут]
Используйте
blkid
чтобы найте UUID нужного раздела, затем сгенерируйте map-файл:
# _ID=$( blkid --output value --match-tag PARTUUID /dev/sd
XY
)
 # printf "%s %s\n" "black -fstype=auto :PARTUUID=" "${_ID}" >/etc/autofs/auto.mnt
Монтирование NFS
AutoFS предоставляет способ автоматического обнаружения и монтирования NFS-ресурсов на удалённых серверах (шаблон конфигурирования сетевых ресурсов
/etc/autofs/auto.net
был удалён в autofs5). Чтобы включить автоматическое обнаружение и монтирование сетевых ресурсов со всех доступных серверов без необходимости дополнительного конфигурирования, вам необходимо добавить следующее в файл
/etc/autofs/auto.master
:
/net -hosts --timeout=60
Примечание
Каждое имя хоста должно быть разрешимым (resolvable), например, любой IP-адрес в
/etc/hosts
или заданный через
DNS
. Убедитесь, что у вас установлен и настроен пакет
nfs-utils
. Также нужно
включить
rpcbind
для просмотра общих каталогов.
К примеру, есть удалённый сервер
fileserver
(название каталога является именем хоста сервера) с ресурсом NFS, который называется
/home/share
, вы можете получить доступ к ресурсу просто набрав:
# cd /net/fileserver/home/share
Примечание
Please note that
ghosting
(i.e. automatically creating directory placeholders before mounting shares) is enabled by default; although, AutoFS installation notes claim to remove that option from
/etc/conf.d/autofs
in order to start the AutoFS daemon.
Опция
-hosts
использует механизм, похожий на команду
showmount
, для обнаружения удалённых ресурсов. Вы можете посмотреть экспортированные ресурсы с помощью этой команды:
# showmount <имясервера> -e
Замените
<имясервера>
на имя вашего собственного сервера.
Ручная настройка NFS
Чтобы примонтировать NFS-ресурс
file_server
, располагаемый по удалённому пути
/srv/shared_dir
, в локальный путь
/mnt/foo
,
добавьте
новый файл конфигурации, например
file_server.autofs
:
/etc/autofs/auto.master.d/file_server.autofs
/mnt   /etc/autofs/auto.file_server --timeout 60
/etc/autofs/auto.file_server
foo  -rw,soft,rsize=8192,wsize=8192 file_server:/srv/shared_dir
Samba
Одиночные ресурсы
Добавьте в
/etc/autofs/auto.master
:
/media/[мой_сервер] /etc/autofs/auto.[мой_сервер] --timeout 60 --browse
где
--timeout
определяет, сколько секунд ждать перед размонтированием. Опция
--browse
создаёт пустые каталоги для каждой точки монтирования для избегания таймаута, если не удаётся связаться с сетевым ресурсом.
Затем создайте файл
/etc/autofs/auto.[мой_сервер]
[любое_имя] -fstype=cifs,[другие_опции] ://[удалённый_сервер]/[имя_удалённого_ресурса]
Можно указать имя пользователя и пароль для общего ресурса в опциях:
[любое_имя] -fstype=cifs,username=[имя_пользователя],password=[пароль],[другие_опции] ://[remote_server]/[имя_удалённого_ресурса]
Примечание
Экранируйте $ и другие спецсимволы обратным слэшем по необходимости.
Несколько ресурсов
Вы можете указать несколько общих ресурсов в
/etc/autofs/auto.[мой_сервер]
, например:
[любое_имя] -fstype=cifs,[другие_опции] /photos ://[удалённый_сервер]/photos /music ://[удалённый_сервер]/music /video ://[удалённый_сервер]/video
Автообнаружение
Смотрите комментарии в
/etc/autofs/auto.smb
.
FTP и SSH (через Fuse)
Доступ к удалённым FTP- и SSH-серверам может быть легко получен с AutoFS через
FUSE
, слой виртуальной файловой системы.
Удалённые FTP
Во-первых, установите пакет
curlftpfs
.
Загрузите модуль
fuse
:
# modprobe fuse
Создайте файл
/etc/modules-load.d/fuse.conf
с содержимым
fuse
для загрузки его при каждом запуске компьютера.
Далее, добавьте новую запись для FTP-серверов в
/etc/autofs/auto.master
:
/media/ftp        /etc/autofs/auto.ftp    --timeout=60
Создайте файл
/etc/autofs/auto.ftp
и добавьте сервер в формате
ftp://myuser:mypassword@host:port/path
:
servername -fstype=curl,rw,allow_other,nodev,nonempty,noatime    :ftp\://myuser\:mypassword\@remoteserver
Примечание
Ваши пароли может видеть каждый, кто запустит
df
(только для примонтированных серверов) или откроет файл
/etc/autofs/auto.ftp
.
Если Вы хотите немного больше безопасности, можете создать файл
~root/.netrc
и указать пароли там.
Пароли по-прежнему написаны в текстовом формате, но Вы можете задать права 600, и команда
df
их не покажет (неважно, примонтирован сервер или нет).
Этот способ также менее чувствителен к специальным символам (которых иначе необходимо избегать) в паролях. Придерживайтесь такого формата:
machine remoteserver  
login myuser
password mypassword
Строчка в
/etc/autofs/auto.ftp
выглядит как эта, без имени пользователя и пароля:
servername -fstype=curl,allow_other    :ftp\://remoteserver
Создайте файл
/sbin/mount.curl
с кодом:
/sbin/mount.curl
#! /bin/sh
 curlftpfs $1 $2 -o $4,disable_eprt
Создайте файл
/sbin/umount.curl
с кодом:
/sbin/umount.curl
#! /bin/sh
 fusermount -u $1
Установите права для обоих файлов:
# chmod 755 /sbin/mount.curl
# chmod 755 /sbin/umount.curl
После перезапуска Ваш новый FTP-сервер должен быть доступен через
/media/ftp/servername
.
Удалённые SSH
The factual accuracy of this article or section is disputed.
Reason:
All the
ssh*
commands should be executed as the same user, as before
this edit
. It should not matter if it is root or unprivileged. (Discuss in
Talk:Autofs (Русский)
)
Здесь базовые инструкции по доступу к удалённой файловой системе через
SSH
с помощью AutoFS.
Примечание
Аутентификация без пароля может быть удобной, но также имеет последствия для безопасности. Подробнее смотрите в
SSH keys
.
Установите пакет
sshfs
.
Загрузите модуль
fuse
:
# modprobe fuse
Создайте файл
/etc/modules-load.d/fuse.conf
с содержимым
fuse
чтобы загружать его при каждом запуске системы, если вы не создали ранее.
Установите
openssh
.
Сгенерируйте
ключ SSH
:
$ ssh-keygen
Когда генератор запросит фразу-пароль, просто нажмите
ENTER
. Использование ключей SSH без фразы-пароля менее безопасно, однако запуск AutoFS с паролем приводит к некоторым дополнительным трудностям, которые (пока) не были освещены в этой статье.
Далее, скопируйте публичный ключ на удалённый SSH сервер:
$ ssh-copy-id username@remotehost
Скопируйте личный ключ в домашнюю директорию пользователя root, чтобы AutoFS могла его найти:
# sudo cp ~/.ssh/id_rsa /root/.ssh/id_rsa
Вышеприведённое работает, если AutoFS запускается с правами root и по умолчанию не имеет доступа в домашнюю директорию пользователя, содержащую личный ключ.
Как root
убедитесь, что вы можете войти на сервер:
# ssh username@remotehost
Примечание
Это добавит удалённый сервер в список известных хостов
known_hosts
. Также можно добавить его вручную в
/etc/ssh/ssh_known_hosts
.
Создайте новый вход для сервера SSH в
/etc/autofs/auto.master
:
/media/ssh		/etc/autofs/auto.ssh	--timeout=60
Создайте файл
/etc/autofs/auto.ssh
и добавьте SSH:
/etc/autofs/auto.ssh
servername     -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_rsa :sshfs\#username@host\:/
После перезапуска Ваш сервер SSH должен быть доступен через
/media/ssh/servername
.
MTP
Media Transfer Protocol (
MTP
) используется на некоторых устройствах Android.
Установите пакет
mtpfs
.
Создайте новую запись для MTP в
/etc/autofs/auto.misc
:
android -fstype=fuse,allow_other,umask=000     :mtpfs
Решение проблем и советы
Эта секция содержит несколько решений самых распространённых проблем с AutoFS.
Using NIS
AutoFS с версии 5.0.5 имеет более продвинутую поддержку
NIS
. Чтобы использовать AutoFS вместе с NIS, добавьте
yp:
в начало имён шаблонов в
/etc/autofs/auto.master
:
/home   yp:auto_home    --timeout=60 
/sbtn   yp:auto_sbtn    --timeout=60
+auto.master
В более ранних версиях NIS (до 5.0.4), вам нужно добавить
nis
в
/etc/nsswitch.conf
:
automount: files nis
Опциональные параметры
Вы можете установить параметры, такие как
timeout
, на общесистемном уровне для всех медиаустройств AutoFS в
/etc/default/autofs
:
Откройте файл
/etc/default/autofs
и отредактируйте строку
OPTIONS
:
OPTIONS='--timeout=5'
Чтобы сделать возможным ведение логов (по умолчанию его нет), добавьте
--verbose
в строку
OPTIONS
в
/etc/default/autofs
, например:
OPTIONS='--verbose --timeout=5'
После перезапуска демона
autofs
вы увидите подробный вывод в
состоянии юнита
или
журнале
.
Распознавание нескольких устройств
Если Вы используете несколько устройств USB и хотите легко отсоединять их, Вы можете использовать AutoFS чтобы определять точки монтирования и udev чтобы давать имена Вашим устройствам USB. Посмотрите
udev#О правилах udev
для инструкций по настройке правил udev.
Права доступа AutoFS
Если AutoFS не работает правильно, убедитесь в том, что права доступа для файлов шаблонов установлены правильно, иначе AutoFS не будет запускаться. Это может случиться, если Вы сделали резервную копию способом, который не сохраняет права. Вот как должны быть установлены права доступа для файлов конфигурации:
0644 - /etc/autofs/auto.master
0644 - /etc/autofs/auto.media
0644 - /etc/autofs/auto.misc
0644 - /etc/conf.d/autofs
В общем, скрипты (такие как вышеупомянутый
auto.net
) должны быть
исполняемыми
, а списки монтируемых устройств не должны.
Если Вы получаете ошибки в
/var/log/daemon.log
, подобные этим, значит у Вас проблемы с правами доступа:
May  7 19:44:16 peterix automount[15218]: lookup(program): lookup for petr failed
May  7 19:44:16 peterix automount[15218]: failed to mount /media/cifs/petr
Проблемы с fusermount
В некоторых версиях util-linux у вас может не получиться размонтировать файловую систему fuse, которую примонтировал autofs, даже с опцией "user=". Смотрите обсуждение здесь:
https://sourceforge.net/p/fuse/mailman/fuse-devel/thread/k3a8pi%2457r%241%40ger.gmane.org/
Отладка проблем с автомонтированием
Для более удобной отладки вы можете запустить automount на переднем плане (не как демон).
Остановите
службу
autofs.service
, затем выполните:
# automount -f -v
Или если вы хотите больше отладочной информации:
# automount -f --debug
Альтернативы
Systemd
может автоматически монтировать файловые системы по запросу; смотрите see
здесь
для описания и статью
sshfs
как пример.
Thunar Volume Manager
— система автомонтирования для пользователей файлового менеджера
Thunar
.
PCManFM
— легковесный файловый менеджер с встроенной поддержкой удалённых общих ресурсов.
udisks
— минималистичная служба автоматического монтирования дисков.
Смотрите также
Информация об использовании FTP и SFTP с AutoFS основана на этой статье из Gentoo Wiki:
https://web.archive.org/web/20130414074212/http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares
Больше информации о SSH можно найти на страницах
SSH
и
SSH Keys
этого wiki.
Ubuntu's Autofs help wiki:
https://help.ubuntu.com/community/Autofs
Опции монтирования, специфичные для определённых файловых систем:
mount(8) § FILESYSTEM-SPECIFIC MOUNT OPTIONS
Опции монтирования, специфичные для fuse:
mount.fuse(8)