Владение точкой монтирования

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

Я не могу создавать файлы в только что смонтированном разделе. Папка, в которую я монтирую раздел, /media/hrmount, принадлежит root, поэтому даже если я добавлю строку fstab, такую как

UUID=неважно /media/hrmount  ext4   defaults,user      0      2

/media/hrmount все равно принадлежит root, когда я перемонтирую “неважно”.

И если я удалю каталог в надежде, что “mount” создаст его автоматически и сделает владельцем пользователя, который выдал команду монтирования, я просто получу сообщение об ошибке о том, что каталог не существует.

Я мог бы просто использовать chown, чтобы сделать каталог принадлежащим uid1000, но я понимаю, что это не потребуется, и я уверен, что если я создам другого пользователя, назовем его uid1001, то, если мы размонтируем файловую систему и затем перемонтируем ее как uid1001, ее точка монтирования, /media/hrmount, будет все еще принадлежать uid1000. Это означает, что мне придется возиться с разрешениями, и пока я могу это сделать, я слышал, что, просто добавив устройство в fstab, как указано выше, должно просто работать. Как я могу это добиться?

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

PS: Я использую Linux Mint 13

Если монтируется файловая система Linux (не, например, FAT32, NTFS), то разрешения на каталог для корневого каталога берутся из файловой системы.

root должен либо изменить владельца (chown) или разрешения (chmod, setfacl) корневого каталога, либо создать подкаталоги, которые могут быть изменены пользователями. Последнее происходит с обычным корневым томом: за исключением tmp ни один стандартный каталог не доступен на запись для пользователей. Пользователи могут записывать в свои каталоги ниже /home (и, возможно, в нестандартные каталоги и подкаталоги).

Вы путаете общую опцию user с файловой спецификацией uid.

из fstab(5)

user позволить пользователю монтировать

и из mount(8)

uid=значение и gid=значение
Установить владельца и группу всех файлов. (По умолчанию: uid и gid текущего процесса.)

которая применяется к файловым системам msdos, umsdos и vfat. вы можете делать аналогичные настройки с файловыми системами adfs, affs, devpts, hfs, hpfs, iso9660, ntfs, tmpfs, udf и usbfs. вам не нужно задавать uid в любой файловой системе, созданной для unix, и вы не хотите этого делать, так как файловая система может сделать это сама.

После монтирования uid:gid и разрешения точки монтирования установлены с использованием корневого каталога смонтированного раздела. Чтобы изменить владельца/разрешения, смонтируйте раздел как root, перейдите в точку монтирования и установите их, как хотите, используя

# chmod 777 .

или

# chown johndoe:users .

Чтобы автоматически установить владельца раздела

Вот что я сделал в Ubuntu.

  1. Найдите и запустите приложение Диски
  2. Выберите диск памяти и выберите раздел.
  3. Нажмите кнопку опции и выберите редактировать параметры монтирования…
  4. Выключите по умолчанию
  5. добавьте uid=1000,gid=1000 в список параметров монтирования.
  6. Нажмите ОК.
  7. Отмонтируйте и снова смонтируйте раздел, и вы закончите.

Чтобы разрешить выполнение файла как программы

Это руководство полезно, если вы хотите предоставить разрешение на выполнение исполняемых файлов, просто добавьте exec в список опций

Монтирование НОРМАЛЬНО заменяет владельца и разрешения каталога точки монтирования на те, что имеются в верхнем каталоге устройства монтирования. Так что да, вы должны (один раз) смонтировать файловую систему и затем ‘sudo chown $(id -u):$(id -g) /somewhere/mntpt’. После этого она будет монтироваться с вашим uid:gid.

Но есть исключения, некоторые файловые системы (например, vfat) не имеют концепции сопоставимого владения uid, gid.

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

Рассмотрим только что смонтированное устройство ext4 /etc/sdd с меткой external-ext4, и я (имя пользователя = user) хочу смонтировать его в ~/work:

user@WSL2-Ubuntu-Dev:~$ lsblk -f /dev/sdd
NAME
    FSTYPE FSVER LABEL         UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdd ext4   1.0   external-ext4 e83ff8df-5e82-477d-b968-ed4adeb15b2d

Мой /etc/fstab такой как:

LABEL="external-ext4"   /home/user/work  ext4 defaults,X-mount.owner=user,X-mount.group=user 0  2

Здесь, X-mount.owner и X-mount.group взяты из mount(8)/FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS. Похоже, что операции X-* не специфичны для каких-либо определенных файловых систем.

И после монтирования, в моих последующих тестах, это работает на ext4:

df -h
# ...
# /dev/sdd                   251G   32K  239G   1% /home/user/work
# ...
lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINTS /dev/sdd
# NAME
#     FSTYPE LABEL         MOUNTPOINTS
# sdd ext4   external-ext4 /home/user/work
ls -lda /home/user/work
# drwxr-xr-x 3 user user 4096 Jan  6 13:41 /home/user/work
echo "hhh" >> /home/user/work/test.txt
cat  /home/user/work/test.txt
# hhh

Надеюсь, это также сработает на ваших машинах.

Спасибо всем за предоставленную информацию. Мне удалось смонтировать файловую систему раздела, как я хотел. Правильный способ добиться желаемого был отредактировать /etc/fstab (я отказался от использования опции user/users), затем выполнить sudo mount -a, и это сработало отлично. Когда я размонтирую irrelevant, /media/hrmount становится собственностью root:root. После выполнения sudo mount -a точка монтирования меняет владельца на uid1000:uid1000.

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

Управление правами и владением точками монтирования в Linux — важная задача, особенно когда речь идет о безопасной и эффективной работе с файловыми системами. Согласно вашему запросу, вы столкнулись с проблемами при попытке создать файлы в вновь смонтированном разделе из-за недостатка прав доступа. Разберемся, как можно решить эту проблему, и почему важно правильно настроить точку монтирования.

Проблема

Вы используете Linux Mint 13, и точка монтирования /media/hrmount принадлежит пользователю root. Даже при добавлении строки в /etc/fstab, как показано ниже:

UUID=irrelevant /media/hrmount ext4 defaults,user 0 2

…смонтированный раздел все равно остается принадлежащим root, и из-за этого возникают трудности с правами доступа. Удаление каталога для создания его автоматически также приводит к ошибке, поскольку система требует, чтобы каталог существовал до процесса монтирования.

Решение

  1. Корректировка настроек в /etc/fstab: Чтобы автоматически задавать владельца и группу, предлагаем использовать параметры uid и gid, которые можно добавить прямо в строку конфигурации fstab.

    UUID=irrelevant /media/hrmount ext4 defaults,uid=1000,gid=1000 0 2

    В этом примере uid=1000 и gid=1000 означают, что владельцем и группой пользователя для файловой системы будут ваш пользователь и группа.

  2. Изменение владельца после монтирования: После монтирования файловой системы вы можете вручную изменить владельца и группу для директории:

    sudo mount /media/hrmount
    sudo chown uid1000:uid1000 /media/hrmount

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

  3. Использование определенного владения через GUI: В некоторых графических оболочках, таких как Disks app, можно изменить параметры монтирования, добавив нужные uid и gid.

  4. Особые случаи: Обратите внимание, что для файловых систем типа NTFS или vfat использование параметров uid и gid является обязательным в силу отсутствия нативной поддержки прав доступа, как это реализовано в Unix-подобных системах.

Концовка

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

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

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