Ubuntu-MATE: сделать автоматическое монтирование USB-накопителей доступным для каждого пользователя (правила udev?)

Я хочу, чтобы каждый USB-носитель (ext, ntfs, FAT ...) был доступен с полным чтением -запись для каждого пользователя. Предпочтительно под mnt и как группа common .

(Ubuntu-MATE 21.04, хотя мои проблемы на самом деле относятся даже к Ubuntu-MATE 16.04 ...)

  1. Я загружаюсь на свою машину как пользователь frank. Когда я подключаю USB-накопитель (FAT), он оказывается в папке / media / frank / 4C8C-E4BC - нормально, как и должно быть. . Когда я переключаюсь на другого пользователя (оставив первый сеанс открытым, не выходя из системы, т.е. dm-tool переключение на пользователя Lisa ), я получаю

Невозможно смонтировать том 16 ГБ {{1} } Устройство / dev / sda1 уже смонтировано в / media / lisa / 4C9C-xxxx

Пока что имеет смысл. Но не то, что мне нужно.

Конечно, для отдельных дисков я мог бы изменить смонтировать местоположение через gnome-disks или вручную добавить строку в etc / fstab (что, по сути, и делает gnome-disks ). Однако я не хочу делать это для всех имеющихся у меня USB-накопителей и SD-карт ...

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

[Я понимаю / предполагаю, что есть что-то под названием autofs, которое обрабатывает автоматическое монтирование USB-накопителей? Но насколько я могу судить, это не часть моей установки Ubuntu-MATE ...]

И, кажется, есть «udev-Rules» , это то, что я хочу? По-видимому, это даже «неизбежная» часть Ubuntu, , поскольку она является частью systemd (?) ? На моей машине есть правила в /etc/udev/rules.d, хотя, казалось бы, довольно специфические правила о brave, skype и signal ...)

Есть многообещающие вещи MODE и GROUP и UDISKS_FILESYSTEM_SHARED , но (при условии, что это правильный подход) я не могу собрать окончательные части головоломки вместе. На самом деле это должно применяться только к съемным дискам, таким как USB-накопители и карты памяти, иначе у меня будут серьезные проблемы ... в этом источнике упоминается SUBSYSTEMS == "usb" , это был бы хороший фильтр, если правда ...)

Подходит ли udev rulez?

Если да, может ли кто-нибудь сложить кусочки головоломки вместе? Я почти подозреваю, что все, что я ищу, - это однострочный файл в /etc/udev/rules.d.


дополнение:

Не моя основная проблема, но если бы она исчезла по тем же причинам, я был бы счастлив: вставка загрузочного USB-накопителя Windows (немного более сложный, поставляется с загрузочной FAT UEFI и установкой Windows NTSF) раздел) под вторым пользователем, я мгновенно получаю:

enter image description here

(и нет, интенсивный поиск в Google ни к чему не привел)… переключение обратно на первого пользователя frank (флешка все еще вставлена) Меня приветствуют эти запросы авторизации:

enter image description here

3
задан 4 August 2021 в 14:16

1 ответ

Следующий сценарий может называться mounter или каким-либо [другим] уникальным именем. Цикл for ищет выход lsblk с подходящими опциями. Он обнаружит разделы в дисках, подключенных через USB, и смонтирует их (если они еще не смонтированы) в выделенных подкаталогах /mnt.

Если вы хотите использовать shellscript в своей системе, вы, вероятно, настроите его для управления уже смонтированными разделами (размонтируйте их, чтобы смонтировать их, как вы хотите).

#!/bin/bash

if [ "$(whoami)" != "root" ]
then
 echo "run with sudo or as root"
 exit
fi
for i in $(lsblk -lo name,fstype,hotplug,type|grep '1 part$'|tr -s ' ' ' '|sed 's/ 1 part$//'|grep ' ..*$'|tr ' ' '_')
do
 printf "$i\n"
 dev=/dev/${i%_*}
 fss=${i#*_}
# echo "$dev -- $fss"
 mkdir -p /mnt/"$i"
 if [ "$fss" == "ntfs" ] || [ "$fss" == "vfat" ] || [ "$fss" == "exfat" ]
 then
  mount -o rw,user,exec,umask=0000 "$dev" /mnt/"$i"
 else
  mount -o rw,user "$dev" /mnt/"$i"
 fi
done

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

  • Он должен sudo или работать от имени root. Вы можете разрешить использование shellscript или mkdir и mount без пароля через visudo.

  • Вы можете или не можете захотеть изменить umask, чтобы «другие» не писали.

  • Это плохая идея, чтобы подделать разрешения в файловой системе Linux, например, ext4. Таким образом, этот shellscript использует различные варианты монтирования в этом случае. Если вы хотите сделать файловую систему Linux доступной для всех, установите разрешения с помощью chmod вручную.

  • Запуск shellscript вручную должен работать, но также можно через cron или udev или, может быть, каким-то другим способом следить за подключением внешних устройств.

  • Дополнительные оболочки (или командные строки) для размонтирования и очистки точек монтирования необходимы и должны быть проще в создании.

1
ответ дан 20 August 2021 в 10:29

Другие вопросы по тегам:

Похожие вопросы: