我希望插入的每个 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 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 的相当具体的规则......)
有希望的东西MODE
,GROUP
但是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
并且无需密码。mount
visudo
您可能想或不想修改
umask
以阻止“其他人”写入。篡改 Linux 文件系统(例如 ext4)中的权限是个坏主意。因此,此 shellscript 在这种情况下使用不同的挂载选项。如果您想让 Linux 文件系统可供所有人使用,请使用以下命令设置权限
chmod
手动。它应该可以手动启动 shellscript,但也可以通过
cron
或udev
其他方式来监视外部设备的插入。需要额外的 shell 脚本(或命令行)来卸载和清理挂载点,并且应该更容易创建。