如何更改可移动 vfat / fat32 驱动器/分区的自动挂载以使用“noexec”?

如何更改可移动 vfat / fat32 驱动器/分区的自动挂载以使用“noexec”?

当我插入 USB 驱动器时,它会自动安装到/run/media/user/fslabel.我猜这是由一些 udev/dbus/thunar/nautilus/gvfs 或其他系统完成的,我发现这很方便,并且不想恢复为由 root 手动安装。但是,我对默认安装选项有一个问题:安装 vfat 驱动器后,所有常规文件上都设置了可执行标志。这是一个麻烦和安全问题,我希望禁用它。

如何设置系统范围的安装选项,例如使用noexec标志全部 vfatext4分区并禁用用户空间程序/守护进程安装分区?

几年前,我在不同的系统上尝试了一些非常耗时的操作,例如编辑一些udev规则dbus(显然不是设计为手动编辑的文件),由于缺乏适当的文档以及发行版之间的巨大差异,这是一项巨大的努力。这是预期的且唯一的方法吗?如果是这样,有人可以告诉我在哪里改变什么吗?

我正在使用 Arch Linux、CentOS 和 openSUSE 以及 XFCE 桌面。自动挂载可以由 nautilus、thunar 或 dolphin 之一执行,在后台运行(或者可能是由这些启动的服务?!)。我不确定,因为它发生在后台。

答案1

udisks2外部媒体/驱动器安装由大多数现代发行版处理。我认为没有任何简单的方法可以更改默认安装选项,因为它们是硬编码的(请FSMountOptions参阅udiskslinuxfilesystem.c)也就是说,它们不可配置(至少还不是1)。您的选择非常有限:卸载分区并使用不同的安装选项重新安装它(除非您愿意修补源代码或编写自己的自动安装工具)。

至于你的另一个问题:

我认为,从规则的外观来看,也许可以禁止按类型安装?!当我插入 USB (3.0) 拇指驱动器或 HDD 时,所有 ext[34] 分区都会被安装(我希望它们没有),并且用户会收到任何 LUKS 分区解锁的图形提示。我希望禁用两者。用户可能拥有 FAT 驱动器,但其他驱动器只能由 root 挂载。

您可以使用udev规则来忽略除 USB 拇指驱动器分区之外的所有vfat分区。创建一个新的规则文件,例如/usr/lib/udev/rules.d/90-ignore-nonvfat.rules包含以下内容:

SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ENV{ID_BUS}=="usb", ENV{ID_FS_TYPE}!="vfat", ENV{UDISKS_IGNORE}="1"

(如果您的发行版使用 udisks1,请替换UDISKS_IGNORE为)。UDISKS_PRESENTATION_HIDE

1:参见免费桌面机器学习提议的补丁(以及长时间的讨论)。

相关内容