只有root可以在/ media / sdb1上挂载/ dev / sdb1 – 对外部USB驱动器有贡献

我无法理解为什么,当我在Ubuntu 12.04中尝试使用插件外置USB驱动程序时,我会看到下一条消息:

Error mounting: mount exited with exit code 1: helper failed with: mount: only root can mount /dev/sdb1 on /media/sdb1 

这是/etc/fstab

 # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # #       proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=5f5d330f-d5f2-4157-9496-94f1dce2f181 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=84747ef4-6f50-49bc-9df1-fcba364ba299 none swap sw 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 /dev/sdc1 /media/sdc1 vfat uid=1000,noauto 0 0 /dev/sdd1 /media/sdd1 vfat uid=1000,noauto 0 0 /dev/sdb1 /media/sdb1 vfat uid=1000,noauto 0 0 

这是我目前的sudo fdisk -l

 Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000e28b8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 310484991 155241472 83 Linux /dev/sda2 310487038 312580095 1046529 5 Extended /dev/sda5 310487040 312580095 1046528 82 Linux swap / Solaris Disk /dev/sdb: 993 MB, 993001472 bytes 2 heads, 1 sectors/track, 969728 cylinders, total 1939456 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 133 1939455 969661+ 6 FAT16 Disk /dev/sdc: 4009 MB, 4009754624 bytes 16 heads, 32 sectors/track, 15296 cylinders, total 7831552 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xd8e1f237 Device Boot Start End Blocks Id System /dev/sdc1 * 32 7831551 3915760 b W95 FAT32 

sdcsdb – 有外部USB驱动程序。

我可以自动解决这个问题并安装所有外部USB驱动器吗?

您需要将user选项添加到fstab

 /dev/sdc1 /media/sdc1 vfat uid=1000,noauto,user 0 0 /dev/sdd1 /media/sdd1 vfat uid=1000,noauto,user 0 0 /dev/sdb1 /media/sdb1 vfat uid=1000,noauto,user 0 0 

user选项允许任何用户安装设备,如男人所说:

通常,只有超级用户才能挂载文件系统。 但是,当fstab在一行上包含user选项时,任何人都可以挂载相应的系统。

或者,如果您希望任何用户安装/卸载驱动器,请使用users

 /dev/sdc1 /media/sdc1 vfat uid=1000,noauto,users 0 0 /dev/sdd1 /media/sdd1 vfat uid=1000,noauto,users 0 0 /dev/sdb1 /media/sdb1 vfat uid=1000,noauto,users 0 0 

手册页:

只有安装了文件系统的用户才能再次卸载它。 如果任何用户应该能够卸载,那么在fstab行中使用用户而不是用户。

注意: user选项还暗示noexecnosuidnodev ,因此如果您需要这些选项,则需要添加其对应项。 例如,如果您需要从驱动器执行二进制文件,则应添加选项exec ,因此您的选项将是uid=1000,noauto,user,exec ,而其他两个选项也是如此。

进一步阅读: Fstab – Ubuntu文档

如果在/ etc / fstab中有设备条目,它将阻止Ubuntu自动安装器在插入时安装该设备。

我刚刚在我的系统上测试了这个,它在插入时自动安装我的拇指驱动器:

 // insert thumb-drive $ grep gvfsd /proc/mount gvfsd-fuse on /run/user/msw/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=msw) 

当我添加线

 /dev/sdb1 /mnt vfat noexec 0 0 

到/ etc / fstab并插入了拇指驱动器,进程gvfsd-udisks2-volume-monitor进行了一系列活动,其中包括打开和读取/ etc / fstab(如strace所示)。 拇指驱动器没有安装。

当我通过添加一个字符来注释该条目来更改/ etc / fstab时:

 #/dev/sdb1 /mnt vfat noexec 0 0 

gvfsd-udisks2-volume-monitor再次忙碌并安装了拇指驱动器。 我没有拿出拇指驱动器并重新插入它,我没有向gvfsd发送信号,所以自动挂载守护进程似乎正在观察/ etc / fstab进行更改。

我不知道它为什么会这样,但测试简单且可重复。