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

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

Введение

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

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

К концу этой лабораторной работы вы поймете:

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

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

Создание и монтирование устройства хранения

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

Перейдите в каталог проекта

Сначала перейдите в каталог проекта, в котором вы будете работать на протяжении этой лабораторной работы:

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.0331261 s, 3.2 GB/s

Отформатируйте устройство хранения с помощью файловой системы

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

mkfs.ext4 storage_device.img

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

mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 25600 4k blocks and 25600 inodes

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

Создайте точку монтирования (mount point)

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

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      90M   24K   83M   1% /home/labex/project/mount_point

Проверьте смонтированную файловую систему

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

echo "This is a test file" | sudo tee ~/project/mount_point/test.txt > /dev/null

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

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' | sudo tee ~/project/mount_point/test_script.sh > /dev/null
echo 'echo "This script is running"' | sudo tee -a ~/project/mount_point/test_script.sh > /dev/null

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

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 предотвращает выполнение скрипта.

Размонтируйте и снова смонтируйте с опцией Read-Only (только для чтения)

Теперь давайте попробуем смонтировать файловую систему как read-only (только для чтения). Сначала размонтируйте ее:

sudo umount ~/project/mount_point

Затем смонтируйте ее с опцией read-only:

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

Часть -o ro указывает mount использовать опцию read-only.

Проверьте опцию Read-Only

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

touch ~/project/mount_point/new_file.txt

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

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

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

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

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

mount | grep mount_point

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

/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 (read-only) предотвращает изменения в файловой системе, что может защитить целостность данных.

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

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

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

Понимание /etc/fstab

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

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

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. Device (Устройство) - Полный путь к вашему файлу устройства хранения
  2. Mount point (Точка монтирования) - Полный путь к вашему каталогу монтирования
  3. File system type (Тип файловой системы) - ext4
  4. Mount options (Параметры монтирования) - 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 в выводе.

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

Файл /etc/fstab предоставляет способ:

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

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

Резюме

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

В этой лабораторной работе вы узнали:

  1. Создание и форматирование устройств хранения

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

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

    • Как использовать опцию noexec для предотвращения выполнения двоичных файлов
    • Как использовать опцию ro для создания файловой системы только для чтения (read-only file system)
    • Как объединять несколько параметров монтирования для повышения безопасности
  4. Постоянное монтирование с помощью /etc/fstab

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

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

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

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