Как сделать устройство обратной петли доступным для записи обычному пользователю?

Вопрос или проблема

Я настроил устройство обратной петли, следуя этой инструкции.

Устройство в порядке, но оно доступно для записи только для root. Я искал решения и нашел несколько ответов, такие как использование fusermount, fstab и т.д., например, этот.

Я хотел бы узнать конкретно:

  1. Требование root для создания устройства не является проблемой, но после монтирования оно должно быть доступно для записи обычным пользователям.
  2. Я надеюсь избежать использования /etc/fstab, потому что все, что мне нужно, – это делать это спонтанно, или в shell-скрипте, где у меня нет ни фиксированного образа обратной петли, ни фиксированной точки монтирования.

Я настроил устройство обратной петли

Если только вы не используете действительно древнее ядро, это больше не необходимо – обычный процесс монтирования неявно создает устройство обратной петли.

Устройство в порядке, но оно доступно для записи только для root.

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

Требование root для создания устройства не является проблемой, но оно должно быть доступно для записи обычным пользователям после монтирования.

Права доступа к файловой системе происходят из фактических данных в том, что вы монтируете. Некоторые файловые системы (например, FAT) имеют параметры, позволяющие прикрепить unix-права. Другие файловые системы (например, ext) этого не делают.

Я хочу записать в файловую систему, содержащуюся в устройстве

Тогда вы не решите эту проблему, используя устройство обратной петли. (Также, пожалуйста, ознакомьтесь с XY вопросами. Ваш X – “Все пользователи должны иметь возможность читать из файловой системы”, ваш Y – “Я думаю, мне нужно устройство обратной петли”, неудивительно, что это не работает, и вы задаете вопрос только о Y, вместо того чтобы начать с вопроса о X).

Как написано в комментариях, вы можете chown/chmod (как root) после монтирования, чтобы разрешить всем пользователям читать его, изменяя содержимое файловой системы. Это самое простое решение.

Нет простого решения для “Я хочу смонтировать файловую систему ext4, но прозрачно перезаписать права доступа на все при монтировании”. По крайней мере, я не знаю ни одного.


Из man mount:

УСТРОЙСТВО ОБРАТНОЙ ПЕТЛИ

Один из возможных типов – это монтирование через устройство обратной петли. […] Если не упоминается явное устройство обратной петли (но просто указан параметр `-o loop`), тогда команда mount попытается найти какое-либо неиспользуемое устройство обратной петли и использовать его […]

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

mount /tmp/disk.img /mnt

mount -t ext4 /tmp/disk.img /mnt

Этот тип монтирования знает о трех параметрах, а именно loop, offset и sizelimit, которые на самом деле являются параметрами для losetup(8).
(Эти параметры могут использоваться наряду с теми, которые специфичны для типа файловой системы.)

Ответ или решение

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

Шаг 1: Создание устройства петли с помощью root

Первым делом вам нужно создать устройство петли и смонтировать его. Это можно сделать с помощью команды losetup и mount. Для создания устройства используйте следующую последовательность команд:

# Создание файла для образа
dd if=/dev/zero of=/tmp/disk.img bs=1M count=100  # 100MB образ

# Создание устройства петли
sudo losetup --show -f /tmp/disk.img  # Выведет имя устройства например /dev/loop0

# Форматирование устройства файловой системой (например, ext4)
sudo mkfs.ext4 /dev/loop0

Шаг 2: Монтирование устройства петли с набором прав

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

# Создайте точку монтирования
mkdir -p /mnt/loopback

# Смонтируйте устройство с изменением прав доступа
sudo mount -o loop /dev/loop0 /mnt/loopback

Шаг 3: Настройка прав доступа для обычных пользователей

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

# Измените владельца и права доступа
sudo chown :users /mnt/loopback  # изменяет группу
sudo chmod 775 /mnt/loopback  # дает права на запись для группы

Шаг 4: Автоматизация процесса в скрипте

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

#!/bin/bash

# Проверка на выполнение от root
if [ "$(id -u)" -ne 0 ]; then
  echo "Пожалуйста, запустите этот скрипт от имени root."
  exit 1
fi

# Создание файла образа
IMAGE_FILE="/tmp/disk.img"
LOOP_DEVICE=$(sudo losetup --show -f "$IMAGE_FILE")

# Форматирование
sudo mkfs.ext4 "$LOOP_DEVICE"

# Создание точки монтирования
MOUNT_POINT="/mnt/loopback"
mkdir -p "$MOUNT_POINT"

# Монтирование
sudo mount "$LOOP_DEVICE" "$MOUNT_POINT"

# Установка прав
sudo chown :users "$MOUNT_POINT"
sudo chmod 775 "$MOUNT_POINT"

echo "Устройство петли смонтировано и готово для записи обычным пользователям."

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...