Монтирование файловых систем Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Монтирование файловых систем Linux является фундаментальным навыком для системных администраторов и технических пользователей. Этот процесс позволяет операционной системе доступаться к хранилищным устройствам и их файловым системам и взаимодействовать с ними, присоединяя их к определенным местам в структуре каталогов.

В этом практическом занятии (LabEx) вы научитесь создавать имитированное хранилище, форматировать его с использованием файловой системы и монтировать для доступа к его содержимому. Вы также изучите различные параметры монтирования, которые контролируют, как можно использовать файловую систему, например, ограничивая права на выполнение или делая ее только для чтения.

По завершении этого практического занятия вы поймете:

  • Как создать и отформатировать хранилище в Linux
  • Процесс монтирования и демонтирования файловых систем
  • Как использовать параметры монтирования для контроля доступа к файловой системе
  • Как проверить статус смонтированных файловых систем

Эти навыки являются обязательными для управления хранилищами в Linux, начиная от локальных жестких дисков до съемных носителей и сетевых хранилищ.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/SystemInformationandMonitoringGroup -.-> linux/df("Disk Space Reporting") linux/SystemInformationandMonitoringGroup -.-> linux/mount("File System Mounting") linux/SystemInformationandMonitoringGroup -.-> linux/dd("File Converting/Copying") subgraph Lab Skills linux/echo -.-> lab-271335{{"Монтирование файловых систем Linux"}} linux/cat -.-> lab-271335{{"Монтирование файловых систем Linux"}} linux/cd -.-> lab-271335{{"Монтирование файловых систем Linux"}} linux/mkdir -.-> lab-271335{{"Монтирование файловых систем Linux"}} linux/df -.-> lab-271335{{"Монтирование файловых систем Linux"}} linux/mount -.-> lab-271335{{"Монтирование файловых систем Linux"}} linux/dd -.-> lab-271335{{"Монтирование файловых систем Linux"}} end

Создание и монтирование хранилища

На этом этапе вы создадите имитированное хранилище, отформатируете его с использованием файловой системы и смонтируете, чтобы оно стало доступно в структуре каталогов Linux.

Переход в проектную директорию

Сначала перейдем в проектную директорию, где вы будете работать на протяжении всего практического занятия (LabEx):

cd ~/project

Создание имитированного хранилища

Теперь создадим имитированное хранилище с помощью команды dd. Эта команда создаст файл определенного размера, который будет выступать в качестве вашего хранилища:

dd if=/dev/zero of=storage_device.img bs=1M count=100

Эта команда создает файл размером 100 МБ с именем storage_device.img. Разберем каждую часть этой команды:

  • if=/dev/zero: Входной файл - /dev/zero, это специальный файл, который генерирует бесконечный поток нулей
  • of=storage_device.img: Выходной файл называется storage_device.img
  • bs=1M: Размер блока установлен равным 1 мегабайту
  • count=100: Копируется 100 блоков, в результате чего получается файл размером 100 МБ

Вы должны увидеть вывод, похожий на следующий:

100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.123456 s, 850 MB/s

Форматирование хранилища с использованием файловой системы

Перед тем как использовать хранилище, его нужно отформатировать с использованием файловой системы. Команда mkfs.ext4 форматирует файл с использованием файловой системы ext4, которая широко используется в Linux:

mkfs.ext4 storage_device.img

Вы увидите несколько строк вывода, когда команда создаст файловую систему, похожие на следующие:

mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 102400 1k blocks and 25688 inodes
Filesystem UUID: f5d1c3a7-21c4-4b5f-8c1d-8912345abcde
Superblock backups stored on blocks:
	8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Создание точки монтирования

Перед монтированием устройства создайте каталог, который будет служить точкой монтирования. Это место, где будет доступно содержимое вашей файловой системы:

mkdir -p ~/project/mount_point

Монтирование хранилища

Теперь смонтируйте хранилище в точку монтирования с помощью команды mount:

sudo mount -t ext4 storage_device.img ~/project/mount_point

Эта команда сообщает Linux:

  • Монтировать устройство типа (-t) ext4
  • Устройство для монтирования - storage_device.img
  • Место монтирования - ~/project/mount_point

Проверка монтирования

Чтобы убедиться, что устройство успешно смонтировано, используйте команду df (disk free) с параметрами, чтобы показать тип файловой системы и размеры в человекочитаемом формате:

df -hT | grep mount_point

Вы должны увидеть вывод, похожий на следующий:

/dev/loop0     ext4    93M  4.0K   86M   1% /home/labex/project/mount_point

Тестирование смонтированной файловой системы

Чтобы проверить, что файловая система работает корректно, создайте тестовый файл в смонтированном каталоге:

echo "This is a test file" > ~/project/mount_point/test.txt

Прочитайте файл, чтобы убедиться, что он был успешно создан:

cat ~/project/mount_point/test.txt

Вы должны увидеть отображенный текст "This is a test file", что подтверждает, что ваша файловая система правильно смонтирована и работает.

Понимание произошедшего

Вы успешно:

  1. Создали файл, который имитирует хранилище
  2. Отформатировали его с использованием файловой системы ext4
  3. Создали каталог точки монтирования
  4. Смонтировали файловую систему в этот каталог
  5. Подтвердили, что монтирование прошло успешно
  6. Создали и прочитали файл на смонтированной файловой системе

Этот процесс аналогичен подключению и использованию внешнего жесткого диска или USB-фишки, но вместо физического устройства используется файл.

Параметры монтирования для обеспечения безопасности и контроля доступа

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

Демонтирование текущей файловой системы

Перед применением новых параметров монтирования необходимо демонтировать текущую файловую систему:

sudo umount ~/project/mount_point

Если вы получите сообщение об ошибке, говорящее, что устройство занято, убедитесь, что вы не находитесь в каталоге точки монтирования:

cd ~/project

Затем попробуйте выполнить демонтирование снова.

Монтирование с параметром noexec

Параметр монтирования noexec запрещает выполнение любых бинарных файлов на смонтированной файловой системе. Это функция безопасности, которая может предотвратить запуск вредоносных скриптов или программ.

Монтируйте файловую систему с параметром noexec:

sudo mount -t ext4 -o noexec storage_device.img ~/project/mount_point

Часть -o noexec сообщает команде mount использовать параметр noexec.

Тестирование параметра noexec

Создадим простой сценарий на языке shell на смонтированной файловой системе и попробуем его выполнить:

echo '#!/bin/bash' > ~/project/mount_point/test_script.sh
echo 'echo "This script is running"' >> ~/project/mount_point/test_script.sh

Сделайте сценарий исполняемым:

chmod +x ~/project/mount_point/test_script.sh

Теперь попробуйте выполнить сценарий:

~/project/mount_point/test_script.sh

Вы должны увидеть сообщение об ошибке, подобное следующему:

bash: /home/labex/project/mount_point/test_script.sh: Permission denied

Это подтверждает, что параметр noexec препятствует выполнению сценария.

Демонтирование и повторное монтирование с параметром только для чтения

Теперь попробуем смонтировать файловую систему в режиме только для чтения. Сначала демонтируйте ее:

sudo umount ~/project/mount_point

Затем смонтируйте ее с параметром только для чтения:

sudo mount -t ext4 -o ro storage_device.img ~/project/mount_point

Часть -o ro сообщает команде mount использовать параметр только для чтения.

Тестирование параметра только для чтения

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

touch ~/project/mount_point/new_file.txt

Вы должны увидеть сообщение об ошибке, подобное следующему:

touch: cannot touch '/home/labex/project/mount_point/new_file.txt': Read-only file system

Это подтверждает, что файловая система смонтирована в режиме только для чтения.

Проверка параметров монтирования

Вы можете проверить текущие параметры монтирования, используя команду mount:

mount | grep mount_point

Вы должны увидеть вывод, включающий ro, что указывает на то, что параметр только для чтения активен:

/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,relatime)

Комбинирование параметров монтирования

Вы можете комбинировать несколько параметров монтирования, разделяя их запятыми. Давайте демонтируем файловую систему и смонтируем ее снова с параметрами noexec и ro:

sudo umount ~/project/mount_point
sudo mount -t ext4 -o ro,noexec storage_device.img ~/project/mount_point

Проверьте параметры монтирования:

mount | grep mount_point

Вы должны увидеть оба параметра в выводе:

/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,noexec,relatime)

Понимание параметров монтирования

Параметры монтирования, которые вы рассмотрели, важны для обеспечения безопасности и контроля доступа:

  • noexec запрещает выполнение бинарных файлов, что может защитить от вредоносного кода
  • ro (только для чтения) запрещает изменения в файловой системе, что может защитить целостность данных

Эти параметры обычно используются в производственных средах для реализации принципа минимальных привилегий, предоставляя системам и пользователям только необходимый доступ.

Автоматизация монтирования с помощью файла /etc/fstab

На этом этапе вы узнаете, как сделать монтирование файловых систем постоянным при перезапуске системы, настроив файл /etc/fstab. Это необходимо для автоматического монтирования хранилищ при запуске системы.

Понимание файла /etc/fstab

Файл /etc/fstab (таблица файловых систем) содержит информацию о файловых системах, которые должны быть автоматически смонтированы при загрузке системы. Каждая строка в файле представляет отдельную файловую систему и включает поля, такие как устройство, точка монтирования, тип файловой системы и параметры монтирования.

Сначала посмотрим на текущее содержимое файла:

cat /etc/fstab

Вы увидите несколько строк с уже настроенными системными монтированиями.

Демонтирование текущей файловой системы

Перед настройкой постоянного монтирования необходимо демонтировать текущую файловую систему:

sudo umount ~/project/mount_point

Создание резервной копии файла /etc/fstab

Прежде чем изменять системные конфигурационные файлы, всегда хорошей практикой является создание резервной копии:

sudo cp /etc/fstab /etc/fstab.backup

Добавление записи в файл /etc/fstab

Теперь добавим запись для вашего хранилища в файл /etc/fstab. Вам нужно будет использовать абсолютный путь к файлу устройства:

echo "$(readlink -f ~/project/storage_device.img) $(readlink -f ~/project/mount_point) ext4 defaults 0 0" | sudo tee -a /etc/fstab

Эта команда:

  • Использует readlink -f для получения абсолютных путей к вашим файлам
  • Перенаправляет отформатированную строку в /etc/fstab с помощью tee -a с привилегиями sudo

Разберем поля в записи fstab:

  1. Устройство - полный путь к файлу вашего хранилища
  2. Точка монтирования - полный путь к каталогу монтирования
  3. Тип файловой системы - ext4
  4. Параметры монтирования - defaults (эквивалентно rw,suid,dev,exec,auto,nouser,async)
  5. Dump - 0 (не выполнять резервное копирование с помощью dump)
  6. Pass - 0 (не проверять файловую систему при загрузке)

Тестирование записи в fstab

Проверьте, работает ли ваша запись правильно, используя команду mount -a, которая монтирует все файловые системы, перечисленные в /etc/fstab, которые еще не смонтированы:

sudo mount -a

Если не появляются сообщения об ошибках, значит, ваша запись правильная.

Проверка монтирования

Убедитесь, что файловая система смонтирована как ожидалось:

df -hT | grep mount_point

Вы должны увидеть, что ваша файловая система смонтирована с типом ext4.

Изменение записи в fstab с использованием дополнительных параметров

Теперь изменим запись, чтобы использовать параметры монтирования, которые вы узнали на предыдущем этапе. Отредактируйте файл /etc/fstab с помощью текстового редактора nano:

sudo nano /etc/fstab

Найдите строку, которую вы добавили, которая должна выглядеть примерно так:

/home/labex/project/storage_device.img /home/labex/project/mount_point ext4 defaults 0 0

Измените параметры монтирования (четвертое поле) с defaults на ro,noexec:

/home/labex/project/storage_device.img /home/labex/project/mount_point ext4 ro,noexec 0 0

Нажмите Ctrl+O, чтобы записать изменения, затем Enter, чтобы подтвердить, и Ctrl+X, чтобы выйти из nano.

Повторное монтирование с новыми параметрами

Демонтируйте файловую систему и повторно смонтируйте все записи в /etc/fstab:

sudo umount ~/project/mount_point
sudo mount -a

Проверка новых параметров монтирования

Убедитесь, что файловая система смонтирована с новыми параметрами:

mount | grep mount_point

Вы должны увидеть параметры ro и noexec в выводе.

Очистка для будущих практических занятий (LabEx)

Для порядка восстановим исходный файл /etc/fstab:

sudo cp /etc/fstab.backup /etc/fstab
sudo umount ~/project/mount_point

Понимание постоянных монтирований

Файл /etc/fstab позволяет:

  • Автоматически монтировать файловые системы при загрузке
  • Постоянно настраивать параметры монтирования
  • Управлять порядком проверки файловых систем при загрузке

В рабочей среде правильная настройка файла /etc/fstab обеспечивает доступность всех необходимых файловых систем при запуске системы без необходимости ручного вмешательства.

Итоги

Поздравляем вас с успешным завершением практического занятия (LabEx) по монтированию файловых систем в Linux. Вы приобрели ценные навыки, которые являются обязательными для любого администратора Linux-системы или технического пользователя.

В этом практическом занятии вы узнали:

  1. Создание и форматирование хранилищ

    • Как создать имитированное хранилище с помощью команды dd
    • Как отформатировать устройство в файловой системе ext4 с использованием mkfs.ext4
  2. Основные операции по монтированию

    • Как создать каталог точки монтирования
    • Как смонтировать файловую систему с помощью команды mount
    • Как проверить монтирование с использованием df и других команд
  3. Параметры монтирования для обеспечения безопасности и контроля

    • Как использовать параметр noexec для запрета выполнения бинарных файлов
    • Как использовать параметр ro для создания файловой системы только для чтения
    • Как комбинировать несколько параметров монтирования для усиления безопасности
  4. Постоянное монтирование с использованием файла /etc/fstab

    • Как настроить автоматическое монтирование файловых систем при загрузке системы
    • Как установить постоянные параметры монтирования
    • Как тестировать и проверять записи в файле fstab

Эти навыки позволят вам:

  • Управлять различными типами хранилищ в Linux
  • Реализовать меры безопасности с помощью параметров монтирования
  • Настроить автоматическое монтирование при запуске системы
  • Решать проблемы с монтированием файловых систем

По мере продвижения в изучении Linux вы обнаружите, что эти навыки будут полезны при работе с физическими хранилищами, сетевыми ресурсами и виртуальными файловыми системами. Принципы, которые вы изучили, применяются в различных дистрибутивах Linux и технологиях хранения.