自动挂载 U 盘(工作原理)

fth*_*ker 13 linux automounting

背景:我试图将 USB 磁盘挂载为只读,但是当我插入磁盘时,我的 ubuntu 安装正在以 rw 方式安装它。

我可以手动卸载磁盘,然后使用 umount 和 mount 命令将它手动重新挂载为只读,但这并不有趣。有人可以快速解释一下如何在典型的 linux 系统上自动完成 usb 安装(udev?历史背景也很好),也许我可以如何调整这个过程让我读取磁盘 ro?

谢谢。

编辑:如果有帮助的话,我正在使用 gnome。
Edit2:我匆忙忘记提供更多信息。这就是'mount'输出中磁盘的样子。

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Run Code Online (Sandbox Code Playgroud)

Edit3: 这也可能以自己的方式相关。在安装输出中,我还有以下内容:

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  
Run Code Online (Sandbox Code Playgroud)

我认为这可能与上面的 fuseblk 安装有关,但我发现的是这个。

Gvfs 是 Gnome 虚拟文件系统。它是一个建立在现有内核 vfs 之上的虚拟文件系统。gvfs 使用 GIO 库(这是一个 VFS API)来访问文件、设备、远程网络位置等。在上面的这种情况下('gvfs-fuse-daemon')gvfs 使用 FUSE 来挂载文件/位置/设备。这本质上就是在 Nautilus 中挂载远程网络连接时发生的情况。它将使用 FUSE 挂载位置(内部?).gvfs 目录,然后它将与 gnome 虚拟文件系统层通信以与新挂载进行通信。

基本上,这种结构允许用户动态安装新位置并通过 nautilus 与它们交互。

仅供参考: FUSE 是一个用户空间文件系统,也就是即使该用户不是 root,它也允许用户运行 mount)

那么这让我在哪里?好吧,LaCie 磁盘正在安装类型为 fuseblk。这只是一个装有保险丝的块设备。所以一些守护进程在插入驱动器时自动检测到驱动器,然后继续运行保险丝来安装我的块设备。那么这是什么守护进程,它是如何配置的(我猜它是一些内部 gnome 的东西)是最重要的问题。第二个问题是系统如何自动检测到新插入的 USB 磁盘,但我认为这有点不重要,而且这里的级别要低得多(阅读:udev?)。

链接:

pro*_*ofy 3

我尝试在我的计算机上执行此操作,并且成功了:)

首先我为我的设备命名:

ls -l /proc/disk/by-id/
Run Code Online (Sandbox Code Playgroud)

就我而言,它是 /proc/disk/by-id/usb-09a6_8001

我在 /etc/fstab 中添加了这一行:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2
Run Code Online (Sandbox Code Playgroud)

它正在工作,当我插入我的 USBkey 时,它会被挂载并由我的用户拥有。