Ubuntu-MATE: сделать автомонтирование USB-накопителей доступным для каждого пользователя (правила udev?)
Я хочу, чтобы каждый вставленный USB-носитель (ext, ntfs, FAT…) был доступен с полным доступом для чтения и записи для каждого пользователя. Желательно под
mnt
и как группа
common
.
(Ubuntu-MATE 21.04, хотя мои проблемы на самом деле восходят к Ubuntu-MATE 16.04...)
- Я загружаюсь на свою машину как пользователь 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
или, может быть, какой-то другой способ следить за подключением внешних устройств.Необходимы дополнительные сценарии оболочки (или командные строки) для размонтирования и очистки точек монтирования, и их должно быть проще создать.