- Подключение файловых систем. Команда mount в Linux
- Вывод списка смонтированных файловых систем(ФС)
- Монтирование файловой системы
- Примеры использования mount
- Монтирование USB-накопителя/жесткого диска
- Монтирование файлов ISO
- Монтирование NFS
- Размонтирование файловой системы
- Сохранение параметров mount после перезагрузки
- Заключение
- Лекция №8
Подключение файловых систем. Команда mount в Linux
В ОС Linux команда mount используется для подключения (монтирования) файловых систем и переносных накопителей (например, USB-флешек) к конкретным точкам монтирования в дереве директорий. Команда umount отключает (размонтирует) смонтированную файловую систему от дерева директорий. В данном руководстве мы рассмотрим основы подключения и отключения различных файловых систем при помощи команд mount и umount.
Вывод списка смонтированных файловых систем(ФС)
При выполнении без аргументов команда mount выведет все подключенные в данный момент ФС:
По умолчанию результат будет содержать все ФС, в том числе виртуальные, такие как cgroup, sysfs и т. д. Каждая строка содержит информацию об имени устройства, директории, в которой оно смонтировано, типе и опциях монтирования в следующей форме:
Для отображения только ФС определенного типа используется опция -t. Например, так можно отобразить только разделы ext4:
Монтирование файловой системы
Для подключения файловой системы к конкретному местоположению (точке монтирования) команда mount используется в следующей форме:
После подключения точка монтирования становится корневой директорией смонтированной ФС. Например, смонтировать жесткий диск /dev/sdb1 в директорию /mnt/media можно следующим образом:
Обычно при монтировании устройства с распространенной ФС, например, ext4 или xfs, команда mount автоматически определяет ее тип. Однако, некоторые ФС не распознаются. Их тип нужно указывать в явном виде. Для этого используется опция -t:
Чтобы указать дополнительные опции монтирования, используется флаг -o:
Можно указать несколько опций, разделенных запятыми (после запятых не должно быть пробелов). Ниже предоставлены основные опции команды
-V — вывести версию утилиты;
-h — вывести справку;
-v — подробный режим;
-a, —all — примонтировать все устройства, описанные в fstab;
-F, —fork — создавать отдельный экземпляр mount для каждого отдельного раздела;
-f, —fake — не выполнять никаких действий, а только посмотреть что собирается делать утилита;
-n, —no-mtab — не записывать данные о монтировании в /etc/mtab;
-l, —show-labels — добавить метку диска к точке монтирования;
-c — использовать только абсолютные пути;
-r, —read-only — монтировать раздел только для чтения;
-w, —rw — монтировать для чтения и записи;
-L, —label — монтировать раздел по метке;
-U, —uuid — монтировать раздел по UUID;
-T, —fstab — использовать альтернативный fstab;
-B, —bind — монтировать локальную папку;
-R, —rbind — перемонтировать локальную папку.
Полный список опций можно получить, выполнив команду man mount.
Примеры использования mount
Давайте рассмотрим несколько примеров использования утилиты. Как правило для монтирования нужно выполнить всего два действия
- Создать точку монтирования
- Примонтировать файловую систему
Монтирование USB-накопителя/жесткого диска
В большинстве современных дистрибутивов Linux, например, Ubuntu, USB-накопители автоматически монтируются при подключении, но иногда может потребоваться ручное монтирование устройства. Чтобы смонтировать USB-накопитель, выполните следующие действия.
Создайте точку монтирования
Если USB-накопитель использует устройство /dev/sdd1, его можно смонтировать в директорию /media/usb следующей командой:
Для поиска устройства и типа файловой системы можно воспользоваться любой из следующих команд:
Монтирование файлов ISO
Для монтирования файла ISO используется петлевое (loop) устройство — специальное виртуальное устройство, которое позволяет осуществлять доступ к файлу как к блочному устройству.
Сначала нужно создать точку монтирования в любой желаемой директории:
Смонтируйте файл ISO следующей командой:
Не забудьте заменить /path/to/image.iso на путь к вашему файлу ISO.
Монтирование NFS
Для монтирования системы NFS требуется установить клиент NFS. Установка клиента NFS в Ubuntu и Debian:
Установка клиента NFS в CentOS и Fedora:
Создайте директорию, которая будет точкой монтирования удаленной файловой системы:
Обычно требуется автоматическое монтирование удаленной директории NFS при загрузке. Для этого нужно изменить файл конфигурации /etc/fstab. Откройте его в любом текстовом редакторе, например:
Добавьте в файл следующую строку, заменив сервер:/директория на имя или IP-адрес сервера NFS и экспортируемую директорию:
Смонтируйте ресурс NFS следующей командой:
Размонтирование файловой системы
Для отключения смонтированной файловой системы используется команда umount, в качестве аргумента которой указывается директория, в которую она была смонтирована (точка монтирования) или имя устройства:
Если файловая система используется, umount не сможет ее отключить. В таких ситуациях можно воспользоваться командой fuser, чтобы выяснить, какие процессы осуществляют доступ к файловой системе:
Определив процессы, можно остановить их и размонтировать файловую систему. Также для отключения занятой файловой системы сразу после завершения ее использования можно воспользоваться опцией -l (—lazy, “ленивое” отключение):
Для принудительного размонтирования применяется опция -f (—force). Обычно она используется для отключения недостижимой системы NFS.
Во всех остальных случаях принудительное отключение нежелательно, так как может привести к повреждению данных в файловой системе.
Сохранение параметров mount после перезагрузки
Для того, что бы устройства при перезагрузки системы монтировались автоматически, необходимо прописать инструкции монтирования в файл /etc/fstab. Файл /etc/fstab содержит список записей в следующем формате:
Подключит устройство /dev/sdb1 (например жесткий диск) в директорию /home
После того как инструкция для mount прописаны в /etc/fstab, что бы проверить правильность написания дайте команду
Если команда отработает без ошибок, то все устройства прописанные в /etc/fstab будут подключены, а также изменения не потеряются после перезагрузки.
Заключение
Мы рассмотрели наиболее распространенные примеры подключения различных файловых систем к дереву директорий при помощи команды mount и их отключения командой umount. Для получения более подробной информации об опциях команд mount и umount можно обратиться к соответствующим man-страницам.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Лекция №8
Для упрощения администрирования устройств, несмотря на большое разнообразие соответствующего им периферийного оборудования и запоминающих устройств, в ASTRA LINUX SE заданы всего два их типа:
- Символьные — любые периферийные и запоминающие устройства, обмен данными с которыми ведётся посимвольно (побайтно). К таким устройствам относятся, например, принтер, сканер, мышь, клавиатура, монитор;
- Блочные — периферийные устройства, обмен данными с которыми ведётся блоками (последовательностями байт), размер которых зависит от устройства. Например, при хранении данных на жёстких дисках блоками являются секторы (каждый сектор имеет длину 512 байт).
В операционных системах семейства Linux и в том числе, и в ASTRA LINUX SE устройствам соответствуют файлы специального типа. Задание устройств файлами позволило не определять для них отдельных элементов МРОСЛ ДП-модели, а представлять их сущностями.
Уделим некоторое внимание файлов в операционных системах семейства Linux.
Система Linux не делает никакой разницы между файлом и каталогом, так как каталог — это просто файл, содержащий имена других файлов. Программы, службы, тексты, изображения и т.д. — все это файлы. В системе Linux устройства ввода и вывода и вообще все устройства считаются файлами.
Для того, чтобы организованно управлять всеми этими файлами, человеку удобно представлять их в виде упорядоченной древовидной структуры на жестком диске.
Виды файлов
Большинство файлов просто файлы, называемые обычными файлами; они содержат обычные данные, например, текстовые файлы, исполняемые файлы (или программы), файлы ввода или вывода программ и т.д.
В Linux существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:
- обычный файл;
- каталог;
- специальный файл устройства;
- именованный канал или FIFO;
- символическая связь (ссылки);
- сокет.
Обычный файл
Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся текстовые файлы, бинарные данные, исполняемые программы и т. п.
Каталог
С помощью каталогов формируется логическое дерево файловой системы. Каталог — это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию — метаданные, позволяющие операционной системе производить операции над этими файлами. Каталоги разделяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. Любая задача, имеющая право на чтение каталога, может прочесть его содержимое, но только ядро имеет право на запись в каталог.
На рисунке 1. в качестве примера приведена структура каталога. По существу, каталог представляет собой таблицу, каждая запись которой соответствует некоторому файлу. Первое поле каждой записи содержит указатель на метаданные (номер индексного дескриптора), а второе определяет имя файла.
Рисунок 1. Структура каталога.
Специальный файл устройства
Специальный файл устройства обеспечивает доступ к физическому устройству. В Linux различают символьные и блочные файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи, в специальный файл устройства.
Символьные файлы устройств используются для небуферизованного обмена данными с устройством. В противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины — блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.
FIFO (First-In-First-Out) или именованный канал
FIFO (First-In-First-Out) или именованный канал — это файл, используемый для передачи данных между процессами.
Связь
Как уже говорилось, метаданные файла не содержат ни имени файла, ни указателя на это имя. Записи в каталогах жестко связывают имена файлов с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе.
Cвязь имени файла с его данными называется жесткой связью. Например, с помощью команды ln мы можем создать еще одно имя (second) файла, на который указывает имя first (рис. 2).
Рисунок 2. Жесткая связь имен с данными файла.
inode файла можно вывести с помощью команды ls –i.
Вывести тип файла можно с помощью команды ls –l.
Опция -l команды ls отображает тип файла, на что указывает первый символ в каждой выводимой строке:
Расшифровка типа файла по первому символу:
- d — Директория
- l — Ссылка
- c — Специальный файл
- s — Сокет
- p — Именованный канал
- b — Блочное устройство
Расшифровка типа файла по цвету:
- Синий — каталоги
- Красный — сжатые архивы
- Белый — текстовые файлы
- Розовый — изображения
- Голубой — ссылки
- Желтый — устройства
- Зеленый — исполняемые файлы
В метаданных файлов устройств размещается два параметра, используемых ядром ASTRA LINUX SE для задания драйверов устройства:
- major number — указывает подсистеме ввода-вывода ядра ASTRA LINUX SE на драйвер класса устройств (например, всех жёстких дисков или всех сетевых карт);
- minor number — указывает подсистеме ввода-вывода ядра ASTRA LINUX SE на драйвер конкретного устройства.
Рисунок 3. Вывод inode файлов, блочного устройства /dev/sda и символьного устройства /dev/tty1.
На рис. 3 показан вывода команды ls -l для файлов устройств /dev/sda (файл, соответствующий интерфейсу контроллера SCSI) и /dev/tty1 (файл, соответствующий первому виртуальному терминалу). При этом первый файл является блочным устройством (через интерфейс SCSI данные передаются блоками — секторами), а второй файл символьным устройством (виртуальная консоль обрабатывает входные данные побайтно).
Очевидно, что для драйверов файловой системы ASTRA LINUX SE и подсистемы безопасности PARSEC файлы устройств представляют собой обычные файловые объекты, к которым применимы как стандартные вызовы по работе с файлами, так и функции назначения им уровней конфиденциальности.
Рисунок 4. Вывод уровней конфиденциальности файлов устройств /dev/sda и /dev/tty1 с помощью команды pdp-ls –М.
На рис.4 представлен вывод команды pdp-ls -М, которая является аналогом команды ls с расширенными функциями отображения меток конфиденциальности файлов и каталогов.
Синтаксис команды pdp-ls.
pdp-ls [опции] [имя файла]
Команда pdp-ls выводит аналогично стандартной команде ls информацию о файлах (по умолчанию — о текущем каталоге). Опции можно изучить в описании команды man pdp-ls.
При этом для файлов символьных (файл /dev/tty1) и блочных (файл /dev/sda) устройств могут быть назначены уровни конфиденциальности и целостности, а также заданы неиерархические категории. Благодаря такому использованию контекста безопасности, для файлов устройств можно задать правила мандатного управления доступом и контроля целостности как для других сущностей ASTRA LINUX SE.
Именование файлов запоминающих устройств в большинстве случаев стандартизовано для всех версий ОС семейства Linux. Важной особенностью ядра ASTRA LINUX SE является то, что запоминающие устройства с интерфейсами АТА (IDE), SATA (eSATA) и USB подключаются к нему не напрямую, а опосредованно, через драйвер запоминающих устройств с интерфейсом SCSI (рис. 5). Связано это с тем, что реализация системы команд интерфейса SCSI существует как поверх интерфейсов ATA/SATA (называется АТАPI — АТА Packet Interface), так и поверх протокола USB (называется MSD Mass Storage Device). Они позволяют подключать в ASTRA LINUX SE любые АТА, SATA и USB запоминающие устройства, не разрабатывая для них собственного протокола обмена, а используя имеющийся в системе драйвер интерфейса SCSI.
Этим устройствам в каталоге /dev соответствуют файлы устройств с именем вида sd* при этом если подключены жёсткие диски, имеющие логическую структуру, то в таком имени будет цифра. Такое именование файлов устройств соответствует стандарту POSIX.
Администратор ASTRA LINUX SE с использованием параметров устройств (major number и minor number) имеет возможность создавать или модифицировать файлы устройств, применительно к конкретному перечню устройств, имеющихся на компьютере.
Однако подобный подход является не совсем удобным в современных условиях, когда разнообразие типов и число конкретных реализаций устройств существенно возросло. Поэтому в версиях ОС семейства Linux с ядром 2.6.x и выше используется специальная система динамического именования устройств — udev, которая использует непосредственно идентификационную информацию самих устройств, а не их абстрактные параметры (major number и minor number).
Рисунок 5. Схема подключения АТА (IDE), SATA и USB устройств
Такую, например, как серийный номер устройства, его положение в SATA-интерфейсе или канале РАТА-шины. Сочетание этой идентификационной информации устройств (и, соответственно, их дисковых разделов) является уникальным, что позволяет динамически формировать уникальные имена для каждого устройства.
Для получения этой идентификационной информации система udev обращается к sysfs — виртуальной файловой системе, экспортирующей на пользовательский уровень из ядра ASTRA LINUX SE данные о имеющихся в системе устройствах и драйверах. Эти данные могут быть получены администратором с помощью графической утилиты «Менеджер устройств» меню «Системные» главного меню (рис. 6).
Система udev обеспечивает все необходимые средства для динамического создания и удаления файлов устройств и символических ссылок в каталоге /dev, её управление осуществляется командой udevadm. При этом система udev позволяет администратору ASTRA LINUX SE изменять порядок её работы, например, путем разработки собственных сценариев интерпретатора bash. Благодаря udev в каталоге /dev находятся файлы только тех устройств, которые в настоящий момент подключены к системе. Если устройство отключается от системы — файл устройства, связанный с ним, удаляется.
Рисунок 6. Окно графической утилиты «Менеджер устройств»
Рисунок 7. Пример сценария инициализации демона udevd
Функциональные возможности системы udev реализуются демоном (системным процессом, работающим в фоновом режиме без непосредственного взаимодействия с пользователем) udevd, порядок старта которого в ASTRA LINUX SE указан в сценарии /etc/init.d/udev (рис. 7). Дополнительные параметры для этого демона могут быть указаны в конфигурационном файле /etc/udev/udev.conf.
Каждому устройству в ASTRA LINUX SE демон udevd присваивает уникальный идентификатор UUID (Universally Unique Identifier). Его использование ядром ASTRA LINUX SE (драйверами устройств) позволяет сделать независимым обработку обращений к устройству от текущих параметров его подключения. Это, например, удобно для переносных устройств вида eSATA жёстких дисков, USB-дисков, интерфейс подключения которых может меняться.
Для получения используемых системой udev идентификаторов и параметров блочных устройств администратор может использовать команду blkid, которая без параметров выведет данные файла /etc/blkid. tab (рис. 8), который обновляется при каждой загрузке ASTRA LINUX SE.
Рисунок 8. Пример вывода команды blkid
В ходе динамического именования устройств система udev также может выполнять ряд дополнительных действий, которые могут быть описаны в виде правил системы udev (udev rules), хранящихся в файлах с расширением .rules в каталоге /etc/udev/rules.d. При этом одному устройству может соответствовать больше одного правила, что позволяет как задавать для каждого устройства разные альтернативные имена, так и определять разные дополнительные действия, ассоциированные с этими именами. Система udev, обнаружив соответствующий устройству файл правил, будет продолжать просматривать каталог /etc/ udev/rules, d в поисках других файлов правил, в которых указан UUID этого устройства.
Благодаря возможности автоматического формирования файлов правил системой udev подсистема безопасности PARSEC в ASTRA LINUX SE реализует следующие дополнительные функции по работе с устройствами:
• регистрация устройств в локальной базе учёта (в случае автономной рабочей станции) или базе учёта, хранящейся в базе учёта контроллера домена ALD (в случае клиента домена ALD);
• управление доступом к зарегистрированным устройствам на основе политики безопасности, основанной на их уровнях конфиденциальности и целостности.
В случае локальной регистрации устройств база учёта создаётся в конфигурационном файле /etc/parsec/PDAC/devices.cfg. Для каждого из зарегистрированных устройств формируется отдельная секция, ограниченная блоком вида «<..>» (рис. 9).
Рисунок 9. Пример формата секции базы учёта устройств подсистемы безопасности PARSEC (на примере регистрации USB Flash памяти)
Наряду с идентификационными данными устройства соответствующая ему секция содержит данные о дискреционных правах доступа к нему, а также о его мандатных уровнях конфиденциальности и неиерархических категориях.
Рисунок 10. Назначение дискреционных прав доступа к устройству flashdisk1
Задание дискреционных права доступа выполняется с использованием графической утилиты «Управление политикой безопасности» (fly-admin-smc) в разделе «Общие».
Рисунок 11. Назначение мандатных уровней конфиденциальности и неиерархических категорий для устройства flashdisk1.
Задание мандатных уровней конфиденциальности и неиерархических категорий выполняется с использованием графической утилиты «Управление политикой безопасности» (fly-admin-smc) в разделе «МРД».
На основе данных из базы учёта устройств подсистема безопасности PARSEC автоматически генерирует файлы правил системы udev, соответствующие учтённым устройствам, в состав которых наряду с базовыми соответствиями (matches) и действиями (actions) добавлено соответствие ENV
ENV
Поскольку в процессе учёта устройства его идентификатор UUID ассоциируется с идентификационными данными учётной записи пользователя, для блочных устройств, требующих выполнения операции монтирования имеющихся на них файловых систем, в ASTRA LINUX SE используется модификация стандартной утилиты mount, допускающей выполнение монтирования не только процессам от имени учётной записи администратора системы, но и имени непривилегированного пользователя, зарегистрированного в текущем сеансе. При этом точкой монтирования файловой системы будет соответствующий каталог в каталоге /home/ user/media данного пользователя, для которой будут применяться соответствующие уровни конфиденциальности и целостности, заданные ключом maclabel в секции, соответствующей устройству в базе учета (в файле devices, cfg).
Для обеспечения такого способа монтирования файловых систем в конфигурационном файле /etc/fstab включены соответствующие записи с ключами owner и group для следующих видов блочных устройств:
• учтённые съёмные устройства для локально зарегистрированных учётных записей пользователей;
• учтённые съёмные устройства для учётных записей пользователей домена ALD;
• файловые системы FAT32, NTFS и EXTFS, расположенные в разделах учтённых несъемных блочных устройств;
• файловые системы UDF и ISO9660, расположенные на учтённых оптических дисках.
Примером записи в файле /etc/fstab для учтённых съёмных устройств локально зарегистрированных пользователей является следующая запись:
/dev/s* /home/*/media/* auto owner, group, noauto, noexec, iocharset = utf8, defaults 0 0.
Таким образом, управление доступом к устройствам в ASTRA LINUX SE может осуществляться способами традиционными для ОС семейства Linux и с применением возможностей, реализованных в ASTRA LINUX SE мандатного управления доступом и контроля целостности.
Источник