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 switch-to-user lisa) Я получил

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

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

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

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

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

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

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

Является udevрулез кстати?

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


дополнение:

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

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


дополнение:

Не исправление, но если эти два пользователя, по сути, вы, а другой на самом деле не активен (просто отключился, а не вышел из системы), это самый быстрый способ перед беспроблемным монтированием USB:

      who -u
sudo kill <that other user's pid>

1 ответ

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

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

      #!/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

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

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

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

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

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

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

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