Ubuntu-MATE:让每个用户都可以自动挂载 USB 棒(udev 规则?)

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 GB 卷设备 /dev/sda1 已挂载在/media/lisa/4C9C-xxxx

到目前为止还算合理。但这不是我想要的。

当然,对于个人驱动器我可以通过以下方式更改安装位置gnome-disks或者手动添加一行etc/fstab(这实际上是gnome-disks在做什么)。但是我不想对我拥有的每个 USB 记忆棒和 SD 卡都这样做……

有没有更好的方法来实现所有用户自动挂载?

[我明白/猜想有些事名为 autofs 的程序可以处理 USB 记忆棒的自动挂载吗?但据我所知,这不是我的 Ubuntu-MATE 安装的一部分...]

然后似乎“udev 规则”,这就是我想要的吗?显然这甚至是 Ubuntu 的“不可或缺”的一部分,因为它是 systemd 的一部分(?)? 那里我的机器上的 /etc/udev/rules.d 下的规则虽然看似关于 brave 和 skype 和 signal 的相当具体的规则......)

有希望的东西MODEGROUP但是UDISKS_FILESYSTEM_SHARED(假设这是正确的方法)我无法将最终的拼图碎片拼凑在一起。它应该只适用于可移动驱动器,如 USB 记忆棒和存储卡,否则我会陷入大麻烦……该来源提到SUBSYSTEMS=="usb",如果是真的,那将是一个很好的过滤器……)

Rulez是udev方法吗?

如果是的话,有人能把这些拼图碎片拼凑起来吗?我几乎怀疑我要找的只是 /etc/udev/rules.d 中的一个单行文件。


附录:

这不是我的主要问题,但如果它因为同样的原因而消失,我会很高兴:在第二个用户下插入 Windows 启动 USB 棒(稍微复杂一些,带有 UEFI 启动 FAT 和 Windows 安装 NTSF 分区),我立即得到:

在此处输入图片描述

(并且,激烈的谷歌搜索没有让我找到任何结果)...切换回第一个用户弗兰克(仍然插入棒子)我受到了这些授权请求的欢迎:

在此处输入图片描述


附录:

这不是一个解决办法,但是如果这两个用户本质上就是你,而另一个用户并不是真正活跃的(只是切换而不是注销),这是无故障 USB 安装之前最快的方法:

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

答案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并且无需密码。mountvisudo

  • 您可能想或不想修改umask以阻止“其他人”写入。

  • 篡改 Linux 文件系统(例如 ext4)中的权限是个坏主意。因此,此 shellscript 在这种情况下使用不同的挂载选项。如果您想让 Linux 文件系统可供所有人使用,请使用以下命令设置权限chmod 手动

  • 它应该可以手动启动 shellscript,但也可以通过cronudev其他方式来监视外部设备的插入。

  • 需要额外的 shell 脚本(或命令行)来卸载和清理挂载点,并且应该更容易创建。

相关内容