Autofs (Русский)
AutoFS даёт возможность автоматического монтирования съёмных носителей и сетевых ресурсов при вставке или обращении к ним.
Установка
Установите пакет autofsAUR.
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
Теперь устройства автоматически монтируются при обращении и остаются примонтированными всё то время, пока вы их используете.
Съёмные носители
Съемным устройствам назначаются имена блочных устройств в соответствии со следующим доступным местом, например если /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/sdXY ) # 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
/etc/hosts
или заданный через DNS. Убедитесь, что у вас установлен и настроен пакет nfs-utils. Также нужно включить rpcbind
для просмотра общих каталогов.К примеру, есть удалённый сервер fileserver (название каталога является именем хоста сервера) с ресурсом NFS, который называется /home/share
, вы можете получить доступ к ресурсу просто набрав:
# cd /net/fileserver/home/share
/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
Здесь базовые инструкции по доступу к удалённой файловой системе через SSH с помощью AutoFS.
Установите пакет 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
- Опции монтирования, специфичные для определённых файловых систем: https://manpages.ubuntu.com/manpages/focal/man8/mount.8.html#filesystem-specific%20mount%20options
- Опции монтирования, специфичные для fuse: https://manpages.ubuntu.com/manpages/precise/man8/mount.fuse.8.html