Вопрос или проблема
Я не могу создавать файлы в только что смонтированном разделе. Папка, в которую я монтирую раздел, /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.
- Найдите и запустите приложение Диски
- Выберите диск памяти и выберите раздел.
- Нажмите кнопку опции и выберите редактировать параметры монтирования…
- Выключите по умолчанию
- добавьте
uid=1000,gid=1000
в список параметров монтирования. - Нажмите ОК.
- Отмонтируйте и снова смонтируйте раздел, и вы закончите.
Чтобы разрешить выполнение файла как программы
Это руководство полезно, если вы хотите предоставить разрешение на выполнение исполняемых файлов, просто добавьте 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
, и из-за этого возникают трудности с правами доступа. Удаление каталога для создания его автоматически также приводит к ошибке, поскольку система требует, чтобы каталог существовал до процесса монтирования.
Решение
-
Корректировка настроек в
/etc/fstab
: Чтобы автоматически задавать владельца и группу, предлагаем использовать параметрыuid
иgid
, которые можно добавить прямо в строку конфигурации fstab.UUID=irrelevant /media/hrmount ext4 defaults,uid=1000,gid=1000 0 2
В этом примере
uid=1000
иgid=1000
означают, что владельцем и группой пользователя для файловой системы будут ваш пользователь и группа. -
Изменение владельца после монтирования: После монтирования файловой системы вы можете вручную изменить владельца и группу для директории:
sudo mount /media/hrmount sudo chown uid1000:uid1000 /media/hrmount
Это одноразовая операция, после которой права на директорию будут соответствовать требованиям конкретного пользователя.
-
Использование определенного владения через GUI: В некоторых графических оболочках, таких как Disks app, можно изменить параметры монтирования, добавив нужные
uid
иgid
. -
Особые случаи: Обратите внимание, что для файловых систем типа NTFS или vfat использование параметров
uid
иgid
является обязательным в силу отсутствия нативной поддержки прав доступа, как это реализовано в Unix-подобных системах.
Концовка
Настройка правильных прав доступа и владения для точек монтирования критически важна для обеспечения безопасности и функциональности вашей системы. Правильное управление этой частью конфигурации предотвратит ненужные ошибки и упростит взаимодействие пользователей с системой. Если у вас остались вопросы или требуется более детальная настройка, рекомендуется обратиться к документации вашего Linux дистрибутива или форума поддержки сообщества.